User Spec Planning
Thorough adaptive interview → codebase research → completeness review → user-spec.md → three-lane
validation → user approval. Output: work/{feature}/user-spec.md with status approved.
Interview Style
Conduct the interview in the language the user writes in. Be an engaged co-thinker: propose solutions, challenge weak answers with concrete examples or code evidence, and keep interviewing until the applicable requirements are understood.
- Ask 3–4 questions per batch and run as many batches as needed.
- Save every question and answer verbatim after each user response.
- Give one substantive challenge to a weak or unclear answer, then accept a supported answer and move to the next gap.
- When the user does not know, offer concrete options or break a required question down. An optional detail may remain an acknowledged limitation; a required detail may not remain TBD.
- Record material choices, rejected alternatives, and reasons in the relevant topic summary so
they survive into
Accepted Decisions.
When Project Knowledge exists, read its SKILL.md as the router and load only the references
relevant to the task. Missing Project Knowledge does not block planning.
Workflow
1. Start or Resume
If the user explicitly asks to continue an existing user spec and provides its feature folder or slug:
Use that exact
work/{feature}directory. Do not search for other interviews.Read
logs/userspec/interview.ymland the existing feature artifacts. Treat any additions or changes in the current request as interview input.Derive the next action from the interview and artifacts:
- continue with the earliest required topic below 85% or with an unresolved gap;
- once the general task is understood, create
code-research.mdif it does not exist, then use it for the remaining questions; - when all required topics are complete and no substantive draft exists, run the completeness review;
- when a filled draft already exists, validate it again with fresh reviewers rather than trying to restore old reviewer responses.
Otherwise start a new spec:
- Use the current request as the initial task description. If the intended work is not described,
ask the user what they want to plan. Infer
feature,bug, orrefactoring. - Choose a kebab-case slug and tell the user which
work/{slug}folder will be used. Do not pause only to confirm the slug. - If that exact folder already contains prior user-spec work, ask whether to continue that work in the same folder or create the new spec under another slug. If the user chooses the existing folder, follow the resume path above. Never overwrite prior work implicitly.
- Resolve the directory of this loaded
user-spec-planningskill, then from the target project root run itsscripts/init-feature-folder.shwith{slug}. Initialize the interview metadata with the start time, last-update time, andin_progressstatus, then begin the interview.
If at any point the request appears to contain several independently valuable outcomes, explain the proposed split and ask the user whether to separate them. Only after the user agrees, read and apply splitting-user-specs.md. Otherwise do not read that reference and continue the normal workflow.
2. Interview and Research
- Score the initial description against every interview topic.
- Complete the general-understanding topics using the interview loop below.
- Once the intended outcome is clear enough to research, launch
code-researcherwith the feature path and description. Readcode-research.mdand use its evidence in later questions. - Complete user-flow and integration topics, including applicable failures, edge cases, constraints, deployment, manual user actions, and verification.
- Make a final pass over every remaining required gap. If a later answer exposes a factual code gap, run focused code research again.
Testing depth follows behavior and risk. Record concrete observable checks and the smallest reliable unit, integration, E2E, build, lint, render, smoke, or manual boundary that can reproduce each applicable risk.
Do not survey hypothetical edge cases. When research or review establishes one concrete rare or
unagreed scenario, ask whether the feature should support it before adding requirements. Record the
question and answer in conversation_history and update the relevant topic's score, value, and
gaps. If accepted, add the behavior to the requirements and acceptance criteria; if declined,
record it as an explicit limitation or out-of-scope decision.
3. Check Interview Completeness
Launch a fresh interview-completeness-checker with the feature path and intended scope. It reads
the interview, code research, and relevant Project Knowledge and returns the common reviewer JSON
directly.
Review findings are diagnoses, not a work queue. Check the evidence and exact response. Apply only
an authorized local correction to agreed requirements. For user_decision_required: true, ask one
concrete question and record the answer through the existing interview loop before changing
artifacts or adding requirements. A false value does not replace this check.
Use supported findings to ask targeted questions for gaps inside the agreed task. Run a fresh
checker after the answers are recorded, and draft only after it returns clean.
4. Draft the User Spec
Fill the initialized work/{feature}/user-spec.md in place without replacing a substantive
existing document. Preserve its executor instruction and replace every placeholder.
Keep the template-provided scaffold in English; write the specification content in the user's
language.
What We Are Buildingis self-contained without the interview.Whystates concrete user value.- Acceptance criteria describe observable, testable results.
- Include agreed outcomes, constraints, material decisions, testing, and acknowledged limitations; omit exploratory tangents that do not clarify a decision.
Commit: draft(userspec): create user-spec for {feature}.
5. Validate the User Spec
For every validation round, launch all three fresh reviewers in parallel:
userspec-quality-validator— document completeness, clarity, acceptance criteria, contradictions, and template compliance;userspec-adequacy-validator— feasibility, proportionality, architecture fit, insufficient or unnecessary complexity, and demonstrably simpler existing approaches;skeptic— factual claims about current files, symbols, dependencies, integrations, and behavior.
Supply the complete inputs required by each agent. All reviewers may inspect code; overlap is acceptable when independently supported evidence falls within more than one lane.
Deduplicate overlapping supported findings and apply accepted corrections. User-spec decisions
remain with the user. For a demonstrated finding with user_decision_required: true, ask the user
and record the answer through the existing interview loop before changing the specification.
- If all three results are
clean, validation ends immediately. - If accepted findings were fixed after rounds 1 or 2, commit
chore(userspec): validation round {N} — {summary}and launch the next full round. - After round 3, stop and show any remaining findings. Do not launch round 4 without a new explicit user request.
If a session ends after drafting, a later run starts a new validation from round 1; old reviewer responses are not persisted or reconstructed.
6. Obtain Approval
Show the user the spec path and validation summary. A requested content change returns the document to validation; immediate approval is valid only when the validated content did not change.
After explicit approval:
- Set the user-spec frontmatter status to
approved. - Set
interview_metadata.statustocompleted. - Commit
chore(userspec): approve user-spec for {feature}. - Return the absolute user-spec path and tell the user it can be implemented in a new chat.
Interview Loop
Repeat inside the current topic group:
- Find required topics below 85% or with a missing substantive answer or unresolved gap.
- Ask 3–4 questions about different gaps, using Project Knowledge and code evidence when available.
- After the user responds, append the full question batch and answer to
conversation_history. - Update each affected topic's
score,value, andgaps, plusinterview_metadata.last_updated, and save immediately. - Continue until every required topic in scope has score ≥85%, a substantive value, no TBD, and no unresolved gap except an explicitly accepted limitation.
Use scores as a compact completeness signal: detailed 80–95%, brief 50–70%, vague 20–40%, and not mentioned 0%. Optional topics are covered when the task makes them relevant.
For bugs, emphasize reproduction, expected versus actual behavior, severity, root cause, and regression risk. For refactoring, emphasize the current problem, target structure, compatibility, migration, and stability guarantees.