opsx-difflisted
Install: claude install-skill fjpulidop/specrails-core
Visualize spec changes for this project (read name from CLAUDE.md or package.json): compare the current specs against a named OpenSpec change to show exactly what behavioral requirements are being added, modified, or removed.
**Input:** $ARGUMENTS — accepts:
- `<change-name>` — the kebab-case name of the change to diff (required). If omitted, interactive selection is offered.
- `--format json` — emit structured JSON instead of markdown (default: markdown).
- `--summary-only` — skip inline line-level diff; show only the file-level and behavioral summary.
---
## Phase 0: Argument Parsing
Parse `$ARGUMENTS` to set runtime variables.
**Variables to set:**
- `CHANGE_NAME` — string. Required. If not provided, prompt the user.
- `FORMAT` — `"markdown"` or `"json"`. Default: `"markdown"`.
- `SUMMARY_ONLY` — boolean. Default: `false`.
**Parsing rules:**
1. Scan `$ARGUMENTS` for `--format <value>`. If found and value is `json`, set `FORMAT="json"`. Any other value: print `Error: unknown format "<value>". Valid: markdown, json` and stop. Strip from arguments.
2. Scan for `--summary-only`. If found, set `SUMMARY_ONLY=true`. Strip from arguments.
3. Treat the remaining token (if any) as `CHANGE_NAME`. Strip leading/trailing whitespace.
4. If `CHANGE_NAME` is empty after parsing:
- Run:
```bash
openspec list --json
```
- If the result shows available changes, use the **AskUserQuestion tool** (open-ended, show the list) to ask which change to diff.
- If no ch