A spec-driven change-management workflow for Claude Code, built as skills + slash-command shims. It enforces a 6-stage pipeline so every change is proposed, reviewed, integration-checked, applied, and verified before it reaches archive — closing the gap that lets incomplete changes ship unnoticed.
openspec status reports artifact done/todo, but the process gates — was this change actually reviewed? verified against its specs? — are invisible there. opsx makes those gates first-class: each stage writes a marker file, and /opsx:status overlays them on the artifact graph so you can see what's done, what's skipped, and what to run next.
propose → review → check-integration → apply → verify → archive
| Stage | Skill | Command | Writes marker |
|---|---|---|---|
| Propose | openspec-propose |
/opsx:propose |
— |
| Review | openspec-review-change |
/opsx:review |
.reviewed |
| Integration check | openspec-check-integration |
/opsx:check-integration |
.integration-checked |
| Apply | openspec-apply-change |
/opsx:apply |
task completion |
| Verify | openspec-verify-change |
/opsx:verify |
.verified |
| Archive | openspec-archive-change |
/opsx:archive |
— |
| Status (read-only) | openspec-status |
/opsx:status |
— |
| Explore (read-only) | openspec-explore |
/opsx:explore |
— |
| Sync specs | openspec-sync-specs |
/opsx:sync |
— |
The three marker files (.reviewed, .integration-checked, .verified) are read by /opsx:status and checked at archive time. A missing .verified — implementation never checked against specs — is surfaced explicitly rather than silently archived.
- Claude Code
- The
openspecCLI (providesopenspec list / status / instructions / new)
Skills are invoked via Claude Code's
Skilltool. The/opsx:*commands are thin legacy shims that delegate to the skills — prefer invoking the skill directly; the shims exist only for slash-command muscle memory.
Copy commands/ and skills/ into your project's .claude/ directory:
# from your project root (create .claude/ if it doesn't exist)
mkdir -p .claude
cp -R /path/to/this-repo/commands .claude/commands
cp -R /path/to/this-repo/skills .claude/skillsThen run /opsx:propose <change> in Claude Code, or invoke the openspec-propose skill directly.
commands/opsx/ # 9 slash-command shims (delegate to skills)
skills/openspec-*/ # 9 skills (single source of truth, one SKILL.md each)
Each skill is a single SKILL.md. Each shim is a ~26-line file whose only job is to route $ARGUMENTS into the skill and report the verdict.
MIT — see LICENSE.