From Guesswork to Specs: GitHub Spec Kit
Author
Andrew
Date Published
This piece riffs on and extends the ideas from the Microsoft for Developers article “Spec‑Driven Development: Spec Kit” and its companion video walkthrough embedded in that post. Big thanks to the GitHub + Microsoft folks for putting clean scaffolding around something many of us were brute‑forcing. Original article: https://developer.microsoft.com/blog/spec-driven-development-spec-kit
At 11:58 pm on a Tuesday - two minutes before a release window - I caught myself doing the thing I swore I’d outgrow: guessing. A quick “it should be fine” commit, a prayer to the CI gods, and a mental TODO to circle back tomorrow. Tomorrow arrived wearing steel‑capped bug reports.
That was the moment I tried Spec‑Driven Development (SDD) in earnest. The tool that helped it stick was GitHub Spec Kit - a lean set of templates, prompts, and a tiny CLI that turns “what are we even building?” into something both humans and coding agents can understand without creative misinterpretation.
What I mean by “spec‑driven”
SDD isn’t waterfall cosplay. It’s the opposite of bureaucracy. You capture the why behind a change, then the how, then the work plan - as living markdown in your repo. The win isn’t fewer meetings; it’s portable context you can hand to a teammate or an agent and get the result you intended, not the result you implied.
Meet Spec Kit (and why it clicked)
Spec Kit is purposefully small:
- A Specify CLI that scaffolds your repo for SDD and injects agent‑friendly prompts.
- Templates + helper scripts for specs, technical plans, and task breakdowns - kept in your repo, not stranded in a third‑party tool.
- A tidy
constitution.md
with a few non‑negotiables (testing rules, security posture, “CLI‑first,” etc.) that guide both humans and agents.
Quickstart:
1uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
From there, Spec Kit encourages a three‑step flow (used with your coding agent of choice):
- /specify → the what and why (no tech choices yet)
- /plan → the how (frameworks, data contracts, quickstart)
- /tasks → reviewable, bite‑sized work with a definition of done
You version the generated markdown under specs/
, review it like code, and let the plan drive implementation.
Field notes from my world
Context: I’m building a property‑ops platform with a Dataverse core and React/TypeScript front‑ends. One thorny feature was a temporary access window for on‑site contractors - clean permissions, auditability, revocation without drama.
- /specify captured user outcomes before tech gravity set in (e.g., “access attempts outside the window are denied and logged; owners can revoke mid‑window”).
- /plan proposed stack moves and edge cases, constrained by my
constitution.md
(e.g., structured audit events, e2e tests by default). - /tasks split the work into PR‑sized chunks - DB migration, policy checks, API route, UI affordances, test scaffolds - each with a tight DoD.
Stakeholders floated a “what if we…” variation. Instead of refactoring live code, I branched the spec, asked my agent for an alternate plan, and weighed trade‑offs side‑by‑side. That’s the superpower: decisions become diffable.
Why this beats guess‑and‑go
- Shared language beats lore. New devs don’t need to spelunk through Slack archaeology to find the “real” requirements. The spec is the shared memory.
- Agents do better with guardrails. A precise spec + plan + tasks yields fewer uncanny deliverables and more boringly correct PRs.
- Change becomes cheap again. Specs are markdown, not marble. Edit, review, regenerate plans - and only then touch the implementation.
Try this in under an hour
- Initialise Spec Kit in a sandbox repo with
specify init
, pick your coding agent, and commit the scaffolding. - Write one crisp
/specify
for a bite‑sized feature (two–three user outcomes, explicit non‑goals). - Run
/plan
, skim the quickstart and data contracts, and tune anything your constitution mandates. - Use
/tasks
, assign a couple to your agent, keep one for yourself, and validate the flow end‑to‑end.
Practical tips:
- Front‑load clarity. Treat
/specify
like a mini‑PRD: who, what, why, done. - Keep the constitution short. A handful of hard rules beats a novella nobody reads.
- Tweak the templates. The defaults are opinionated; bend them to your org’s shape.
Credit, sources, and the video
- Original article: Spec‑Driven Development: Spec Kit on Microsoft for Developers - the piece that frames the philosophy and introduces the CLI and templates. It also contains a video walkthrough that demonstrates the end‑to‑end flow. Start there if you prefer a guided tour. https://developer.microsoft.com/blog/spec-driven-development-spec-kit
- GitHub Spec Kit repo: templates, prompts, and the
specify
CLI you can pull into a new or existing repo.
I haven’t abandoned intuition; I’ve given it a harness. Write the story first, let the code follow, and keep your decisions reviewable. Midnight “she’ll‑be‑right” commits have left the chat.