Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
.claude/skills/bilal140202-openspec-apply-change/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 273% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -49% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 6% | 0% |
Implement tasks from an OpenSpec change.
Input: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
Steps
If a name is provided, use it. Otherwise:
openspec list --json to get available changes and use the AskUserQuestion tool to let the user selectAlways announce: "Using change: <name>" and how to override (e.g., /opsx:apply <other>).
bash openspec status --change "<name>" --json
Parse the JSON to understand:
schemaName: The workflow being used (e.g., "spec-driven")bash openspec instructions apply --change "<name>" --json
This returns:
Handle states:
state: "blocked" (missing artifacts): show message, suggest using openspec-continue-changestate: "all_done": congratulate, suggest archiveRead the files listed in contextFiles from the apply instructions output. The files depend on the schema being used:
Display:
For each pending task:
- [ ] → - [x]Pause if:
Display:
Output During Implementation
## Implementing: <change-name> (schema: <schema-name>)
Working on task 3/7: <task description>
[...implementation happening...]
✓ Task complete
Working on task 4/7: <task description>
[...implementation happening...]
✓ Task completeOutput On Completion
## Implementation Complete
**Change:** <change-name>
**Schema:** <schema-name>
**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:** <change-name>
**Schema:** <schema-name>
**Progress:** 4/7 tasks complete
### Issue Encountered
<description of the issue>
**Options:**
1. <option 1>
2. <option 2>
3. Other approach
What would you like to do?Guardrails
Fluid Workflow Integration
This skill supports the "actions on a change" model:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,316 | 3,321 | -23% | 1 | 1 | 0% | 647 | 1,429 | +121% | 0 | 0 | — |
case-02 | fail→fail | 3,192 | 6,024 | +89% | 1 | 1 | 0% | 261 | 1,245 | +377% | 0 | 0 | — |
case-03 | fail→fail | 3,431 | 2,788 | -19% | 1 | 1 | 0% | 164 | 1,356 | +727% | 0 | 0 | — |
case-04 | fail→fail | 8,421 | 7,163 | -15% | 1 | 1 | 0% | 1,125 | 1,467 | +30% | 0 | 0 | — |
case-05 | fail→fail | 3,082 | 4,988 | +62% | 1 | 1 | 0% | 380 | 1,270 | +234% | 0 | 0 | — |
case-06 | fail→fail | 11,301 | 6,811 | -40% | 1 | 1 | 0% | 1,669 | 1,372 | -18% | 0 | 0 | — |
case-07 | fail→pass | 4,713 | 9,840 | +109% | 1 | 1 | 0% | 784 | 2,927 | +273% | 0 | 0 | — |
case-08 | fail→fail | 8,472 | 19,687 | +132% | 1 | 1 | 0% | 1,256 | 3,469 | +176% | 0 | 0 | — |
case-09 | pass→pass | 6,650 | 3,039 | -54% | 1 | 1 | 0% | 950 | 1,476 | +55% | 0 | 0 | — |
case-10 | fail→pass | 7,838 | 3,679 | -53% | 1 | 1 | 0% | 1,144 | 1,636 | +43% | 0 | 0 | — |
case-11 | pass→fail | 11,274 | 8,752 | -22% | 1 | 1 | 0% | 1,776 | 1,366 | -23% | 0 | 0 | — |
case-12 | pass→fail | 7,298 | 7,273 | -0% | 1 | 1 | 0% | 1,178 | 1,435 | +22% | 0 | 0 | — |
case-13 | pass→fail | 10,676 | 7,307 | -32% | 1 | 1 | 0% | 1,732 | 1,321 | -24% | 0 | 0 | — |
case-14 | pass→fail | 9,762 | 7,203 | -26% | 1 | 1 | 0% | 1,359 | 1,385 | +2% | 0 | 0 | — |
case-15 | fail→pass | 18,927 | 2,191 | -88% | 1 | 1 | 0% | 2,752 | 1,395 | -49% | 0 | 0 | — |
case-16 | fail→pass | 12,890 | 1,702 | -87% | 1 | 1 | 0% | 2,146 | 1,259 | -41% | 0 | 0 | — |
case-17 | fail→fail | 8,535 | 2,569 | -70% | 1 | 1 | 0% | 1,147 | 1,482 | +29% | 0 | 0 | — |
case-18 | fail→pass | 8,873 | 2,909 | -67% | 1 | 1 | 0% | 1,408 | 1,497 | +6% | 0 | 0 | — |
case-19 | fail→pass | 8,622 | 2,760 | -68% | 1 | 1 | 0% | 1,495 | 1,506 | +1% | 0 | 0 | — |
case-20 | pass→fail | 17,758 | 6,085 | -66% | 1 | 1 | 0% | 3,094 | 1,333 | -57% | 0 | 0 | — |
case-21 | pass→fail | 5,313 | 5,871 | +11% | 1 | 1 | 0% | 809 | 1,287 | +59% | 0 | 0 | — |
case-22 | fail→fail | 5,173 | 5,156 | -0% | 1 | 1 | 0% | 630 | 1,287 | +104% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 12 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of 0 percentage points is the difference between those two pass rates over the 12 comparable cases. 7 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.