@loneexile/omp-superpowers 6.4.2-omp.4 → 7.0.0-omp.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,25 @@ A version is `<upstream version>-omp.<n>`: the upstream release this fork is syn
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [7.0.0-omp.2] - 2026-10-11
10
+
11
+ ### Changed
12
+
13
+ - **Specs and plans save to `docs/specs/` and `docs/plans/`.** Upstream saves them under `docs/superpowers/`. brainstorming's written design and writing-plans' plan file now go to the shorter paths, and the example plan paths in executing-plans, subagent-driven-development and requesting-code-review match. `.superpowers/` (the SDD workspace and the brainstorm companion's files) is unchanged. Existing plans under `docs/superpowers/plans/` still run: SDD and executing-plans take any plan path. `scripts/check-npm-package.sh` now fails if a shipped file names `docs/superpowers`, and fails rather than passes if that search errors.
14
+
15
+ ## [7.0.0-omp.1] - 2026-10-11
16
+
17
+ Synced to upstream [v7.0.0](https://github.com/obra/superpowers/blob/v7.0.0/RELEASE-NOTES.md).
18
+
19
+ ### Fixed
20
+
21
+ - **`skill://` in `bash` is narrower than the setup text said.** omp's shell resolves `skill://` paths itself, in its builtins and in-process coreutils, but an external program gets the literal URL, and a host extension can turn a command into one. In a real omp 18.5.0 run with the RTK extension, the controller's `realpath skill://subagent-driven-development/scripts` printed the directory, and the `ls skill://…/scripts` it added next, rewritten to `rtk ls`, failed with "No such file or directory". The SDD and executing-plans setup now says so and says to use the printed path everywhere else. The instructed path, one `realpath` then the printed directory, was never affected.
22
+ - **A vibe director's todo now follows the ledger at each read.** In the same run the director read three new `Task N: complete` lines, then waited another 10 minutes before marking them, so the todo lagged the ledger by 8 to 18 minutes. The vibe notes now say to mark them before waiting again.
23
+
24
+ ### Changed
25
+
26
+ - **Synced with upstream v7.0.0** (from v6.4.2). What reaches omp: `brainstorming` is rebuilt around drawing out what you want before sizing the work, and a builder check (`builder-check-prompt.md`), which a subagent runs on the written design, replaces its spec reviewer. `task-done` now records a passing task whose tests print nothing; before, it exited without writing the ledger line. `sdd-workspace` leaves an existing `.superpowers/sdd/.gitignore` alone and keeps plan markers repo-relative on Git Bash. The systematic-debugging example no longer prints secret values. Upstream's Windows hook, Antigravity and Hermes changes are outside the npm package. No fork text needed porting: upstream touched none of the files this fork rewrites, and the builder check's general-purpose subagent goes to omp's `task` tool through the existing mapping.
27
+
9
28
  ## [6.4.2-omp.4] - 2026-10-03
10
29
 
11
30
  ### Added
@@ -71,7 +90,9 @@ First release, synced to upstream [v6.4.2](https://github.com/obra/superpowers/b
71
90
  - The fork's rewritten subagent-driven-development text invokes its helper scripts through `bash` as well, so a package extractor that drops exec bits cannot break them.
72
91
  - `sdd-final-reviewer` carries upstream's new review rules from `code-reviewer.md`, the template it replaces in SDD's final review: the spec is a vision document (behavior it is silent on is graded by what a reasonable person expects), and a "Declined to judge" section that the controller rules on and ledgers like a plan conflict.
73
92
 
74
- [Unreleased]: https://github.com/LoneExile/omp-superpowers/compare/v6.4.2-omp.4...HEAD
93
+ [Unreleased]: https://github.com/LoneExile/omp-superpowers/compare/v7.0.0-omp.2...HEAD
94
+ [7.0.0-omp.2]: https://github.com/LoneExile/omp-superpowers/releases/tag/v7.0.0-omp.2
95
+ [7.0.0-omp.1]: https://github.com/LoneExile/omp-superpowers/releases/tag/v7.0.0-omp.1
75
96
  [6.4.2-omp.4]: https://github.com/LoneExile/omp-superpowers/releases/tag/v6.4.2-omp.4
76
97
  [6.4.2-omp.3]: https://github.com/LoneExile/omp-superpowers/releases/tag/v6.4.2-omp.3
77
98
  [6.4.2-omp.2]: https://github.com/LoneExile/omp-superpowers/releases/tag/v6.4.2-omp.2
package/README.md CHANGED
@@ -42,7 +42,7 @@ Agent definitions are read **per dispatch**, so a reinstall takes effect on the
42
42
  The skills drive themselves once loaded. The usual path:
43
43
 
44
44
  1. `read skill://brainstorming` — turn an idea into a design
45
- 2. `read skill://writing-plans` — produce `docs/superpowers/plans/<date>-<name>.md`
45
+ 2. `read skill://writing-plans` — produce `docs/plans/<date>-<name>.md`
46
46
  3. `read skill://subagent-driven-development` — execute the plan task by task via subagents. If you choose Native at the plan handoff, `executing-plans` runs instead: the session does every task itself, and only the final review is a subagent (`sdd-final-reviewer`)
47
47
  4. `read skill://finishing-a-development-branch` — merge / PR / discard
48
48
 
@@ -163,6 +163,7 @@ Rules that are easy to get wrong:
163
163
  - `README.md` — this file: rewritten for omp (install, seats, overrides, maintenance); upstream's multi-harness README is gone
164
164
  - `tests/pi/test-pi-extension.mjs` — covers the extension's lifecycle (bootstrap on start, `session_switch`, compaction; none for subagents or an auto-continuing `agent_end`), the action table in `pi-tools.md`, the seat table against the names in `agents/*.md`, and the `.omp-plugin/plugin.json` manifest; the package-name assertion is gone (`scripts/check-npm-package.sh` checks the published name)
165
165
  - `package.json` — the npm identity: `@loneexile/omp-superpowers`, `<upstream version>-omp.<n>` versions, a `files` allowlist (the extension, `skills/`, `agents/`), `publishConfig`, `omp`/`oh-my-pi` keywords; `main` is dropped, since it pointed at the OpenCode plugin this package does not ship
166
+ - Spec and plan paths — `docs/specs/` and `docs/plans/` instead of upstream's `docs/superpowers/specs/` and `docs/superpowers/plans/`: brainstorming's *Where it goes*, writing-plans' save path and handoff lines, and the example plan paths in executing-plans, subagent-driven-development and requesting-code-review. `.superpowers/` (the SDD workspace, brainstorm companion files) is unchanged. `scripts/check-npm-package.sh` fails if a shipped file names `docs/superpowers/`
166
167
  - `CHANGELOG.md`, `.github/workflows/` (CI, npm release), `scripts/check-npm-package.sh` — new
167
168
 
168
169
  Everything else is upstream, unmodified.
@@ -181,6 +182,8 @@ Expect conflicts in `skills/subagent-driven-development/`, `pi-tools.md`, `READM
181
182
 
182
183
  A clean rebase is not the whole sync. Upstream's edits to text this fork replaced never reach the replacement, so read upstream's diff for those files and port what still applies. The v6.4.x sync needed two: `bash scripts/...` invocations in the SDD text, and `code-reviewer.md`'s new review rules. Upstream edits to `code-reviewer.md`'s What to Check, Calibration, severity definitions and Critical Rules now reach `sdd-final-reviewer` without porting, because it reads the file at run time. Edits to the vision-document or Declined-to-judge sections still need porting into the agent body, which carries them itself.
183
184
 
185
+ The fork changes upstream's `docs/superpowers/specs` and `docs/superpowers/plans` lines in brainstorming, writing-plans, executing-plans, subagent-driven-development and requesting-code-review. When upstream edits around one of them, `-X theirs` keeps the fork's whole conflicting hunk, so read upstream's diff of those lines and port the rest of the hunk. New upstream text naming `docs/superpowers/` fails `check-npm-package.sh` until it says `docs/specs/` or `docs/plans/`.
186
+
184
187
  ### Releasing
185
188
 
186
189
  1. Set `version` in `package.json`, move CHANGELOG.md's *Unreleased* entries under that version, commit, push, and wait for CI.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loneexile/omp-superpowers",
3
- "version": "6.4.2-omp.4",
3
+ "version": "7.0.0-omp.2",
4
4
  "description": "obra/superpowers adapted for Oh My Pi (omp): a truthful task/todo tool mapping and five subagent-driven-development agents, each with its own model, thinking level, and tools.",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -1,285 +1,225 @@
1
1
  ---
2
2
  name: brainstorming
3
- description: "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation."
3
+ description: "You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation)."
4
4
  ---
5
5
 
6
- # Brainstorming Ideas Into Designs
6
+ # Brainstorming
7
+
8
+ You are very good at building. You build what you believe your human
9
+ partner wants, and that belief is usually thinner than it feels. This
10
+ skill is for finding out what they actually want, and why, before
11
+ anything gets built.
12
+
13
+ People often haven't finished working out what they want. Good questions
14
+ help them think it through. When you understand the why, you make the
15
+ hundred decisions they never mention the way they would have made them.
16
+
17
+ ## First: What Do You Actually Know?
18
+
19
+ Before you reply, ask yourself: what do I know about what they want, and
20
+ why?
21
+
22
+ - **Everything that matters is in the request** ("make the icon cornflower
23
+ blue"). This is a quick, clear task. Do it, and say what you did.
24
+ - **Something non-trivial is missing.** Start the conversation.
25
+
26
+ ## Your First Message
27
+
28
+ Your first message is two things, in this order:
29
+
30
+ 1. One line letting them know that if they'd rather skip the questions and
31
+ have you just start, they can say so. If they take you up on it, this
32
+ skill is done: state any significant how-it-gets-made choice
33
+ (platform, language, medium) in one plain line, then do what they
34
+ asked through the normal workflow.
35
+ 2. One open question that gets them describing. Ask about a real moment
36
+ or a concrete picture: "What's the moment you find yourself wishing
37
+ this existed?" or "Tell me about the people who'll be in the room."
38
+
39
+ That's the whole message.
40
+
41
+ ## The Conversation
42
+
43
+ Each message ends with one question: a single sentence with no list of
44
+ example answers hanging off it. Use plain language, pitched just a little
45
+ above where your human partner is. Match their vocabulary; never use
46
+ process jargon.
7
47
 
8
- Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
48
+ Be clear and concise. Lead with what matters. Avoid jargon. When you
49
+ report what you found, give them the most important findings and offer
50
+ the rest.
9
51
 
10
- Start by classifying how much process the request needs, then work
11
- through your path: understand the context, refine the idea, present a
12
- design, and get your human partner's approval.
13
-
14
- ## Establish Shared Understanding
15
-
16
- The outcome of brainstorming is an understanding your human partner can
17
- recognize and correct, grounded in what they want to accomplish.
18
-
19
- 1. **Discover intent.** Use the request and available context to identify
20
- the intended outcome, who it is for, and what success looks like. When
21
- that information is missing, ask one focused question about purpose or
22
- intended use before proposing features or an approach. Knowing the app
23
- genre does not tell you why your partner wants it. Gathering missing
24
- requirements does not ask them to authorize the task again.
25
- 2. **Write back your understanding.** Summarize the intended outcome,
26
- relevant constraints, and success criteria in a short note your partner
27
- can assess. Separate what they said from assumptions. Invite correction
28
- and incorporate their answer before treating this as the design brief.
29
- 3. **Carry intent into the design.** Preserve the agreed understanding in
30
- the selected path's design artifact: the written spec for architectural
31
- work, or the in-chat design/probe for bounded work and spikes. Check
32
- proposed features and technical choices against that understanding.
33
-
34
- When the request already supplies the purpose and constraints, reflect
35
- that understanding instead of asking the same questions again. Keep the
36
- note concise; its accuracy and the opportunity to correct it matter.
52
+ **Get them describing.** Open questions come first. Their own words carry
53
+ intent that your options can't. Offer a short menu only when they're
54
+ stuck. When they say "just guess" or "what do you think?", propose
55
+ something concrete.
56
+
57
+ **How it gets made.** Every project rests on choices about medium, tools,
58
+ materials, and resources: the platform, programming language, and
59
+ libraries for an app; the medium for a piece of art. Find out early which
60
+ of those choices they want to make, which they're handing to you, and what
61
+ they already have to work with. Someone with strong views or skills will
62
+ want to talk it through. Someone counting on you needs sensible defaults,
63
+ said in plain words. When there's existing work, build on what it already
64
+ uses. Any choice you make goes in the design as your call, never as
65
+ something they agreed to.
66
+
67
+ **Ground to cover.** This is territory, not a script. Never read these
68
+ out as questions:
69
+
70
+ - what kind of thing this is, and what makes it special
71
+ - why now, and what success looks like to them
72
+ - goals, non-goals, and anti-goals (what would make this a failure even
73
+ if it technically works)
74
+ - prior art: what they've seen elsewhere, loved or hated
75
+ - current state: what exists now, what they've tried
76
+ - the details they care about
77
+
78
+ **Questions that work** anchor in specifics: "Walk me through the last
79
+ time...", "If it could only do one of these well, which?", "What would
80
+ make you wince if I got it wrong?" A guess they can correct ("I'm
81
+ guessing this is because X keeps biting you?") often beats a question.
82
+
83
+ **Offer recon.** Once you have a bit of grounding and looking would help,
84
+ offer to go look: their codebase or project, their own files and data,
85
+ or the web. Say what you'd look for. They decide whether you go.
86
+
87
+ **Think wide privately.** Before you propose anything, come up with
88
+ several ideas and drop the weak ones, including any that fight what
89
+ they've told you about why. Show the comparison only when it helps them
90
+ decide.
91
+
92
+ **Show, don't tell.** Offer the visual companion (below) whenever seeing
93
+ would help more than reading:
94
+
95
+ - something they'll look at: a screen, a page, a printout, a sign
96
+ - a layout or arrangement: of a screen, a room, a schedule
97
+ - a flow or a sequence of steps
98
+ - options that would look different from each other
99
+ - a structure that's easier to see than read: a diagram, a timeline, a map
100
+
101
+ Once they've accepted, use it for mockups to react to, side-by-side
102
+ options, and throwaway prototypes they can click.
103
+
104
+ **Spike to feel things out.** Agentic work is waterfall, but very, very
105
+ fast. A quick throwaway build is often the cheapest way to learn what
106
+ they want or whether something works. Offer one when it would help.
107
+ When they just want to spike, get out of the way. Spikes get no tests
108
+ or minimal ones, aren't bulletproof, and skip the plan, implementation,
109
+ and review process. Bring what the spike taught you back into the
110
+ conversation.
111
+
112
+ ## Play It Back
113
+
114
+ Play back as you go. As soon as you understand one part well enough to
115
+ describe it (what it's for and who it serves, say, or how one piece
116
+ behaves), describe that part back in about 200-300 words, then return to
117
+ questions about the next part. Playback and questions alternate through
118
+ the whole conversation; the last chunk covers whatever is left.
119
+
120
+ Mark anything you're guessing as your guess; only what they said goes in
121
+ as theirs. End each chunk by asking what's wrong or missing.
122
+
123
+ Before you send a chunk, check it: does it describe something they'll
124
+ look at, like a page, a screen, a schedule, or a printout? If so, and
125
+ they haven't seen the visual companion offer yet, send the offer instead
126
+ (its own message, below) and hold the chunk for the next message. Once
127
+ they've accepted, put a mockup next to the description.
128
+
129
+ ## Size the Work
130
+
131
+ Once you understand what they want, pick a size and say it in plain
132
+ words. They can override it.
133
+
134
+ | Size | The full description | Then |
135
+ |------|----------------------|------|
136
+ | A quick, clear task | the request itself | do it |
137
+ | A small change | in chat | build it through the normal workflow |
138
+ | A project with a written design | a written design document | a full plan (for software: superpowers:writing-plans) |
139
+
140
+ If it grows mid-task, stop, say so, and step up a size.
141
+
142
+ If this is really several independent projects, say so, agree on an
143
+ order, and brainstorm them one at a time.
144
+
145
+ ## The Written Design
146
+
147
+ For a project, write a plain document a talented builder in the domain
148
+ could plan from without going back to your human partner. Cover:
149
+
150
+ - intent and the why
151
+ - goals, non-goals, anti-goals
152
+ - constraints
153
+ - the parts of the how they decided, as they decided them
154
+ - what's left to the builder
155
+
156
+ **Where it goes:** in a software repo,
157
+ `docs/specs/YYYY-MM-DD-<topic>-design.md`, committed.
158
+ Otherwise, ask. Your human partner's preferences override both.
159
+
160
+ **Builder check:** dispatch a fresh subagent with
161
+ `builder-check-prompt.md` in this directory. When you tell your human
162
+ partner you're writing it up, say a reviewer will read it first and you
163
+ may come back once with a few questions. Don't hand over the document
164
+ until the check is back. Sort what the builder asks into three piles:
165
+
166
+ - **Answered already** by the conversation or the project: put the answer
167
+ in the document.
168
+ - **Minor:** a sensible builder could settle it without changing what gets
169
+ built. Settle it yourself and mark it in the document as your call.
170
+ - **Theirs:** only your human partner can answer it, and the answer changes
171
+ what gets built.
172
+
173
+ Bring the "theirs" pile in one message, most important first. Update the
174
+ document with their answers, then hand it over with a short list of the
175
+ calls you made so they can check those while reading. That's the only
176
+ round of questions the check produces. Without a subagent tool, read the
177
+ document as that builder yourself.
37
178
 
38
179
  <HARD-GATE>
39
- Before taking any implementation action, including invoking an
40
- implementation skill, writing product code, scaffolding, installing
41
- product dependencies, or creating an external project, complete the
42
- selected path's prerequisites:
43
-
44
- - Spike: the human partner approves the question and probe.
45
- - Bounded: the human partner approves the short in-chat design.
46
- - Architectural: the human partner reviews and approves the written spec,
47
- then reviews the written implementation plan and selects its execution
48
- method. Conversational design approval only permits writing the spec;
49
- written-spec approval only permits invoking writing-plans.
50
-
51
- A reply approves the stage actually presented. Approval of an idea or
52
- feature scope does not approve artifacts that do not exist yet. Resume
53
- at the earliest incomplete stage; do not turn one approval into permission
54
- to skip the rest of the selected path. Read-only project exploration is
55
- allowed while those prerequisites remain incomplete.
180
+ Nothing gets built until your human partner approves the full
181
+ description: in chat for a small change, the document for a project.
182
+ Building includes writing product code, scaffolding, installing
183
+ dependencies, creating projects, and invoking an implementation skill.
184
+ Reading and exploring are fine.
185
+
186
+ Two exceptions. If they opted out of the questions, the skill is done
187
+ and the gate goes with it. A spike they said yes to may be built; it
188
+ stays labeled throwaway, and keeping what it produced is a new request
189
+ that comes back through this gate.
190
+
191
+ After a project's document is approved, the next step is the plan. For
192
+ software, invoke superpowers:writing-plans and no other skill.
56
193
  </HARD-GATE>
57
194
 
58
- ## Three Paths
59
-
60
- Before your first question, classify the request and say the
61
- classification out loud — "this looks bounded, so I'll present a short
62
- design here rather than write a spec" — so your human partner can
63
- override it:
64
-
65
- - **Spike** — a feasibility question ("can we...", "is it possible...",
66
- "quick and dirty is fine") whose output is an answer, not code you
67
- keep. Present the question and what you'll try in 2-3 sentences, get
68
- a nod, then find out as cheaply as correctness allows. No design
69
- doc, no spec file. Report findings as a recommendation; anything you
70
- built stays labeled throwaway.
71
- - **Bounded** — a well-scoped change to code that already exists in
72
- this repo: a new flag, a small endpoint, a one-file fix.
73
- Understanding the kind of app is not enough — bounded means the flow
74
- you are changing is already here to read. If there is no existing
75
- flow to change, the task is not bounded. Ask the clarifying
76
- questions that matter, present a short design IN CHAT (a few
77
- sentences to a few short paragraphs), and STOP. Implementation
78
- starts only after your human partner says yes to that design — a
79
- bounded task's approval is as hard a gate as an architectural
80
- one. No spec file, no implementation plan document.
81
- - **Architectural** — new projects, new subsystems, changes that
82
- restructure how components fit together or alter interfaces others
83
- depend on. Follow the full process: questions, approaches, sectioned
84
- design, written spec, then the writing-plans skill.
85
-
86
- When in doubt between two paths, take the heavier one. The ratchet is
87
- one-way: hidden complexity discovered mid-task upgrades the path —
88
- stop, say so, and step up. Nothing downgrades mid-task.
89
-
90
- ## Anti-Pattern: "Too Simple To Need Approval"
91
-
92
- Every path ends with your human partner approving the required design
93
- before implementation. A bounded change may need only two sentences in
94
- chat. A new todo-list project is architectural and requires the written
95
- spec and planning handoffs. Scale the artifact to the selected path;
96
- complete that path's reviews before implementation.
97
-
98
195
  ## Red Flags
99
196
 
100
197
  | Thought | Reality |
101
198
  |---------|---------|
102
- | "This is too simple to need a design" | Follow the selected path: a bounded change gets a short chat design; an architectural change gets the written spec and planning handoffs. |
103
- | "I'll call it bounded and skip the spec" | Reaching for a label to skip work IS the doubt — take the heavier path. |
104
- | "It's bounded and the design is obvious — I'll start while they read it" | The gate is the approval, not the design's length. Present, then stop until you hear yes. |
105
- | "I understand this kind of app, so it's bounded" | Bounded measures the repo, not your familiarity. A new project has no existing flow — it is architectural. |
106
- | "The spike works, so I'll keep the code" | A spike's output is an answer. Keeping the code is a new request — classify it. |
107
- | "It grew, but I'm almost done — no need to re-classify" | Hidden complexity upgrades the path mid-task. Stop and say so. |
108
- | "They approved the spike, so the follow-up change is approved too" | Each task gets its own classification and its own approval. |
109
-
110
- ## Checklist
111
-
112
- Classify first, announce the path, then create a task for each item on
113
- your path and complete them in order.
114
-
115
- **Spike:**
116
- 1. **Explore project context** — enough to frame the probe
117
- 2. **Present question + probe plan** — 2-3 sentences
118
- 3. **Get approval** — a nod is enough
119
- 4. **Investigate** — as cheaply as correctness allows
120
- 5. **Report findings** — a recommendation; label anything built as throwaway
121
-
122
- **Bounded:**
123
- 1. **Explore project context** — check files, docs, recent commits
124
- 2. **Ask clarifying questions** — one at a time, the ones that matter
125
- 3. **Present short design in chat** — approach, files touched, testing
126
- 4. **Get approval** — STOP and wait for an explicit yes; presenting the design and starting in the same breath is skipping the gate
127
- 5. **Implement** — proceed with the normal development workflow (TDD applies); no plan document
128
-
129
- **Architectural:**
130
- 1. **Explore project context** — check files, docs, recent commits
131
- 2. **Offer the visual companion just-in-time** — NOT upfront. The first time a question would genuinely be clearer shown than described, offer it then (its own message); on approval its browser tab opens for you. If no visual question ever arises, never offer it. See the Visual Companion section below.
132
- 3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
133
- 4. **Propose 2-3 approaches** — with trade-offs and your recommendation
134
- 5. **Present design** — in sections scaled to their complexity, get user approval after each section
135
- 6. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
136
- 7. **Spec self-review** — quick inline check for placeholders, contradictions, ambiguity, scope (see below)
137
- 8. **User reviews written spec** — ask user to review the spec file before proceeding
138
- 9. **Transition to implementation** — invoke writing-plans skill to create implementation plan
139
-
140
- ## Process Flow
141
-
142
- ```dot
143
- digraph brainstorming {
144
- "Classify: spike / bounded / architectural" [shape=diamond];
145
- "Present question + probe (2-3 sentences)" [shape=box];
146
- "Ask clarifying questions (bounded)" [shape=box];
147
- "Present short design in chat" [shape=box];
148
- "Human approves?" [shape=diamond];
149
- "Investigate; report recommendation" [shape=doublecircle];
150
- "Implement via normal workflow (no plan doc)" [shape=doublecircle];
151
- "Explore project context" [shape=box];
152
- "Ask clarifying questions" [shape=box];
153
- "Propose 2-3 approaches" [shape=box];
154
- "Present design sections" [shape=box];
155
- "User approves design?" [shape=diamond];
156
- "Write design doc" [shape=box];
157
- "Spec self-review\n(fix inline)" [shape=box];
158
- "User reviews spec?" [shape=diamond];
159
- "Invoke writing-plans skill" [shape=doublecircle];
160
- "Hidden complexity? Upgrade path" [shape=box];
161
-
162
- "Classify: spike / bounded / architectural" -> "Present question + probe (2-3 sentences)" [label="spike"];
163
- "Classify: spike / bounded / architectural" -> "Ask clarifying questions (bounded)" [label="bounded"];
164
- "Classify: spike / bounded / architectural" -> "Explore project context" [label="architectural"];
165
- "Present question + probe (2-3 sentences)" -> "Human approves?";
166
- "Ask clarifying questions (bounded)" -> "Present short design in chat";
167
- "Present short design in chat" -> "Human approves?";
168
- "Human approves?" -> "Investigate; report recommendation" [label="spike: yes"];
169
- "Human approves?" -> "Implement via normal workflow (no plan doc)" [label="bounded: yes"];
170
- "Hidden complexity? Upgrade path" -> "Classify: spike / bounded / architectural";
171
- "Explore project context" -> "Ask clarifying questions";
172
- "Ask clarifying questions" -> "Propose 2-3 approaches";
173
- "Propose 2-3 approaches" -> "Present design sections";
174
- "Present design sections" -> "User approves design?";
175
- "User approves design?" -> "Present design sections" [label="no, revise"];
176
- "User approves design?" -> "Write design doc" [label="yes"];
177
- "Write design doc" -> "Spec self-review\n(fix inline)";
178
- "Spec self-review\n(fix inline)" -> "User reviews spec?";
179
- "User reviews spec?" -> "Write design doc" [label="changes requested"];
180
- "User reviews spec?" -> "Invoke writing-plans skill" [label="approved"];
181
- }
182
- ```
183
-
184
- **Terminal states are path-bound.** Architectural: the ONLY skill you
185
- invoke after brainstorming is writing-plans — never frontend-design,
186
- mcp-builder, or any other implementation skill. Bounded: after
187
- approval, implementation proceeds directly through the normal
188
- development workflow; no plan document. Spike: the terminal state is a
189
- reported recommendation.
190
-
191
- ## The Process
192
-
193
- The subsections below serve the bounded and architectural paths (a
194
- spike stops at "present the probe, get a nod"). Sections from
195
- **Exploring approaches** onward are architectural-path depth — for
196
- bounded work, context plus a few questions plus a short in-chat design
197
- is the whole process.
198
-
199
- **Understanding the idea:**
200
-
201
- - Check out the current project state first (files, docs, recent commits)
202
- - Before asking detailed questions, assess scope: if the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend questions refining details of a project that needs to be decomposed first.
203
- - If the project is too large for a single spec, help the user decompose into sub-projects: what are the independent pieces, how do they relate, what order should they be built? Then brainstorm the first sub-project through the normal design flow. Each sub-project gets its own spec → plan → implementation cycle.
204
- - For appropriately-scoped projects, ask questions one at a time to refine the idea
205
- - Prefer multiple choice questions when possible, but open-ended is fine too
206
- - Only one question per message - if a topic needs more exploration, break it into multiple questions
207
- - Focus on understanding: purpose, constraints, success criteria
208
-
209
- **Exploring approaches:**
210
-
211
- - Propose 2-3 different approaches with trade-offs
212
- - Present options conversationally with your recommendation and reasoning
213
- - Lead with your recommended option and explain why
214
- - YAGNI ruthlessly - remove unnecessary features from every approach and design
215
-
216
- **Presenting the design:**
217
-
218
- - Once you believe you understand what you're building, present the design
219
- - Scale each section to its complexity: a few sentences if straightforward, up to 200-300 words if nuanced
220
- - Ask after each section whether it looks right so far
221
- - Cover: architecture, components, data flow, error handling, testing
222
- - Be ready to go back and clarify if something doesn't make sense
223
-
224
- **Design for isolation and clarity:**
225
-
226
- - Break the system into smaller units that each have one clear purpose, communicate through well-defined interfaces, and can be understood and tested independently
227
- - For each unit, you should be able to answer: what does it do, how do you use it, and what does it depend on?
228
- - Can someone understand what a unit does without reading its internals? Can you change the internals without breaking consumers? If not, the boundaries need work.
229
- - Smaller, well-bounded units are also easier for you to work with - you reason better about code you can hold in context at once, and your edits are more reliable when files are focused. When a file grows large, that's often a signal that it's doing too much.
230
-
231
- **Working in existing codebases:**
232
-
233
- - Explore the current structure before proposing changes. Follow existing patterns.
234
- - Where existing code has problems that affect the work (e.g., a file that's grown too large, unclear boundaries, tangled responsibilities), include targeted improvements as part of the design - the way a good developer improves code they're working in.
235
- - Don't propose unrelated refactoring. Stay focused on what serves the current goal.
236
-
237
- ## After the Design (architectural path)
238
-
239
- **Documentation:**
240
-
241
- - Write the validated design (spec) to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`
242
- - (User preferences for spec location override this default)
243
- - Use elements-of-style:writing-clearly-and-concisely skill if available
244
- - Commit the design document to git
245
-
246
- **Spec Self-Review:**
247
- After writing the spec document, look at it with fresh eyes:
248
-
249
- 1. **Placeholder scan:** Any "TBD", "TODO", incomplete sections, or vague requirements? Fix them.
250
- 2. **Internal consistency:** Do any sections contradict each other? Does the architecture match the feature descriptions?
251
- 3. **Scope check:** Is this focused enough for a single implementation plan, or does it need decomposition?
252
- 4. **Ambiguity check:** Could any requirement be interpreted two different ways? If so, pick one and make it explicit.
253
-
254
- Fix any issues inline. No need to re-review — just fix and move on.
255
-
256
- **User Review Gate:**
257
- After the spec review loop passes, ask the user to review the written spec before proceeding:
258
-
259
- > "Spec written and committed to `<path>`. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
260
-
261
- Wait for the user's response. If they request changes, make them and re-run the spec review loop. Only proceed once the user approves.
262
-
263
- **Implementation:**
264
-
265
- - Invoke the writing-plans skill to create a detailed implementation plan
266
- - Do NOT invoke any other skill. writing-plans is the next step.
199
+ | "I'll offer options to save them effort" | Options steer. Ask them to describe it first. |
200
+ | "I'll fill in sensible defaults" | Good. Say them out loud. A default they never heard is one they couldn't reject. |
201
+ | "I should explain the process first" | Ask your question. The process shows itself. |
202
+ | "They said 'sounds good' to the idea" | Approval covers what you showed them. A description you haven't written isn't approved. |
203
+ | "The spike works, I'll keep building on it" | Keeping it is a new request. Back through the gate. |
267
204
 
268
205
  ## Visual Companion
269
206
 
270
- A browser-based companion for showing mockups, diagrams, and visual options during brainstorming. Available as a tool — not a mode. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
271
-
272
- **Offering the companion (just-in-time):** Do NOT offer it upfront. Wait until a question would genuinely be clearer shown than told — a real mockup / layout / diagram question, not merely a UI *topic*. The first time that happens, offer it then, as its own message:
273
- > "This next part might be easier if I show you — I can put together mockups, diagrams, and comparisons in a browser tab as we go. It's still new and can be token-intensive. Want me to? I'll open it for you."
207
+ A browser tab for showing mockups, diagrams, and prototypes. It's a
208
+ tool, not a mode: accepting it doesn't send every question to the
209
+ browser.
274
210
 
275
- **This offer MUST be its own message.** Only the offer — no clarifying question, summary, or other content. Wait for the user's response. If they accept, start the server with `--open` so their browser opens to the first screen automatically. If they decline, continue text-only and don't offer again unless they raise it.
211
+ **Offer it just-in-time.** Offer it the first time one of the moments
212
+ above comes up, never upfront. The offer is its own message with nothing
213
+ else in it:
276
214
 
277
- **Per-question decision:** Even after the user accepts, decide FOR EACH QUESTION whether to use the browser or the terminal. The test: **would the user understand this better by seeing it than reading it?**
215
+ > "This might be easier if I show you. Want me to open a browser tab with some mockups?"
278
216
 
279
- - **Use the browser** for content that IS visual — mockups, wireframes, layout comparisons, architecture diagrams, side-by-side visual designs
280
- - **Use the terminal** for content that is text — requirements questions, conceptual choices, tradeoff lists, A/B/C/D text options, scope decisions
217
+ If they decline, stay in text and don't offer again unless they raise it.
281
218
 
282
- A question about a UI topic is not automatically a visual question. "What does personality mean in this context?" is a conceptual question — use the terminal. "Which wizard layout works better?" is a visual question — use the browser.
219
+ **Per question, ask: would they understand this better by seeing it?**
220
+ Mockups, layouts, diagrams, and side-by-side designs go in the browser.
221
+ Requirements, scope, tradeoffs, and conceptual choices stay in text. A
222
+ question about a UI topic isn't automatically a visual question.
283
223
 
284
- If they agree to the companion, read the detailed guide before proceeding:
285
- `skills/brainstorming/visual-companion.md`
224
+ If they accept, read `visual-companion.md` in this directory before
225
+ starting the server.
@@ -0,0 +1,23 @@
1
+ # Builder Check Prompt
2
+
3
+ Dispatch a fresh general-purpose subagent with this prompt once the
4
+ written design exists. Fill in the domain and the document path.
5
+
6
+ ```
7
+ You are a talented [DOMAIN, e.g. "software engineer", "event planner",
8
+ "bakery consultant"]. You've been handed a design document and asked to
9
+ put together a plan to build what it describes. You will not be able to
10
+ talk to the person who wrote it.
11
+
12
+ Read [DOCUMENT_PATH].
13
+
14
+ Report only the questions you'd still need answered before you could plan
15
+ this well: places where you'd have to guess and a wrong guess would
16
+ matter. For each, give the question and why the answer changes the plan.
17
+ Rank them by importance.
18
+
19
+ Skip anything the document explicitly leaves to the builder, and anything
20
+ you could reasonably decide yourself. Skip nitpicks about wording.
21
+
22
+ If nothing important is left, say "nothing important left".
23
+ ```
@@ -261,7 +261,7 @@ function isFullDocument(html) {
261
261
  }
262
262
 
263
263
  function wrapInFrame(content) {
264
- return renderBranding(frameTemplate).replace('<!-- CONTENT -->', content);
264
+ return renderBranding(frameTemplate).replace('<!-- CONTENT -->', () => content);
265
265
  }
266
266
 
267
267
  function getNewestScreen() {
@@ -53,9 +53,10 @@ for: the brief must say so explicitly, because an omp 18.4.12 worker skips
53
53
  checks unless its assignment explicitly instructs them. Second, when the
54
54
  skill says to stop and ask your human partner, end the turn with the
55
55
  question. The worker has no `todo`, so the ledger is its record. You keep
56
- the todo list from its ledger (`<workspace>/progress.md`), take its
57
- questions to your human partner, and `vibe_send` the answers. The
58
- worktree and budget limits are in "Vibe mode" in
56
+ the todo list from its ledger (`<workspace>/progress.md`): each time you
57
+ read it, mark every new `Task <N>: complete` line done before you wait
58
+ again. Take its questions to your human partner and `vibe_send` the
59
+ answers. The worktree and budget limits are in "Vibe mode" in
59
60
  `skill://using-superpowers/references/pi-tools.md`.
60
61
 
61
62
  ## When to Use
@@ -161,11 +162,15 @@ and the new one resumes from the same ledger.
161
162
  but gives no filesystem path. Once, before the first script, run
162
163
  `realpath skill://executing-plans/scripts` and
163
164
  `realpath skill://subagent-driven-development/scripts` in the `bash` tool
164
- (omp's bash resolves `skill://` URLs) and add the printed paths to the
165
- ledger, after the identity line, as `Executing-plans scripts: <dir>` and
166
- `SDD scripts: <dir>`. Ledger lines are found by their prefix, never by
167
- position. This ledger is shared with subagent-driven-development, which
168
- writes only `SDD scripts:`: add whichever of the two lines it lacks. Then run
165
+ and add the printed paths to the ledger, after the identity line, as
166
+ `Executing-plans scripts: <dir>` and `SDD scripts: <dir>`. omp's shell
167
+ resolves `skill://` paths itself (its builtins and in-process coreutils,
168
+ `realpath` and `ls` among them), but an external program gets the literal
169
+ URL, and an extension can turn a command into one: RTK rewrites `ls` into
170
+ `rtk ls`. Use the printed paths everywhere else. Ledger lines are found by
171
+ their prefix, never by position. This ledger is shared with
172
+ subagent-driven-development, which writes only `SDD scripts:`: add
173
+ whichever of the two lines it lacks. Then run
169
174
  each script as `bash <dir>/<name>` — `scripts/task-start` and
170
175
  `scripts/task-done` from the executing-plans directory, `sdd-workspace` and
171
176
  `review-package` from the SDD one — with the working directory at the repo
@@ -382,8 +387,8 @@ Use superpowers:finishing-a-development-branch.
382
387
  You: I'm using the executing-plans skill to implement this plan inline.
383
388
 
384
389
  [Setup: worktree verified]
385
- [Read plan once: docs/superpowers/plans/feature-plan.md; spec read]
386
- [Resolve workspace: sdd-workspace docs/superpowers/plans/feature-plan.md — no ledger inside, fresh start]
390
+ [Read plan once: docs/plans/feature-plan.md; spec read]
391
+ [Resolve workspace: sdd-workspace docs/plans/feature-plan.md — no ledger inside, fresh start]
387
392
  [Pre-flight scan: 2 shared-interface rows, 4 self-consistency rows, clean; written to ledger]
388
393
  [Create todos for all tasks]
389
394
 
@@ -45,7 +45,7 @@ if [ "$rc" -ne 0 ]; then
45
45
  exit "$rc"
46
46
  fi
47
47
 
48
- last=$(grep -v '^[[:space:]]*$' "$log" | tail -n 1)
48
+ last=$(grep -v '^[[:space:]]*$' "$log" | tail -n 1) || last="(no output)"
49
49
  [ -f "$ledger" ] || printf '# SDD ledger — plan: %s\n' "$plan" > "$ledger"
50
50
  line="Task $n: complete (commits $(git rev-parse --short=7 "$base")..$(git rev-parse --short=7 HEAD), tests: $cmd → $last)"
51
51
  printf '%s\n' "$line" >> "$ledger"
@@ -52,12 +52,12 @@ Dispatch a `general-purpose` subagent, filling the template at [code-reviewer.md
52
52
 
53
53
  You: Let me request code review before proceeding.
54
54
 
55
- BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
55
+ BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | cut -d' ' -f1)
56
56
  HEAD_SHA=$(git rev-parse HEAD)
57
57
 
58
58
  [Dispatch code reviewer subagent]
59
59
  DESCRIPTION: Added verifyIndex() and repairIndex() with 4 issue types
60
- PLAN_OR_REQUIREMENTS: Task 2 from docs/superpowers/plans/deployment-plan.md
60
+ PLAN_OR_REQUIREMENTS: Task 2 from docs/plans/deployment-plan.md
61
61
  BASE_SHA: a7981ec
62
62
  HEAD_SHA: 3df7661
63
63
 
@@ -42,9 +42,11 @@ explicitly instructs them. Second, when the skill says to stop and ask
42
42
  your human partner, end the turn with the question. The worker has no
43
43
  `todo`, so the ledger is its record. It dispatches the `sdd-*` seats
44
44
  through its own `task` tool. You keep the todo list from its ledger
45
- (`<workspace>/progress.md`), take its questions to your human partner, and
46
- `vibe_send` the answers. The worktree and budget limits are in "Vibe mode"
47
- in `skill://using-superpowers/references/pi-tools.md`.
45
+ (`<workspace>/progress.md`): each time you read it, mark every new
46
+ `Task <N>: complete` line done before you wait again. Take its questions to
47
+ your human partner and `vibe_send` the answers. The worktree and budget
48
+ limits are in "Vibe mode" in
49
+ `skill://using-superpowers/references/pi-tools.md`.
48
50
 
49
51
  ## When to Use
50
52
 
@@ -166,8 +168,12 @@ a ledger file, not only in todos.
166
168
  fails from the repo root ("No such file or directory"), and `omp read
167
169
  skill://…` lists the files but gives no filesystem path. Once, before the
168
170
  first script, run `realpath skill://subagent-driven-development/scripts` in
169
- the `bash` tool (omp's bash resolves `skill://` URLs) and add the printed
170
- path to the ledger, after the identity line, as `SDD scripts: <dir>`.
171
+ the `bash` tool and add the printed path to the ledger, after the identity
172
+ line, as `SDD scripts: <dir>`. omp's shell resolves `skill://` paths itself
173
+ (its builtins and in-process coreutils, `realpath` and `ls` among them),
174
+ but an external program gets the literal URL, and an extension can turn a
175
+ command into one: RTK rewrites `ls` into `rtk ls`. Use the printed path
176
+ everywhere else.
171
177
  Ledger lines are found by their prefix, never by position: another
172
178
  executor sharing this ledger (executing-plans) adds its own `… scripts:`
173
179
  line, and each executor adds the one it lacks. Then run every
@@ -778,8 +784,8 @@ Use superpowers:finishing-a-development-branch.
778
784
  You: I'm using Subagent-Driven Development to execute this plan.
779
785
 
780
786
  [Setup: worktree verified; on omp, session moved into it with /move]
781
- [Read plan file once: docs/superpowers/plans/feature-plan.md]
782
- [Resolve workspace: bash scripts/sdd-workspace docs/superpowers/plans/feature-plan.md — no ledger inside, fresh start]
787
+ [Read plan file once: docs/plans/feature-plan.md]
788
+ [Resolve workspace: bash scripts/sdd-workspace docs/plans/feature-plan.md — no ledger inside, fresh start]
783
789
  [On omp: scripts dir resolved with realpath skill://subagent-driven-development/scripts and added to the ledger as "SDD scripts: <dir>"; each script runs as bash <dir>/<name>]
784
790
  [Create todos for all tasks]
785
791
 
@@ -42,13 +42,16 @@ slug=$(basename "$plan" .md)
42
42
  [ -n "$slug" ] && [ "$slug" != "." ] && [ "$slug" != ".." ] \
43
43
  || { echo "cannot derive a workspace name from: $plan" >&2; exit 2; }
44
44
 
45
- root=$(git rev-parse --show-toplevel)
45
+ # Physical path, spelled the way pwd -P spells the plan path below: on Git
46
+ # Bash, rev-parse prints C:/Users/... while pwd prints /c/Users/..., and the
47
+ # repo-relative marker check needs both in the same form.
48
+ root=$(CDPATH='' cd -- "$(git rev-parse --show-toplevel)" && pwd -P)
46
49
  base="$root/.superpowers/sdd"
47
50
 
48
51
  # Normalize the plan path (physical directory, so relative/absolute/../
49
52
  # spellings of one plan compare equal) and express it as the marker value:
50
53
  # repo-relative when the plan lives under the repo root, absolute otherwise.
51
- plan_dir=$(CDPATH= cd -- "$(dirname "$plan")" && pwd -P)
54
+ plan_dir=$(CDPATH='' cd -- "$(dirname "$plan")" && pwd -P)
52
55
  plan_abs="$plan_dir/$(basename "$plan")"
53
56
  case "$plan_abs" in
54
57
  "$root"/*) plan_id=${plan_abs#"$root"/} ;;
@@ -78,5 +81,7 @@ if ! owns "$dir"; then
78
81
  fi
79
82
  fi
80
83
 
81
- printf '*\n' > "$base/.gitignore"
82
- CDPATH= cd -- "$dir" && pwd
84
+ # Create-only: a repo may commit its own .gitignore here (e.g. to version
85
+ # progress.md ledgers); overwriting it would revert that on every run.
86
+ [ -e "$base/.gitignore" ] || printf '*\n' > "$base/.gitignore"
87
+ CDPATH='' cd -- "$dir" && pwd
@@ -88,11 +88,11 @@ You MUST complete each phase before proceeding to the next.
88
88
  ```bash
89
89
  # Layer 1: Workflow
90
90
  echo "=== Secrets available in workflow: ==="
91
- echo "IDENTITY: ${IDENTITY:+SET}${IDENTITY:-UNSET}"
91
+ echo "IDENTITY: $([ -n "${IDENTITY:-}" ] && echo SET || echo UNSET)"
92
92
 
93
93
  # Layer 2: Build script
94
94
  echo "=== Env vars in build script: ==="
95
- env | grep IDENTITY || echo "IDENTITY not in environment"
95
+ printenv IDENTITY >/dev/null 2>&1 && echo "IDENTITY in environment" || echo "IDENTITY not in environment"
96
96
 
97
97
  # Layer 3: Signing script
98
98
  echo "=== Keychain state: ==="
@@ -73,7 +73,7 @@ omp ships a built-in `todo` tool (`init`, `start`, `done`, `rm`, `drop`, `block`
73
73
 
74
74
  A worker is an ordinary omp subagent. It has the normal coding tools, including `task`, `wait` and `write agent://`, but no `todo`, `ask` or `vibe_*`, and it starts in the session's cwd. It never gets this plugin's bootstrap (the extension skips subagent sessions), so a brief names the skill to `read` (`read skill://<name>`). Workers get the 18.4.12 hand-off rule too (see *Checks*), so a brief that needs a test, build or smoke run names it. A worker is never an SDD seat: `fast` and `good` are the bundled `sonic` and `task` agents, and overrides for their models are `task.agentModelOverrides.sonic` and `task.agentModelOverrides.task`. A long worker result reaches you as a cut-off `<vibe-turn>` response, and its full text at `agent://<id>` comes back as a single line that `read` cuts at 768 characters. Have workers write long reports to a file, and `read` the file.
75
75
 
76
- - **subagent-driven-development and executing-plans:** hand the whole run to ONE `good` worker. Its brief names the skill to read, the plan path and the worktree path, and gives two rules. First, run every test, build and script the skill calls for: the brief must say so explicitly, because an 18.4.12 worker skips checks otherwise (see *Checks*). Second, when the skill says to stop and ask your human partner, end the turn with the question. That worker is the controller. It runs the scripts, keeps the ledger, and dispatches the SDD seats through its own `task` tool, so each seat keeps its model, tools and output contract (measured on omp 18.4.10: a `good` worker ran `read skill://subagent-driven-development`, dispatched `sdd-rereviewer` through its own `task` tool, and the seat ran on its `task.agentModelOverrides` model, returned its structured output to the worker, and was resumed with `write agent://<id>`). The worker has no `todo`; the ledger (`<workspace>/progress.md`) is its record. You keep `todo` from the ledger, take its questions to your human partner, and `vibe_send` the answers.
76
+ - **subagent-driven-development and executing-plans:** hand the whole run to ONE `good` worker. Its brief names the skill to read, the plan path and the worktree path, and gives two rules. First, run every test, build and script the skill calls for: the brief must say so explicitly, because an 18.4.12 worker skips checks otherwise (see *Checks*). Second, when the skill says to stop and ask your human partner, end the turn with the question. That worker is the controller. It runs the scripts, keeps the ledger, and dispatches the SDD seats through its own `task` tool, so each seat keeps its model, tools and output contract (measured on omp 18.4.10: a `good` worker ran `read skill://subagent-driven-development`, dispatched `sdd-rereviewer` through its own `task` tool, and the seat ran on its `task.agentModelOverrides` model, returned its structured output to the worker, and was resumed with `write agent://<id>`). The worker has no `todo`; the ledger (`<workspace>/progress.md`) is its record. You keep `todo` from the ledger: each time you read it, mark every new `Task <N>: complete` line done before the next `vibe_wait`. Take its questions to your human partner, and `vibe_send` the answers.
77
77
  - **Worktrees:** while vibe is on, `/move`, `/wt`, `/new` and fork are refused ("Exit vibe mode first."), and leaving vibe mode kills every worker. Create the worktree and `/move` into it before `/vibe`. Otherwise every brief carries the worktree's absolute path, and you `read` files there by absolute path.
78
78
  - **Long runs:** a worker's first turn runs under omp's soft request budget, `task.softRequestBudget`: 200 by default, and the `fast` worker's `sonic` agent caps at 100. At the budget the worker gets a wrap-up notice; at 1.5x it is stopped and must yield. A long plan's controller can cross the budget. Set `task.softRequestBudget: 0` (it disables the budget for every subagent), or `vibe_send` the stopped worker "continue from the ledger": omp's source runs a `vibe_send` turn without the budget and keeps a budget-stopped worker idle and resumable (read in 18.4.12's source, not run).
79
79
  - **The rest:** brainstorming's questions, the plan handoff and finishing a branch's options are conversation, and stay with the director. A worker writes the files and runs git and the tests its brief names.
@@ -13,7 +13,7 @@ Write implementation plans for an engineer who has not seen this codebase or thi
13
13
 
14
14
  **Context:** If working in an isolated worktree, it should have been created via the `superpowers:using-git-worktrees` skill at execution time.
15
15
 
16
- **Save plans to:** `docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md`
16
+ **Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md`
17
17
  - (User preferences for plan location override this default)
18
18
 
19
19
  ## Scope Check
@@ -186,7 +186,7 @@ them to review the plan and choose an execution method before implementation.
186
186
 
187
187
  **When no execution method has already been supplied:**
188
188
 
189
- **"Plan complete and saved to `docs/superpowers/plans/<filename>.md`. Please review the plan. Which execution approach would you prefer?**
189
+ **"Plan complete and saved to `docs/plans/<filename>.md`. Please review the plan. Which execution approach would you prefer?**
190
190
 
191
191
  - **Subagent-driven** - A fresh subagent implements each task and a fresh reviewer checks it before the next one starts, then a whole-branch review at the end. Most thorough; costs a fresh context per task and per review.
192
192
  - **Native** - I implement every task myself in this session, the way this harness runs work, then one fresh reviewer on the most capable model checks the whole branch. Cheapest and fastest; no independent review until the end. Runs well with a mid-tier session model, since the plan carries the design.
@@ -197,7 +197,7 @@ them to review the plan and choose an execution method before implementation.
197
197
 
198
198
  **When an execution method has already been supplied:**
199
199
 
200
- **"Plan complete and saved to `docs/superpowers/plans/<filename>.md`. Please review the plan. Does it capture what you want?"**
200
+ **"Plan complete and saved to `docs/plans/<filename>.md`. Please review the plan. Does it capture what you want?"**
201
201
 
202
202
  **If Subagent-driven chosen:**
203
203
  - **REQUIRED SUB-SKILL:** Use superpowers:subagent-driven-development
@@ -1,49 +0,0 @@
1
- # Spec Document Reviewer Prompt Template
2
-
3
- Use this template when dispatching a spec document reviewer subagent.
4
-
5
- **Purpose:** Verify the spec is complete, consistent, and ready for implementation planning.
6
-
7
- **Dispatch after:** Spec document is written to docs/superpowers/specs/
8
-
9
- ```
10
- Subagent (general-purpose):
11
- description: "Review spec document"
12
- prompt: |
13
- You are a spec document reviewer. Verify this spec is complete and ready for planning.
14
-
15
- **Spec to review:** [SPEC_FILE_PATH]
16
-
17
- ## What to Check
18
-
19
- | Category | What to Look For |
20
- |----------|------------------|
21
- | Completeness | TODOs, placeholders, "TBD", incomplete sections |
22
- | Consistency | Internal contradictions, conflicting requirements |
23
- | Clarity | Requirements ambiguous enough to cause someone to build the wrong thing |
24
- | Scope | Focused enough for a single plan — not covering multiple independent subsystems |
25
- | YAGNI | Unrequested features, over-engineering |
26
-
27
- ## Calibration
28
-
29
- **Only flag issues that would cause real problems during implementation planning.**
30
- A missing section, a contradiction, or a requirement so ambiguous it could be
31
- interpreted two different ways — those are issues. Minor wording improvements,
32
- stylistic preferences, and "sections less detailed than others" are not.
33
-
34
- Approve unless there are serious gaps that would lead to a flawed plan.
35
-
36
- ## Output Format
37
-
38
- ## Spec Review
39
-
40
- **Status:** Approved | Issues Found
41
-
42
- **Issues (if any):**
43
- - [Section X]: [specific issue] - [why it matters for planning]
44
-
45
- **Recommendations (advisory, do not block approval):**
46
- - [suggestions for improvement]
47
- ```
48
-
49
- **Reviewer returns:** Status, Issues (if any), Recommendations