Lately I’ve been playing around with using Github’s SpecKit a framework for getting started with “spec driven development”. Which if you’re not trying to be fancy is just: writing out what you’re going to do before you do it. What SpecKit does is provide dedicated instructions and slash commands to your AI agent of choice to have a dedicated process for generating these docs. It’ll generate out a specification, a plan and a set of tasks and then guide the AI through implementation. I’ve found it’s really great at doing this, and for me this is one of the best features of AI: helping to automate some of the toilsome work.
This concept isn’t new and there is definitely prior art, some examples include:
- Kiro by AWS - This is yet another Visual Studio Code fork that focuses on building specs and implementing them.
- Traycer - A VSCode extension that helps build out specifications and plans.
- Task Master - A CLI tool to act as a project manager. I’ve not used it and it seems like it does more then just specs but I could be wrong.
What SpecKit does that these tools don’t from my limited exposure is it works within your current coding agent/tool. If you’re a Claude Code user you’re all set, Cursor the same, Copilot it’s got you… This is the killer feature for me. With the Cambrian explosion of AI tools and the frankly rather overwhelming pace of new development it’s nice that this adapts to the ecosystem you’ve set up. Personally I prefer Claude Code and have built up a nice little ecosystem of tools/functionality that I use with it.
Trying it out
Step One - Installation
Getting started with SpecKit is super easy. Install the specify tool using uv:
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
This will install a specify
command which you can use to initialize and check on projects. While this isn’t necessary and you can manually install by copying the templates to your project folder that seems like it’s a lot of labor. Embrace the slack.
Step Two - Using
Speckit gives you five major commands:
/constitution
this sets up the core directives of your application. This is where you put in UX requirements, development guidelines etc. Think of it as the common reference point between all of your specs. It creates a markdown file here.specify/memory/constitution.md
in your repo./specify
The backbone of the app. This is where you write a specification for a feature you’re working on. As the docs say you should focus more on the what and the why and not on the how. Don’t pick tech stacks or solutions etc. That can be done either by going “up” a level to yourconsitution
or later on with the/plan
command. This will generate a folder called something likespecs/001-my-cool-idea
in the root of your directory./plan
This is where you choose your tech stack, libraries etc. I’ll be honest sometimes in a well structured pre-existing project I just roll the dice and don’t give it any specific planning instructions. So far that’s only burned me about 10% of the time. It creates aplan.md
in your specs folder./clarify
This is optional but if the agent has questions about any ambiguity it’ll prompt you with a multiple choice question about potential solutions. You can ideate those solutions and then choose the one you want./tasks
This breaks up the work into chunks for the agent to do. Creates atasks.md
file. Whats nice is that it’s relatively fine grained and the implement command will go through check them off/implement
Tells the agent to start implementing. It goes through task by task and implements them. Once thing I’ve noticed at least with Claude Code is that it’s smart enough to farm it out to sub-agents where it makes sense to.
The thing is you can just rip through this and type /specify
then /plan
then /tasks
and then /implement
if you want. You’ll get something, but where the magic lies for me is that it generates each file and I can edit/change things before the final implementation. So the agent becomes more then just an over-eager junior with an excellent memory but it also becomes a bit of a partner in helping you get the what and the why on paper.