adr-workflow
Scaffold, accept, index, and link Architectural Decision Records (ADRs). Use when the user says "write an ADR", "record this decision", "resolve [deferred…
Drive the spec-driven lifecycle for any non-trivial work item: SPIDR-split a new spec into vertical slices, transition state markers (DRAFT → READY_FOR_REVIEW → READY_FOR_IMPLEMENTATION → IN_PROGRESS → REVIEWED → RECONCILED → DONE; also DEFERRED for parked slices with a stated
$ npx -y skills add ramboz/jig --skill spec-workflow --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/spec-workflowContext preview
The summary Claude sees to decide when to auto-load this skill.
Drive the spec-driven lifecycle for any non-trivial work item: SPIDR-split a new spec into vertical slices, transition state markers (DRAFT → READY_FOR_REVIEW → READY_FOR_IMPLEMENTATION → IN_PROGRESS → REVIEWED → RECONCILED → DONE; also DEFERRED for parked slices with a stated
name: spec-workflow description: > Drive the spec-driven lifecycle for any non-trivial work item: SPIDR-split a new spec into vertical slices, transition state markers (DRAFT → READY_FOR_REVIEW → READY_FOR_IMPLEMENTATION → IN_PROGRESS → REVIEWED → RECONCILED → DONE; also DEFERRED for parked slices with a stated resolution trigger), enforce the reconciliation checklist before commit, and surface stale specs/ADRs whose `last_verified` date has aged past dependency changes. Use when starting non-trivial new work, creating a spec, transitioning a slice's state, parking a slice as DEFERRED, reconciling a reviewed slice, or auditing doc freshness. Do not use for quick one-off fixes that don't need a spec, or for bug-shaped work where `jig:bug-fix` is the better fit. user-invocable: true
> **Working posture ([ADR-0056](../../docs/decisions/adr-0056-adversarial-register-quarantine.md)).** > Adversarial review is a *named, bounded operation.* This workflow invokes > review passes (frame-critique / craft), whose skeptical register belongs > *inside* those isolated reviewer subagents. Outside a review, default to > collaborative and solution-forward; don't carry the adversarial stance into > ordinary conversation.
> Spec 003 promoted this skill from stub to active. The deterministic state > mutations live in `workflow.py`; this SKILL.md drives the judgment layer.
try Rules / Data / Interface / Path first).
a read-only histogram of which skills fired (jig baseline vs. richer/"other" skill per category) from `.claude/skill-usage.jsonl` (slice 041-02).
read-only, **advisory** (non-blocking), project-wide **bidirectional** check (slice 068-03): a deterministic set-difference over the `use_cases:` trace links that reports use cases with no implementing spec (coverage gap) and specs citing no parent use case (scope creep). No-op when the project has no `## Use cases` section.
read-only audit that exits non-zero when `docs/specs/README.md` no longer matches the spec records, or when two spec directories claim one number. Writes nothing, so it is safe to run in CI against a checkout.
read-only per-gate histogram of how often each gate honored its env-var override (an override-frequency audit trail, not a gate-value verdict) from `.claude/skill-usage.jsonl` (slice 078-02).
All non-trivial specs are SPIDR-split into vertical slices before implementation begins. **Spike is the last resort — try Path / Interface / Data / Rules first.**
apply. AI agents default to spiking too eagerly — resist.
path first, edge paths later).
polish later).
**Anti-horizontal-phasing rule:** every slice must touch the user-facing layer and deliver end-to-end value. A slice that touches only the DB or only the parser is horizontal phasing — re-split.
See [`worked-example-spidr-split.md`](worked-example-spidr-split.md) for one applied example per axis plus a jig-native dogfood case (spec 017's three-axis split). The canonical primer for all five axes lives at [`docs/spec-workflow/spidr-primer.md`](../../docs/spec-workflow/spidr-primer.md).
When SPIDR's S axis fires during decomposition (none of P / I / D / R apply because the team doesn't yet know enough to pick), the resulting slice is marked `kind: spike` in its frontmatter — the typed enum that `spec_lint.py` validates.
**When to introduce a spike during decomposition.** Reach for S only after trying R / D / I / P. The bias to resist is "let me research this first" as a prelude to "now let me build it as one big slab" — that is horizontal phasing in a trench coat. If the spike would conclude with "now ship the implementation," the implementation IS the slice, and the research goes inside it.
**Body shape (four labelled blocks).** A `kind: spike` slice carries four blocks alongside the standard Goal / DoR / AC / DoD scaffolding. **Each label must be written with the trailing colon (`**Question:**`, etc.) — that is what `spec_lint.py` matches against.**
during IN_PROGRESS.
`abandoned (reason)`. Multiple outcomes separated by `;` (e.g., `ADR-0007 created; spec 030-02 unblocked`). Set at DONE.
`spec_lint.py` soft-warns when a `kind: spike` slice is missing any of the four labels — mid-flight spikes legitimately have empty Findings / Outcome, so this is a warning, not a hard error.
**Always nested, never standalone.** Spike slices live inside a real spec — never as a standalone `docs/spikes/` artifact. The 1-slice-spec case (no clear downstream spec yet, ju
A Claude Code and Codex plugin that scaffolds AI-native development practices into new projects. jig adds a repeatable spec, implementation, review, and memory workflow to AI-assisted software projects.
Scaffold, accept, index, and link Architectural Decision Records (ADRs). Use when the user says "write an ADR", "record this decision", "resolve [deferred…
Cross-artifact consistency report for jig specs — a non-destructive six-category audit at CRITICAL/HIGH/MEDIUM/LOW severity, covering duplication, ambiguity,…
Team baseline for architecture, design-doc, and RFC review — produces summary, strengths, concerns, and open questions. Auto-triggers when you say review this…
Drive the teeth-gated lifecycle for reported defects: diagnose root cause, prove it, and prevent regression through REPORTED → DIAGNOSING → ROOT_CAUSED →…
Lightweight spec clarification scan for jig projects — a six-category ambiguity audit that asks up to five prioritized questions and appends them to the spec's…
Run a static-analysis pass on a project — detect the ecosystem (Python or Node), drive its linter (ruff / eslint, plus advisory pyright/complexity/ prettier…