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.
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +74 -56
- package/bin/pb +15 -0
- package/bin/plumbbob +26 -0
- package/dist/cli-core.js +25 -6
- package/dist/cli.js +0 -0
- package/dist/lib/buildlog.js +34 -0
- package/dist/lib/orient.js +28 -35
- package/dist/lib/plugins.js +24 -0
- package/dist/lib/sidecar.js +26 -12
- package/dist/verbs/build.js +4 -5
- package/dist/verbs/check.js +1 -1
- package/dist/verbs/checkpoint.js +38 -10
- package/dist/verbs/doctor.js +22 -4
- package/dist/verbs/init.js +25 -9
- package/dist/verbs/park.js +3 -23
- package/dist/verbs/revert.js +2 -3
- package/dist/verbs/spike.js +15 -17
- package/dist/verbs/start.js +5 -5
- package/dist/verbs/status.js +2 -2
- package/dist/verbs/wrap.js +5 -4
- package/package.json +4 -3
- package/skills/{build → pb-build}/SKILL.md +16 -15
- package/skills/pb-doctor/SKILL.md +39 -0
- package/skills/{harvest → pb-harvest}/SKILL.md +10 -9
- package/skills/{park → pb-park}/SKILL.md +5 -5
- package/skills/{plan → pb-plan}/SKILL.md +10 -10
- package/skills/{refine → pb-refine}/SKILL.md +7 -7
- package/skills/{revert → pb-revert}/SKILL.md +3 -3
- package/skills/{spike → pb-spike}/SKILL.md +2 -2
- package/skills/{status → pb-status}/SKILL.md +2 -2
- package/skills/{step → pb-step}/SKILL.md +8 -8
- package/skills/{verify → pb-verify}/SKILL.md +6 -6
- package/skills/{wrap → pb-wrap}/SKILL.md +12 -6
- package/templates/build-log.md +14 -12
- package/templates/intent.md +8 -9
|
@@ -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/` (
|
|
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
|
|
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
|
|
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
|
-
-
|
|
21
|
-
|
|
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;
|
package/templates/build-log.md
CHANGED
|
@@ -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
|
|
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 (
|
|
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
|
-
*(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
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/`.)*
|
package/templates/intent.md
CHANGED
|
@@ -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
|
-
**
|
|
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>`
|