一键导入
tackle
Execute an outlined task file step-by-step with subagent delegation
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Execute an outlined task file step-by-step with subagent delegation
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | tackle |
| description | Execute an outlined task file step-by-step with subagent delegation |
| category | executing |
| model | claude-sonnet-4-6 |
| argument-hint | <path/to/task.md, number-slug, or description> |
| disable-model-invocation | false |
| user-invocable | true |
Always obey .docs/guides/mcp-tools.md. Read it now if not already in context.
Always obey wiki/work/tasks/lifecycle.md. Read it now if not already in context.
Run /primer first if you have not already this session.
Execute a pre-planned task file step-by-step. The task file IS the plan — no re-planning needed. Each step section specifies its agent type via <!-- agent: TYPE --> annotation. This command reads, executes, and updates.
Outline File: $ARGUMENTS
Parse $ARGUMENTS to locate the task file:
If a file path is provided (e.g., wiki/work/tasks/3-user-auth.md):
find_file or list_dir)If a number-slug is provided (e.g., 3-user-auth):
wiki/work/tasks/ for <number-slug>.mdIf only a description or number is provided (e.g., user auth or 3):
wiki/work/tasks/ for a matching task fileIf $ARGUMENTS is empty — run the Roadmap Auto-Discovery path first (see below), then fall through to the task survey only if no roadmap work is found.
If $ARGUMENTS was non-empty but did not resolve to a task file — survey active tasks from the index and recommend, do NOT auto-pick:
$ARGUMENTS is empty)Goal: find the first actionable item in the active roadmap and tackle it directly — no user prompt needed.
List roadmaps: mcp__serena__list_dir("wiki/work/roadmaps/", recursive=false) — collect all .md files at the root level (exclude archive/ and README.md).
If no active roadmaps exist: skip to the task survey (case 5 below).
If one or more active roadmaps exist:
Read tool — roadmaps are markdown, not code).[x] items (furthest along). If tied or only one exists, use that one. Do NOT ask the user.Find the first unchecked phase:
## Phase N: <name> sections (or a flat list if no phases).- [ ] item.Find the first unchecked item in that phase:
- [ ] line in the phase.- [ ] [TASK-NNN-slug](wiki/work/tasks/NNN-slug.md) or similar markdown link pointing into wiki/work/tasks/): extract the file path and use it as the outline for Steps 1–7. Announce: Roadmap auto-selected: <roadmap filename> → Phase <N>: <phase name> → <task link text>.Roadmap auto-selected: <roadmap filename> → Phase <N>: <phase name> → inline item "<text>" (no task file — surveying tasks instead).Do NOT prompt the user during auto-discovery. This path is designed to be zero-click: invoke /tackle with no args and execution starts immediately on the right task.
If $ARGUMENTS is empty OR the input above did not resolve to a task file — survey active tasks from the index and recommend, do NOT auto-pick:
wiki/work/tasks/README.md using the Read tool. This file is the canonical task index and already contains the columns the survey needs (#, Slug, Progress, UAT, Flags, Objective). Do NOT read individual task files in wiki/work/tasks/ for the survey — that's what the index exists to prevent.## Active Tasks table, or the table is missing the expected columns, STOP and report: Task index at wiki/work/tasks/README.md is not bootstrapped. Run /primer to bootstrap it, or invoke /tackle <path-or-slug> directly. Do not fall back to scanning every task file.mcp__serena__list_dir on wiki/work/uat/ only to sanity-check the index's UAT column against on-disk reality. If they disagree, trust the disk and quietly note the drift in your output (don't block on it).wiki/work/tasks/ with bash, Read, or any other tool. The whole point of this gate is to avoid that work. The index row is authoritative for the survey; the only acceptable per-file read is on the chosen task in Step 1.Progress: 0/0, missing rows for files in wiki/work/tasks/, or an obviously stale UAT column), warn the user inline with one sentence — Index may be stale: <observation>. Treating its rows as authoritative for now. — and continue. Do not fix the index pre-emptively; whichever skill mutated state without updating the index should be fixed instead.— for empty cells.[x] checkbox, not all complete, no pending UAT (finish what's started)[BLOCKED: ...]/[FAILED: ...] whose blocker is plausibly resolvable now (skip if blocker is clearly still outstanding)[ ] checkboxes, no pending UAT, lowest <NNN> prefix**Awaiting UAT**: line that suggests /uat-walk wiki/work/uat/<NNN>-<slug>.uat.md for each.AskUserQuestion to ask the user which task to tackle. Offer the top recommendation as the first option (label it (Recommended)), include up to 2 additional candidates as further options, and rely on the auto-provided Other for free-form input. Use the header field for the task number-slug.$ARGUMENTS was non-empty but unresolved, prefix the survey output with one line: Input \` did not match an active task — surveying all active tasks instead.`Use the resolved file path as the outline for all subsequent steps.
IMPORTANT: Adhere to all rules in '.docs/guides/mcp-tools.md'
All sub-agents delegated from this command MUST use MCP Serena tools for code exploration and editing. This is non-negotiable.
| Operation | MUST Use | NEVER Use |
|---|---|---|
| Explore code structure | Serena get_symbols_overview | Read on code files |
| Find function/class | Serena find_symbol | Grep on code files |
| Edit code | Serena symbolic or file/line tools | Standard Edit on code files |
| Search code | Serena search_for_pattern | Grep |
| Find files | Serena find_file, list_dir | Glob, find |
| Library docs | Context7 MCP | WebSearch / WebFetch |
Exceptions — standard Read/Edit/Write tools are permitted for markdown and config files (JSON, YAML, .env). Code files must use Serena. File/directory exploration must always use Serena tools (list_dir, find_file, search_for_pattern) — never bash commands like ls, cat, find, grep, or sed.
Verification scope: Static gates only (bash -n, typecheck, lint, unit tests). Runtime/E2E verification is the UAT phase's job — see .docs/guides/command-anti-patterns.md#verification-belongs-to-the-right-phase.
Every sub-agent prompt MUST include this instruction:
"Use Serena for all code exploration and editing, and for all file/directory exploration of any type. Standard
Read/Edit/Writeare permitted for markdown and config files only. Never usebashls/cat/find/grep/sed. See.docs/guides/mcp-tools.mdfor the full tool reference."
This command is a pure executor. It does NOT plan — the task file already contains the full plan with agent annotations. The cycle is:
┌─────────────────────────────────────────────────────────┐
│ 1. READ OUTLINE → 2. EXECUTE NEXT STEP → 3. UPDATE │
│ ↑ │ │
│ └───────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Delegate this step to an Explore sub-agent. The sub-agent reads and parses the outline, then returns a structured summary. The main agent should NOT read the outline directly.
[x], - [x], [DONE], or strikethrough ~~text~~[ ], - [ ], [WIP], or similar[BLOCKED] or similar### N. ...), extract the agent type from the <!-- agent: TYPE --> annotation
general-purposeDelegate this step to the sub-agent type specified in the task file's <!-- agent: TYPE --> annotation for that section. All implementation work runs in a sub-agent — never in the main context.
From the parsed outline (Step 1), pick the next step using this priority:
The task file already contains all necessary detail. Pass the step's checkboxes and sub-details verbatim to the sub-agent. Do NOT research, re-plan, or ask clarifying questions — those were handled during /task-add.
CRITICAL
When delegating, every sub-agent prompt MUST include:
.docs/guides/mcp-tools.md for the full tool reference."bash -n <script> to syntax-checkpnpm typecheck, make types-backend, mypy, etc.)/tackle: no creating scratch dirs, no running helper scripts against real paths, no curl calls, no rsync dry-runs, no spawning servers, no fixture seeding, no asserting on file contents produced by the code you just wrote/uat-generate, walked through by /uat-walk or /uat-auto). If a step as written calls for runtime verification, mark it [DEFERRED-TO-UAT] and move on/tackle cycle. There are zero pre-existing type errors.git stash to "verify" if errors are pre-existing — this is banned.Task tool invocation:
subagent_type: "general-purpose" ← read from <!-- agent: general-purpose -->
prompt: |
**MANDATORY**: Use MCP Serena for all code exploration and editing.
Do NOT use Read, Edit, Grep, or Glob on code files.
See `.docs/guides/mcp-tools.md` for the full tool reference.
Complete these tasks from the outline:
### 1. Create API Route
- [ ] Create `src/pages/api/contact.ts` with POST handler
- [ ] Validate request body: name (required), email (required, valid format), message (required)
- [ ] Return 200 on success, 400 on validation failure
- Use Zod for validation schema
### 4. Verification
After completing the above, run static gates only:
- `bash -n ./script.sh` (syntax check shell scripts, if any)
- `pnpm typecheck` (or equivalent)
Do NOT run the script against a real path — that belongs in UAT.
Do this step directly in the main agent context — do NOT delegate to a sub-agent. This is a simple text replacement that does not warrant the overhead of a sub-agent.
⛔ HARD RULE — update immediately, never batch. The moment a sub-agent from Step 2 returns (success, partial, or failure), the next thing you do is flip that step's checkboxes in the outline file. Do NOT dispatch the next step's sub-agent, do NOT continue the cycle, do NOT defer updates to the end of the task. The update for step N must land on disk before step N+1 begins. If you find yourself queuing multiple completed steps without updates, stop and flush them now.
After the sub-agent from Step 2 completes (or fails), update the outline file using the native Edit tool:
[x] or - [x] - Task completed successfully[WIP] - Work in progress (if partially done)[BLOCKED: reason] - Blocked by something[FAILED: reason] - Failed, needs attentionEdit tool — call it once per checkbox line. Never reach for sed, awk, perl -i, or echo to update task files, no matter how many checkboxes need flipping. Ten Edit calls is correct; one sed is wrong (and will trigger an approval prompt every time).<!-- Updated: YYYY-MM-DD HH:MM -->wiki/work/tasks/README.md — flip this task's Progress column to the new <done>/<total> count and update its Flags column if a [WIP], [BLOCKED: ...], [FAILED: ...], or [DEFERRED-TO-UAT] marker was added or cleared. One Edit call per changed cell. Skip if neither column changed. The index is /tackle's no-args survey source — letting it drift defeats the whole point of having it.Note: Markdown files use the native
Edittool — Serena's symbolic editor doesn't apply to prose, and shell editors (sedetc.) are forbidden. See.docs/guides/mcp-tools.md"Common anti-patterns" for the full rule.
Before:
- [ ] Fix Header H1 misuse (change logo wrapper from h1 to div)
After:
- [x] Fix Header H1 misuse (change logo wrapper from h1 to div) <!-- Completed: 2026-03-02 -->
After updating the outline:
One step per cycle. Step 2 → Step 3 → Step 2 → Step 3. Never run Step 2 twice in a row. The outline file must visibly progress between every sub-agent dispatch — that's how the user (and any interrupting /tackle resumption) sees real-time progress.
[FAILED: reason]After each cycle, briefly report:
[x] complete/tackle is an executor, NOT a planner — all planning was done in /task-add[BLOCKED: step needs more detail] and move onNow execute the cycle:
$ARGUMENTS<!-- agent: TYPE -->)⛔ This gate MUST run before declaring completion. Never skip it, never reorder it.
Once all outline steps are complete, ask the user: "Generate UAT tests for this task?" using AskUserQuestion:
/uat-generate wiki/work/tasks/<filename> to create a UAT file in wiki/work/uat/ matching this task's namingWait for the user's answer (and for /uat-generate to finish, if invoked) before proceeding to Step 6b.
/typecheckBefore declaring completion, try each of the following in order and stop at the first one that succeeds (exit 0) or fails with type errors. Skip to the next only if a command is not found / the target does not exist.
Skill(typecheck)make typecheckSuppress all output from commands that are not found or whose targets don't exist — only surface output when a command runs and produces type errors. If none of the above are available, skip silently and proceed.
On failure: If type checks surface errors, report them to the user, mark the relevant task step [FAILED: type errors] in the outline, and do not proceed to the banner. The user must resolve the errors (or explicitly instruct you to skip) before continuing.
On pass or skip: proceed to the banner.
Output this banner verbatim so the user knows tackle has finished all implementation steps:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TACKLE COMPLETED — all steps done
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
If UAT was generated in Step 6, suggest: /uat-walk wiki/work/uat/<file>.uat.md
Start now - read the outline and begin the first cycle.
File a new bug report in wiki/work/bugs/ with required-on-report fields and append it to the bug index
Audit all project functionality at a high level and produce a 2-3 minute demo run book plus a Marp slideshow
Orchestrator for parallel agent teams. When invoked with a roadmap file path, drives every item through the full tackle → uat-generate → uat-auto pipeline until complete. When invoked with a task file path, runs that pipeline once and stops.
Refresh codebase context via Serena memories
Append a new item (task link or inline) to an existing roadmap in wiki/work/roadmaps/, optionally under a named phase
Create a structured execution-plan roadmap in wiki/work/roadmaps/ via short Socratic Q&A — captures goal, phases, and the initial hybrid (task-link OR inline) checklist