beta · now with Figma tokens import
Stop re-explaining your repo to coding agents.
Turn one brief into AGENTS.md, CLAUDE.md, Copilot instructions, Cursor rules, a scaffold plan, QA guardrails, and a sprint backlog. Then fail CI when those files drift from the source of truth.
$ npm install -g project-spine@betaMIT-licensed, fully offline. Node 20+.
- Offline by default
- No repo upload, no telemetry, no account.
- Deterministic
- Same inputs produce the same spine hash.
- Beta proof
spine doctorverifies version, channel, runtime, and drift.- CI-native
- GitHub Action fails when exports drift.
$ 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 21 files under ./.project-spine and repo root. $ spine drift check --fail-on any ✓ clean · spine hash 3333f867f40d3e43 matches current. $ spine doctor --strict [ok] version project-spine 0.9.2-beta.1 [ok] release channel npm publish tag beta [ok] local drift clean
Twenty-one 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
- .cursor/rules/project-spine.mdc7bf46ac330f18d2e
- .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
Not a prompt. A contract you can audit.
The promise is visible in the artifacts themselves: source pointers, drift diffs, and a local readiness command that proves the public beta surface on your machine.
Generated rule
- Use TypeScript strict mode.
source: repo-profile#language.strict
- Keep LCP below 2.5s on mobile.
source: template:saas-marketing/qa#performance
- Never remove visible focus states.
source: design-rules.md#accessibilityCI drift failure
$ spine drift diff
--- .project-spine/exports/AGENTS.md
+++ AGENTS.md
@@
- Node >= 20 is required.
+ Node >= 18 is fine.
input drift: 0
export hand-edits: 1
next: update the brief or regenerate exportsWhy 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 project files. - 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, copilot-instructions, and.cursor/rules/project-spine.mdc. - Every rule carries a source pointer back to
brief.md#section0/item3. spine drift check --fail-on anyturns the contract into a CI gate.
Where Spine sits in the agent stack.
Spine is not another agent runner or task queue. It is the source of truth those agents should start from before they touch the repo.
Everything a real kickoff needs. Nothing you don't.
Public beta 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 beta. MIT forever. Three commands and thirty seconds to compile your first brief into an audit-ready operating layer.