diff --git a/.config/opencode/skills/using-superpowers/SKILL.md b/.config/opencode/skills/using-superpowers/SKILL.md index d813535..c8a8570 100644 --- a/.config/opencode/skills/using-superpowers/SKILL.md +++ b/.config/opencode/skills/using-superpowers/SKILL.md @@ -29,13 +29,15 @@ If CLAUDE.md, GEMINI.md, or AGENTS.md says "don't use TDD" and a skill says "alw **In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files. +**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool. + **In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand. **In other environments:** Check your platform's documentation for how skills are loaded. ## Platform Adaptation -Skills use Claude Code tool names. Non-CC platforms: see `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md. +Skills use Claude Code tool names. Non-CC platforms: see `references/copilot-tools.md` (Copilot CLI), `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md. # Using Skills diff --git a/.config/opencode/skills/using-superpowers/references/codex-tools.md b/.config/opencode/skills/using-superpowers/references/codex-tools.md index 86f58fa..539b2b1 100644 --- a/.config/opencode/skills/using-superpowers/references/codex-tools.md +++ b/.config/opencode/skills/using-superpowers/references/codex-tools.md @@ -4,7 +4,7 @@ Skills use Claude Code tool names. When you encounter these in a skill, use your | Skill references | Codex equivalent | |-----------------|------------------| -| `Task` tool (dispatch subagent) | `spawn_agent` | +| `Task` tool (dispatch subagent) | `spawn_agent` (see [Named agent dispatch](#named-agent-dispatch)) | | Multiple `Task` calls (parallel) | Multiple `spawn_agent` calls | | Task returns result | `wait` | | Task completes automatically | `close_agent` to free slot | @@ -23,3 +23,78 @@ multi_agent = true ``` This enables `spawn_agent`, `wait`, and `close_agent` for skills like `dispatching-parallel-agents` and `subagent-driven-development`. + +## Named agent dispatch + +Claude Code skills reference named agent types like `superpowers:code-reviewer`. +Codex does not have a named agent registry — `spawn_agent` creates generic agents +from built-in roles (`default`, `explorer`, `worker`). + +When a skill says to dispatch a named agent type: + +1. Find the agent's prompt file (e.g., `agents/code-reviewer.md` or the skill's + local prompt template like `code-quality-reviewer-prompt.md`) +2. Read the prompt content +3. Fill any template placeholders (`{BASE_SHA}`, `{WHAT_WAS_IMPLEMENTED}`, etc.) +4. Spawn a `worker` agent with the filled content as the `message` + +| Skill instruction | Codex equivalent | +|-------------------|------------------| +| `Task tool (superpowers:code-reviewer)` | `spawn_agent(agent_type="worker", message=...)` with `code-reviewer.md` content | +| `Task tool (general-purpose)` with inline prompt | `spawn_agent(message=...)` with the same prompt | + +### Message framing + +The `message` parameter is user-level input, not a system prompt. Structure it +for maximum instruction adherence: + +``` +Your task is to perform the following. Follow the instructions below exactly. + + +[filled prompt content from the agent's .md file] + + +Execute this now. Output ONLY the structured response following the format +specified in the instructions above. +``` + +- Use task-delegation framing ("Your task is...") rather than persona framing ("You are...") +- Wrap instructions in XML tags — the model treats tagged blocks as authoritative +- End with an explicit execution directive to prevent summarization of the instructions + +### When this workaround can be removed + +This approach compensates for Codex's plugin system not yet supporting an `agents` +field in `plugin.json`. When `RawPluginManifest` gains an `agents` field, the +plugin can symlink to `agents/` (mirroring the existing `skills/` symlink) and +skills can dispatch named agent types directly. + +## Environment Detection + +Skills that create worktrees or finish branches should detect their +environment with read-only git commands before proceeding: + +```bash +GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P) +GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P) +BRANCH=$(git branch --show-current) +``` + +- `GIT_DIR != GIT_COMMON` → already in a linked worktree (skip creation) +- `BRANCH` empty → detached HEAD (cannot branch/push/PR from sandbox) + +See `using-git-worktrees` Step 0 and `finishing-a-development-branch` +Step 1 for how each skill uses these signals. + +## Codex App Finishing + +When the sandbox blocks branch/push operations (detached HEAD in an +externally managed worktree), the agent commits all work and informs +the user to use the App's native controls: + +- **"Create branch"** — names the branch, then commit/push/PR via App UI +- **"Hand off to local"** — transfers work to the user's local checkout + +The agent can still run tests, stage files, and output suggested branch +names, commit messages, and PR descriptions for the user to copy. diff --git a/.config/opencode/skills/using-superpowers/references/copilot-tools.md b/.config/opencode/skills/using-superpowers/references/copilot-tools.md new file mode 100644 index 0000000..4316cdb --- /dev/null +++ b/.config/opencode/skills/using-superpowers/references/copilot-tools.md @@ -0,0 +1,52 @@ +# Copilot CLI Tool Mapping + +Skills use Claude Code tool names. When you encounter these in a skill, use your platform equivalent: + +| Skill references | Copilot CLI equivalent | +|-----------------|----------------------| +| `Read` (file reading) | `view` | +| `Write` (file creation) | `create` | +| `Edit` (file editing) | `edit` | +| `Bash` (run commands) | `bash` | +| `Grep` (search file content) | `grep` | +| `Glob` (search files by name) | `glob` | +| `Skill` tool (invoke a skill) | `skill` | +| `WebFetch` | `web_fetch` | +| `Task` tool (dispatch subagent) | `task` (see [Agent types](#agent-types)) | +| Multiple `Task` calls (parallel) | Multiple `task` calls | +| Task status/output | `read_agent`, `list_agents` | +| `TodoWrite` (task tracking) | `sql` with built-in `todos` table | +| `WebSearch` | No equivalent — use `web_fetch` with a search engine URL | +| `EnterPlanMode` / `ExitPlanMode` | No equivalent — stay in the main session | + +## Agent types + +Copilot CLI's `task` tool accepts an `agent_type` parameter: + +| Claude Code agent | Copilot CLI equivalent | +|-------------------|----------------------| +| `general-purpose` | `"general-purpose"` | +| `Explore` | `"explore"` | +| Named plugin agents (e.g. `superpowers:code-reviewer`) | Discovered automatically from installed plugins | + +## Async shell sessions + +Copilot CLI supports persistent async shell sessions, which have no direct Claude Code equivalent: + +| Tool | Purpose | +|------|---------| +| `bash` with `async: true` | Start a long-running command in the background | +| `write_bash` | Send input to a running async session | +| `read_bash` | Read output from an async session | +| `stop_bash` | Terminate an async session | +| `list_bash` | List all active shell sessions | + +## Additional Copilot CLI tools + +| Tool | Purpose | +|------|---------| +| `store_memory` | Persist facts about the codebase for future sessions | +| `report_intent` | Update the UI status line with current intent | +| `sql` | Query the session's SQLite database (todos, metadata) | +| `fetch_copilot_cli_documentation` | Look up Copilot CLI documentation | +| GitHub MCP tools (`github-mcp-server-*`) | Native GitHub API access (issues, PRs, code search) |