Spec-driven development

Plan the system before your
AI Agent writes a line of code.

Your agent doesn’t read minds. It reads specs.

0+ installs via npm
v0.0.22·MIT·local-first·works with your Claude Code setup

Describe your idea.

Chat with the Spec Agent — or edit pages/*.md by hand. The agent matches your writing style and turns your prose into definitions: endpoints, DTOs, tables.

Who it’s for

Which #team are you on?

Tech leads & architects

Own the spec for their team. Want a single source of truth that reviews in a PR — and references that resolve, not a wiki page that rots.

Solo founders & vibecoders

Vibecoding an MVP with AI. Want a plan the agent builds against — structure that keeps the app from drifting into spaghetti.

Teams building agentic workflows

Run their own agent harness. Want it to query a structured plan over MCP — spec-driven control over what the agent generates.

Builders starting from a spec

Want an app generated from a proven spec, not a blank page. Clone a published spec by slug, adapt it locally, let the agent generate the code.

Browse specs →
Or start from a spec

Don’t plan from zero.
Clone a spec, then generate.

Find a spec that fits your needs. Clone it locally, adapt it, then generate.

$npx @inharness-ai/claude4spec --clone <slug>

Find a slug in the catalog above. Clone it locally — the full spec reads in your local app after clone.

What this can be

More than an editor.
More than a chat.

Author by hand or with the agent, plug it into your tooling, then version and publish. One environment — many surfaces.

Write it your way

By hand or with the agent — same spec, same structure.

A real editor — edit by hand

Slash commands, inline chips, autosave. Simple text changes don’t need an agent — open a page and type.

A spec agent that edits the plan

A specialized agent built to author the spec. It works through the same structured tools you use by hand — changes land in the spec, not a transcript.

Pick how the spec is shaped

Not every system documents the same way. Choose a writing style and every page follows the same structure for its target.

Prose backed by typed data

A spec is more than text. Typed entities and indexed anchors link into the prose — the backbone that keeps the whole thing consistent.

More than a chat

Local, scriptable, open to your agents.

Drive it from CLI and MCP

Run the app and the spec agent over CLI and MCP. Wire your own workflows with implementation agents — or a whole fleet of them.

Hand any agent your spec

Ships with c4s-spec-reader and c4s-brief-implementer skills, so outside agents read the spec and implement its briefs.

Runs on Node, nothing else

The local app keeps everything in SQLite. Install and run is trivial — all it asks for is Node 20+.

Your spec lives in your repo

The app runs locally and the spec is Markdown files. Commit it, branch it, review it in PRs like any code.

Evolve and share

A spec is a living asset, not a frozen doc.

Releases keep the history

Cut releases and keep the record of how the spec — and the system — changed with the business.

Hand a builder what changed

Generate a narrative brief from the diff between two releases, so the implementer focuses only on the change.

Close the loop after the build

When code reveals a gap, the implementer writes a patch back to the spec — keeping spec and code from drifting apart.

Publish a spec, share it

Push a snapshot to the hub and anyone can clone it. Publishing is opt-in — your working spec stays local.

What lives in .claude4spec/

A real folder, not a diagram.

.claude4spec/
├── briefs/          # 19 files — one per version transition
│   ├── initial-0-0-1.md
│   ├── 0-0-1-to-0-0-2.md
│   ├── 0-0-2-to-0-0-3.md
│   └── … 16 more
├── patches/         # 32 files — drift between brief & impl
│   ├── 0-0-1-to-0-0-2-l4-scope.md
│   ├── 0-0-1-to-0-0-2-migration-tool.md
│   └── … 30 more
├── skills/          # entity lookup & brief execution
│   ├── c4s-spec-reader/
│   └── c4s-brief-implementer/
├── config.json        # pagesDir, mode, version
├── mcp.json           # MCP server registration
└── db.sqlite          # local entity store (typed)
briefs/One markdown file per release. What changed, why, what’s next.
patches/Drift records. When implementation found gaps in the brief.
db.sqliteTyped entity graph. The agent queries this over MCP.
pages/*.mdYour spec (lives at repo root). Markdown your team reviews in PRs.

↑ This is what claude4spec adds to your repo. Nothing else lands in your PATH.

FAQ

Questions you’re likely to ask.

How is this different from Notion or a wiki?

Notion is general-purpose. claude4spec is a planning layer: structured entities (endpoints, DTOs, tables) with typed relations and find-references your agent can query — something a knowledge base can’t give you.

Is this a wrapper around Claude?

No. The editor, entities and version history work independently of the chat. The agent is one of several ways to interact — use the UI on its own, or drive entities from Cursor or Windsurf over MCP.

Why not just use Cursor Rules or CLAUDE.md?

Rules are runtime constraints for how your agent behaves. claude4spec is a plan of what the system is supposed to be — structured entities, typed relations, find-references. Different layers; you can use both.

Do I need an API key?

No separate setup. The claude CLI runs as a local process using your existing Claude Code session — the same login, zero extra cost if you already run Claude Code.

Cloud or local?

Local-first by default. Your working spec lives on your machine (.claude4spec/ and pages/*.md). Publishing to the hub is opt-in: when you push, that snapshot goes public — like git locally vs pushing to GitHub.

How do I uninstall?

npx @inharness-ai/claude4spec installs nothing globally. Nothing lands in your PATH, so there’s nothing to uninstall. To clean up a project, delete its pages/ and .claude4spec/ directories.