Opsx Propose
Propose a new change — create it and generate all artifacts in one step.
Propose a new change — create it 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**: `$ARGUMENTS` — the change name (kebab-case), OR a description of what to build.
**Steps**
1. **If no input provided, ask what to build**
Ask the user:
> "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.
2. **Read mandatory architecture docs**
Before creating any artifact, read:
- `.claude/docs/onion-architecture.md` — layer rules and violation codes V-1…V-12
- `.claude/docs/Feature-Driven-Structure.md` — vertical slices layout, S-1…S-4
- `.claude/docs/CQRS-and-Data-Flow.md` — pipeline rules, F-1…F-4
- `.claude/docs/DI-and-IoC.md` — registration rules, D-1…D-3
Apply their constraints to `design.md` and `tasks.md`. Every PLAN-N step must specify the exact layer, folder path, and file names per these docs.
3. **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
openspec status --change "<name>" --jsonParse the JSON to get:
applyRequires: artifact IDs needed before implementationartifacts: list of all artifacts with 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 (no pending dependencies first):
a. For each artifact that is
ready:- Get instructions:
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 the output fileinstruction: Schema-specific guidance for this artifact typeoutputPath: Where to write the artifactdependencies: Completed artifacts to read for context
- Read any completed dependency files for context
- Create the artifact using
templateas the structure - Apply
contextandrulesas constraints — do NOT copy them into the file - Show brief progress: "Created
"
b. Continue until all
applyRequiresartifacts are complete- After creating each artifact, re-run
openspec status --change "<name>" --json - Stop when all
applyRequiresartifact IDs havestatus: "done"
c. If an artifact requires user input (unclear context):
- Ask the user directly, then continue
- Get instructions:
Show final status
openspec status --change "<name>"
Output
After completing all artifacts, summarize:
- Change name and location
- List of artifacts created with brief descriptions
- "All artifacts created! Ready for implementation."
- Prompt: "Run
/opsx-applyto start implementing."
Artifact Creation Guidelines
- Follow the
instructionfield fromopenspec instructionsfor each artifact type - Read dependency artifacts for context before creating new ones
- Use
templateas the structure — fill in its sections - IMPORTANT:
contextandrulesare constraints for YOU, not content for the file
Guardrails
- Create ALL artifacts needed for implementation (as defined by
applyRequires) - Always read dependency artifacts before creating a new one
- If context is critically unclear, ask the user — but prefer reasonable decisions to keep momentum
- If a change with that name already exists, ask if the user wants to continue it or create a new one
- Verify each artifact file exists after writing before proceeding to next
Maintain Opsx Propose?
Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.
[Opsx Propose on getagentictools](https://getagentictools.com/loops/tnsgxhosts-opsx-propose?ref=badge)