Skill Tracer
Skills › Superpowers › executing-plans

executing-plans

skill · 321 lines · MIT · skills/executing-plans/SKILL.md

The facts

Its description

Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available

The description the agent reads to decide when to use it.

From its settingsline 3

When it starts

The agent picks this when the human partner already has an implementation plan and wants it carried out inline in the current session — either because the partner chose inline execution at the handoff, or because the harness has no subagent tool to dispatch per-task implementers. It is the self-executing counterpart to subagent-driven development.

Things a person might say (the model's guesses)

  • “I don't have subagents available here, so just run the plan yourself.”
  • “Let's do this plan inline in this session, no per-task reviewers.”
  • “Go ahead and execute the plan yourself, task by task.”

A model's summary of when it is used.

A model's reading

Starts other agents

16 lines mention starting other agents (first 5 linked)

Lines in the file that mention starting another agent. Found by matching words, so treat them as pointers.

Found by matching wordsline 9 line 12 line 49 line 50 line 53

Runs scripts

scripts/sdd-workspace, scripts/task-start, scripts/task-done, scripts/review-package

Scripts the text names. Found by matching words, so treat them as pointers.

Found by matching wordsline 126 line 172 line 224 line 236

Stops for a person

1 line stops to ask a person

Lines that stop and wait for a person before going on. Found by matching words, so treat them as pointers.

Found by matching wordsline 43

What it leads to

Other skills this one hands off to, calls, requires or offers instead, as a model read them.

A model's reading

What leads to it

Other skills that hand off to this one, call it, require it or offer it instead, as a model read them.

A model's reading

Licence

MIT, from LICENSE

The terms its author shares it under, which let it be shown here.

From the repositorylicence text
Other files in this skill (2) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: executing-plans
3description: Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
4---
5
6# Executing Plans
7
8Execute the plan yourself, task by task, in this session: no implementer
9subagent per task, no reviewer per task. One fresh-context review of the
10whole branch at the end.
12**Why inline:** Subagent-driven development pays for a fresh implementer
13and a fresh reviewer on every task, each re-reading the codebase from zero.
14Inline execution pays for one context (yours) plus one reviewer at the end.
15What it gives up is a fresh context per task and a second pair of eyes per
16task. This skill keeps what those two things bought, by other means: the
17brief is the spec, the ledger is your memory, TDD is the per-task gate, and
18the final reviewer is the second pair of eyes.
20**Core principle:** The plan already did the thinking. Execute it exactly,
21prove each step with a test you watched fail and then pass, and leave a
22record that survives your own forgetting.
24**Narration:** between tool calls, narrate at most one short line — the
25ledger and the tool results carry the record.
27**Continuous execution:** Do not pause to check in with your human partner
28between tasks. They chose inline execution to spend less, not to answer
29"should I continue?" after every task. Execute all tasks from the plan
30without stopping.
32**Rulings, not stalls.** Conflicts, ambiguities, plan defects — decide them.
33The spec is the binding authority, the plan is its argument, and your
34judgment settles what neither answers. Record every decision in the ledger
35as `Ruling: <what you decided> — <why> — <what it costs if wrong>`, and keep
36going. Deviating from the plan without a ledgered ruling is a decision made
37in secret.
39Four things stop you, and only these: an irreversible or destructive
40operation; a security-sensitive action; a side effect outside this worktree
41that norms say you ask about first (a merge, a push to a shared branch, a
42publish); and a plan so broken that every path forward is a guess. For
43those, stop and ask.

Executing Plans

Execute the plan yourself, task by task, in this session: no implementer subagent per task, no reviewer per task. One fresh-context review of the whole branch at the end.

Why inline: Subagent-driven development pays for a fresh implementer and a fresh reviewer on every task, each re-reading the codebase from zero. Inline execution pays for one context (yours) plus one reviewer at the end. What it gives up is a fresh context per task and a second pair of eyes per task. This skill keeps what those two things bought, by other means: the brief is the spec, the ledger is your memory, TDD is the per-task gate, and the final reviewer is the second pair of eyes.

Core principle: The plan already did the thinking. Execute it exactly, prove each step with a test you watched fail and then pass, and leave a record that survives your own forgetting.

Narration: between tool calls, narrate at most one short line — the ledger and the tool results carry the record.

Continuous execution: Do not pause to check in with your human partner between tasks. They chose inline execution to spend less, not to answer "should I continue?" after every task. Execute all tasks from the plan without stopping.

Rulings, not stalls. Conflicts, ambiguities, plan defects — decide them. The spec is the binding authority, the plan is its argument, and your judgment settles what neither answers. Record every decision in the ledger as Ruling: <what you decided> — <why> — <what it costs if wrong>, and keep going. Deviating from the plan without a ledgered ruling is a decision made in secret.

Four things stop you, and only these: an irreversible or destructive operation; a security-sensitive action; a side effect outside this worktree that norms say you ask about first (a merge, a push to a shared branch, a publish); and a plan so broken that every path forward is a guess. For those, stop and ask.

Raw lines 1 to 44
Starts an agent subagent :9
Starts an agent Subagent :12
Involves a person stop and ask :43
45## When to Use
47- You have a plan from superpowers:writing-plans and your human partner
48 chose inline execution at the handoff.
49- Your harness has no subagent tool (see the per-platform references in
50 `../using-superpowers/references/`). Never fabricate a dispatch; run
51 the plan here.
52- Tasks are mostly independent — the same precondition as
55A fully specified plan makes inline execution transcription plus testing:
56it runs well on a mid-tier session model, and the one place the most
57capable model earns its cost is the final review, which this skill
58dispatches separately. Tell your human partner so when they choose inline.
60Prefer superpowers:subagent-driven-development when your human partner
61wants a review gate on every task, or when the plan is long enough that
62its later tasks would run on a compacted context. Inline execution over a
63long plan still works — the ledger is what makes it recoverable — but the
64last tasks get the least of you.

When to Use

  • You have a plan from superpowers:writing-plans and your human partner chose inline execution at the handoff.
  • Your harness has no subagent tool (see the per-platform references in ../using-superpowers/references/). Never fabricate a dispatch; run the plan here.
  • Tasks are mostly independent — the same precondition as superpowers:subagent-driven-development.

A fully specified plan makes inline execution transcription plus testing: it runs well on a mid-tier session model, and the one place the most capable model earns its cost is the final review, which this skill dispatches separately. Tell your human partner so when they choose inline.

Prefer superpowers:subagent-driven-development when your human partner wants a review gate on every task, or when the plan is long enough that its later tasks would run on a compacted context. Inline execution over a long plan still works — the ledger is what makes it recoverable — but the last tasks get the least of you.

Raw lines 45 to 65
Names a skill writing-plans :47
Starts an agent subagent :49
Names a skill using-superpowers :50
Starts an agent dispatch :50
Names a skill subagent-driven-development :53
Starts an agent dispatches :58
66## The Process
68```dot
69digraph process {
70 rankdir=TB;
72 subgraph cluster_per_task {
73 label="Per Task";
74 "task-start: brief + BASE; read the brief" [shape=box];
75 "Work the steps in order: TDD, run every verification, read every output" [shape=box];
76 "Step output matches plan's Expected?" [shape=diamond];
77 "Plan wrong? Rule and ledger. Code wrong? systematic-debugging" [shape=box];
78 "Commit as the plan's commit steps say" [shape=box];
79 "Completion contract met?" [shape=diamond];
80 "task-done: run tests, ledger the result; mark todo complete" [shape=box];
81 }
83 "Setup: worktree, workspace + ledger, read plan + spec, pre-flight scan" [shape=box];
84 "More tasks remain?" [shape=diamond];
85 "Final whole-branch review (fresh reviewer if you have one)" [shape=box];
86 "Re-grade, then: Critical/Important → ONE fix pass, each fix RED→GREEN + green suite; Minor → ledger" [shape=box];
87 "Final review clean: delete this plan's workspace" [shape=box];
88 "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
90 "Setup: worktree, workspace + ledger, read plan + spec, pre-flight scan" -> "task-start: brief + BASE; read the brief";
91 "task-start: brief + BASE; read the brief" -> "Work the steps in order: TDD, run every verification, read every output";
92 "Work the steps in order: TDD, run every verification, read every output" -> "Step output matches plan's Expected?";
93 "Step output matches plan's Expected?" -> "Plan wrong? Rule and ledger. Code wrong? systematic-debugging" [label="no"];
94 "Plan wrong? Rule and ledger. Code wrong? systematic-debugging" -> "Work the steps in order: TDD, run every verification, read every output";
95 "Step output matches plan's Expected?" -> "Commit as the plan's commit steps say" [label="yes, last step"];
96 "Commit as the plan's commit steps say" -> "Completion contract met?";
97 "Completion contract met?" -> "Work the steps in order: TDD, run every verification, read every output" [label="no - finish the task"];
98 "Completion contract met?" -> "task-done: run tests, ledger the result; mark todo complete" [label="yes"];
99 "task-done: run tests, ledger the result; mark todo complete" -> "More tasks remain?";
100 "More tasks remain?" -> "task-start: brief + BASE; read the brief" [label="yes"];
101 "More tasks remain?" -> "Final whole-branch review (fresh reviewer if you have one)" [label="no"];
102 "Final whole-branch review (fresh reviewer if you have one)" -> "Re-grade, then: Critical/Important → ONE fix pass, each fix RED→GREEN + green suite; Minor → ledger";
103 "Re-grade, then: Critical/Important → ONE fix pass, each fix RED→GREEN + green suite; Minor → ledger" -> "Final review clean: delete this plan's workspace";
104 "Final review clean: delete this plan's workspace" -> "Use superpowers:finishing-a-development-branch";
106```

The Process

digraph process {
    rankdir=TB;

    subgraph cluster_per_task {
        label="Per Task";
        "task-start: brief + BASE; read the brief" [shape=box];
        "Work the steps in order: TDD, run every verification, read every output" [shape=box];
        "Step output matches plan's Expected?" [shape=diamond];
        "Plan wrong? Rule and ledger. Code wrong? systematic-debugging" [shape=box];
        "Commit as the plan's commit steps say" [shape=box];
        "Completion contract met?" [shape=diamond];
        "task-done: run tests, ledger the result; mark todo complete" [shape=box];
    }

    "Setup: worktree, workspace + ledger, read plan + spec, pre-flight scan" [shape=box];
    "More tasks remain?" [shape=diamond];
    "Final whole-branch review (fresh reviewer if you have one)" [shape=box];
    "Re-grade, then: Critical/Important → ONE fix pass, each fix RED→GREEN + green suite; Minor → ledger" [shape=box];
    "Final review clean: delete this plan's workspace" [shape=box];
    "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];

    "Setup: worktree, workspace + ledger, read plan + spec, pre-flight scan" -> "task-start: brief + BASE; read the brief";
    "task-start: brief + BASE; read the brief" -> "Work the steps in order: TDD, run every verification, read every output";
    "Work the steps in order: TDD, run every verification, read every output" -> "Step output matches plan's Expected?";
    "Step output matches plan's Expected?" -> "Plan wrong? Rule and ledger. Code wrong? systematic-debugging" [label="no"];
    "Plan wrong? Rule and ledger. Code wrong? systematic-debugging" -> "Work the steps in order: TDD, run every verification, read every output";
    "Step output matches plan's Expected?" -> "Commit as the plan's commit steps say" [label="yes, last step"];
    "Commit as the plan's commit steps say" -> "Completion contract met?";
    "Completion contract met?" -> "Work the steps in order: TDD, run every verification, read every output" [label="no - finish the task"];
    "Completion contract met?" -> "task-done: run tests, ledger the result; mark todo complete" [label="yes"];
    "task-done: run tests, ledger the result; mark todo complete" -> "More tasks remain?";
    "More tasks remain?" -> "task-start: brief + BASE; read the brief" [label="yes"];
    "More tasks remain?" -> "Final whole-branch review (fresh reviewer if you have one)" [label="no"];
    "Final whole-branch review (fresh reviewer if you have one)" -> "Re-grade, then: Critical/Important → ONE fix pass, each fix RED→GREEN + green suite; Minor → ledger";
    "Re-grade, then: Critical/Important → ONE fix pass, each fix RED→GREEN + green suite; Minor → ledger" -> "Final review clean: delete this plan's workspace";
    "Final review clean: delete this plan's workspace" -> "Use superpowers:finishing-a-development-branch";
}
Raw lines 66 to 107
108## Setup
110Ensure the work happens in an isolated workspace: use
111superpowers:using-git-worktrees to create one or verify the existing one.
112Never start implementation on a main/master branch without your human
113partner's explicit consent.
115Conversation memory does not survive compaction. An inline executor that
116loses its place re-implements tasks whose commits already exist — the same
117failure as a controller re-dispatching them, paid for in your own context.
118Track progress in a ledger file, not only in todos. Harness todos are a
119live view; the ledger is the record.
121The workspace and ledger are shared with superpowers:subagent-driven-development
122— same directory, same format — so a plan can change executors mid-flight
123and the new one resumes from the same ledger.
125- Each plan owns a workspace: at skill start, run
126 `../subagent-driven-development/scripts/sdd-workspace PLAN_FILE` — it
127 prints the plan's git-ignored directory
128 (`<repo-root>/.superpowers/sdd/<plan-basename>/`), home to every
129 artifact for THIS plan: ledger, briefs, review packages. Another plan's
130 directory is never yours to read or write.
131- Check for this plan's ledger at `<workspace>/progress.md`. If its first
132 line names your plan file, tasks with a `Task <N>: complete` line are
133 DONE — do not redo them; resume at the first task without one. Their
134 commits exist in git even when your context no longer remembers making
135 them: after compaction, trust the ledger and `git log` over your own
136 recollection. A ledger whose first line names a different plan file is
137 another plan's progress: leave it and start your own, fresh.
138- Create the ledger with its identity as the first line:
139 `# SDD ledger — plan: <plan file path>`.
140- `git clean -fdx` will destroy the workspace (it's git-ignored scratch);
141 if that happens, recover from `git log`.
143Read the plan once, note its context and Global Constraints, and create a
144todo per task. If the plan names a Spec, read that too: the spec is the
145authority the plan argues from, and conflicts inside the plan resolve
146against it. A plan with no reachable spec gets a ledger note saying so —
147rulings made without one are provisional.
149**REQUIRED SUB-SKILL:** load superpowers:test-driven-development now,
150before Task 1. It governs every step of every task below; a plan whose
151steps already say "write the failing test first" does not exempt you
152from reading it.
154Before Task 1, scan the plan for conflicts between tasks. The plan's
155Interfaces blocks tell you where to look: for every task that consumes
156what an earlier task produces, one ledger row — the two tasks, what one
157produces against what the other consumes, and what you found. Tasks that
158share nothing get no row; a plan whose tasks share nothing gets the single
159line `Pre-flight: no shared interfaces`. Rule on each conflict a row
160surfaces with the spec as the binding authority, record the ruling beside
161its row, and start Task 1. Each task's own text is checked when you read
162its brief, not here.

Setup

Ensure the work happens in an isolated workspace: use superpowers:using-git-worktrees to create one or verify the existing one. Never start implementation on a main/master branch without your human partner's explicit consent.

Conversation memory does not survive compaction. An inline executor that loses its place re-implements tasks whose commits already exist — the same failure as a controller re-dispatching them, paid for in your own context. Track progress in a ledger file, not only in todos. Harness todos are a live view; the ledger is the record.

The workspace and ledger are shared with superpowers:subagent-driven-development — same directory, same format — so a plan can change executors mid-flight and the new one resumes from the same ledger.

  • Each plan owns a workspace: at skill start, run ../subagent-driven-development/scripts/sdd-workspace PLAN_FILE — it prints the plan's git-ignored directory (<repo-root>/.superpowers/sdd/<plan-basename>/), home to every artifact for THIS plan: ledger, briefs, review packages. Another plan's directory is never yours to read or write.
  • Check for this plan's ledger at <workspace>/progress.md. If its first line names your plan file, tasks with a Task <N>: complete line are DONE — do not redo them; resume at the first task without one. Their commits exist in git even when your context no longer remembers making them: after compaction, trust the ledger and git log over your own recollection. A ledger whose first line names a different plan file is another plan's progress: leave it and start your own, fresh.
  • Create the ledger with its identity as the first line: # SDD ledger — plan: <plan file path>.
  • git clean -fdx will destroy the workspace (it's git-ignored scratch); if that happens, recover from git log.

Read the plan once, note its context and Global Constraints, and create a todo per task. If the plan names a Spec, read that too: the spec is the authority the plan argues from, and conflicts inside the plan resolve against it. A plan with no reachable spec gets a ledger note saying so — rulings made without one are provisional.

REQUIRED SUB-SKILL: load superpowers:test-driven-development now, before Task 1. It governs every step of every task below; a plan whose steps already say "write the failing test first" does not exempt you from reading it.

Before Task 1, scan the plan for conflicts between tasks. The plan's Interfaces blocks tell you where to look: for every task that consumes what an earlier task produces, one ledger row — the two tasks, what one produces against what the other consumes, and what you found. Tasks that share nothing get no row; a plan whose tasks share nothing gets the single line Pre-flight: no shared interfaces. Rule on each conflict a row surfaces with the spec as the binding authority, record the ruling beside its row, and start Task 1. Each task's own text is checked when you read its brief, not here.

Raw lines 108 to 163
Names a skill using-git-worktrees :111
Starts an agent dispatching :117
Names a skill subagent-driven-development :121
Starts an agent subagent :126
Runs code scripts/sdd-workspace :126
Names a skill test-driven-development :149
164## The Task Loop
166Everything you print, and every tool result, stays resident in your
167context for the rest of the session. Redirect long test output to a file
168in the workspace and read its tail; read a brief, not the whole plan.

The Task Loop

Everything you print, and every tool result, stays resident in your context for the rest of the session. Redirect long test output to a file in the workspace and read its tail; read a brief, not the whole plan.

Raw lines 164 to 169
170### 1. Take the task
172- Run this skill's `scripts/task-start PLAN_FILE N`. It prints the brief
173 path and BASE (the commit the task's range is cut from) in one call.
174 Read the brief for every task, including ones you remember from setup:
175 what you remember is a summary, the brief has the exact values,
176 signatures, and test cases.
177- Mark the task's todo in_progress.
179Every tool call is a turn that re-reads your whole context. Bookkeeping
180rides along with work — a ledger append in the same call as the commit,
181never in a call of its own.

1. Take the task

  • Run this skill's scripts/task-start PLAN_FILE N. It prints the brief path and BASE (the commit the task's range is cut from) in one call. Read the brief for every task, including ones you remember from setup: what you remember is a summary, the brief has the exact values, signatures, and test cases.
  • Mark the task's todo in_progress.

Every tool call is a turn that re-reads your whole context. Bookkeeping rides along with work — a ledger append in the same call as the commit, never in a call of its own.

Raw lines 170 to 182
Runs code scripts/task-start :172
183### 2. Work the steps
185The plan's steps are already in RED-GREEN order; follow them in that
186order under superpowers:test-driven-development, loaded at setup. A test
187step's code is written first and run first. Watching it fail is a step,
188not a formality — a test that passes before the implementation exists is
189a finding about the test.
191Every step that runs a command has an `Expected:` line. Run the command,
192read its output, and compare. Three outcomes:
194- **Matches.** Next step.
195- **The code is wrong.** Use superpowers:systematic-debugging. Find the
196 cause; never patch the symptom to make the step's output match.
197- **The plan is wrong** — a step contradicts the spec, an interface from an
198 earlier task doesn't match what this task consumes, a command that
199 cannot work. Rule on the smallest change that satisfies the spec, ledger
200 it as `Task <N>: Ruling: <finding> — <what you decided and why>`, and
201 continue. The ruling is carried, not remembered: later tasks that touch
202 the same interface read it from the ledger.
204Commit as the plan's commit steps say. A task that spans several commits
205is fine; BASE is what the review range is cut from, never `HEAD~1`.

2. Work the steps

The plan's steps are already in RED-GREEN order; follow them in that order under superpowers:test-driven-development, loaded at setup. A test step's code is written first and run first. Watching it fail is a step, not a formality — a test that passes before the implementation exists is a finding about the test.

Every step that runs a command has an Expected: line. Run the command, read its output, and compare. Three outcomes:

  • Matches. Next step.
  • The code is wrong. Use superpowers:systematic-debugging. Find the cause; never patch the symptom to make the step's output match.
  • The plan is wrong — a step contradicts the spec, an interface from an earlier task doesn't match what this task consumes, a command that cannot work. Rule on the smallest change that satisfies the spec, ledger it as Task <N>: Ruling: <finding> — <what you decided and why>, and continue. The ruling is carried, not remembered: later tasks that touch the same interface read it from the ledger.

Commit as the plan's commit steps say. A task that spans several commits is fine; BASE is what the review range is cut from, never HEAD~1.

Raw lines 183 to 206
Names a skill test-driven-development :186
Names a skill systematic-debugging :195
207### 3. The completion contract
209Before a task's ledger line, all of the following are true, with evidence
210in this session — not inferred from the diff looking right:
212- Every test the brief names exists and ran in this task, and you read
213 the output.
214- The final test run for the task passed — `task-done` is that run, and
215 it writes the command and result into the ledger line.
216- Every `Expected:` line in the brief was compared against real output.
217- Every deviation from the brief has a `Ruling:` line in the ledger.
219**REQUIRED SUB-SKILL:** superpowers:verification-before-completion governs
220the claim. If any item is missing, the task is not complete: finish it.

3. The completion contract

Before a task's ledger line, all of the following are true, with evidence in this session — not inferred from the diff looking right:

  • Every test the brief names exists and ran in this task, and you read the output.
  • The final test run for the task passed — task-done is that run, and it writes the command and result into the ledger line.
  • Every Expected: line in the brief was compared against real output.
  • Every deviation from the brief has a Ruling: line in the ledger.

REQUIRED SUB-SKILL: superpowers:verification-before-completion governs the claim. If any item is missing, the task is not complete: finish it.

Raw lines 207 to 221
222### 4. Complete the task
224Run this skill's `scripts/task-done PLAN_FILE N BASE -- <test command>`
225with the test command the brief names for the whole task. It runs the
226tests, keeps the full output in the workspace, prints the tail, and — only
227if they pass — appends the completion line to the ledger:
229`Task <N>: complete (commits <base7>..<head7>, tests: <command> → <result>)`
231A failing run records nothing; the task is not complete. When it records,
232mark the todo complete and take the next task.

4. Complete the task

Run this skill's scripts/task-done PLAN_FILE N BASE -- <test command> with the test command the brief names for the whole task. It runs the tests, keeps the full output in the workspace, prints the tail, and — only if they pass — appends the completion line to the ledger:

Task <N>: complete (commits <base7>..<head7>, tests: <command> → <result>)

A failing run records nothing; the task is not complete. When it records, mark the todo complete and take the next task.

Raw lines 222 to 233
Runs code scripts/task-done :224
234## Final Review
236Run `../subagent-driven-development/scripts/review-package PLAN_FILE MERGE_BASE HEAD`
237(MERGE_BASE = the commit the branch started from, e.g.
238`git merge-base main HEAD`) and review from the file it prints.
240**With a subagent tool:** dispatch the reviewer on the most capable
241available model — the whole-branch review is a judgment task — using
243[code-reviewer.md](../requesting-code-review/code-reviewer.md), with the
244package path, the plan and spec paths, the plan's Review Focus section
245verbatim if it has one (the input classes and failure modes the plan's
246tests do not exercise — the reviewer checks each deliberately), and a
247pointer to the ledger's `Ruling:` lines so it can weigh the calls you
248made. Specify the model
249explicitly; an omitted model inherits the session's, which may not be the
250most capable. This is the one fresh context the whole run buys. Do not
251skip it, and do not replace it with your own read of the diff.
253**Without a subagent tool:** read code-reviewer.md and perform that review
254yourself against the package, as a separate pass after the last task's
255ledger line. Write `Final review: self-review (no subagent tool)` to the
256ledger, and say so in your final message: a self-review by the author is
257weaker than a fresh reviewer, and your human partner decides whether that
258is enough before merge.
260Sort the findings before you act on any of them. The reviewer's severity
261labels are advice; the gate is yours. Its "Declined to judge" list is
262yours too: every line there is a ruling you make and ledger, exactly like
263a plan conflict — `Final: Ruling: <behavior the reviewer set aside> —
264<what a reasonable person using this software gets, and why that stands
265or why it is now a finding> — <cost if wrong>`. Re-grade first, by effect: the
266spec is a vision document, and a finding's grade is what a reasonable
267person using this software gets if it ships, not whether the spec names
268the input that triggers it — a reviewer who set a finding at Minor
269because the spec was silent has graded the spec, not the effect. Then:
271- **Critical and Important** enter the fix pass.
272- **Minor** goes to the ledger as `Final: minor (deferred): <one-liner>`
273 and to your final message under "Deferred minors". Minors never enter
274 the fix pass, and never become rulings — a ruling is a decision about a
275 conflict, not a note that you declined a polish suggestion.
277Fix the Critical and Important findings yourself — you are the
278implementer here — in ONE pass. Each fix is verified by TDD, not by a
279second reviewer: write the test that reproduces the finding, watch it
280fail, make it pass, then run the whole suite. Record each in the ledger as
281`Final: fixed <finding> — <test name> RED→GREEN, suite <N>/<N>`. A fix
282without a test that failed first is not verified; a suite that is not
283green after the pass means the pass is not over. Do not dispatch a
284re-review: it would re-read a diff whose covering tests already answer
285"addressed" and whose suite run already answers "broke nothing".
287A finding you decide not to fix is a ruling — `Final: Ruling: <finding> —
288<why the code stands> — <cost if wrong>` — and reaches your human partner
289in the rulings list. There is no second fix pass.

Final Review

Run ../subagent-driven-development/scripts/review-package PLAN_FILE MERGE_BASE HEAD (MERGE_BASE = the commit the branch started from, e.g. git merge-base main HEAD) and review from the file it prints.

With a subagent tool: dispatch the reviewer on the most capable available model — the whole-branch review is a judgment task — using superpowers:requesting-code-review's code-reviewer.md, with the package path, the plan and spec paths, the plan's Review Focus section verbatim if it has one (the input classes and failure modes the plan's tests do not exercise — the reviewer checks each deliberately), and a pointer to the ledger's Ruling: lines so it can weigh the calls you made. Specify the model explicitly; an omitted model inherits the session's, which may not be the most capable. This is the one fresh context the whole run buys. Do not skip it, and do not replace it with your own read of the diff.

Without a subagent tool: read code-reviewer.md and perform that review yourself against the package, as a separate pass after the last task's ledger line. Write Final review: self-review (no subagent tool) to the ledger, and say so in your final message: a self-review by the author is weaker than a fresh reviewer, and your human partner decides whether that is enough before merge.

Sort the findings before you act on any of them. The reviewer's severity labels are advice; the gate is yours. Its "Declined to judge" list is yours too: every line there is a ruling you make and ledger, exactly like a plan conflict — Final: Ruling: <behavior the reviewer set aside> — <what a reasonable person using this software gets, and why that stands or why it is now a finding> — <cost if wrong>. Re-grade first, by effect: the spec is a vision document, and a finding's grade is what a reasonable person using this software gets if it ships, not whether the spec names the input that triggers it — a reviewer who set a finding at Minor because the spec was silent has graded the spec, not the effect. Then:

  • Critical and Important enter the fix pass.
  • Minor goes to the ledger as Final: minor (deferred): <one-liner> and to your final message under "Deferred minors". Minors never enter the fix pass, and never become rulings — a ruling is a decision about a conflict, not a note that you declined a polish suggestion.

Fix the Critical and Important findings yourself — you are the implementer here — in ONE pass. Each fix is verified by TDD, not by a second reviewer: write the test that reproduces the finding, watch it fail, make it pass, then run the whole suite. Record each in the ledger as Final: fixed <finding> — <test name> RED→GREEN, suite <N>/<N>. A fix without a test that failed first is not verified; a suite that is not green after the pass means the pass is not over. Do not dispatch a re-review: it would re-read a diff whose covering tests already answer "addressed" and whose suite run already answers "broke nothing".

A finding you decide not to fix is a ruling — Final: Ruling: <finding> — <why the code stands> — <cost if wrong> — and reaches your human partner in the rulings list. There is no second fix pass.

Raw lines 234 to 290
Starts an agent subagent :236
Runs code scripts/review-package :236
Starts an agent dispatch :240
Names a skill requesting-code-review :242
291## Finish
293Before you delete anything, collect every ledger line containing
294`Ruling:` into your final message under "Rulings I made", in the order you
295made them, each with what it costs if wrong, and every `minor (deferred)`
296line under "Deferred minors". Both lists are exhaustive. Your final
297message is the only place the decisions you took on your human partner's
298behalf — and the findings you chose not to act on — reach them.
300When the final review is clean and its fixes are committed, delete this
301plan's workspace directory — the git history is the record now. Sibling
302directories belong to other plans; leave them alone.

Finish

Before you delete anything, collect every ledger line containing Ruling: into your final message under "Rulings I made", in the order you made them, each with what it costs if wrong, and every minor (deferred) line under "Deferred minors". Both lists are exhaustive. Your final message is the only place the decisions you took on your human partner's behalf — and the findings you chose not to act on — reach them.

When the final review is clean and its fixes are committed, delete this plan's workspace directory — the git history is the record now. Sibling directories belong to other plans; leave them alone.

Use superpowers:finishing-a-development-branch.

Raw lines 291 to 305
306## Common Rationalizations
308| Excuse | Reality |
309|--------|---------|
310| "I remember what Task N says" | You remember a summary. The brief has the exact values. Read it. |
311| "The plan's code is right, skip watching the test fail" | A test you never saw fail proves nothing. It is one step. Run it. |
312| "I'll run the full suite at the end instead of per step" | Per-step runs are how you learn which step broke it. The end-of-task run is the contract, not a substitute. |
313| "The plan is wrong here, I'll just do the right thing" | Do the right thing and ledger the ruling. Unledgered deviation is a decision made in secret. |
314| "I'll write the ledger lines after a few tasks" | Compaction does not wait for a convenient moment. One line per task, in the same message as the commit. |
315| "Let me check in before the next task" | They chose inline to spend less. Progress prompts spend their time instead. Only the four stops stop you. |
316| "I read my own diff carefully; the final reviewer is redundant" | Same author, same blind spots. The reviewer is the only fresh context this run buys. |
317| "Tests should pass, the change was trivial" | "Should" is not evidence. The contract requires the command and its output. |
318| "Subagents are slow and expensive, I'll skip the final review too" | Inline already removed the per-task reviewers. One review of the whole branch is the floor, not the ceiling. |
319| "The reviewer said Minor, so it's Minor" | The label graded the spec's silence. Grade what the person gets. Re-grade, then gate. |
320| "The fix is obvious, no need for a failing test first" | The failing test is the only proof the finding was real and is now gone. Without it you have a diff and a hope. |
321| "I'll fix the minors too while I'm in there" | Every minor you fix is a test, a fix, and a suite run your partner did not ask for. Ledger them; your partner decides. |

Common Rationalizations

ExcuseReality
"I remember what Task N says"You remember a summary. The brief has the exact values. Read it.
"The plan's code is right, skip watching the test fail"A test you never saw fail proves nothing. It is one step. Run it.
"I'll run the full suite at the end instead of per step"Per-step runs are how you learn which step broke it. The end-of-task run is the contract, not a substitute.
"The plan is wrong here, I'll just do the right thing"Do the right thing and ledger the ruling. Unledgered deviation is a decision made in secret.
"I'll write the ledger lines after a few tasks"Compaction does not wait for a convenient moment. One line per task, in the same message as the commit.
"Let me check in before the next task"They chose inline to spend less. Progress prompts spend their time instead. Only the four stops stop you.
"I read my own diff carefully; the final reviewer is redundant"Same author, same blind spots. The reviewer is the only fresh context this run buys.
"Tests should pass, the change was trivial""Should" is not evidence. The contract requires the command and its output.
"Subagents are slow and expensive, I'll skip the final review too"Inline already removed the per-task reviewers. One review of the whole branch is the floor, not the ceiling.
"The reviewer said Minor, so it's Minor"The label graded the spec's silence. Grade what the person gets. Re-grade, then gate.
"The fix is obvious, no need for a failing test first"The failing test is the only proof the finding was real and is now gone. Without it you have a diff and a hope.
"I'll fix the minors too while I'm in there"Every minor you fix is a test, a fix, and a suite run your partner did not ask for. Ledger them; your partner decides.
Raw lines 306 to 321
Starts an agent Subagents :318

From obra/superpowers at 2ce8aa1, 2026-10-21. Skills read by DeepSeek V4.1 Flash on 2026-11-04. Summary and techniques by Claude Opus 5.5 on 2026-11-06.