Skip to main content

Specification Driven-Development: What SDD is and understanding its role

· 3 min read

TL;DR: SDD puts the specification at the center: well-written specifications can be used to generate code via AI agents. Fewer misunderstandings, faster iteration.

Definition of the concept

Imagine the specification is the recipe and the code is the final dish. In Specification Driven Development (SDD), the recipe is not a poor note in the margin; it's the manual that the chefs (including robot chefs—LLMs) use to cook the application.

SDD emerges as a philosophy in response to LLM-based agents and vibe coding: instead of writing code first and then documentation, well-written and executable documentation becomes the "source of truth" and guides code generation.

Quick example: you write a specification: "When button X is pressed, send notification Y to the user with conditions Z". An agent can transform that specification into endpoints, tests, and minimum viable deployment. Simple, repeatable, and traceable.

Source of truth

  • Agile / Waterfall: Code rules. Specs often become outdated notes.
  • SDD: The specification rules. Code is a temporal expression of that specification: if something is off, the spec is the source to correct.

In SDD, the specification functions as a contract: when the spec and code differ, the spec is the truth until we decide otherwise (and document it).

Change management (by analogy)

Think of changes as updating a recipe, not re-making the dish by hand every time:

  • Before: a change in requirements causes chaos: code editing, PRs, hotfixes.
  • With SDD: change the spec, regenerate implementations and tests. Experiment what-if at low cost.

Traditional Methodologies (Agile / Waterfall)Spec-Driven Development (SDD)
The Source of TruthCode is King. Specs fall behind.The Specification is King. The PRD generates the implementation.
Spec-Code RelationshipThe specification is usually static and deviates from the code.The specification is an executable artifact; code is its expression.
The GapAmbiguities and misunderstandings are inevitable.Automatic transformation reduces or eliminates the interpretation gap.
  1. More capable AI: natural language specs generate functional code reliably.
  2. More complex software: maintaining consistency manually is increasingly expensive.
  3. Accelerated pace of change: pivots are the norm and you need to iterate quickly and safely.

This also enables an interesting game: generate multiple implementations from the same spec and compare advantages (performance vs. cost vs. maintainability).

Fundamental principles (one sentence each)

  1. Specifications as lingua franca — the spec is the central artifact.
  2. Executable specifications — precise, complete, and unambiguous.
  3. Continuous refinement — validation and ambiguity detection all the time.
  4. Research-driven context — agents collect context and technical options.
  5. Bidirectional feedback — production feeds back into the specification.
  6. Branching for exploration — generate alternatives to optimize different objectives.

Small exercise (try it!)

Take a user story and turn it into a minimal spec (3–5 lines) that's clear and unambiguous. Then ask yourself:

  • Can an agent generate endpoints and tests from this?
  • What ambiguities remain?

If you answered yes and there's little ambiguity, you've taken a big step toward SDD.

Final reflection

SDD doesn't come to replace the developer: it comes to turn them into a specification architect, orchestra conductor, and curious critic. It's a powerful way to accelerate iterations, improve traceability, and minimize technical debt when properly implemented.


Sources and references

Skills: Using `find-skills` from VS Code

· 2 min read

This post explains how to use the npx skills command (the skills manager) and how to integrate it into your workflow in Visual Studio Code.

What is npx skills?

npx skills is the CLI for the skills ecosystem: it helps you search, install, and update packages called skills that extend the agent's capabilities.

Key commands:

  • Search: npx skills find [query]
  • Install: npx skills add <owner/repo@skill>
  • Update: npx skills update

Quick usage from VS Code

  1. Open the integrated terminal (View → Terminal or `Ctrl+``).
  2. Search for relevant skills:
# search for skills by keywords
npx skills find react performance
  1. Review the output and, if interested, install one:
# install a skill (global installation is optional, you can use npx directly)
npx skills add vercel-labs/agent-skills@vercel-react-best-practices
  1. Optional: install globally and avoid typing npx:
npm i -g @skills/cli
skills find "react testing"

Practical tip

If you want to work with skills frequently from VS Code, keep the terminal pinned and use searches with specific words (e.g., react testing, docs, deploy).

Example flow

  • Search: npx skills find changelog
  • Install: npx skills add composio/changelog-skill
  • Execute the task the skill provides: depends on the installed skill (check the documentation at skills.sh).

Resources

  • Website: https://skills.sh/ 🔗
  • Documentation and examples (use npx skills find to discover specific skills)

If you want, I can install a sample skill here and show step-by-step how to use it. Which category interests you (tests, docs, deploy, productivity)?