From cape
Build from a Linear tracker epic, one task at a time. The counterpart to cape:write-plan: write-plan creates the epic and first sub-issue, execute-plan implements it. Triggers on: "continue", "next task", "resume", "let's go", "work on the plan", a Linear issue ID, or transitioning after planning is complete. Uses the local tracker cache for orientation and refreshes that cache after every Linear write.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cape:execute-planThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<skill_overview> Implement one tracker task, verify it, close it in Linear, create or identify the
<skill_overview> Implement one tracker task, verify it, close it in Linear, create or identify the next task, refresh the cache, and stop for review.
Core contract: one task per invocation in HITL mode; all fine-grained plans and reflections stay in session, not on the Linear board. </skill_overview>
<rigidity_level> MEDIUM FREEDOM -- The one-task loop, TDD requirement, verification before close, and cache refresh after writes are fixed. Implementation tactics adapt to the task. </rigidity_level>
<when_to_use>
Don't use for:
cape:brainstorm then cape:write-plan)cape:fix-bug)cape:brainstorm)</when_to_use>
<critical_rules>
hooks/context/tracker.json and active worktree state for ready
tasks; do not use network reads for orientationcape trackercape:test-driven-development before production edits</critical_rules>
<the_process>
Read hooks/context/tracker.json. The cache shape is documented in cape:tracker:
{
"version": 1,
"timestamp": 0,
"epics": {
"ABU-15": {
"id": "ABU-15",
"title": "Cape V2",
"status": "In Progress",
"tasks": [{ "id": "ABU-56", "title": "Task", "status": "Todo", "stateType": "unstarted" }]
}
}
}
Pick work in this order:
stateType of unstarted or a status such as Todocape:finish-epicIf the cache is missing, corrupt, or stale for the work the user requested, use cape:tracker to
refresh it from the current MCP result available in the session. Do not invent task state.
Load the epic contract and task details from the active session context. If the detailed Linear description is not present in the session, use the cache to identify the task and ask the user to provide the current task description or re-run the chain step that created it.
Before coding, build an in-session implementation breakdown:
cape:codebase-investigator or manual searchDo not persist this expanded breakdown to Linear. If the task is too large, stop and recommend a split; create split tasks only after the user agrees.
Then update Linear status to in-progress using MCP Linear save_issue or the available state-update
operation. Immediately refresh the local cache:
cape tracker cache-status <task-id> "In Progress" started
Signal workflow state:
cape state set workflowActive
Load cape:test-driven-development with the Skill tool before production edits.
Execute the in-session breakdown one slice at a time:
When obstacles appear, re-read the epic contract from the session. If a requirement or anti-pattern forces a change of approach, explain the divergence in the conversation and continue only when the new approach still satisfies the contract. Keep the divergence in session.
Before closing, run the chain's own verification:
cape check or the repository's expected verification command passesDispatch cape:code-reviewer for non-trivial changes. Dispatch cape:fact-checker when the
implementation depends on claims about codebase structure or APIs.
Close the task in Linear through MCP. Then update the local cache:
cape tracker cache-status <task-id> Done completed
cape state clear workflowActive
Reflect in session:
If a ready task already exists in the cache, checkpoint to it. If a new task is needed, create it as
a Linear sub-issue through MCP, then refresh the epic cache from an MCP get_issue result:
cape tracker cache-epic '<linear-epic-json-with-children>'
If no more work remains, load cape:finish-epic.
Present:
Checkpoint - <task-id> complete
Done: <what changed and what was verified>
Next: <next-id or finish-epic>
Verification: <commands and results>
In HITL mode, stop and wait for user input. In AFK mode, load cape:commit, then continue only if
the next task is already clear and within the same approved scope.
</the_process>
<agent_references>
cape:codebase-investigator when:cape:code-reviewer when:cape:fact-checker when:</agent_references>
<skill_references>
cape:test-driven-development with the Skill tool when:cape:tracker with the Skill tool when:</skill_references>
First task reveals the next planned slice is unnecessaryWrong: Create and implement the next task anyway because it sounded plausible during planning.
Right: Explain the discovery in session, close the completed task in Linear, refresh the cache, and create the next sub-issue that reflects current reality.
Expanded plan would take more than one implementation cycleWrong: Write a huge expanded plan into the issue description and try to complete it all.
Right: Keep the breakdown in session, recommend a split, and wait for user approval before creating smaller Linear sub-issues.
<key_principles>
</key_principles>
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub sqve/cape --plugin cape