--- name: OPSX: Apply description: Implement tasks from an OpenSpec change (Experimental) category: Workflow tags: [workflow, artifacts, experimental] --- Implement tasks from an OpenSpec change. **Input**: Optionally specify `--change ` after `/opsx:apply`. If omitted, MUST prompt for available changes. **Steps** 1. **If no change name provided, prompt for selection** Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select. Show changes that are implementation-ready (have tasks artifact). Include the schema used for each change if available. Mark changes with incomplete tasks as "(In Progress)". **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose. 2. **Check status to understand the schema** ```bash openspec status --change "" --json ``` Parse the JSON to understand: - `schemaName`: The workflow being used (e.g., "spec-driven", "tdd") - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others) 3. **Get apply instructions** ```bash openspec instructions apply --change "" --json ``` This returns: - Context file paths (varies by schema) - Progress (total, complete, remaining) - Task list with status - Dynamic instruction based on current state **Handle states:** - If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:continue` - If `state: "all_done"`: congratulate, suggest archive - Otherwise: proceed to implementation 4. **Read context files** Read the files listed in `contextFiles` from the apply instructions output. The files depend on the schema being used: - **spec-driven**: proposal, specs, design, tasks - **tdd**: spec, tests, implementation, docs - Other schemas: follow the contextFiles from CLI output 5. **Show current progress** Display: - Schema being used - Progress: "N/M tasks complete" - Remaining tasks overview - Dynamic instruction from CLI 6. **Implement tasks (loop until done or blocked)** For each pending task: - Show which task is being worked on - Make the code changes required - Keep changes minimal and focused - Mark task complete in the tasks file: `- [ ]` → `- [x]` - Continue to next task **Pause if:** - Task is unclear → ask for clarification - Implementation reveals a design issue → suggest updating artifacts - Error or blocker encountered → report and wait for guidance - User interrupts 7. **On completion or pause, show status** Display: - Tasks completed this session - Overall progress: "N/M tasks complete" - If all done: suggest archive - If paused: explain why and wait for guidance **Output During Implementation** ``` ## Implementing: (schema: ) Working on task 3/7: [...implementation happening...] ✓ Task complete Working on task 4/7: [...implementation happening...] ✓ Task complete ``` **Output On Completion** ``` ## Implementation Complete **Change:** **Schema:** **Progress:** 7/7 tasks complete ✓ ### Completed This Session - [x] Task 1 - [x] Task 2 ... All tasks complete! Ready to archive this change. ``` **Output On Pause (Issue Encountered)** ``` ## Implementation Paused **Change:** **Schema:** **Progress:** 4/7 tasks complete ### Issue Encountered **Options:** 1.