batch: make /batch a conversational door, not a command wrapper - #321
Merged
Conversation
The skill was a thin wrapper — "run batch plan, return the decision" — which is
enough to read a proposal and nothing like enough to run a slot from a chat.
This is the body: skills/batch/batch.md, with SKILL.md pointing at it, matching
the repo's own convention.
It covers the three things a human actually says, rather than the one verb the
CLI exposes:
"What should I run?" -> the BatchDecision as written, with the two
parts that must survive into the reply: the
review-minute total, and the other lane's ready
count when this session cannot plan it.
"Here are the ones I want." -> a paste of dashboard paths, or a description.
Resolve, run the constraints over exactly that
set, and report per task what was taken and
what was rejected IN THE PLANNER'S OWN WORDS.
Never silently substitute different picks; if
everything they named is rejected, say so and
offer the planner's proposal as an alternative
rather than as though it were the ask.
"Go." -> vitals, the Heart reason set recorded verbatim,
the batch record written BEFORE any session
starts, then one session per member.
Two overrules are refused: an open Blocked-by, and Unattended: never. Everything
else the human may overrule, provided the reply names which rejection is being
overruled.
The return path is the half that was missing entirely: read the PRs
failures-first, offer merge / tweak / reject, and on a tweak DRAFT THE FOLLOW-UP
PROMPT so the human never has to write a prompt file. Then get
review-minutes-actual, asking for it if it is not volunteered — it is the only
calibration the whole estimate ever gets.
Two guards restated where they will actually be read: the independent adversary
leg must have run, in a session using a different model, BEFORE any PR from a
batch is reviewed; and `delivered:` is not "green", because a cloud session's
green status means it exited without an infrastructure error, not that the task
succeeded.
119 lines against the 200-line mandatory-load budget. 691 tests pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQeMJZznA3xTQXX4PqWg1v
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
/batchskill was a thin wrapper — "runbatch plan, return the decision" — which is enough to read a proposal and nothing like enough to run a slot from a chat. This adds the body (skills/batch/batch.md, withSKILL.mdpointing at it, matching the repo's convention).Why
The intended interface is a conversation, not a terminal: paste some tasks from the Mind dashboard, describe the batch you want, say go, and later work through what came back. The CLI exposes one verb; a human says three different things.
The three things a human actually says
"What should I run?" → the BatchDecision as written, with the two parts that must survive into the reply: the review-minute total (the budget is the human's hour, not a task count) and the other lane's ready count when this session cannot plan it. An empty batch at the backpressure cap is reported as a finding, not a deadlock.
"Here are the ones I want." → a paste of dashboard paths, or a description. Resolve it, run the constraints over exactly that set, and report per task what was taken and what was rejected in the planner's own words (
autonomy supervised — would park at ship,Status: says the work is already done,epic <slug> phase N is not next, …). Never silently substitute different picks; if everything they named is rejected, say so and offer the planner's proposal as an alternative, not as though it were the ask.Two rejections may not be overruled: an open
Blocked-by:, andUnattended: never. Everything else the human may overrule, provided the reply names which rejection is being overruled and why."Go." → vitals, the Heart reason set recorded verbatim, the batch record written before any session starts, then one session per member — never shared, because a shared session serialises them and carries one member's context into the next.
The return path, which was missing entirely
Read the PRs failures-first, then
decision-taken, then clean. Offer merge / tweak / reject, and on a tweak, draft the follow-up prompt — the human says one line and never writes a prompt file. Then getreview-minutes-actual:, asking for it if it is not volunteered, since it is the only calibration the whole estimate ever gets.Two guards restated where they will be read
delivered:is not "green" — a cloud session's green status means it exited without an infrastructure error, not that the task succeeded.And the rule that outranks convenience, in both files: the human's go in the conversation is what launches a batch. A schedule may carry the timing; it never carries the authority.
Validation
119 lines against the 200-line mandatory-load budget. 691 tests pass, including the skill-install and local-link guards. (Pre-existing and untouched:
skills/prm/at 251 lines is the one skill over budget.)Generated by Claude Code