| name | brainstorm |
| description | Author a mini job or loop plan under control โ triage loop-vs-job, run a retrieval-aware interview pre-filled from existing personas and recent runs, then preview the exact YAML behind an approve/edit/reject gate before handing off to the unchanged `mini job new` / `mini loop new`. Use when starting a new job or loop from a one-liner and you want to review the plan before anything runs. |
Authoring a minimise plan under control
What this is
A skill one level above the CLI. You review the exact plan and approve it before anything
runs โ instead of hand-writing blank-page YAML or trusting a vibe-coded plan you never saw.
It changes zero existing CLI behavior; it is purely additive. Delete it and mini is
exactly as it was.
Prerequisite
If mini --help fails, tell the user to run /minimise:setup and stop.
Triage first โ loop or job
A job runs fixed, known, finite steps once. A loop iterates plan โ implement โ evaluate
until a goal is met. Infer which from the user's one-liner, then confirm it with them โ this
choice decides which schema the survey fills, so getting it wrong wastes the whole interview.
The interview
Reverse-engineer the survey from the triaged schema: for a loop, fill goal +
dimensions + max_iterations + reuse; for a job, the task breakdown + gates. The exact
field contract is fixed โ before authoring a job plan, follow
../job/reference/plan-schema.md (estimated_duration_min is
required on every task and hook, or mini job new rejects it); for a loop, the full spec is
inlined in /minimise:loop. Four settled mechanics:
- Ask cold, retrieve after (order A). Ask the problem-framing questions cold first, then
retrieve from the corpus against the fuller statement. Better-conditioned retrieval, and no
anchoring to the nearest neighbor before the problem is framed.
- Every card is escapable. Each
AskUserQuestion card carries concrete options plus an
explicit "You suggest" pick plus free-text "Other" โ delegating back to the agent is
first-class, not a fallback. In the cold phase "You suggest" grounds in the one-liner; after
retrieval it is corpus-grounded.
- One concept per turn, ~3 cards. Not all-at-once, not one-field-at-a-time. Concept-grouped:
(a) goal + stopping condition, (b) dimensions +
max_iterations, (c) reuse (after retrieval).
- Retrieval = a subagent's semantic judgment over
mini persona list + recent loops. No
keyword matching, no embeddings index. It returns a single top pick to fork and the relevant
personas to reference (by versioned name, not inlined โ so upgrades propagate). The
subagent drafts; the main agent asks โ AskUserQuestion cannot run in a subagent.
The gate โ approve / edit / reject
Diff-preview the exact YAML, then:
- approve โ write the file, hand off.
- edit โ conversational re-render: ask "what should change?", regenerate the YAML from the
plain-language answer, re-preview. Loop until approve or reject.
- reject โ drop it, no file written.
The approved file is byte-for-byte what runs (Terraform-style). Write it to worklogs/scratch/
if that exists, else a plans dir the project already uses โ never the repo root.
Hand off
To the unchanged CLI:
mini job new --plan <file>
mini loop new --plan <file>
Point at /minimise:job and /minimise:loop for run/monitor/report โ don't duplicate them here.
Wire the /minimise:review-plan pre-hook gate into authored job plans, same as /minimise:job.