Engineering

Three skills you need for spec-driven development

Zach Lloyd
Illustration for How I do spec-driven development using Skills

If you want to increase the chances of your agent building the right thing, you should be writing specs to guide the agent.

It’s pretty simple: write product specs that describe user behavior, and tech specs that describe implementation strategy. They should be written as MD files and checked into the implementation PR so your teammates can review them.

You should use Skills for encoding this whole process.

Here’s the flow. It works inside or outside of Warp and is all open-sourced to adapt as specs for your projects.

1. Start with a product spec using /write-product-spec

This Skill creates a PRODUCT.md file in a specs/<issue> directory in the current repo.

The goal of the PRODUCT.md is to specify a feature from the user’s perspective. It’s the “what” of the feature.

It should include references to Figma mocks, screenshots, etc.

The format is user stories plus a very detailed list of product invariants that an agent can verify in code and potentially using computer use.

Example PRODUCT.md and TECH.md specs created by spec-driven development Skills

2. Next create a tech spec using /write-tech-spec

This Skill creates a TECH.md file in the same specs directory.

The goal of the TECH.md is to specify the implementation strategy for the feature. It’s the “how” of the feature.

It should include overall architecture guidance, specific code locations, and anything else that the agent should know when writing the code.

3. Ask the agent to implement the specs

This should work with any agent, even on a lower reasoning level.

4. Validate the implementation matches the specs

It’s not enough to ask an agent to implement specs, you also need to make sure it did it correctly.

When reviewing the implementation PR, I use a skill in Warp for this called /validate-changes-match-specs that asks the agent to double check its work and respond back with any inconsistencies.

The agent then walks me through those inconsistencies and how I want to address them.

5. Validate using computer use

Finally, we have a specific skill we use internally for using Oz to do computer use to validate UX changes.

You can find these skills on GitHub and install them using:

npx skills add warpdotdev/common-skills

Related articles