--- description: Implement tasks from an OpenSpec change (Experimental) --- Implement tasks from an OpenSpec change. **Input**: Optionally specify a change name (e.g., `/opsx-apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes. **Steps** 1. **Select the change** If a name is provided, use it. Otherwise: - Infer from conversation context if the user mentioned a change - Auto-select if only one active change exists - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select Always announce: "Using change: " and how to override (e.g., `/opsx-apply `). 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") - 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 - 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! You can archive this change with `/opsx-archive`. ``` **Output On Pause (Issue Encountered)** ``` ## Implementation Paused **Change:** **Schema:** **Progress:** 4/7 tasks complete ### Issue Encountered **Options:** 1.