CrystalSpec vs GitHub Spec Kit
A living spec vs per-feature markdown
Spec Kit made spec-driven development mainstream — free, MIT, in your repo. CrystalSpec answers the question that comes after: where does the spec live once the feature ships?
Free 14-day trial. No credit card. Cancel in two clicks.
Specs don't fail in review. They fail three merges later, when nobody re-reads the file.
Spec Kit starts the spec. CrystalSpec keeps it alive.
Credit where it's due: GitHub Spec Kit has done more than any other project to make spec-driven development a mainstream practice. Launched by GitHub in September 2025 and sitting around 119k stars as of mid-2026, it's a free, MIT-licensed toolkit: a specify CLI that bootstraps your repo with templates and installs slash commands into whichever coding agent you already use — Copilot, Claude Code, Cursor, Gemini CLI, and dozens more. The workflow is disciplined and genuinely useful: constitution, then /speckit.specify, /speckit.plan, /speckit.tasks, /speckit.implement, each phase emitting markdown artifacts in-repo that feed the next. If you want to try SDD this afternoon for zero dollars, Spec Kit is the right on-ramp.
Then comes week six. The feature shipped, the PR merged — and specs/user-onboarding/spec.md is still in the repo, describing behavior the codebase has already moved past. Spec Kit's artifacts are per-feature scaffolding by design: the constitution persists, but spec.md, plan.md, and tasks.md are generated, consumed, and left behind. This isn't a hidden flaw — the project itself ships /speckit.converge, a command whose job is to assess how far implementation and spec have drifted apart. When a toolkit needs a drift-measurement command, the honest conclusion is that markdown files in a repo are a great way to start a feature and a poor place for a product's definition to live.
CrystalSpec is built for exactly that second half of the problem. Instead of per-feature files, one durable spec: typed flows with labelled decision branches, data models with enums and references, roles, test cases, and glossary terms, cross-referenced into a graph. The published revision is the always-true source everyone sees; editing forks a draft revision locked to a single active editor, and each publish mints a new version carrying an AI-drafted change summary and diffs at field granularity. No AI edit lands directly: each one is a pre-validated proposal waiting on a human's row-by-row accept or reject, and the ledger keeps every decision — enforced structurally, not by phase etiquette. And the inconsistency analyzer scans the whole project for contradictions and gaps, not one feature folder at a time.
The agent story points in opposite directions, and that's the clearest way to see the difference. Spec Kit runs inside your agent as slash commands; CrystalSpec is a source your agent queries from outside — a hosted MCP server (Claude Code, Claude Desktop, Cursor), a scoped GraphQL API, and HMAC-signed revision.published webhooks. An agent can request one flow, page through the revision history, and see the exact delta since it last looked; a markdown PRD can't answer those questions. When a revision publishes, CrystalSpec decomposes the changes into atomic tasks and delivers them to GitHub, Linear, or ClickUp — not GitHub Issues alone — with pushes that are safe to repeat and tasks that link back to the revision behind them.
Built to stay true after the merge
A spec that outlives the sprint
Spec Kit's spec.md serves one feature, then ages. CrystalSpec's published revision is the product's living definition — durable, versioned, and still accurate long after the branch merges.
Typed entities, not markdown
Flows with decision branches, data models with enums and references, roles, test cases, glossary terms — a queryable graph, not files an agent has to re-read and re-parse whole.
Approval enforced, not etiquette
Spec Kit expects you to review each artifact between phases; nothing stops a runaway agent from regenerating everything. CrystalSpec's AI can only emit pre-validated proposals you approve row by row.
A home for the whole team
PMs, designers, and stakeholders get a web workspace: discussions with @mentions, read-only public share links, AI Q&A for visitors, and a PDF export polished enough for the boardroom. No terminal required.
Versioning with meaning
Git tracks lines in files. CrystalSpec revisions carry field-level diffs of spec entities, AI-drafted change summaries, and revert with full lineage on a per-project activity timeline.
Consistency you don't have to remember
Where /speckit.analyze checks one feature folder, this sweeps the entire project — or a chosen flow or step — for contradictions, gaps, and glossary terms nothing uses. Findings arrive graded, with browsable history and Fix-with-AI proposals you review.
Toolkit vs spec layer, feature by feature
| Dimension | CrystalSpec | GitHub Spec Kit |
|---|---|---|
| What it is | Hosted spec workspace | CLI + markdown templates in your repo |
| Price | $10/seat/mo · 14-day free trial | Free, MIT (you pay for the coding agent) |
| Spec lifespan | Yes: Durable, living, published revisions | Partial: Per-feature artifacts; constitution persists, drift acknowledged |
| Spec format | Yes: Typed flows, models, roles, test cases, glossary | Partial: Markdown: spec.md, plan.md, tasks.md |
| Non-engineer access | Yes: Web app, share links, PDF, discussions | No: Repo and terminal only |
| AI approval gate | Yes: Validated proposals, row-by-row approval, every decision recorded | Partial: Phase-by-phase review by convention |
| Consistency checking | Yes: Project-wide analyzer with graded findings, history, Fix with AI | Partial: /speckit.analyze and /speckit.checklist, per feature |
| Versioning | Yes: Field-level diffs, AI change summaries, revert with lineage | Partial: Git commits on markdown files |
| Agent integration | Hosted MCP server, GraphQL API, signed webhooks — agents query the spec | Slash commands running inside 30+ agents |
| Tracker output | Yes: GitHub, Linear, ClickUp — idempotent, back-linked | Partial: GitHub Issues via /speckit.taskstoissues |
| Code generation | No: Deliberately none — feeds the agents that write it | Yes: /speckit.implement drives your agent end-to-end |
| Community & maturity | Young product | ~119k stars, fast release cadence, still 0.x |
Based on the public Spec Kit repository and docs and CrystalSpec's published pricing, as of mid-2026. Spec Kit remains a 0.x open-source project, not a commercial GA product.
Adopting CrystalSpec alongside your repo
Keep your repo workflow. Add the durable spec layer above it — most teams do this in an afternoon.
- 1
Seed from your best spec.md
Skip the importer question — there isn't one. Hand the markdown to the AI assistant and review what comes back: structured flows, data models, roles, and test cases, approved one by one.
- 2
Let the analyzer find the gaps
Run the inconsistency analyzer across the new project. It grades contradictions, warnings, and notes — usually surfacing what the markdown never said.
- 3
Point your agents at the spec
Connect Claude Code or Cursor to the hosted MCP server with a scoped personal token. Instead of re-reading files, agents fetch flows, browse revision history, and diff versions on demand.
- 4
Publish and push tasks
Publishing a revision breaks the changes into atomic tasks for GitHub, Linear, or ClickUp; re-pushing is harmless, and every task points back at its revision.
Different lifespans, different audiences
Choose CrystalSpec if…
- The spec must stay true after the merge — published revisions, field-level diffs, and revert with lineage instead of aging markdown.
- PMs, designers, and stakeholders need to read, discuss, and share the spec without cloning a repo or opening a terminal.
- You want AI edits structurally gated behind human approval, with every accept and reject recorded.
- Your tasks live in Linear or ClickUp as well as GitHub, and you want pushes to be idempotent and back-linked.
Choose Spec Kit if…
- You want a free, MIT-licensed, in-repo workflow and everyone touching specs is an engineer comfortable in a CLI.
- You want the spec to drive code generation end-to-end via /speckit.implement — CrystalSpec deliberately doesn't generate code.
- You're building greenfield features where per-feature spec → plan → tasks ceremony pays off and long-term durability matters less.
- Your team wants to stay entirely inside GitHub's ecosystem: Copilot, Issues, Actions.
Fair questions, straight answers
Is CrystalSpec a GitHub Spec Kit alternative?
They overlap on writing the spec before the code and diverge on lifespan. Spec Kit generates per-feature markdown that drives implementation; CrystalSpec maintains one durable, typed, versioned spec that agents query over MCP long after the feature ships. Plenty of teams could run both — Spec Kit for in-repo ceremony, CrystalSpec as the spec layer above it.
Spec Kit is free — why pay $10 per seat?
You're paying for what markdown in a repo can't do: a web workspace for the whole team, enforced human approval on every AI edit, field-level revision diffs, an inconsistency analyzer, public share links, and task push to Linear and ClickUp as well as GitHub. If everyone touching specs is an engineer in a terminal, Spec Kit may genuinely be enough.
Doesn't Spec Kit already do spec-driven development?
Yes — and the criticism it draws, from “waterfall in markdown” to spec drift after shipping, is about durability, not intent. Spec Kit's own /speckit.converge command exists to measure how far spec and implementation have diverged. CrystalSpec's published-revision model and inconsistency analyzer exist precisely to keep the spec true after the sprint ends.
Can coding agents use both tools?
Yes, and in opposite directions. Spec Kit runs as slash commands inside your agent — it supports 30+ assistants, including Copilot, Claude Code, and Cursor. CrystalSpec is a source your agent queries from outside, over a hosted MCP server: grab a flow, enumerate revisions, ask for the delta between two versions — and, for automation, a scoped GraphQL API with HMAC-signed webhooks.
Does CrystalSpec generate code like /speckit.implement?
No, and that's deliberate. CrystalSpec stops at a rigorous, queryable spec plus atomic tracker tasks; your coding agents do the implementation with the spec as context over MCP. If you want one command that carries a feature from spec to generated code, Spec Kit is the better fit for that step.
Where do PMs and designers fit with each tool?
Spec Kit has no surface for them — specs live in the repo and the terminal. CrystalSpec gives non-engineers authoring with AI proposals, discussions with @mentions, read-only public share links, and PDF export, with owner, admin, and contributor permissions enforced server-side on every operation.
Can we migrate our Spec Kit markdown into CrystalSpec?
There's no importer — and you won't miss it. Feed a spec.md to the AI assistant and it answers with structured proposals: flows, data models, roles, test cases. Approve what's right, then let the inconsistency analyzer flag everything the markdown never said. Turning your best existing spec into a seeded project is typically an afternoon's work.
The verdict
Pick Spec Kit for free, in-repo, per-feature ceremony that ends in generated code. Pick CrystalSpec when the spec has to stay true after the merge — typed, versioned, team-visible, and open to query from whatever agent you run.
Free 14-day trial. No credit card. Cancel in two clicks.