spec-driver
the specification-driven development eigentoolkit
An open, opinionated CLI for spec-driven development. Notably, it:
- lets markdown files impersonate a relational database
- scaffolds spec generation (and maintenance!) for Go, Python and TypeScript projects.
- manages a cohesive set of nouns and verbs. Together, they form an adaptable framework for building at sustainable pace with agents.
Stick with the defaults and use everything — or cherry-pick and customise the templates to suit.
Spec-driver is a "variable bureaucracy" framework: work from one line descriptions in a lightweight backlog, up to standalone requirement documents, detailed runsheets, detailed spec revisions, and a full audit trail of verifications tests linked to functional & non-functional requirements.
If you're building something ambitious, the process that got you started will not get you where you're going - and it's a plus if you don't have to declare process bankruptcy three times on the way there.
spec-drivercame about because I was blown away by spec-kit... until I realised it wasn't actually trying to solve the problem I'd assumed it was. You start with specifications, and it's got a great workflow for taking them from idea to implementation — but there's no support for actually keeping them as a source of truth once you're done.
| spec-kit | spec-driver | |
|---|---|---|
| status | production - robust, excellent agent commands, multiple maintainers, feature complete | beta - expect some rough edges & feature gaps; single maintainer |
| ideal projects | smaller projects / microservices (language agnostic) | go, python, typescript projects - any size |
| expected prior experience | new to spec-driven development | prior experience with other tools |
| key strengths | documentation; strong community adoption; polished onboarding | structured data; evergreen specs; unified CLI for automation |
| weaknesses | specifications are disposable; works best with modest codebases; no support for legacy adoption | works for me™; rough edges; potential bugs; gaps in documentation & guidance |
TL'DR- if you haven't tried spec-kit, maybe start there. If you find yourself wanting more, spec-driver might be for you.
The pitch
Stop banging rocks together.
- spec-driven development is the only sane way to code with agents
- so ... you want to write a spec
- but technical design requires understanding the existing code
- so ... it's not long until this means a research phase is required for every spec
- but that only gives you a local understanding of the code explicitly inspected
If we're to elevate the role of specifications and build a methodology around them being "executable" by agent developers to drive implementation, isn't it a sign of a critical design flaw if those specifications, and the research that informs them, are only accurate at a point in time?
Put another way: if specs are important enough to name a movement after ...
why would we accept disposable specs (and research) when we could, at no greater cost, ensure the specs remain a system of truth about the actual technical design and implementation, and the embodied product requirements?
- Maintain verifiably accurate, interlinked, evergreen specifications for your entire project
- Product specs for user-motivated features, use cases and requirements
- Tech specs for system architecture and implementation guidance
- Deterministically generate cheap, concise, accurate documentation for every line of code within the scope of your spec
- These generated contracts provide an excellent complement to (and insurance against) the stochastic nature of research & implementation agents.
- They're also an extremely concise, token-effecient reference for both agents and humans
- Requirements persist and evolve after initial implementation, with a rich lifecycle; verification and audit mechanisms
- quickly capture desisions, risks, issues, and problem statements / product hypotheses into your backlog
- Prioritise, interrogate, and generate implementation plans from your backlog, or absorb them into specs
- Evolutionary governance of your project with ADRs (architecture decision records), policies and standards
- Process hooks and tooling support ensure they're considered during design, implementation and verification, and audits give you the confidence to change both the code and the rules.
- Markdown + embedded YAML makes a surprisingly powerful platform for structured data, and is highly legible to both human and agent developers
- The registry turns markdown files into relational data— establishes relationships, quick lookups and validation, and propagates updates
Run the spec-driver sync command to automatically:
- stub out new specs for unspecified modules
-
warn (or
--prune
when specs are "orphaned" by moved or deleted code - audit contract drift: detect when code changes aren't covered by specs
Design goals
- first-class support for legacy codebases
- keep agents on track, no matter how large the codebase
- a fast, consistent, unified CLI for everything
- a great UX for both humans and agents
- multiple paths to victory: adapt the framework as your needs change, or to the scale and criticality of the task
- be ready to eat right out of the box
Design principles
- Begin with correctness (a robust conceptual model ), and then make it comprehensible; don't start with what's easy and then try to make it work correctly. Compare the trajectories of MySQL (it was fast, they tried to make it correct) and PostgreSQL (it was correct, they made it fast).
-
self-teaching over instruction if we provide tooling which clarifies and reinforces the data model (as with
spec-driver schema show
and the prompts to use it when creating new files), the agent needs far less documentation and behavioural scaffolding, and can often intuit, and even clarify for you how to use the system appropriately.