SKILL.md
Propose a new change - create the change and generate all artifacts in one step.
I'll create a change with artifacts:
- proposal.md (what & why)
- design.md (how)
- tasks.md (implementation steps)
When ready to implement, run /opsx:apply
Input: The user's request should include a change name (kebab-case) OR a description of what they want to build.
Steps
- 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
``bash openspec new change "<name>" ` This creates a scaffolded change at openspec/changes/<name>/ with .openspec.yaml`.
- Get the artifact build order
``bash 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): - Get instructions: ``bash openspec instructions <artifact-id> --change "<name>" --json ` - The instructions JSON includes: - context: Project background (constraints for you - do NOT include in output) - rules: Artifact-specific rules (constraints for you - do NOT include in output) - template: The structure to use for your output file - instruction: Schema-specific guidance for this artifact type - outputPath: Where to write the artifact - dependencies: Completed artifacts to read for context - Read any completed dependency files for context - Create the artifact file using template as the structure - Apply context and rules` as constraints - but do NOT copy them into the file - Show brief progress: "Created <artifact-id>"
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 - Then continue with creation
- Show final status
``bash openspec status --change "<name>" ``
Output
After completing all artifacts, summarize:
- Change name and location
- List of artifacts created with brief descriptions
- What's ready: "All artifacts created! Ready for implementation."
- Prompt: "Run
/opsx:applyor ask me to implement to start working on the tasks."
Artifact Creation Guidelines
- Follow the
instructionfield fromopenspec instructionsfor each artifact type - The schema defines what each artifact should contain - follow it
- Read dependency artifacts for context before creating new ones
- Use
templateas the structure for your output file - fill in its sections - IMPORTANT:
contextandrulesare constraints for YOU, not content for the file
- Do NOT copy <context>, <rules>, <project_context> blocks into the artifact - These guide what you write, but should never appear in the output
Guardrails
- Create ALL artifacts needed for implementation (as defined by schema's
apply.requires) - Always read dependency artifacts before creating a new one
- If context is critically unclear, ask the user - but prefer making reasonable decisions to keep momentum
- If a change with that name already exists, ask if user wants to continue it or create a new one
- Verify each artifact file exists after writing before proceeding to next