alpha · now with Figma tokens import
The context layer your coding agents are missing.
Compile your brief, repo, and design tokens into AGENTS.md, CLAUDE.md, and copilot-instructions from one deterministic source. With drift detection that fails CI before it fails trust.
$ npm install -g project-spine@nextMIT-licensed, fully offline. Node 20+.
$ spine compile --brief ./brief.md --repo . --tokens ./tokens.json ✓ compiled spine for "acme-payroll" v0.1.0 template: saas-marketing hash: 3333f867f40d3e43 project type:saas-marketing stack: next / tailwind / typescript goals: 5 qa rules: 12 warnings: 2 (0 error, 1 warn, 1 info) wrote 19 files under ./.project-spine and repo root. $ spine drift check --fail-on any ✓ clean · spine hash 3333f867f40d3e43 matches current.
Nineteen files, every agent, all drift-tracked.
Run spine compile once. Everything below is generated with source pointers back to your brief, and hashed into a manifest that catches drift in CI.
- Repo root
- AGENTS.mda41e2d0b9c6f7844
- CLAUDE.mdf0ce8847b1e29a71
- .github/copilot-instructions.md92b4711f3e6c0d12
- .project-spine/exports
- scaffold-plan.mdc8d5faeb7a20e164
- route-inventory.md3b5f77102e9c41a8
- component-plan.md7ac2d1b9664fe083
- qa-guardrails.md4e6a0f51c9d7b312
- sprint-1-backlog.md51bc28a93f0e6d47
- rationale.mdb920f47dc651e8a3
- architecture-summary.mded7a1f30c9b842fc
- export-manifest.jsondrift-tracked
Why not just use Claude?
Claude Code writes an AGENTS.md when you ask it to. Project Spine writes verifiable, versioned, portable agent instructions, and tells you the moment they drift.
Claude Code alone
What you get by default
- Different
AGENTS.mdevery time you ask. Non-deterministic by design. - No memory of the brief you signed three months ago.
- Writes
CLAUDE.mdwell. Doesn't own the Cursor or Copilot file. - No sha256 chain, no source pointers, no audit trail.
- Can't fail CI when your instructions drift from the brief.
Project Spine
What you get by construction
- Same inputs produce the same
spine.json. Byte-identical until a real input changes. export-manifest.jsonhashes every input and output for lifecycle drift.- One source fans out to
AGENTS.md,CLAUDE.md, and copilot-instructions. - Every rule carries a source pointer back to
brief.md#section0/item3. spine drift check --fail-on anyturns the contract into a CI gate.
Everything a real kickoff needs. Nothing you don't.
Alpha today — carrying the primitives agencies tell us they need on day one of a new client project.
01
Deterministic compile
Content-addressable spine.json. Same inputs, same hash. Reviewers can prove why every rule exists.
02
Drift-aware by construction
export-manifest.json plus spine drift check --fail-on any. A contract, not a comment.
03
Portable across agents
Claude Code, Cursor, Copilot, Codex, Aider. One brief, every agent file, zero re-briefing.
04
Design tokens first-class
DTCG or Tokens Studio JSON. Aliases resolve. Tokens drift tracked separately so Figma re-exports surface cleanly.
05
Agent skills shipped
Six SKILL.md files teach Claude Code, Codex CLI, and Cursor to drive Spine end-to-end. One-line install.
Hi, I'm Petri. Project Spine is a solo-maintainer project. I started it because my
AGENTS.mdfiles kept going stale the moment the brief moved, and no existing tool treated that as a real problem. If you try Spine and it breaks, or you disagree with a decision I made, email support@projectspine.dev. I read every message.
§ START
Ship your AGENTS.md
like it's code.
Free while in alpha. MIT forever. Three commands and thirty seconds to compile your first brief into an audit-ready operating layer.