@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 +22 -1
- package/README.md +4 -1
- package/package.json +1 -1
- package/skills/brainstorming/SKILL.md +203 -263
- package/skills/brainstorming/builder-check-prompt.md +23 -0
- package/skills/brainstorming/scripts/server.cjs +1 -1
- package/skills/executing-plans/SKILL.md +15 -10
- package/skills/executing-plans/scripts/task-done +1 -1
- package/skills/requesting-code-review/SKILL.md +2 -2
- package/skills/subagent-driven-development/SKILL.md +13 -7
- package/skills/subagent-driven-development/scripts/sdd-workspace +9 -4
- package/skills/systematic-debugging/SKILL.md +2 -2
- package/skills/using-superpowers/references/pi-tools.md +1 -1
- package/skills/writing-plans/SKILL.md +3 -3
- package/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
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/
|
|
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/
|
|
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": "
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
| "
|
|
103
|
-
| "I'll
|
|
104
|
-
| "
|
|
105
|
-
| "
|
|
106
|
-
| "The spike works,
|
|
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
|
|
271
|
-
|
|
272
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
215
|
+
> "This might be easier if I show you. Want me to open a browser tab with some mockups?"
|
|
278
216
|
|
|
279
|
-
|
|
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
|
-
|
|
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
|
|
285
|
-
|
|
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`)
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
`
|
|
167
|
-
|
|
168
|
-
|
|
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/
|
|
386
|
-
[Resolve workspace: sdd-workspace docs/
|
|
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 |
|
|
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/
|
|
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`)
|
|
46
|
-
`
|
|
47
|
-
|
|
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
|
|
170
|
-
|
|
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/
|
|
782
|
-
[Resolve workspace: bash scripts/sdd-workspace docs/
|
|
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
|
-
|
|
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
|
-
|
|
82
|
-
|
|
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: $
|
|
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
|
-
|
|
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,
|
|
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/
|
|
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/
|
|
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/
|
|
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
|