specgate/docs v0.20.0

Specgate or OpenSpec#

OpenSpec made specification-driven work with coding agents popular, and it deserves to be the first tool you look at. Specgate exists for one reason OpenSpec leaves to you on purpose: proving that what an agent calls done is done.

Note

Checked against OpenSpec v1.14.1 (October 2026), its documentation and its source. If something here is out of date, open an issue and we will fix it.

The short answer#

  • Choose OpenSpec if you want a light change loop — propose, apply, archive — with the widest agent support, and you will enforce tests yourself.
  • Choose Specgate if "done" has to mean a test names the requirement and your suite passes, if specifications come from a client's brief, or if an agent builds unattended.
  • Use both if your team already writes OpenSpec: keep it, and let specgate verify gate what it archives. Nothing to migrate.

Where they differ#

SpecgateOpenSpec
What "done" meansspecgate done marks a requirement Implemented only if a test names it and the gate — specification, matrix, your test suite — passes.Archive asks to continue when tasks are unchecked, and --yes skips the question. /opsx:verify is an AI review, and its docs say it "won't block archive".
Your testsRun by the gate. A test that mentions REQ-007 is linked to it; nothing to maintain by hand.Not run or linked by the CLI. The docs suggest enforcing it "with your own CI or hook".
A draft written from a briefspecgate draft <module> hands your agent the brief and the formats, then compares the draft with the brief and stops on numbers, limits and fees the brief never stated.Prompts ask the agent not to invent intent and to record its assumptions; nothing checks the result.
Open questionsA requirement in Needs Clarification cannot be built by the harness or closed by done until someone answers.Recorded as assumptions in prose; nothing blocks on them.
Unattended buildingspecgate harness run: one requirement per git worktree, the gate after each attempt, failures fed into the next, never merges./opsx:apply works through the task list in your agent session.
Proof for the businessspecgate report: one page per product — what is done, what is pending, what is missing a test.openspec view, a terminal dashboard.
ScenariosGherkin, tagged @REQ-NNN @SCN-NNN, executable by a real runner.Markdown #### Scenario: with WHEN/THEN bullets.
Existing codeinit adopts a repository without touching code and proposes capabilities from its build files.Brownfield-first: specs grow change by change.

Where OpenSpec is ahead#

We would rather you hear it from us:

  • Adoption. Tens of thousands of stars, hundreds of thousands of weekly downloads and an active community. Specgate is young and small.
  • Agent support. Integrations for 30+ agent tools, against Specgate's 10.
  • Weight. No tests, no particular language and no CI are required to start. Specgate asks for a test per requirement — that is the point, and it is also more work.
  • Customisation. OpenSpec's workflow schemas can be forked and shared; Specgate's lifecycle is fixed.

What we learned building six products#

Every difference above comes from something that went wrong on a pilot:

  • All 47 requirements done, product unusable — no routes, no screens. The checklist now asks for an API scenario and a screen scenario per actor (Rebar Crew).
  • Every test green, nobody could buy — the cart had no button. A scenario that only exercises the API is built as an API (Credit shop).
  • The app did not start with the gate green — a startup test with no doubles now runs in the suite (FinCore).
  • A drug-interaction rule nobody gave us stayed out of the code because Needs Clarification blocked it (HealthTech).

A change log that says "done" would not have caught any of them. A gate that runs the product's tests caught most of them, and running the product caught the rest.

Moving over, or not#

You haveDo this
OpenSpec, and you are happy with itAdd specgate verify to CI. It reads openspec/ and never writes to it.
OpenSpec, and you want the full loopStart a Specgate journey on an existing project. Keep openspec/ as history.
NeitherStart from Getting started.

The full comparison also covers Spec Kit, Cursor rules and a plain README.