Propose a new change - create the change and generate all artifacts in one step.
Forbidden in finalized artifacts (each is a propose-phase defect of the same severity as a missing Context sources block):
-
If no clear input provided, ask what they want to build
Use the AskUserQuestion tool (open-ended, no preset options) to ask:
"What change do you want to work on? Describe what you want to build or fix."
From their description, derive a kebab-case name (e.g., "add user authentication" → add-user-auth).
IMPORTANT: Do NOT proceed without understanding what the user wants to build.
-
Create the change directory
openspec new change "<name>"
This creates a scaffolded change at openspec/changes/<name>/ with .openspec.yaml.
-
Get the artifact build order
openspec status --change "<name>" --json
Parse the JSON to get:
applyRequires: array of artifact IDs needed before implementation (e.g., ["tasks"])
artifacts: list of all artifacts with their status and dependencies
-
Create artifacts in sequence until apply-ready
Use the TodoWrite tool to track progress through the artifacts.
Loop through artifacts in dependency order (artifacts with no pending dependencies first):
a. For each artifact that is ready (dependencies satisfied):
b. Continue until all applyRequires artifacts are complete
- After creating each artifact, re-run
openspec status --change "<name>" --json
- Check if every artifact ID in
applyRequires has status: "done" in the artifacts array
- Stop when all
applyRequires artifacts are done
c. If an artifact requires user input (unclear context):
- Use AskUserQuestion tool to clarify now, not later. Apply phase will not get a second chance to ask routine architectural / scope / naming questions.
- Then continue with creation
-
Pre-finalization clarification gate
Before declaring "All artifacts created! Ready for implementation.", run a final consolidation pass:
a. Re-read every ### Requirement: in delta specs/ and every decision in design.md. For each one: can the implementer execute the code that satisfies this requirement / decision from the artifacts alone, without a follow-up question to the user? Any "no" → add to a single batched question list.
b. Re-read proposal.md → Constraints / Out of scope / Non-goals. For each scope edge: is the wording sharp enough that an implementer cannot accidentally cross it? Sharpen now, or batch a clarification.
c. Re-read tasks.md. Each task should be executable from the current artifacts alone. Tasks like "implement reasonable defaults" or "decide between approaches" indicate the gate is not yet passed — settle the choice in design.md, then re-write the task.
d. Audit design.md → ## Open Questions. Each entry is a promise that the user will be asked again at apply time. Allowed only if the answer genuinely depends on facts that surface later (production data, performance measurements, a not-yet-implemented module's actual shape). "I forgot to ask" / "user wasn't sure yet" / "let's see what apply finds" — not legitimate. Either close the question now (with a CONFUSION block to the user) or remove it.
e. If the batched question list is non-empty — present it to the user in one consolidated AskUserQuestion round (open-ended for free-text answers, preset options where applicable). Apply the answers to the artifacts. Then re-run the gate. Repeat until the batched list is empty.
The proposal is "ready" only when this gate passes: empty batched list, every artifact internally consistent, ## Open Questions contains only items that legitimately depend on later facts.
-
Show final status
openspec status --change "<name>"