| name | spec-forge-intake |
|---|---|
| description | Use when you need to turn a rough request into a clear spec framing by defining the problem, stakeholders, scope boundaries, and non-negotiable constraints before solution design begins. |
Use this stage to turn a rough request into a stable framing contract.
This stage answers: what problem are we solving, for whom, inside what scope, under what constraints, and through which discussion roles.
- This skill runs only in Plan mode. If the runtime is not Plan mode, stop and tell the user to switch before continuing.
- Confirm both chat language and file language before collecting stage-specific details. Default to the current chat language and English file artifacts only if the user has no preference.
- Keep decisions in chat. YAML remains the persisted source of truth, but the user should not need to inspect files to move the stage forward.
- Approvals happen from chat summaries. Summarize the current intake state in chat, get confirmation there, and then record approval in YAML.
spec-forge-cli resolvespec-forge-cli applyspec-forge-cli artifact getspec-forge-cli artifact mergespec-forge-cli approvespec-forge-cli initspec-forge-cli gate checkspec-forge-cli stage advance
Read ../spec-forge/assets/contracts/ux-contracts.yaml
before collecting parameters.
At the start of the stage, run:
spec-forge-cli resolve --target <target-dir> --skill spec-forge-intake --stage intake --write
If the runtime is not Plan mode, stop and ask the user to switch before collecting inputs or showing any choice dialog.
Use chat summaries as the approval surface; YAML remains the persisted contract for the stage.
| # | Check | Source |
|---|---|---|
| 1 | Target project directory is known | User or workspace |
| 2 | .spec-forge/ exists or can be initialized |
Filesystem |
- The user request
- The target project directory
- Enough context to describe the goal, users, scope, and major constraints
- Resolve invocation UX first with:
spec-forge-cli resolve --target <target-dir> --skill spec-forge-intake --stage intake --writeConfirm chat language and file language before stage-specific intake questions. Then collect only the next missing parameter, one step at a time, and record every accepted answer or choice withspec-forge-cli apply .... - If
.spec-forge/or the targetspec_idis missing, run:spec-forge-cli init --target <target-dir> --spec-id <spec-id> --request-title ... --request-summary ... - Update
.spec-forge/specs/<spec-id>/framing/request-context.yaml. Preferspec-forge-cli artifact merge --file framing/request-context.yamlfor artifact-level writes that are not covered by the currentapplyparameter or choice. - Update
.spec-forge/specs/<spec-id>/framing/role-map.yaml. Preferspec-forge-cli artifact merge --file framing/role-map.yamlfor artifact-level writes that are not covered by the currentapplyparameter or choice. - Choose the active discussion roles for this spec. Always keep at least:
product-managerux-architecttech-leadqa-lead
- Stay broad. Ask only the highest-leverage framing questions:
- problem and goal
- users and reviewers
- in-scope and out-of-scope boundaries
- product, technical, and delivery constraints
- Keep each turn lightweight:
- no more than 3 tightly related questions
- no solution deep dive yet
- no per-component or per-file review yet
- After each meaningful user answer, update the YAML artifacts instead of
holding the state only in conversation. Prefer
spec-forge-cli apply ...over manual edits for normal parameter and choice collection, and usespec-forge-cli artifact merge ...when refining artifact fields outside the declared UX parameters. - Present a concise intake summary in chat and ask for explicit approval there.
Do not ask the user to open or review
request-context.yamlorrole-map.yaml. Use a choice dialog when the runtime supports it; otherwise fall back to a compact numbered menu. When the user approves the chat summary, record it with:spec-forge-cli approve --target <target-dir> --spec-id <spec-id> --file framing/request-context.yamlspec-forge-cli approve --target <target-dir> --spec-id <spec-id> --file framing/role-map.yamlIf the user is not ready to approve, keep the artifact explicit withspec-forge-cli artifact merge ...and anapproval.statussuch aspending.
- Run:
spec-forge-cli gate check --target <target-dir> --spec-id <spec-id> --stage intake --writespec-forge-cli stage advance --target <target-dir> --spec-id <spec-id> --stage intake
.spec-forge/specs/<spec-id>/framing/request-context.yaml.spec-forge/specs/<spec-id>/framing/role-map.yaml.spec-forge/specs/<spec-id>/gates/intake.yaml
| # | Check |
|---|---|
| 1 | Problem statement is explicit |
| 2 | Goal is explicit |
| 3 | In-scope list exists |
| 4 | Primary users are named |
| 5 | Active role map exists |
| 6 | Both intake YAML artifacts are user-approved |
- Do not design the final solution here.
- Do not start journey or component enumeration here.
- Do not discuss detailed code structure here beyond capturing hard constraints.
- Do not overwhelm the user with a giant checklist in one message.
- Do not collect missing required parameters in one large batch.
- Do not continue in non-Plan mode.
- Do not ask the user to inspect YAML files directly. Summarize intake content in chat instead.
- Do not proceed if approval is ambiguous. Record
approval.status: pendinguntil the user confirms, usingspec-forge-cli artifact merge ...when needed.
Continue with
../spec-forge-architecture/SKILL.md.