Spec Driven Development (SDD)

I am totally blown away by the combination of Spec Kit and Copilot. It is one thing to read about SDD and quite another to build with it.

[For more on the steps in SDD, please see what I wrote about Spec Kit previously.]

Today I fired up Spec Kit and pointed Copilot at it, instructing Copilot to create a constitution based on the existing code (my blog writing demo). A minute later I had a comprehensive document that listed all the immutable characteristics of the application. It was quite long, but here is the beginning:

Hosted-Agent Boundaries

The console application is responsible for workflow orchestration and session handling. Blogger, Researcher, Author, and Reviewer remain independently deployable Azure AI Foundry Hosted Agents. The console must communicate with them through Microsoft Agent Framework abstractions and must not issue ad hoc raw HTTP calls or recreate their model logic in-process.

Other sections include:

  • Microsoft Agent Framework-Native Workflow Composition
  • Identity, Secrets, and Budget Control
  • Testable and Observable Behavior
  • Simple, Compatible Evolution
  • Technical Constraints
  • Development Workflow
  • Governance

Specify

With that in hand, I wrote a basic specification of what I wanted to build, and Copilot worked with Spec Kit to turn it into a specification document (in about 5 seconds). I wrote:
Add long-term memory using Cosmos so that we can store what is currently in the session to allow listing of previous questions and allow follow-up

Spec Kit turned that into a full specification and identified a series of questions that needed clarification. It presented each to me with multiple-choice answers, including the ability for me to add a custom choice. For example, one area that needed clarification was:

Q: What should happen to saved sessions when a user leaves the organization or their Entra account is deleted? -> A: Automatically delete sessions when the account is deleted.

The specification also included:

  • A series of user stories with their acceptance criteria
  • A List of edge cases
  • A list of functional requirements
  • A list of key entities
  • A list of success criteria with measurable outcomes
  • A list of assumptions

And so it went through the various stages of SDD. It created a comprehensive plan for my approval and then wrote out all the tasks to implement that plan. As it went, it checked off each item in the task list, driven by unit tests.

When I was done, I had a fully working, fully documented new feature that would, in the past, have taken three days and today took two or three hours. And the only reason it took that long was that I was carefully checking its work, which was nearly flawless.

For details, I recommend reviewing the code for the demonstration application.

More on this to come…

Unknown's avatar

About Jesse Liberty

Jesse Liberty has three decades of experience writing and delivering software projects and is the author of 2 dozen books and a couple dozen online courses. Liberty is a Senior AI Engineer at the University of Pittsburgh Medical Center, and was a Team Lead and Senior Software Engineer for various corporations, a Senior Technical Evangelist for Microsoft, a Distinguished Software Engineer for AT&T, a VP for Information Services for Citibank and a Software Architect for PBS. He is a 21 year Microsoft MVP.
This entry was posted in AI. Bookmark the permalink.