plumbbob 0.13.5 → 0.13.7
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/README.md +5 -5
- package/dist/cli-core.js +2 -1
- package/dist/lib/links.js +97 -0
- package/dist/lib/notice.js +1 -1
- package/dist/lib/orient.js +175 -24
- package/dist/lib/sidecar.js +42 -5
- package/dist/verbs/build.js +20 -12
- package/dist/verbs/checkpoint.js +8 -4
- package/dist/verbs/handoff.js +248 -91
- package/dist/verbs/harvest.js +1 -1
- package/dist/verbs/recover.js +2 -2
- package/dist/verbs/relay.js +74 -6
- package/dist/verbs/start.js +40 -14
- package/dist/verbs/status.js +16 -4
- package/dist/verbs/turn.js +29 -12
- package/package.json +1 -1
- package/skills/build/SKILL.md +30 -15
- package/skills/park/SKILL.md +9 -6
- package/skills/plan/SKILL.md +39 -14
- package/skills/refine/SKILL.md +13 -4
- package/skills/run/SKILL.md +23 -7
- package/skills/status/SKILL.md +7 -0
- package/skills/verify/SKILL.md +16 -8
- package/templates/intent.md +14 -1
package/skills/run/SKILL.md
CHANGED
|
@@ -122,7 +122,7 @@ walk before it, since the checkpoint would refuse it. The halt list is the build
|
|
|
122
122
|
red check, a self-review mismatch, a bound agent's `blocked` or `drift`, or a new decision
|
|
123
123
|
ends at that step's pause card. `plumbbob build` names the top step as the top of the range
|
|
124
124
|
you granted when it enters it. Once that step lands, its checkpoint prints the boundary
|
|
125
|
-
with the Stop row (`| Stop | Range 3
|
|
125
|
+
with the Stop row (`| Stop | **Range 3** landed - <its stop> |`); relay none of it, and end
|
|
126
126
|
the run on the stop card, below, in the same turn.
|
|
127
127
|
|
|
128
128
|
**A bare range.** `grant: none, as a bare range builds to its pause`: build the range's one
|
|
@@ -196,7 +196,10 @@ A park you leave out reads `no lean proposed` on the card and stays open, and a
|
|
|
196
196
|
reads `not given`. The section vanishes when no park is open, and so does the card's Harvested part
|
|
197
197
|
([D100 (stop-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d100)).
|
|
198
198
|
The recommendation speaks to the plan's stop, the header's `stop:` line, and to the
|
|
199
|
-
proposals: the move you would take on both, then why.
|
|
199
|
+
proposals: the move you would take on both, then why. A shell command you want the human to
|
|
200
|
+
run never rides inside a sentence: end the sentence on a colon and give the command a fenced
|
|
201
|
+
`sh` block of its own, one command to a line, which handoff keeps line for line. A slash
|
|
202
|
+
command or a path stays in backticks in the sentence.
|
|
200
203
|
|
|
201
204
|
*Render it and stop.* Run `plumbbob handoff --stop` and paste its output whole, verbatim, at
|
|
202
205
|
top level, trailing blank line included, then end the turn. Write nothing before it or after
|
|
@@ -204,6 +207,15 @@ it, and record nothing in this turn: `plumbbob harvest` refuses in the turn the
|
|
|
204
207
|
because the human has not read it yet. If the turn is held with a reason saying the stop card
|
|
205
208
|
is still owed, do exactly what the reason says.
|
|
206
209
|
|
|
210
|
+
*After a halt the human approved, the card comes short.* When the step that completed the
|
|
211
|
+
range halted at its pause and `looks good` landed it, the human read that step's Summary,
|
|
212
|
+
Readout, and recommendation a moment ago, so `plumbbob handoff --stop` prints only the
|
|
213
|
+
Harvested table, the moves, the state table with its Stop row, and the link
|
|
214
|
+
([D119 (short-stop-after-a-halt)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d119)).
|
|
215
|
+
Write the range's detail file all the same, in full: the stop's record reads it, and
|
|
216
|
+
`show the stop` prints the card whole from it. Paste the short card exactly as it printed;
|
|
217
|
+
never add back the parts it left out.
|
|
218
|
+
|
|
207
219
|
## 6. The reply at a stop
|
|
208
220
|
|
|
209
221
|
The card's proposals are settled in one reply
|
|
@@ -221,14 +233,18 @@ and the Your Call block names the replies. Read the human's message as one of th
|
|
|
221
233
|
- **A change** (`make P7 a tangent`, or a change to the review) is direction, and the turn
|
|
222
234
|
that makes it is your reply
|
|
223
235
|
([D110 (reply-after-the-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d110)).
|
|
224
|
-
Rewrite the detail file's line or section,
|
|
225
|
-
|
|
236
|
+
Rewrite the detail file's line or section, run `plumbbob handoff --stop` last among your
|
|
237
|
+
tool calls and keep the one-line reminder it prints, then say in your own words what
|
|
238
|
+
moved and end the turn on that line, with no tool call after your reply
|
|
239
|
+
([D121 (reply-after-the-tools)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d121)).
|
|
226
240
|
The card does not come back for a change; nothing is recorded until `looks good`, which
|
|
227
241
|
records every lean as the detail file then reads.
|
|
228
242
|
- **A question**, or `expand 2`, is answered from the detail file, the range's commits, or
|
|
229
|
-
the Log, never from recall
|
|
230
|
-
|
|
231
|
-
`
|
|
243
|
+
the Log, never from recall: read what you need and run `plumbbob handoff --stop` first,
|
|
244
|
+
then write the answer, and end the turn on the one-line reminder it printed, with no tool
|
|
245
|
+
call after the answer. Only `show the stop`, or any wording of it, takes
|
|
246
|
+
`plumbbob handoff --stop --full`, which prints the card whole after a short one too, and
|
|
247
|
+
never to read the card for yourself.
|
|
232
248
|
- **`/plumbbob:run`** typed at the card confirms everything the way `looks good` does, and
|
|
233
249
|
runs the next range. Record first: fold the blockers and run `plumbbob harvest`, then read
|
|
234
250
|
`plumbbob status --run "<the same argument>"` again. When its grant line says
|
package/skills/status/SKILL.md
CHANGED
|
@@ -39,3 +39,10 @@ annotate it.
|
|
|
39
39
|
the `next →` names the run to type, `/plumbbob:run` with the steps it will land beside
|
|
40
40
|
it. You relay the block with the rest; a `⚠` row is `/plumbbob:refine`'s to fix.
|
|
41
41
|
4. If it reads `NO ACTIVE SESSION`, tell the human to `/plumbbob:plan` to frame a goal.
|
|
42
|
+
5. If the human asks what is still open, run `plumbbob status --questions` and relay its
|
|
43
|
+
output whole: a table row per question that waits on the human, linked to its entry in
|
|
44
|
+
`intent.md`, with why it matters and the lean, and a `Deferred` line beneath it naming
|
|
45
|
+
the questions left to the work and what settles each
|
|
46
|
+
([D120 (deferred-questions)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d120)).
|
|
47
|
+
Never list the questions in your own words
|
|
48
|
+
([D118 (questions-table)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d118)).
|
package/skills/verify/SKILL.md
CHANGED
|
@@ -114,7 +114,10 @@ this skill verifies it the same way: **it reads the diff, not the author**
|
|
|
114
114
|
sentence, closed by a period, then the reason as a capitalized sentence or two. The lead
|
|
115
115
|
and the recommendation are flowing prose and handoff unwraps both to the renderer's
|
|
116
116
|
width, so never hard-wrap them; handoff also prepends the bold `**Recommendation**:`
|
|
117
|
-
label, which you never type.
|
|
117
|
+
label, which you never type. A shell command you want the human to run never rides
|
|
118
|
+
inside a sentence: end the sentence on a colon and give the command a fenced `sh` block
|
|
119
|
+
of its own, one command to a line, which handoff keeps line for line. A slash command
|
|
120
|
+
or a path stays in backticks in the sentence. This is the **one** file `/plumbbob:verify` writes, and it
|
|
118
121
|
is turn presentation, never the diff under review; the author-blind contract below still
|
|
119
122
|
holds. `checkpoint` records this file beneath the step's dated line in the build-log's
|
|
120
123
|
`## Log` and then truncates it (the detail plane in the
|
|
@@ -143,7 +146,7 @@ this skill verifies it the same way: **it reads the diff, not the author**
|
|
|
143
146
|
one, the write-versus-relay line of
|
|
144
147
|
[D78 (em-dash-ban)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d78).
|
|
145
148
|
|
|
146
|
-
*Then answer the reply in your own words.* The card shows once
|
|
149
|
+
*Then answer the reply in your own words, after every tool call.* The card shows once
|
|
147
150
|
([D110 (reply-after-the-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d110)):
|
|
148
151
|
every later turn at this pause is your reply, closed by one line. A message that
|
|
149
152
|
**asks** ("expand 2", "what does that mean?", "why did the seam row flag that?") is an
|
|
@@ -151,12 +154,17 @@ this skill verifies it the same way: **it reads the diff, not the author**
|
|
|
151
154
|
`## Log` for an older step, never from recall. A message that **directs** is needs-work:
|
|
152
155
|
make the change, run the check, and say what moved and what the check found; when the
|
|
153
156
|
change moves what the card said, write the detail file again so the record matches what
|
|
154
|
-
lands. Nothing lands until the human says `looks good`. Either way,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
lands. Nothing lands until the human says `looks good`. Either way, every tool call
|
|
158
|
+
comes before your reply and none after it
|
|
159
|
+
([D121 (reply-after-the-tools)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d121)):
|
|
160
|
+
read, edit, run the check, write the detail file, and run `plumbbob handoff <n>` last
|
|
161
|
+
among them. At a pause whose card has shown it prints one line,
|
|
162
|
+
`**Next Up**: Back to **Step N** on <Model> - <title>`, whatever changed since. Keep
|
|
163
|
+
that line, then write your reply, and end the turn on the line, whole and verbatim. The
|
|
164
|
+
turn is your tool calls, then your reply, then that line, and nothing after it: a
|
|
165
|
+
client that folds text written before a tool call (Zed, through the agent bridge) shows
|
|
166
|
+
the line and hides a reply written above the call. The CLI picks the form, never you:
|
|
167
|
+
paste whichever one it prints, and never retype the card.
|
|
160
168
|
|
|
161
169
|
The card comes back one way: the human asks to see it (`show the pause`, or any wording
|
|
162
170
|
of it). Then run `plumbbob handoff <n> --full` and paste its output whole, with nothing
|
package/templates/intent.md
CHANGED
|
@@ -129,7 +129,9 @@ Three lines:
|
|
|
129
129
|
· *lean:* the model's proposed resolution: one answer to react to, not a menu
|
|
130
130
|
|
|
131
131
|
The human reads *plain* to understand, then *lean* to approve or redirect: one
|
|
132
|
-
pass, no round-trip.
|
|
132
|
+
pass, no round-trip. The plan card tables the open questions a row each, and a cell
|
|
133
|
+
shows only the first sentence of its line, so open the question, *plain*, and *lean*
|
|
134
|
+
each on a sentence that stands alone: the question, why it matters, the answer.
|
|
133
135
|
|
|
134
136
|
When a question resolves, swap *resolve by:* for *resolved:* <date, the call> ON THE
|
|
135
137
|
OPENER LINE, e.g.
|
|
@@ -146,6 +148,17 @@ build reports zero open questions
|
|
|
146
148
|
([D77 (placeholder-uncounted)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d77));
|
|
147
149
|
fill it in and it counts.
|
|
148
150
|
|
|
151
|
+
When the human would rather let the work answer a question, it is deferred, not
|
|
152
|
+
resolved: keep the question and swap *resolve by:* for *deferred:* <date>, until
|
|
153
|
+
<what settles it> ON THE OPENER LINE, so the opener reads
|
|
154
|
+
|
|
155
|
+
**Q4 (latency-budget)**: What latency budget do we hold?, *deferred:* 2026-10-31, until step 4's latency numbers
|
|
156
|
+
|
|
157
|
+
It stays open and still counts, but the card lists it on a line beneath the table
|
|
158
|
+
rather than in it, so `yes to all leans` leaves it alone. Once the work answers it,
|
|
159
|
+
swap the marker for *resolved:* as above
|
|
160
|
+
([D120 (deferred-questions)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d120)).
|
|
161
|
+
|
|
149
162
|
Size to the work: a tiny build's single, obvious question may stay one bare line;
|
|
150
163
|
the *plain:*/*lean:* pair earns its keep only when a human decision genuinely waits
|
|
151
164
|
on it.
|