plumbbob 0.8.13 → 0.8.17
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 +1 -1
- package/dist/lib/agents.js +1 -1
- package/dist/lib/check.js +9 -6
- package/dist/lib/intent.js +20 -0
- package/dist/lib/orient.js +4 -3
- package/dist/verbs/checkpoint.js +30 -11
- package/dist/verbs/finish.js +24 -8
- package/node_modules/checkride/CHANGELOG.md +234 -0
- package/node_modules/checkride/README.md +134 -31
- package/node_modules/checkride/dist/adapters.d.ts +50 -1
- package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
- package/node_modules/checkride/dist/adapters.js +123 -7
- package/node_modules/checkride/dist/adapters.js.map +1 -1
- package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -1
- package/node_modules/checkride/dist/agent-setup/hook.js +15 -1
- package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -1
- package/node_modules/checkride/dist/agent-setup/index.d.ts +0 -1
- package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/agent-setup/index.js.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.d.ts +64 -0
- package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -0
- package/node_modules/checkride/dist/baseline/fallow.js +256 -0
- package/node_modules/checkride/dist/baseline/fallow.js.map +1 -0
- package/node_modules/checkride/dist/baseline/fingerprint.d.ts +4 -6
- package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/fingerprint.js +9 -4
- package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -1
- package/node_modules/checkride/dist/baseline/index.d.ts +4 -5
- package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/index.js +2 -2
- package/node_modules/checkride/dist/baseline/index.js.map +1 -1
- package/node_modules/checkride/dist/{baseline/command.d.ts → baseline-command.d.ts} +11 -9
- package/node_modules/checkride/dist/baseline-command.d.ts.map +1 -0
- package/node_modules/checkride/dist/{baseline/command.js → baseline-command.js} +9 -7
- package/node_modules/checkride/dist/baseline-command.js.map +1 -0
- package/node_modules/checkride/dist/cli.d.ts.map +1 -1
- package/node_modules/checkride/dist/cli.js +95 -8
- package/node_modules/checkride/dist/cli.js.map +1 -1
- package/node_modules/checkride/dist/config.d.ts +37 -12
- package/node_modules/checkride/dist/config.d.ts.map +1 -1
- package/node_modules/checkride/dist/config.js +268 -60
- package/node_modules/checkride/dist/config.js.map +1 -1
- package/node_modules/checkride/dist/digest/digest.d.ts +0 -6
- package/node_modules/checkride/dist/digest/digest.d.ts.map +1 -1
- package/node_modules/checkride/dist/digest/digest.js +3 -3
- package/node_modules/checkride/dist/digest/digest.js.map +1 -1
- package/node_modules/checkride/dist/digest/index.d.ts +1 -2
- package/node_modules/checkride/dist/digest/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/digest/index.js +1 -1
- package/node_modules/checkride/dist/digest/index.js.map +1 -1
- package/node_modules/checkride/dist/doctor.d.ts +14 -1
- package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
- package/node_modules/checkride/dist/doctor.js +124 -55
- package/node_modules/checkride/dist/doctor.js.map +1 -1
- package/node_modules/checkride/dist/init.d.ts +6 -0
- package/node_modules/checkride/dist/init.d.ts.map +1 -1
- package/node_modules/checkride/dist/init.js +347 -121
- package/node_modules/checkride/dist/init.js.map +1 -1
- package/node_modules/checkride/dist/links.d.ts.map +1 -1
- package/node_modules/checkride/dist/links.js +8 -9
- package/node_modules/checkride/dist/links.js.map +1 -1
- package/node_modules/checkride/dist/orchestrator.d.ts +56 -1
- package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
- package/node_modules/checkride/dist/orchestrator.js +506 -138
- package/node_modules/checkride/dist/orchestrator.js.map +1 -1
- package/node_modules/checkride/dist/pack.d.ts +76 -0
- package/node_modules/checkride/dist/pack.d.ts.map +1 -0
- package/node_modules/checkride/dist/pack.js +217 -0
- package/node_modules/checkride/dist/pack.js.map +1 -0
- package/node_modules/checkride/dist/pm/translate.d.ts +18 -10
- package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -1
- package/node_modules/checkride/dist/pm/translate.js +27 -13
- package/node_modules/checkride/dist/pm/translate.js.map +1 -1
- package/node_modules/checkride/dist/smoke.d.ts +86 -0
- package/node_modules/checkride/dist/smoke.d.ts.map +1 -0
- package/node_modules/checkride/dist/smoke.js +346 -0
- package/node_modules/checkride/dist/smoke.js.map +1 -0
- package/node_modules/checkride/dist/snippets.d.ts +215 -0
- package/node_modules/checkride/dist/snippets.d.ts.map +1 -0
- package/node_modules/checkride/dist/snippets.js +360 -0
- package/node_modules/checkride/dist/snippets.js.map +1 -0
- package/node_modules/checkride/package.json +4 -2
- package/node_modules/checkride/schema/checkride.config.schema.json +11 -6
- package/package.json +3 -2
- package/skills/pb-build/SKILL.md +7 -0
- package/skills/pb-park/SKILL.md +3 -2
- package/skills/pb-plan/SKILL.md +30 -9
- package/skills/pb-refine/SKILL.md +21 -6
- package/skills/pb-step/SKILL.md +10 -5
- package/skills/pb-verify/SKILL.md +12 -1
- package/templates/intent.md +55 -11
- package/node_modules/checkride/dist/baseline/command.d.ts.map +0 -1
- package/node_modules/checkride/dist/baseline/command.js.map +0 -1
|
@@ -45,6 +45,14 @@ this skill verifies it the same way: **it reads the diff, not the author**.
|
|
|
45
45
|
findings), and the validation, then
|
|
46
46
|
**stop and wait for the human's explicit approval.** This is the convergence beat;
|
|
47
47
|
the human is the clock. Never checkpoint without it.
|
|
48
|
+
- **Reconcile a drifted subject here, in the open (D5).** The planned title *is* the
|
|
49
|
+
checkpoint subject (D1). If the diff drifted from it — the step landed something the
|
|
50
|
+
title no longer describes — the body pass may propose a corrected subject, but it
|
|
51
|
+
**presents** it at this pause for explicit approval: show `planned title → proposed
|
|
52
|
+
subject`, one line, as part of what the human OKs. This is the exception, not the
|
|
53
|
+
default (D6): with **nothing presented**, the deterministic title-derived subject
|
|
54
|
+
lands untouched. A silent `-m` swap is exactly the agent-authored subject D68 refuses
|
|
55
|
+
— so a reconcile is *only ever* the visible, approved kind.
|
|
48
56
|
6. **Checkpoint** *(only after approval)*. Run `plumbbob checkpoint`: it makes the WIP
|
|
49
57
|
commit, records the SHA, flips the step to done, appends the step to the build-log's
|
|
50
58
|
`## Log`, and returns to DESIGN. The CLI owns the commit **subject** — a Conventional
|
|
@@ -62,7 +70,10 @@ this skill verifies it the same way: **it reads the diff, not the author**.
|
|
|
62
70
|
Do **not** run a TIL scan or reach for a separate commit skill — the body is yours to
|
|
63
71
|
write in one breath. Omit `--body` entirely and the CLI writes a deterministic body
|
|
64
72
|
(done-when + seam + diffstat) on its own. Either way, do **not** bump the version or
|
|
65
|
-
touch the changelog — that is the human's `/version` call.
|
|
73
|
+
touch the changelog — that is the human's `/version` call. And if step 5 surfaced a
|
|
74
|
+
drifted subject the human approved, land *that* subject by adding `-m "<subject>"` —
|
|
75
|
+
overriding the title-derived default for this one commit; unpresented, the CLI's
|
|
76
|
+
deterministic subject stands.
|
|
66
77
|
7. **Hand off with the next model** *(once the checkpoint lands)*. `plumbbob checkpoint`
|
|
67
78
|
returns to DESIGN; then run `plumbbob handoff` and relay its boundary block. With the
|
|
68
79
|
step gone from in-flight it renders `step N checkpointed — back at the boundary` and
|
package/templates/intent.md
CHANGED
|
@@ -5,12 +5,18 @@ head; the chat is the hand. When the model floods you, read this, not your memor
|
|
|
5
5
|
Size to the work: a small change fills Frame + a couple of Decisions and deletes
|
|
6
6
|
the rest; a medium feature fills it all. Opinionated where decided, explicit where
|
|
7
7
|
open. If the implementor (you-later, or the LLM) has to guess, the doc failed.
|
|
8
|
+
|
|
9
|
+
One rule runs through the whole doc: compress what's settled; expand what's pending.
|
|
10
|
+
Decisions and Constraints stay one line each — they re-inject into every build step,
|
|
11
|
+
so their tokens recur. Open questions expand into plain-then-lean prose — a human
|
|
12
|
+
reads them once, to decide, and that legibility buys back a chat round-trip.
|
|
8
13
|
-->
|
|
9
14
|
|
|
10
15
|
# {{TITLE}}
|
|
11
16
|
|
|
12
17
|
**Phase** (your own bookkeeping while framing): frame
|
|
13
18
|
**Size:** tiny | small | medium
|
|
19
|
+
**Scope:** <short-scope> <!-- the build's default commit scope (D4): a short feature-level name each step's own `(scope)` overrides. Leave the `<…>` placeholder (or blank) and it parses as absent — commits fall through to the build slug (D7). -->
|
|
14
20
|
|
|
15
21
|
## Frame
|
|
16
22
|
|
|
@@ -31,16 +37,20 @@ open. If the implementor (you-later, or the LLM) has to guess, the doc failed.
|
|
|
31
37
|
|
|
32
38
|
## Decisions
|
|
33
39
|
|
|
34
|
-
*(One line each
|
|
35
|
-
holes `/pb-refine` surfaces, and as blockers fold in during BUILD.
|
|
40
|
+
*(One line each — settled, not re-litigated in the chat. Grows as you resolve the
|
|
41
|
+
holes `/pb-refine` surfaces, and as blockers fold in during BUILD. Mint a two- or
|
|
42
|
+
three-word slug where each item is born — `D1 (slug-here)` — and copy that slug at
|
|
43
|
+
every reference site, so a later `D4 (default-waves)` never decays into a bare `D4`
|
|
44
|
+
a cold reader has to hunt down.)*
|
|
36
45
|
|
|
37
|
-
- D1: <decision> — *because* <the one reason that mattered>
|
|
46
|
+
- D1 (slug-here): <decision> — *because* <the one reason that mattered>
|
|
38
47
|
|
|
39
48
|
## Constraints
|
|
40
49
|
|
|
41
|
-
*(Hard rules the build must honor. `/pb-verify` and `/pb-refine` read against these.
|
|
50
|
+
*(Hard rules the build must honor. `/pb-verify` and `/pb-refine` read against these.
|
|
51
|
+
Slug and gloss them at birth too — `C1 (no-new-deps)` — same one line, same rule.)*
|
|
42
52
|
|
|
43
|
-
- C1: <e.g. functional/procedural only; no new dependencies>
|
|
53
|
+
- C1 (no-new-deps): <e.g. functional/procedural only; no new dependencies>
|
|
44
54
|
|
|
45
55
|
## Steps
|
|
46
56
|
|
|
@@ -50,9 +60,13 @@ which `/pb-build` records in the build folder's `SEAM` for orientation — aware
|
|
|
50
60
|
An optional **model** line recommends the smallest model that can carry the step —
|
|
51
61
|
mechanical work runs fine on a small model; subtle or creative work earns a frontier
|
|
52
62
|
one. Advisory for the human, never a gate; write it plain, no backticks (D62).
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
The step title *is* the checkpoint's commit subject: write it as one plain line,
|
|
64
|
+
`type(scope): description` — load-bearing paths live in `seam`, never jammed into the
|
|
65
|
+
title (D2) — aiming for ≤72 characters (GitHub's subject convention: soft, no gate, D9).
|
|
66
|
+
The `(scope)` names the primary code area the step touches (`pb-plan`, `commitmsg`); the
|
|
67
|
+
build's `**Scope:**` header is the feature-level catch-all a step overrides (D8). Scope
|
|
68
|
+
resolves title-scope → `**Scope:**` default → build slug → bare, and type resolves
|
|
69
|
+
title-type → `feat` (D3/D68). Then drive `/pb-build` until done. Later steps may be
|
|
56
70
|
fuzzier than the first; sharpen the next one just-in-time with `/pb-step` (empty input
|
|
57
71
|
auto-syncs it), and use `/pb-refine` to repair the whole plan when a blocker rewrites it.)*
|
|
58
72
|
|
|
@@ -64,10 +78,40 @@ auto-syncs it), and use `/pb-refine` to repair the whole plan when a blocker rew
|
|
|
64
78
|
|
|
65
79
|
## Open questions
|
|
66
80
|
|
|
67
|
-
*(Holes you could NOT resolve on paper
|
|
68
|
-
|
|
81
|
+
*(Holes you could NOT resolve on paper — the one section that expands rather than
|
|
82
|
+
compresses. Do not guess them into Decisions; a genuine fork goes to a SPIKE, with
|
|
83
|
+
the verdict recorded below and in Decisions.)*
|
|
84
|
+
|
|
85
|
+
<!--
|
|
86
|
+
Write each open question so a cold reader could answer it without flipping back to
|
|
87
|
+
the code or the chat — that cold-reader test is the whole point of expanding it.
|
|
88
|
+
Three lines:
|
|
89
|
+
|
|
90
|
+
· the opener — the hole as a question, slugged at birth, tagged
|
|
91
|
+
*resolve by:* decide | spike | ask
|
|
92
|
+
· *plain:* — what's at stake, in plain words: the context and the cost of getting
|
|
93
|
+
it wrong, enough to judge it cold
|
|
94
|
+
· *lean:* — the model's proposed resolution: one answer to react to, not a menu
|
|
95
|
+
|
|
96
|
+
The human reads *plain* to understand, then *lean* to approve or redirect — one
|
|
97
|
+
pass, no round-trip.
|
|
98
|
+
|
|
99
|
+
When a question resolves, swap *resolve by:* for *resolved:* <date, the call> ON THE
|
|
100
|
+
OPENER LINE, e.g.
|
|
101
|
+
|
|
102
|
+
- Q3 (default-waves): *resolved:* 2026-07-18, default off
|
|
103
|
+
|
|
104
|
+
The status counter reads opener lines only, so a *resolved:* left on a *plain:* or
|
|
105
|
+
*lean:* sub-line leaves the question still counted as open.
|
|
106
|
+
|
|
107
|
+
Size to the work: a tiny build's single, obvious question may stay one bare line —
|
|
108
|
+
the *plain:*/*lean:* pair earns its keep only when a human decision genuinely waits
|
|
109
|
+
on it.
|
|
110
|
+
-->
|
|
69
111
|
|
|
70
|
-
- Q1: <unresolved> — *resolve by:* decide | spike | ask
|
|
112
|
+
- Q1 (slug-here): <the unresolved hole, framed as a question> — *resolve by:* decide | spike | ask
|
|
113
|
+
- *plain:* <what's at stake, in plain words — enough to judge it cold>
|
|
114
|
+
- *lean:* <the model's proposed resolution — the answer to react to>
|
|
71
115
|
|
|
72
116
|
## Verdicts
|
|
73
117
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/baseline/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAc,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sEAAsE;IACtE,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEnF,gFAAgF;AAChF,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAsCnF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/baseline/command.ts"],"names":[],"mappings":"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"}
|