| name | openspec-propose |
| description | Propose a new patch change with all artifacts generated in one step. Use when the user wants to quickly describe what patch they want and get a complete proposal with design, specs, and tasks ready for implementation and testing. |
| license | MIT |
| compatibility | Requires openspec CLI. |
| metadata | {"author":"openspec","version":"1.0","generatedBy":"1.2.0"} |
Propose a new patch change — create the change and generate all artifacts in one step, tailored for APK reverse engineering and patch development.
I'll create a change with artifacts:
- proposal.md (what patch & why)
- design.md (how — target classes, smali patterns, patch approach)
- tasks.md (implementation and testing 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 patch they want to build.
Steps
-
If no clear input provided, ask what patch they want
Use the AskUserQuestion tool (open-ended, no preset options) to ask:
"What patch do you want to create? Describe the app, version, and what behavior you want to change."
From their description, derive a kebab-case name (e.g., "bypass jiotv root detection" → bypass-jiotv-root-detection).
IMPORTANT: Do NOT proceed without understanding:
- Which app and version
- What behavior needs to change
- What detection mechanism or feature gate is involved
-
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
- Then continue with creation
-
Show final status
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-apply or ask me to implement to start working on the tasks."
Artifact Creation Guidelines for Patch Development
proposal.md
- Name the app and APK version being targeted
- Describe what behavior is being modified (root detection, SSL pinning, feature gate, etc.)
- Note any risks: could break on future versions, may have secondary checks
- Reference any prior research in
docs/<appname>/
design.md
- Include actual class names and methods from the APK (both Java and smali format)
- Map the detection/feature chain: entry point → check → enforcement
- Specify the patch approach: bytecode injection, resource modification, class removal
- Include smali patterns for the target methods
- Note alternative approaches considered and why they were rejected
- Document version sensitivity: which targets are likely to change between versions
tasks.md
- Break into testable chunks — each patch should be independently testable
- Include a testing task after EACH patch, not just at the end
- Testing means: build .mpp → apply with Morphe CLI → verify on device/emulator via ADB
- Document expected failure modes and debugging steps
- Include a final integration test: all patches applied together
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
- Always include testing tasks — patches require device testing, there are no unit tests
- Document the APK version being targeted — patches are version-specific