plumbbob 0.4.4 → 0.4.11

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.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: plan
2
+ name: pb-plan
3
3
  description: "Frame a fresh goal and author the whole plan — Frame, Decisions, Constraints, and all Steps — before any code. Three input modes: no arg interviews you; a file path absorbs a spec; any other text expands your inline intent."
4
4
  disable-model-invocation: true
5
5
  model: opus
@@ -10,10 +10,10 @@ allowed-tools: Read, Edit, Write, Bash(plumbbob status:*), Bash(plumbbob start:*
10
10
 
11
11
  Current session state (injected when this skill runs): !`plumbbob status 2>/dev/null || echo "plumbbob CLI not found - install the dep and re-run: npm i -g plumbbob && plumbbob init"`
12
12
 
13
- `/plumbbob:plan` is the **whole-goal** move — it opens a session and gets the deciding out
13
+ `/plumbbob:pb-plan` is the **whole-goal** move — it opens a session and gets the deciding out
14
14
  of your head and onto `intent.md` *before* any code. By default it authors the
15
15
  **complete plan, including all the Steps**, so the happy path afterward is just
16
- `/plumbbob:build` until done. (Revising a single increment later is the separate `/plumbbob:step`
16
+ `/plumbbob:pb-build` until done. (Revising a single increment later is the separate `/plumbbob:pb-step`
17
17
  move; do not confuse the two.)
18
18
 
19
19
  ## Three input modes (disambiguated for you — no quotes needed)
@@ -33,12 +33,12 @@ Look at the argument the human gave and pick the mode yourself:
33
33
  genuinely ambiguous.
34
34
 
35
35
  All three modes converge on the **same artifact**: a complete, standalone `intent.md`
36
- an agent can follow with `/plumbbob:build`. The argument only seeds how you get there.
36
+ an agent can follow with `/plumbbob:pb-build`. The argument only seeds how you get there.
37
37
 
38
38
  ## What this skill does
39
39
 
40
40
  1. **Scaffold.** If there is no active session, run `plumbbob start "<title>"`
41
- to create `.plumbbob/` (STATE=DESIGN, baseline recorded). If a session already
41
+ to create `.plumbbob/` (baseline recorded, session opened). If a session already
42
42
  exists, say so and edit the existing `intent.md` rather than starting over.
43
43
  2. **Frame** (`.plumbbob/intent.md`), with the human: the **Problem** in plain words,
44
44
  the **smallest thing** that solves it, what **done looks like**, and what you are
@@ -55,11 +55,11 @@ an agent can follow with `/plumbbob:build`. The argument only seeds how you get
55
55
  - seam: `<file>`, `<file>`
56
56
  ```
57
57
 
58
- Every step needs a **done-when** `/plumbbob:verify` can check and a **seam** (the exact
58
+ Every step needs a **done-when** `/plumbbob:pb-verify` can check and a **seam** (the exact
59
59
  paths it touches). Later steps may be fuzzier than the first — that's fine; they get
60
- sharpened just-in-time when you reach them with `/plumbbob:step`. Keep each small enough to
60
+ sharpened just-in-time when you reach them with `/plumbbob:pb-step`. Keep each small enough to
61
61
  verify in one review pass.
62
- 5. **Offer to stress-test it.** Suggest `/plumbbob:refine` to attack the frame for holes (or
62
+ 5. **Offer to stress-test it.** Suggest `/plumbbob:pb-refine` to attack the frame for holes (or
63
63
  to repair the plan as it drifts). Optional, the human's call.
64
64
 
65
65
  ## The interview (mode 1)
@@ -72,11 +72,11 @@ Make it easy and non-intrusive:
72
72
  without typing** ("done-when: the 6th request in 60s returns 429 — good?"), while
73
73
  taking arbitrary detail when they want to give it, including pointers to other files.
74
74
  - **Let them double back.** They will revise as the picture sharpens; that's expected.
75
- They can also edit `intent.md` by hand at any time, or call `/plumbbob:refine` to repair it.
75
+ They can also edit `intent.md` by hand at any time, or call `/plumbbob:pb-refine` to repair it.
76
76
 
77
77
  ## The hard contracts
78
78
 
79
- - **Deciding before code.** `/plumbbob:plan` writes `intent.md` only — never source.
79
+ - **Deciding before code.** `/plumbbob:pb-plan` writes `intent.md` only — never source.
80
80
  - **The human converges.** You surface options and draft wording; the human picks.
81
81
  An unresolved hole is an Open question, not a guessed Decision.
82
82
  - **Stands on its own.** Whatever the input mode, the finished `intent.md` carries
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: refine
2
+ name: pb-refine
3
3
  description: Keep intent.md true — attack the plan for holes (append as Open questions) and refine or repair the Frame, Decisions, Constraints, and Steps to match reality. Usable at any point; you propose, the human approves.
4
4
  disable-model-invocation: true
5
5
  model: opus
@@ -10,16 +10,16 @@ allowed-tools: Read, Edit, Bash(plumbbob status:*)
10
10
 
11
11
  Current session state (injected when this skill runs): !`plumbbob status 2>/dev/null || echo "plumbbob CLI not found - install the dep and re-run: npm i -g plumbbob && plumbbob init"`
12
12
 
13
- `/plumbbob:refine` keeps `intent.md` honest. Use it at **any point** — right after `/plumbbob:plan`
13
+ `/plumbbob:pb-refine` keeps `intent.md` honest. Use it at **any point** — right after `/plumbbob:pb-plan`
14
14
  to stress-test a fresh frame, or mid-build to repair a plan that drifted from what the
15
- code is actually doing. It is the document-level complement to `/plumbbob:step` (which only
16
- sharpens the *next* step): `/plumbbob:refine` works the *whole* plan.
15
+ code is actually doing. It is the document-level complement to `/plumbbob:pb-step` (which only
16
+ sharpens the *next* step): `/plumbbob:pb-refine` works the *whole* plan.
17
17
 
18
18
  ## No-session refusal
19
19
 
20
20
  This skill refines an existing plan, so it needs one. Read the state injected above: if
21
21
  it is `NO ACTIVE SESSION`, **refuse** in one line and tell the human to run
22
- `plumbbob start "<title>"` (or `/plumbbob:plan`) first, and edit nothing. Every active state
22
+ `plumbbob start "<title>"` (or `/plumbbob:pb-plan`) first, and edit nothing. Every active state
23
23
  is fine — refining is always available.
24
24
 
25
25
  ## Two modes
@@ -41,5 +41,5 @@ is fine — refining is always available.
41
41
  approves every change to `intent.md`. Never guess a hole into a Decision.
42
42
  - **Open questions for holes, edits for drift.** New uncertainty goes to
43
43
  `## Open questions`; settled drift gets repaired in place once the human OKs it.
44
- - **Refine the plan, not the code.** `/plumbbob:refine` touches `intent.md` only — turning a
45
- decision into a diff is `/plumbbob:build` or your own hands, never this skill.
44
+ - **Refine the plan, not the code.** `/plumbbob:pb-refine` touches `intent.md` only — turning a
45
+ decision into a diff is `/plumbbob:pb-build` or your own hands, never this skill.
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: revert
3
- description: Human-triggered driver for `plumbbob revert` — git reset --hard to a checkpoint SHA (discarding the half-done step) and return to DESIGN.
2
+ name: pb-revert
3
+ description: Human-triggered driver for `plumbbob revert` — git reset --hard to a checkpoint SHA (discarding the half-done step) and return to the boundary.
4
4
  disable-model-invocation: true
5
5
  model: haiku
6
6
  allowed-tools: Bash(plumbbob status:*), Bash(plumbbob revert:*)
@@ -14,6 +14,6 @@ This is a **driver skill** — a chat-side trigger for the mechanical `plumbbob
14
14
 
15
15
  ## What it does
16
16
 
17
- 1. Read an optional target step from the way you were invoked (e.g. `/plumbbob:revert --to 2` → step `2`). With no target, revert goes to the last done-checkpoint.
17
+ 1. Read an optional target step from the way you were invoked (e.g. `/plumbbob:pb-revert --to 2` → step `2`). With no target, revert goes to the last done-checkpoint.
18
18
  2. Run `plumbbob revert` (or `plumbbob revert --to <n>`) via Bash. This is a `git reset --hard` — it discards the current in-progress step. Run it exactly as the human asked; do not add or drop the `--to` on your own.
19
19
  3. Report the verb's output verbatim — which checkpoint it reset to, or any refusal.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: spike
2
+ name: pb-spike
3
3
  description: Human-triggered driver for `plumbbob spike` — open a throwaway worktree experiment for a genuine fork, or tear it down with `spike done`.
4
4
  disable-model-invocation: true
5
5
  model: haiku
@@ -14,6 +14,6 @@ This is a **driver skill** — a chat-side trigger for the mechanical `plumbbob
14
14
 
15
15
  ## What it does
16
16
 
17
- 1. Read the spike target from the way you were invoked: a slug to open one (e.g. `/plumbbob:spike redis-cache`), or the literal `done` to tear the current spike down (`/plumbbob:spike done`). If neither is present, ask which and run nothing.
17
+ 1. Read the spike target from the way you were invoked: a slug to open one (e.g. `/plumbbob:pb-spike redis-cache`), or the literal `done` to tear the current spike down (`/plumbbob:pb-spike done`). If neither is present, ask which and run nothing.
18
18
  2. Run `plumbbob spike "<slug>"` or `plumbbob spike done` via Bash.
19
19
  3. Report the verb's output verbatim — the worktree it created or removed, or any refusal.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: status
2
+ name: pb-status
3
3
  description: Show the orientation dashboard — where you are, what's done, what's parked, and the next move. A thin trigger for `plumbbob status`.
4
4
  disable-model-invocation: true
5
5
  model: haiku
@@ -19,4 +19,4 @@ skill carries **no Edit and no Write tool**: the CLI is the source of truth, so
19
19
  ## What it does
20
20
 
21
21
  1. Surface the injected `status` output — the dashboard and its suggested next move.
22
- 2. If it reads `NO ACTIVE SESSION`, tell the human to `/plumbbob:plan` to frame a goal.
22
+ 2. If it reads `NO ACTIVE SESSION`, tell the human to `/plumbbob:pb-plan` to frame a goal.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: step
2
+ name: pb-step
3
3
  description: Revise the next increment just-in-time — sharpen the next undone step against what's now true, or (with input) re-cut, split, or add a step. Empty input runs an automatic sharpen. One at a time; the human approves.
4
4
  disable-model-invocation: true
5
5
  model: opus
@@ -10,21 +10,21 @@ allowed-tools: Read, Edit, Bash(plumbbob status:*)
10
10
 
11
11
  Current session state (injected when this skill runs): !`plumbbob status 2>/dev/null || echo "plumbbob CLI not found - install the dep and re-run: npm i -g plumbbob && plumbbob init"`
12
12
 
13
- `/plumbbob:plan` authors the **whole** step list up front, so `/plumbbob:step` is the
13
+ `/plumbbob:pb-plan` authors the **whole** step list up front, so `/plumbbob:pb-step` is the
14
14
  **just-in-time revision** move: it keeps the *next* undone step honest against what the
15
- build has actually taught you, right before you `/plumbbob:build` it. (Framing the whole goal
16
- is the separate `/plumbbob:plan` move.) It can also add or re-cut a step when scope genuinely
15
+ build has actually taught you, right before you `/plumbbob:pb-build` it. (Framing the whole goal
16
+ is the separate `/plumbbob:pb-plan` move.) It can also add or re-cut a step when scope genuinely
17
17
  grew — but its everyday job is to sharpen, not to invent.
18
18
 
19
19
  ## Two ways to fire it
20
20
 
21
- - **`/plumbbob:step` (no input) → automatic sharpen.** Re-examine the next undone step
21
+ - **`/plumbbob:pb-step` (no input) → automatic sharpen.** Re-examine the next undone step
22
22
  against the completed code, the Decisions, the Constraints, and the build-log, then
23
23
  make the obvious revisions to its **done-when** and **seam** so it matches reality —
24
24
  e.g. a file moved, a decision narrowed the scope, an earlier step already did part of
25
25
  it. This is the zero-effort "keep my next step in sync" move: if the human does
26
26
  nothing else, the next step stays current.
27
- - **`/plumbbob:step <what changed>` → directed revision.** Take the human's input and propose
27
+ - **`/plumbbob:pb-step <what changed>` → directed revision.** Take the human's input and propose
28
28
  the matching change: tighten the done-when, adjust the seam, split the step in two, or
29
29
  add a new increment the plan was missing.
30
30
 
@@ -33,7 +33,7 @@ grew — but its everyday job is to sharpen, not to invent.
33
33
  1. **Read the plan and the reality.** Read `intent.md`'s Frame, Decisions, Constraints,
34
34
  and the steps already done, plus the next undone step, to see what it *should* now be.
35
35
  2. **Propose the revision** (or the new/split step): a one-line **title**, a **done-when**
36
- `/plumbbob:verify` can validate, and a **seam** (exact paths, or a `dir/` grant). Keep it
36
+ `/plumbbob:pb-verify` can validate, and a **seam** (exact paths, or a `dir/` grant). Keep it
37
37
  small enough to verify in one review pass. Show the before/after so the human can see
38
38
  what you changed and why.
39
39
  3. **Get the human's OK**, then write it into `## Steps` in the standard format —
@@ -42,7 +42,7 @@ grew — but its everyday job is to sharpen, not to invent.
42
42
 
43
43
  ## The hard contracts
44
44
 
45
- - **One verifiable increment.** Each step carries a done-when `/plumbbob:verify` can check
45
+ - **One verifiable increment.** Each step carries a done-when `/plumbbob:pb-verify` can check
46
46
  and a seam small enough to review in one pass.
47
47
  - **Edit `## Steps` only**, in the standard format `status` and `build` parse — never
48
48
  the Roadmap, never loose prose. A done step (`[x]`) is history; do not rewrite it.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: verify
2
+ name: pb-verify
3
3
  description: "The verify tick — run the check, self-review the diff against intent, validate the step's done-when, pause for your approval, then checkpoint. Executor-agnostic: it reads the diff, not who wrote it."
4
4
  disable-model-invocation: true
5
5
  model: opus
@@ -11,7 +11,7 @@ allowed-tools: Read, Bash(plumbbob status:*), Bash(plumbbob check:*), Bash(plumb
11
11
  Current session state (injected when this skill runs): !`plumbbob status 2>/dev/null || echo "plumbbob CLI not found - install the dep and re-run: npm i -g plumbbob && plumbbob init"`
12
12
 
13
13
  This is the **tick** — the one beat where the human is the clock. Whatever produced
14
- the current diff — `/plumbbob:build`, your own hands, a vibe session, another harness —
14
+ the current diff — `/plumbbob:pb-build`, your own hands, a vibe session, another harness —
15
15
  this skill verifies it the same way: **it reads the diff, not the author** (D3).
16
16
 
17
17
  ## What this skill does, in order
@@ -31,16 +31,16 @@ this skill verifies it the same way: **it reads the diff, not the author** (D3).
31
31
  the human is the clock. Never checkpoint without it.
32
32
  5. **Checkpoint** *(only after approval)*. Commit the work — the human's
33
33
  commit-with-TIL skill for a rich message, or let `checkpoint` make the WIP commit
34
- — then run `plumbbob checkpoint` to record the SHA, flip the step to done,
35
- and return to DESIGN. Do **not** bump the version or touch the changelog — that is
36
- the human's `/version` call.
34
+ — then run `plumbbob checkpoint` to record the SHA, flip the step to done, append the
35
+ step to the build-log's `## Log`, and return to DESIGN. Do **not** bump the version or
36
+ touch the changelog — that is the human's `/version` call.
37
37
 
38
38
  ## The hard contracts
39
39
 
40
40
  - **Never skip the pause.** Check → self-review → validate, then wait. Approval is
41
41
  the only thing that triggers the checkpoint.
42
42
  - **Read the diff, not the author** (D3). Verify identically whether the code was
43
- built by `/plumbbob:build`, by hand, vibed, or by another harness.
43
+ built by `/plumbbob:pb-build`, by hand, vibed, or by another harness.
44
44
  - **Red means stop, not pause.** A failing check is not an approval decision; report
45
45
  it and end your turn.
46
46
  - **You review; you do not build.** If the self-review finds a problem, surface it
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: wrap
2
+ name: pb-wrap
3
3
  description: Wrap up the build — write the report (what shipped, decisions, parked/harvested items, deferred tangents), then safely archive intent + build-log + report before clearing for a fresh goal. Archive-then-clear, never destroy. Report by default, no gate.
4
4
  disable-model-invocation: true
5
5
  model: opus
@@ -10,15 +10,18 @@ allowed-tools: Read, Write, Bash(plumbbob status:*), Bash(plumbbob wrap:*)
10
10
 
11
11
  Current session state (injected when this skill runs): !`plumbbob status 2>/dev/null || echo "plumbbob CLI not found - install the dep and re-run: npm i -g plumbbob && plumbbob init"`
12
12
 
13
- `/plumbbob:wrap` ends the build: it captures what happened, archives it, and clears the
13
+ `/plumbbob:pb-wrap` ends the build: it captures what happened, archives it, and clears the
14
14
  sidecar for the next goal. **Report by default** (D9) — no refuse-without-report gate,
15
15
  and no separate docs phase.
16
16
 
17
17
  ## What this skill does, in order
18
18
 
19
- 1. **Write the report** to `.plumbbob/report.md`, from `intent.md` + `build-log.md`:
20
- - **What shipped** the steps completed and what they delivered.
21
- - **Decisions and why** the settled calls that shaped the build.
19
+ 1. **Write the report** to `.plumbbob/report.md`, from `intent.md` + `build-log.md`.
20
+ The build-log's `## Log` is already the chronological history `plumbbob checkpoint`
21
+ wrote a dated line for every step as it landed. **Read it as the spine; do not
22
+ re-narrate it.** The report adds only what the log does not already carry:
23
+ - **What shipped** — summarize from the `## Log` timeline; don't rebuild it step by step.
24
+ - **Decisions and why** — the settled calls that shaped the build (the *why* behind the log).
22
25
  - **Parked & harvested** — what was captured and how each was classified.
23
26
  - **Final status** — done or partial, and what is left.
24
27
  - **Deferred tangents** — the harvested items that become future work.
@@ -27,12 +30,15 @@ and no separate docs phase.
27
30
  to the report, archives intent + build-log + report to
28
31
  `.plumbbob/archive/<date>-<slug>/`, and clears the sidecar (STATE last). Git is not
29
32
  touched.
30
- 3. **Point at the next goal** — `/plumbbob:plan` to frame the next one.
33
+ 3. **Point at the next goal** — `/plumbbob:pb-plan` to frame the next one.
31
34
 
32
35
  ## The hard contracts
33
36
 
34
37
  - **Report by default, never a gate.** Always offer the report; never wall the exit. A
35
38
  bug fix's report can be three lines — size it to the work.
39
+ - **The log is the history; the report is the synthesis.** `checkpoint` already recorded
40
+ what shipped, step by step — wrap applies the *unique additions* (the why, the deferred
41
+ tangents, the final status), it does not rewrite the timeline.
36
42
  - **Archive-then-clear, never destroy** (C4). The archive is the record; the active
37
43
  files only clear once they are safely copied.
38
44
  - **No version bump, no docs phase.** Updating real docs is a separate, explicit ask;
@@ -5,19 +5,20 @@ step boundaries. The antidote to "my plan got lost in the noise."
5
5
  Steps : where you are. One step in flight at a time.
6
6
  Park list : where ideas go so you do not chase them. CAPTURE, never act inline.
7
7
  Harvest : the boundary ritual that keeps you on one branch.
8
- Log : the audit trail. Feeds the /plumbbob:wrap report, then gets archived.
8
+ Log : the build's history. `plumbbob checkpoint` appends a line per step as it
9
+ lands; feeds the /plumbbob:pb-wrap report, then gets archived.
9
10
  -->
10
11
 
11
12
  # Build log — {{TITLE}}
12
13
 
13
- **Current step:** none (DESIGN) · **STATE:** DESIGN
14
+ **Current step:** none (at the boundary)
14
15
  **Heavy check:** {{CHECK}}
15
16
 
16
17
  ## Steps
17
18
 
18
19
  *(Mirror of intent.md's Steps, with live status. Only ONE step is in flight. A step
19
- is done only after a checkpoint — check green + checkpoint taken, via `/plumbbob:verify` or
20
- `/plumbbob:build`.)*
20
+ is done only after a checkpoint — check green + checkpoint taken, via `/plumbbob:pb-verify` or
21
+ `/plumbbob:pb-build`.)*
21
22
 
22
23
  - ☐ 1. <step>
23
24
 
@@ -25,16 +26,16 @@ is done only after a checkpoint — check green + checkpoint taken, via `/plumbb
25
26
 
26
27
  > Mid-step, every new problem / idea / "ooh what if" lands HERE, untouched, and you
27
28
  > go straight back to the step. Acting the instant an idea arrives is the disease.
28
- > Capture is one line (`/plumbbob:park` composes it). Harvest happens only at the boundary.
29
+ > Capture is one line (`/plumbbob:pb-park` composes it). Harvest happens only at the boundary.
29
30
 
30
- ## Harvest *(run `/plumbbob:harvest` at each step boundary, after green)*
31
+ ## Harvest *(run `/plumbbob:pb-harvest` at each step boundary, after green)*
31
32
 
32
33
  Classify each parked item as exactly ONE. Naming it before acting is what keeps you
33
34
  from sprawling across branches.
34
35
 
35
36
  | Class | Meaning | Action |
36
37
  |------------------|-------------------------------------------|---------------------------------|
37
- | **blocker** | Plan was wrong/incomplete; can't proceed | `/plumbbob:revert`, fold into intent |
38
+ | **blocker** | Plan was wrong/incomplete; can't proceed | `/plumbbob:pb-revert`, fold into intent |
38
39
  | **tangent** | A different path, not clearly better | Defer or kill. Default here. |
39
40
  | **pivot signal** | Evidence the whole approach is wrong | Stop. Replan deliberately. |
40
41
 
@@ -47,8 +48,9 @@ Harvest results this boundary:
47
48
 
48
49
  ## Log
49
50
 
50
- *(Append-only. One decision or event per line, dated. What you point at to say "I
51
- did that the LLM helped, but those were my calls." `/plumbbob:wrap` reads this for the
52
- report; `plumbbob wrap` archives it under `.plumbbob/archive/`.)*
53
-
54
- - <date> <decision / event / what shipped this step>
51
+ *(The build's history, oldest first. `plumbbob checkpoint` appends a dated line here
52
+ every time a step lands via `/plumbbob:pb-build` or `/plumbbob:pb-verify` so this
53
+ fills in as you go, not at the end. Add your own decision/event lines too: this is what
54
+ you point at to say "I did that — the LLM helped, but those were my calls."
55
+ `/plumbbob:pb-wrap` reads this for the report; `plumbbob wrap` archives it under
56
+ `.plumbbob/archive/`.)*
@@ -9,8 +9,7 @@ open. If the implementor (you-later, or the LLM) has to guess, the doc failed.
9
9
 
10
10
  # {{TITLE}}
11
11
 
12
- **STATE:** DESIGN
13
- **Phase** (bookkeeping while in DESIGN): frame
12
+ **Phase** (your own bookkeeping while framing): frame
14
13
  **Size:** tiny | small | medium
15
14
 
16
15
  ## Frame
@@ -33,24 +32,24 @@ open. If the implementor (you-later, or the LLM) has to guess, the doc failed.
33
32
  ## Decisions
34
33
 
35
34
  *(One line each. Settled, not re-litigated in the chat. Grows as you resolve the
36
- holes `/plumbbob:refine` surfaces, and as blockers fold in during BUILD.)*
35
+ holes `/plumbbob:pb-refine` surfaces, and as blockers fold in during BUILD.)*
37
36
 
38
37
  - D1: <decision> — *because* <the one reason that mattered>
39
38
 
40
39
  ## Constraints
41
40
 
42
- *(Hard rules the build must honor. `/plumbbob:verify` and `/plumbbob:refine` read against these.)*
41
+ *(Hard rules the build must honor. `/plumbbob:pb-verify` and `/plumbbob:pb-refine` read against these.)*
43
42
 
44
43
  - C1: <e.g. functional/procedural only; no new dependencies>
45
44
 
46
45
  ## Steps
47
46
 
48
- *(The build plan. `/plumbbob:plan` authors the **whole list up front** — each step a small,
47
+ *(The build plan. `/plumbbob:pb-plan` authors the **whole list up front** — each step a small,
49
48
  verifiable increment with its own **done-when** and **seam** (the paths it will touch,
50
- which `/plumbbob:build` records in `.plumbbob/SEAM` for orientation — awareness, not a lock
51
- in v2). Then drive `/plumbbob:build` until done. Later steps may be fuzzier than the first;
52
- sharpen the next one just-in-time with `/plumbbob:step` (empty input auto-syncs it), and use
53
- `/plumbbob:refine` to repair the whole plan when a blocker rewrites it.)*
49
+ which `/plumbbob:pb-build` records in `.plumbbob/SEAM` for orientation — awareness, not a lock
50
+ in v2). Then drive `/plumbbob:pb-build` until done. Later steps may be fuzzier than the first;
51
+ sharpen the next one just-in-time with `/plumbbob:pb-step` (empty input auto-syncs it), and use
52
+ `/plumbbob:pb-refine` to repair the whole plan when a blocker rewrites it.)*
54
53
 
55
54
  1. [ ] <step> — **done when:** <criterion, ideally a test or check result>
56
55
  - seam: `<file>`, `<file>`