@loneexile/omp-superpowers 7.0.0-omp.2 → 7.0.0-omp.4
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 +29 -1
- package/README.md +25 -16
- package/agents/sdd-escalation-implementer.md +3 -2
- package/agents/sdd-final-reviewer.md +4 -3
- package/agents/sdd-implementer.md +1 -1
- package/package.json +1 -1
- package/skills/brainstorming/SKILL.md +77 -22
- package/skills/executing-plans/SKILL.md +32 -13
- package/skills/finishing-a-development-branch/SKILL.md +5 -1
- package/skills/requesting-code-review/SKILL.md +1 -1
- package/skills/subagent-driven-development/SKILL.md +339 -97
- package/skills/subagent-driven-development/implementer-prompt.md +33 -10
- package/skills/subagent-driven-development/re-review-prompt.md +7 -2
- package/skills/subagent-driven-development/task-reviewer-prompt.md +8 -1
- package/skills/using-git-worktrees/SKILL.md +1 -1
- package/skills/using-superpowers/references/pi-tools.md +2 -2
- package/skills/writing-plans/SKILL.md +60 -27
|
@@ -47,25 +47,39 @@ Use this template when dispatching an implementer subagent.
|
|
|
47
47
|
5. Self-review (see below)
|
|
48
48
|
6. Report back
|
|
49
49
|
|
|
50
|
-
Work from: [directory]
|
|
50
|
+
Work from: [directory — for a wave task, its worktree's absolute path]
|
|
51
|
+
[WAVE_LINE — only for a task in a wave of two or more: "Other tasks
|
|
52
|
+
run in parallel with this one: before committing, run only the
|
|
53
|
+
covering tests your brief names, not the full suite; the controller
|
|
54
|
+
runs the full suite once the wave merges."]
|
|
55
|
+
|
|
56
|
+
Work only under that directory. Your session may have started in a
|
|
57
|
+
different checkout, so give every file tool (`read`, `write`, `edit`,
|
|
58
|
+
`grep`, `glob`, `lsp`) absolute paths under it, set the `bash` tool's
|
|
59
|
+
`cwd` to it for every command, and commit on the branch checked out
|
|
60
|
+
there, staging your own files by path, never with `git add -A`,
|
|
61
|
+
`git add .` or `git commit -a`: the checkout may hold changes that
|
|
62
|
+
aren't yours. The brief and the report file are the exception: use the
|
|
63
|
+
paths given for them.
|
|
51
64
|
|
|
52
65
|
**While you work:** If you encounter something unexpected or unclear, **ask questions**.
|
|
53
66
|
It's always OK to pause and clarify. Don't guess or make assumptions.
|
|
54
67
|
|
|
55
68
|
While iterating, run the focused test for what you're changing; run the
|
|
56
|
-
full suite once before committing
|
|
69
|
+
full suite once before committing (unless a wave line above says
|
|
70
|
+
otherwise), not after every edit.
|
|
57
71
|
|
|
58
72
|
## You Do Not Dispatch Subagents
|
|
59
73
|
|
|
60
74
|
Do all of this task's work yourself. Never spawn a subagent to
|
|
61
75
|
implement part of the task, and above all never spawn a reviewer to
|
|
62
76
|
check your work. Self-review (below) means reading your own diff.
|
|
63
|
-
Review is the controller's job: after you report, it
|
|
64
|
-
|
|
65
|
-
that review at full cost, and its
|
|
66
|
-
the process. If you catch yourself
|
|
67
|
-
would strengthen my report" — that
|
|
68
|
-
Report instead.
|
|
77
|
+
Review is the controller's job: after you report, it reviews or tests
|
|
78
|
+
your work, and a whole-branch review at the end covers every task. A
|
|
79
|
+
reviewer you spawn duplicates that review at full cost, and its
|
|
80
|
+
approval counts for nothing in the process. If you catch yourself
|
|
81
|
+
thinking "an independent review would strengthen my report" — that
|
|
82
|
+
review is already scheduled. Report instead.
|
|
69
83
|
|
|
70
84
|
## Code Organization
|
|
71
85
|
|
|
@@ -126,13 +140,21 @@ Use this template when dispatching an implementer subagent.
|
|
|
126
140
|
|
|
127
141
|
## After Review Findings
|
|
128
142
|
|
|
129
|
-
If the task review
|
|
143
|
+
If the task review, or the controller's own run of your covering tests,
|
|
144
|
+
finds issues, you will be resumed with the findings.
|
|
130
145
|
Fix them, re-run the tests that cover the amended code, and append a fix
|
|
131
146
|
report to your report file: what you changed, the covering tests you
|
|
132
147
|
ran, the command, and the output. Reviewers will not re-run tests for
|
|
133
148
|
you — your report is the test evidence. Then reply with the same short
|
|
134
149
|
status contract as your first report.
|
|
135
150
|
|
|
151
|
+
You may also be resumed because your branch would not merge into the
|
|
152
|
+
plan branch: the message names the plan branch and, when tests failed
|
|
153
|
+
on the merged tree, the file holding their output. Rebase onto the
|
|
154
|
+
plan branch, fix what the merge exposed, re-run your covering tests,
|
|
155
|
+
append what you did to your report file, and reply with the same short
|
|
156
|
+
status contract.
|
|
157
|
+
|
|
136
158
|
## Report Format
|
|
137
159
|
|
|
138
160
|
Write your full report to [REPORT_FILE]:
|
|
@@ -156,7 +178,8 @@ Use this template when dispatching an implementer subagent.
|
|
|
156
178
|
If BLOCKED or NEEDS_CONTEXT, put the specifics in the final message
|
|
157
179
|
itself — the controller acts on it directly.
|
|
158
180
|
|
|
159
|
-
Use DONE_WITH_CONCERNS if you completed the work but have doubts about correctness
|
|
181
|
+
Use DONE_WITH_CONCERNS if you completed the work but have doubts about correctness,
|
|
182
|
+
or had to change a file your brief's Files list does not name (say which).
|
|
160
183
|
Use BLOCKED if you cannot complete the task. Use NEEDS_CONTEXT if you need
|
|
161
184
|
information that wasn't provided. Never silently produce work you're unsure about.
|
|
162
185
|
} ] }
|
|
@@ -38,6 +38,7 @@ that the fix itself broke nothing.
|
|
|
38
38
|
**Fix base:** [FIX_BASE_SHA] (the head the previous review saw)
|
|
39
39
|
**Head:** [HEAD_SHA]
|
|
40
40
|
**Diff file:** [DIFF_FILE]
|
|
41
|
+
[CHECKOUT_LINE]
|
|
41
42
|
|
|
42
43
|
Read the diff file in full, with an explicit range: `[DIFF_FILE]:1-3000`
|
|
43
44
|
(a bare read returns only the first 300 lines; while the footer says
|
|
@@ -112,9 +113,13 @@ that the fix itself broke nothing.
|
|
|
112
113
|
- `[FINDINGS]` — the Critical/Important findings and spec gaps from the
|
|
113
114
|
previous review, copied verbatim, one per bullet
|
|
114
115
|
- `[REPORT_FILE]` — the implementer's report file (fix reports appended)
|
|
115
|
-
- `[FIX_BASE_SHA]` — the head the previous review saw
|
|
116
|
-
|
|
116
|
+
- `[FIX_BASE_SHA]` — the head the previous review saw: the `[HEAD_SHA]` you
|
|
117
|
+
gave it, as a SHA, never a branch name (a branch moves with the fix)
|
|
118
|
+
- `[HEAD_SHA]` — current commit; for a wave task that has not merged yet,
|
|
119
|
+
its branch tip (`git rev-parse sdd/<plan>/task-<N>`)
|
|
117
120
|
- `[DIFF_FILE]` — the path `bash scripts/review-package PLAN_FILE FIX_BASE HEAD` printed
|
|
121
|
+
- `[CHECKOUT_LINE]` — same as the task reviewer's: the worktree line for a wave
|
|
122
|
+
task that has not merged yet, omitted otherwise
|
|
118
123
|
|
|
119
124
|
**Re-reviewer returns** (structured): `finding_verdicts[]` (ADDRESSED /
|
|
120
125
|
NOT_ADDRESSED with file:line), `new_breakage[]` for the fix diff only,
|
|
@@ -38,6 +38,7 @@ more, nothing less) and is well-built (clean, tested, maintainable)
|
|
|
38
38
|
**Base:** [BASE_SHA]
|
|
39
39
|
**Head:** [HEAD_SHA]
|
|
40
40
|
**Diff file:** [DIFF_FILE]
|
|
41
|
+
[CHECKOUT_LINE]
|
|
41
42
|
|
|
42
43
|
Read the diff file in full, with an explicit range: `[DIFF_FILE]:1-3000`
|
|
43
44
|
(a bare read returns only the first 300 lines; while the footer says
|
|
@@ -202,10 +203,16 @@ more, nothing less) and is well-built (clean, tested, maintainable)
|
|
|
202
203
|
- `[REPORT_FILE]` — REQUIRED: the file the implementer wrote its detailed
|
|
203
204
|
report to
|
|
204
205
|
- `[BASE_SHA]` — commit before this task
|
|
205
|
-
- `[HEAD_SHA]` — current commit
|
|
206
|
+
- `[HEAD_SHA]` — current commit; for a wave task that has not merged yet,
|
|
207
|
+
its branch tip (`git rev-parse sdd/<plan>/task-<N>`). Record this SHA:
|
|
208
|
+
it is the next re-review's FIX_BASE
|
|
206
209
|
- `[DIFF_FILE]` — REQUIRED: the path the controller wrote the review
|
|
207
210
|
package to (`bash scripts/review-package PLAN_FILE BASE HEAD` prints the unique
|
|
208
211
|
path it wrote; the package never enters the controller's context)
|
|
212
|
+
- `[CHECKOUT_LINE]` — for a wave task that has not merged yet: `**Checkout:**
|
|
213
|
+
<worktree absolute path> — the task's code lives here, not in your
|
|
214
|
+
session's checkout; read changed files and their call sites under this
|
|
215
|
+
path.` Omit the line otherwise.
|
|
209
216
|
|
|
210
217
|
**Reviewer returns** (structured): `spec_compliance`, `spec_issues[]`,
|
|
211
218
|
`cannot_verify[]`, `strengths[]`, `findings[]` (Critical/Important/Minor with
|
|
@@ -78,7 +78,7 @@ Rules, each measured on omp 18.4.10:
|
|
|
78
78
|
- **In vibe mode the session cannot follow a worktree.** Vibe refuses `/move` and `/wt` ("Exit vibe mode first."), and leaving vibe mode kills every worker. A vibe director (your tools include `vibe_spawn` but not `task`) has no `bash`; a worker can run `omp worktree add`, but the session cannot follow it while vibe is on. So ask your human partner to create the worktree and `/move` into it before `/vibe`; otherwise put the worktree's absolute path in every worker brief and `read` files there by absolute path.
|
|
79
79
|
- **Cleanup.** A finished worktree is removed with `git worktree remove <path>` from the repo — that also deletes the directory. `omp worktree clear` only sweeps *orphaned* entries (its own words: "parent repo no longer tracks this worktree"); a live worktree survives it. **`omp worktree clear --all` removes every entry under the worktree directory** — live worktrees and `/wt` session worktrees included — and force-removes them even with uncommitted changes, without asking (the branches survive). Never run it unless your human partner asked for exactly that, and preview any `clear` with `--dry-run`. Never `rm -rf` a registered worktree.
|
|
80
80
|
|
|
81
|
-
This is the whole-session layer. Per-*subagent* isolation is a separate switch, `task.isolation.enabled` (default off)
|
|
81
|
+
This is the whole-session layer. Per-*subagent* isolation is a separate switch, `task.isolation.enabled` (default off), and subagent-driven-development does not use it: when it runs independent tasks in parallel, it gives each task its own worktree with this same `omp worktree add`, and merges each task's branch back itself.
|
|
82
82
|
|
|
83
83
|
Then skip to Step 2.
|
|
84
84
|
|
|
@@ -18,7 +18,7 @@ Batch shape (the `task.batch` setting, on by default): one call carries `{ conte
|
|
|
18
18
|
|
|
19
19
|
Agent types: pick the most specific one per item from the roster in the `task` tool's own description. Commonly available: `scout` (read-only research — use for investigation), `reviewer`, `security-reviewer`, `sonic` (strictly mechanical work), `task` (general-purpose, full capabilities). The exact roster depends on installed and configured agents, so read the tool description rather than assuming.
|
|
20
20
|
|
|
21
|
-
The tool is lowercase `task`; `Task` does not exist. `task.isolation.enabled` (default off) only lets a dispatch mark items `isolated: true
|
|
21
|
+
The tool is lowercase `task`; `Task` does not exist. `task.isolation.enabled` (default off) only lets a dispatch mark items `isolated: true`. Under the default `task.isolation.merge: patch`, isolated work comes back as an applied, uncommitted patch. Under `merge: branch`, omp cherry-picks the subagent's commits onto your branch when it finishes, under new commit ids, and deletes the task branch; a conflict leaves `omp/task/<id>` for you to resolve. Never send an isolated subagent a follow-up. Measured on omp 18.11.0: its result says it "cannot be resumed or messaged", yet `write agent://<id>` answers `Delivered`, and the work it does then never reaches your branch while the session runs; after the session ended it sat on a leftover `omp/task/<id>` branch that also repeats the already-merged commit. Dispatch a fresh subagent instead. If a follow-up already went out, cherry-pick only its new commits from that branch, never merge the branch. Superpowers SDD does not use isolation.
|
|
22
22
|
|
|
23
23
|
### Model selection on omp
|
|
24
24
|
|
|
@@ -52,7 +52,7 @@ The rule is prompt text, not a tool block. It applies to every subagent at task
|
|
|
52
52
|
- a vibe `good` worker told "fix sum.js so sum(2, 3) returns 5, then commit" ran no test;
|
|
53
53
|
- the same brief plus "This assignment explicitly instructs you to run the tests yourself (`npm test`), before and after the fix" ran both.
|
|
54
54
|
|
|
55
|
-
So every dispatch that needs a check names the command and when to run it. SDD's implementer template already instructs its test runs: the focused test while iterating, the full suite once
|
|
55
|
+
So every dispatch that needs a check names the command and when to run it. SDD's implementer template already instructs its test runs: the focused test while iterating, then before committing the full suite, or, for a task in a parallel wave, only its covering tests (the controller runs the full suite once the wave merges).
|
|
56
56
|
|
|
57
57
|
## Task lists
|
|
58
58
|
|
|
@@ -33,13 +33,29 @@ This structure informs the task decomposition. Each task should produce self-con
|
|
|
33
33
|
|
|
34
34
|
## Task Right-Sizing
|
|
35
35
|
|
|
36
|
-
A task is the smallest unit that carries its own test cycle and
|
|
37
|
-
|
|
36
|
+
A task is the smallest unit that carries its own test cycle and its own
|
|
37
|
+
commit range. When drawing task boundaries: fold setup,
|
|
38
38
|
configuration, scaffolding, and documentation steps into the task whose
|
|
39
|
-
deliverable needs them; split only where
|
|
40
|
-
|
|
39
|
+
deliverable needs them; split only where one task could be rejected
|
|
40
|
+
while its neighbor stands. Each task ends with an
|
|
41
41
|
independently testable deliverable.
|
|
42
42
|
|
|
43
|
+
Tasks that share no file and no interface can run in parallel under
|
|
44
|
+
subagent-driven-development. Where a shared file is avoidable, keep it in
|
|
45
|
+
one task.
|
|
46
|
+
|
|
47
|
+
## Review Marks
|
|
48
|
+
|
|
49
|
+
Every task is reviewed in the whole-branch review at the end of the plan.
|
|
50
|
+
A task also gets its own fresh reviewer when a shipped mistake there is
|
|
51
|
+
costly or hard to see in a whole-branch diff: security or authentication,
|
|
52
|
+
concurrency, a data migration or persisted format, money, a destructive
|
|
53
|
+
operation. Mark such a task under its heading, naming the class:
|
|
54
|
+
|
|
55
|
+
`**Review:** per-task — concurrency`
|
|
56
|
+
|
|
57
|
+
Leave every other task unmarked.
|
|
58
|
+
|
|
43
59
|
## Step Granularity
|
|
44
60
|
|
|
45
61
|
**Each step is one action with a checkable result:**
|
|
@@ -94,6 +110,8 @@ owns the code, in that task's own step style.]
|
|
|
94
110
|
````markdown
|
|
95
111
|
### Task N: [Component Name]
|
|
96
112
|
|
|
113
|
+
**Review:** per-task — [class; this line only on a task Review Marks covers]
|
|
114
|
+
|
|
97
115
|
**Files:**
|
|
98
116
|
- Create: `exact/path/to/file.py`
|
|
99
117
|
- Modify: `exact/path/to/existing.py:123-145`
|
|
@@ -174,33 +192,48 @@ After writing the complete plan, look at the spec with fresh eyes and check the
|
|
|
174
192
|
|
|
175
193
|
**5. Proportion:** Compare the plan's length to the spec's. A plan several times longer than the spec it implements is a transcript of the program, not a plan. If code blocks are most of the document, replace bodies with signatures, test names and assertions, and check that each step is still unambiguous.
|
|
176
194
|
|
|
195
|
+
**6. Review marks:** Every task touching security, authentication, concurrency, a data migration or persisted format, money, or a destructive operation carries a `**Review:** per-task` mark; no other task does.
|
|
196
|
+
|
|
177
197
|
If you find issues, fix them inline. No need to re-review — just fix and move on. If you find a spec requirement with no task, add the task.
|
|
178
198
|
|
|
179
199
|
## Execution Handoff
|
|
180
200
|
|
|
181
|
-
After saving and self-reviewing the plan,
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
201
|
+
After saving and self-reviewing the plan, choose the execution method
|
|
202
|
+
yourself, unless your human partner already named one:
|
|
203
|
+
|
|
204
|
+
- **Subagent-driven** (superpowers:subagent-driven-development) - A fresh subagent implements each task, independent tasks run in parallel in their own worktrees, the tasks marked `**Review:** per-task` get a fresh reviewer each, and one whole-branch review at the end covers every task. Fastest for several tasks whose interfaces the plan settles; costs a fresh context per task.
|
|
205
|
+
- **Native** (superpowers:executing-plans) - 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 for a few small tasks; no independent review until the end. Runs well with a mid-tier session model, since the plan carries the design.
|
|
206
|
+
|
|
207
|
+
A plan with any `**Review:** per-task` mark runs Subagent-driven unless your
|
|
208
|
+
human partner says otherwise: Native has no task reviews. If you still
|
|
209
|
+
choose Native, name the marked tasks in the approval and say they get no
|
|
210
|
+
review before the final one.
|
|
211
|
+
|
|
212
|
+
Then ask for ONE approval that covers everything they have not approved
|
|
213
|
+
yet: the design document when this plan came straight from brainstorming,
|
|
214
|
+
the plan, the method, and where the work runs. Do not ask them to pick the
|
|
215
|
+
method; name the one you chose and why, and they can swap it in the same
|
|
216
|
+
reply. Name the workspace too: a new branch in this checkout unless they
|
|
217
|
+
already said otherwise. Approving it answers superpowers:using-git-worktrees'
|
|
218
|
+
consent question with "no new worktree", so the run needs no `/move` from
|
|
219
|
+
them; the execution skill creates the branch at its Setup. If `git status
|
|
220
|
+
--porcelain` lists a change to a tracked file or anything staged, say so in
|
|
221
|
+
the same message: a run in place needs those committed or stashed first.
|
|
222
|
+
They can answer `/wt <branch>` instead to move the session into its own
|
|
223
|
+
worktree:
|
|
224
|
+
|
|
225
|
+
**"Design: `docs/specs/<filename>.md`. Plan: `docs/plans/<filename>.md`, <N> tasks. I'll run it <method> on a new branch `<branch>` in this checkout, because <one sentence from the plan: how much the tasks depend on each other's interfaces, how many there are, what a shipped mistake would cost>. Calls I made for you: <the decisions marked as your call, one line each>. Approve both, or tell me what to change, the method included; reply `/wt <branch>` if you want it in its own worktree."**
|
|
226
|
+
|
|
227
|
+
Leave out the Design line when there is no new design document, and the
|
|
228
|
+
calls line when you made none. When they already named the method, use
|
|
229
|
+
theirs and say so instead of the because-sentence. Wait for that one
|
|
230
|
+
answer. If they change the design, update both documents before you ask
|
|
231
|
+
again; if they change only the method or the workspace, start with theirs.
|
|
232
|
+
|
|
233
|
+
**On omp in vibe mode** (your tools include `vibe_spawn` but not `task`), both approaches run in one `good` worker you brief, not in your own session; the chosen skill's vibe note says how. Say so in the approval message.
|
|
234
|
+
|
|
235
|
+
**Once approved, Subagent-driven:**
|
|
203
236
|
- **REQUIRED SUB-SKILL:** Use superpowers:subagent-driven-development
|
|
204
237
|
|
|
205
|
-
**
|
|
238
|
+
**Once approved, Native:**
|
|
206
239
|
- **REQUIRED SUB-SKILL:** Use superpowers:executing-plans
|