jig
CLAUDE.md7 starsChanged 5 months agoMITView on GitHub
The Claude Code skill pack that scaffolds AI-native development practices. We dogfood the workflow we build. Always-loaded primer, kept lean per spec 055/057 (orchestrator context × turns is the cost). This is an index: each bold term is a one-line claim + link; full definitions live in docs/memory/glossary.md + the lexicon and expand on demand via /jig:explain <term>. Update via /jig:memory-sync.
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- adr-workflowSkill
- analyzeSkill
- arch-reviewSkill
- bug-fixSkill
- clarifySkill
- code-healthSkill
- contractsSkill
- explainSkill
- independent-reviewSkill
- memory-syncSkill
- migrateSkill
- orientSkill
- pr-reviewSkill
- reframeSkill
- scaffold-initSkill
- security-reviewSkill
- slice-landSkill
- spec-workflowSkill
- tdd-loopSkill
- vision-elicitationSkill
The file
We split this CLAUDE.md into the rules it gives an agent
4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Always-loaded primer, kept lean per spec 055/057 (orchestrator context × turns is the cost).
- Very specific: line 58
Check docs/specs/README.md + docs/bugs/README.md.
- Distinctive: line 65
Do not modify docs/conventions.md without explicit human approval.
- Distinctive: line 70
When a slice closes a spec, compress its Active-specs entry (spec 025-01).
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
jig — AI-Native Dev Scaffold
The Claude Code skill pack that scaffolds AI-native development practices. We dogfood the workflow we build.
Hot Cache
Always-loaded primer, kept lean per spec 055/057 (orchestrator context × turns is the cost). This is an index: each bold term is a one-line claim + link; full definitions live in docs/memory/glossary.md + the lexicon and expand on demand via /jig:explain <term>. Update via /jig:memory-sync.
Project codenames / active work
- jig = this skill pack repo (the plugin itself).
- Branch routing —
mainis the sole active line: 1.x and the 2.0 multi-host work both shipped here (latest tagv2.13.0). The legacyv2branch is closed — don't route work to it. See docs/roadmap.md. - Active specs: work has shipped through spec 113, plus 116 — the status board is the live source, always check it before picking up work. A few parked drafts remain (034 federation-tier, 062 refactor-workflow, 090 immutable-release-bytes, 105 durable-failure-quarantine); 083 lightweight-decision-records is IN_PROGRESS (083-08 Codex host-validation handoff open). Recent load-bearing closures are indexed under Key terms (leanness lens 109, first-class blockers 111, adversarial-register quarantine 110, ref-aware lifecycle + claim reservation 112, tri-host Copilot 113 — GitHub Copilot CLI is jig's 3rd committed host, plugin-only, full package parity; residuals in refinement-todo). Bug-fix repository closure — ADR-0037 (Accepted) / spec 091 — two marker-keyed closure gates on the bug lifecycle;
JIG_BUG_CLOSURE_GATE=0. Per-slice invariants live in the status-board Notes column. Long-horizon-autonomy bridge (oh-my-cli follow-on): spec 106 — autonomy governance plane & identity separation (ADR-0051, Accepted) is built (see the Governance-plane term below); spec 105 — durable failure-quarantine jig-half (ADR-0050, Proposed) is still recorded, not built. servo halves live inramboz/servo(servo specs 023/024/025, ADR-0029/0030) — not yet built. See docs/specs/README.md. Deferred → docs/refinement-todo.md.
Key terms (one-line index — full defs via /jig:explain <term>)
- Configurable docs root — ADR-0033 / spec 084 —
layout.docs_rootin scaffold.json (defaultdocs);.= track-local adoption inside a larger repo; discovery sentinel-anchored; subtree push-mode refused. Read via_common/project_layout.py. - Subagent permission — In this jig project, the user explicitly permits Codex to use subagents when they materially help implementation, review, reconciliation, or coordination work.
- Lifecycle-family spine — ADR-0023 — spec-workflow / bug-fix / refactor share one C1–C7 gated-evidence spine; extract to
_common/lifecycle.pyonly at the thirdtransition. PARKED — don't re-propose the servo pluggable-oracle boundary (ADR-0022 C5) without a real eval case / servo spec 006 / a built consumer. - Closed-spec drift — ADR-0010 (supersedes ADR-0008) — closed records get
## Amendments; live prose corrected inline; new ADR for decision changes. Amending a record needs explicit owner approval (spec 102, issue #125): surface a canon-artifact conflict and stop; approving a behaviour ≠ authority to rewrite the record; read the whole criteria block before asserting a contradiction. - Spec-gate model — ADR-0011 —
jig-spec-gate.shis a deliberateness gate onconventions.md, not human-only enforcement; real control is out-of-band. - Security floor — ADR-0013 / spec 052 — 5-part scaffolded floor; defense-in-depth, not a firewall. Sibling Governance plane — ADR-0051 / spec 106 —
scaffold-initscaffolds CODEOWNERS + protected-path CI +<docs>/governance.mdand mirrorsgovernance.PROTECTED_PATHS(self-referential) intoscaffold.json.protected_paths(jig-boundary-change-warnsoft-nudges in-boundary); inert until branch protection is armed (files, not server-side settings); autonomy precondition = merge-capability separation (not name), fail-safe when unknown, viagovernance.py identity-check(servo 023's signal). - Review-evidence gate — ADR-0014 (spec 045) —
transitiongates REVIEWED/RECONCILED/DONE on recorded verdict artifacts; bypassJIG_REVIEW_EVIDENCE_GATE=0. Sibling Lifecycle entry gate — ADR-0044 / spec 098 — fail-openPostToolUsenudge on an out-of-lifecycle source edit (no live claim held by this checkout); reads.jig/spec-ref(slice + 098-04bug=NNNarms) w/ a.gitignore/named-artifact boundary;JIG_ENTRY_GATE=0. Sibling Session git-freshness — ADR-0048 / spec 103 — fail-openSessionStarttime-zero nudge: fetches (timeout-guarded, best-effort) the integration base, warns whenHEADis behind before a stale premise forms; smart-target resolution (non-own@{upstream}elseorigin/main→origin/master; own-remote guard = base drift, not own-branch advancement);JIG_GIT_FRESHNESS=0. - Worktree-aware reservation — ADR-0015 / spec 051 —
newroutes on branch; off-main reserves via an ephemeral detached worktree at origin/main. - Context-cost discipline / Thin-orchestrator — spec 055 + 057 — cost ≈ orchestrator context × turns (delegate reads, keep the primer lean); turn count + peak context are the top knobs;
workflow.py session-plandispatches. - Token-usage tracking — spec 056 —
usage.py report <spec>per-spec token/$ totals; price via ccusage, never hand-rolled. - Slice-claim on working states — spec 049 / ADR-0045 —
transitionstampsclaimed_by:on WORKING states, releases on the pickup queue + terminal; blank ≠ free. Sibling Ref-aware lifecycle checks + claim reservation — ADR-0058 / spec 112 — lifecycle checks consult sibling/remote refs, not just the checkout (the duplicate-work incident). Four classes: A already-integrated onorigin/main→ hard gate (land.pybackstop +transitionguard, keyed on branch-introduced ADRs not deps); B concurrent both-ends-IN_PROGRESS→ extends ADR-0045 cross-ref via arefs/claims/<N>CAS reservation (identity read = hard block; CAS advisory; liveness = manual--release; fires on default and--push/--pr); C sequential re-do of work DONE-on-a-sibling (the reported incident) → sibling evidence-completeDONEread → halt-and-reconcile; D uncommitted/offline → advisory (DEFERRED). Shared_common/cross_ref_state.py+claim_ref.py;JIG_CROSSREF_GATE=0/--reopenbypass. DEFERRED (refinement-todo): guard-family unification (trigger fired 112-05), Class-D advisory (112-06), landed-at anchor (112-07). - Solo→team re-detection — spec 050 — re-evaluates the team signal; nudges to bootstrap
people.md. - Vocabulary barrier / lexicon — spec 065 / ADR-0021 — on-demand jargon via
/jig:explain+ lexicon, off the hot path. - Status board — docs/specs/README.md, regenerated by
workflow.py status-board; Notes column preserved + load-bearing. - Recent review/posture closures — Leanness-review lens (ADR-0055 / spec 109): over-engineering / YAGNI check folded into the arch + reconciliation passes, no new gate — don't re-propose a standalone leanness gate. First-class blockers (ADR-0057 / spec 111):
blocked_by:annotation on an actionable slice (not a lifecycle state) → board## Blocked slices; distinct fromDEFERRED/dependencies:. Adversarial-register quarantine (ADR-0056 / spec 110): the flaw-hunting register is bounded to the review passes (isolated reviewer subagents); outside a review, default collaborative and solution-forward. Use-case progress (ADR-0064, spec 116): read-onlyworkflow.py progress [--summary], the one bounded exception to the PM out-of-scope line — a progress view, not a drift detector; don't grow it here. - SPIDR, Vertical slice, Dumb zone, Reconciliation, Reframe (
/jig:reframe— ADR-0024), Tier 0/1/2, Hot Cache, Research note (docs/research/R-NNN, ADR-0054) — see glossary //jig:explain.
Key documents
| Document | When to read |
| docs/product-vision.md | What jig is; before any positioning discussion |
| docs/workflow.md | How we build — start of every session |
| docs/architecture.md | Plugin internals / module boundaries |
| docs/conventions.md | Before authoring any skill / hook / agent |
| docs/decisions/ | ADR index |
| docs/specs/README.md | Spec status board — pick up next work |
| docs/bugs/README.md | Bug status board — check before folding defects into specs |
| docs/roadmap.md | Milestone / branch overlay |
| docs/refinement-todo.md | Deferred decisions |
| docs/memory/glossary.md | Domain terms (the on-demand home for the index above) |
| docs/memory/learnings.md | Dead ends and gotchas |
| docs/inbox.md | Parked ideas |
Skills in this repo
The host surfaces every jig skill with its description each session — this primer does not re-list them (EngTip #23 / spec 076). Each skill's contract is its skills/<name>/SKILL.md; the per-tier roster is scaffold._TIER_SKILLS (mirrored in the glossary's Tier 0/1/2 entry). Skills with a .py helper: spec-workflow (workflow.py), independent-review (review.py), adr-workflow (adr.py), tdd-loop (tdd.py), slice-land (land.py), migrate (migrate.py), memory-sync (memory.py), code-health (health.py), bug-fix (bug.py); the rest are judgment-only. Explain any skill, term, or artifact with /jig:explain.
Host packaging details live in docs/architecture.md; Codex plugin packaging is built by scripts/build_codex_plugin.py (with --install-codex-agents for the explicit custom-agent TOML install step), and Copilot plugin packaging by scripts/build_copilot_plugin.py — all three hosts regenerated + drift-guarded by the single scripts/build_host_packages.py.
Session workflow
- Check docs/specs/README.md + docs/bugs/README.md; route reported defects to
bug-fix, then pick up the nextREADY_FOR_IMPLEMENTATIONslice. - Implement (TDD). After the deliverable is on disk, run post-impl review — compliance + craft always, +arch/+code-health/+frame/+design iff the slice flags them. See docs/workflow.md + spec-workflow/SKILL.md.
- Reconcile: deviation log, doc updates, reconciliation review.
/jig:memory-sync; update spec status + regenerate the status board.
Constraints for agents working on this repo
- Do not modify docs/conventions.md without explicit human approval.
- Reviewer subagent is read-only (Read / Glob / Grep) — it cannot write to memory.
- templates/CLAUDE.md.template is the scaffold source — not this file.
- Hook commands use
bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/…(never bare names); all hooks use Python 3 for JSON (never jq). - ADRs →
docs/decisions/adr-NNNN-<slug>.md(ADR-0004); slices →docs/specs/NNN-<slug>/slice-NN-<short>.md(spec 018, sibling files;spec.mdis the overview). - When a slice closes a spec, compress its Active-specs entry (spec 025-01); load-bearing per-slice invariants migrate to the status board Notes column, not CLAUDE.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

