Requirements: a brainstorm phase and /brainstorm command
Source of truth: GitHub issue #17. Derived from the locked
brainstorm.md. Design and the task DAG live indesign.mdandtasks.md.
Introduction
Add an optional brainstorming phase to the-loop whose deliverable — brainstorm.md — is the root artifact every later artifact derives from. Give it a /brainstorm command, a template, a place in the phase state machine, and a conversion path into requirements.md. Generalize the loop's core idea so it reads the same at every link: each artifact is iterated on with feedback until locked, then the loop advances.
New chain: brainstorm (optional) → requirements → design → tasks → implementation.
Requirements
R1 — brainstorm.md root artifact & template
User story: As a product-manager exploring a fuzzy idea, I want a free-form brainstorm.md scratchpad, so that I can converge on a direction before committing to requirements.
Acceptance criteria (EARS)
- WHEN the plugin is installed THEN it SHALL provide a
.the-loop/templates/brainstorm.mdtemplate with front-matter (type: brainstorm,phase: brainstorming,status,approvedBy,collaborators) and free-form sections (problem, options, open questions, working hypothesis, hand-off). - The template SHALL be listed in
.the-loop/manifest.yamlas a managed template and as an optional per-work-item artifact (spec-brainstorm, phasebrainstorming).
R2 — /brainstorm command
User story: As a user, I want a /the-loop:brainstorm <title> command, so that I can start a brainstorm without a ticket.
Acceptance criteria (EARS)
- WHEN
/the-loop:brainstorm <title>is run THEN it SHALL create (or reuse)docs/specs/draft-<slug>/and writebrainstorm.mdfrom the template. - The command SHALL instruct the user to iterate the brainstorm with feedback until it is locked (
status: approved) and then point to/the-loop:new-requirementas the conversion step.
R3 — convert brainstorm → requirements
User story: As a user, I want a locked brainstorm to become requirements, so that the chosen direction carries forward without re-typing it.
Acceptance criteria (EARS)
- WHEN
/the-loop:new-requirementruns and a siblingbrainstorm.mdexists THEN it SHALL deriverequirements.mdfrom the brainstorm's locked direction. - IF the sibling
brainstorm.mdis notapprovedTHEN the command SHALL NOT convert it (lock it first). - WHEN
/the-loop:create-ticketpromotes adraft-<slug>/folder THEN it SHALL carry anybrainstorm.mdalong and update its front-matterworkItem.
R4 — phase state machine includes optional brainstorming
User story: As the harness, I want brainstorming in the phase state machine, so that a work item's phase can reflect it.
Acceptance criteria (EARS)
- The
workflow.phasesschema enum and default SHALL includebrainstormingbetweennot-startedandrequirements-definition, and both shippedconfig.yamlfiles SHALL list it. - Documentation SHALL state that
brainstormingis optional — a well-defined work item may transition straight fromnot-startedtorequirements-definition.
R5 — the iterate-until-locked rule is generalized
User story: As a contributor, I want the "feedback + iteration per artifact, advance only when locked" idea stated once, so that it applies uniformly across phases.
Acceptance criteria (EARS)
- The skill (
SKILL.md),reference/workflow.md,work-onandREADME.mdSHALL state that every artifact — from thebrainstorm.mdroot onward — is iterated with feedback until locked (status: approved) before the next artifact is derived.
Non-functional requirements
- Backwards compatible & additive. Existing work items without a
brainstorm.mdare unaffected and continue to start at requirements. - Docs lint clean. All new/changed markdown passes
markdownlint. - Config valid.
config.yamlcontinues to validate againstconfig.schema.json.
Out of scope
- Automating brainstorm→requirements distillation quality (it remains an agent task).
- Any CLI (
the_loop) code changes — this work item is plugin docs/templates/commands. - Creating the
loop:brainstorminglabel in live ticketing (handled by/initat scaffold time, not this change).
Open questions
None — resolved in brainstorm.md.