← All transcripts

Spec Driven Development is Slowing You Down: Here’s a Better Way Transcript, AI Summary & Key Points

Rob Shocks · Sep 09, 2025 · Science & Technology · 15:59 · EN-US

💡 Answer

Yes, overly detailed spec-driven development can slow you down during prototyping. A better approach is a hybrid that combines conversational planning, iterative front-end design, small MVPs, lightweight specifications, and reviewed task plans.

🧠 AI Summary

Spec-driven development can improve planning, testing, and production readiness, but an overly detailed process can consume substantial time and AI credits while producing less satisfactory results during iterative prototyping. A hybrid approach is recommended: briefly discuss the idea with AI, choose and establish the tech stack, design the front end with dummy JSON, build the smallest viable MVP, use lightweight specifications and rules, and create and review task plans before implementation.

🔑 Key Points

  • Vibe coding makes it possible to create apps without writing code, but insufficient understanding of how apps are built can lead to spaghetti code and many errors.
  • Spec-driven development addresses those problems by creating plans and documents for agents to follow instead of prompting without an overall plan.
  • Specify from GitHub, owned by Microsoft, uses the /specify, /plan, and /tasks commands as its main workflow.
  • Specify creates specifications containing requirements, acceptance scenarios, and edge cases, and it can create a new Git feature branch for a feature.
  • The /plan command generates a detailed implementation plan, including contracts around API specifications, and users are expected to review areas marked as needing clarification.
  • The /tasks command breaks the plan into phases and individual tasks, including setup, endpoint tests, component tests, and integration tests.
  • The Specify workflow took upwards of 40 minutes to get through, while the equivalent vibe-coded app was running about three minutes after the first prompt.
  • The spec-driven version used a large amount of credits, ran out of tokens in the five-hour Claude window, and did not reach a satisfactory level.
  • The spec-driven app had extensive scaffolding but still used dummy JSON through an API instead of an actual database, and its design was not final and required polishing.
  • The vibe-coded version produced a better-looking website in the same amount of time and connected it to a cloud Neon DB database.
  • The first one-shot prompt produced approximately 90% of the vibe-coded functionality, excluding the database.
  • Spec-driven development is better suited to situations where the desired application is already well understood, while iterative prototyping requires a less rigid process.
  • Large rules files and specifications can confuse models by providing too much information and obscuring priorities, even with a large context window.
  • A practical hybrid workflow includes a short research conversation with AI, choosing the tech stack, setting up the repository, designing the front end with dummy JSON, selecting the smallest viable MVP, adding lightweight specs and rules, and reviewing task plans before implementation.

✅ Actionable items

  • Use a short conversation with an AI model to discuss the app idea, potential technology stacks, libraries, and relevant questions before implementation.
  • Ask the model to question your technical background and preferences, including whether you are more comfortable with JavaScript, TypeScript, or Python.
  • Choose and establish the technology stack in the repository before beginning development.
  • Start by designing only the front end and use dummy JSON instead of implementing backend architecture immediately.
  • Build the smallest viable MVP before investing in broader infrastructure or functionality.
  • Use lightweight specifications and rules, adding them incrementally as they become necessary.
  • Ask the model to create a plan and task file without implementing code, then review and modify the task list.
  • Move into implementation mode only after reviewing the task plan.
  • Use the lightweight planning modes available in tools such as Kiro, Claude Code, and Cursor.

💡 Business ideas

AI development-tool comparison benchmark website

A website that lists AI development tools and their features, lets users submit feature updates with screenshots and details, and routes submissions for review before adding them to the benchmark.

For
People evaluating and comparing AI development tools.
Solves
Makes it easier to compare AI development tools and keep feature information updated through user submissions.
  • The spec-driven version of the AI development-tool comparison website created extensive scaffolding and tests but still used dummy JSON through an API, was not finished, and required additional polishing.
Soon you can unlock the full business plan.

Behind this: 12 build steps · 7 tools and how each is used · how to validate demand · 1 more real example · 6 things the video never answers.

Inquire for details

Soon you can unlock the full business plan.

Inquire for details

🤖 AI in practice

Used for

Build a development-tool comparison web app by describing the app to an AI model instead of writing code.
Generate a structured specification for a new app feature before implementation.
Turn an app specification into a detailed technical implementation plan.
Break a planned feature into executable development tasks and track their completion.
Use AI as a short research and product-planning partner before starting an app.
Get multiple AI experts to question and shape an app idea before development.
Configure an AI coding workflow with a preferred technology stack before asking it to build features.
Iteratively design an app's front end before building its backend architecture.
Create a lightweight implementation plan for one feature, review it, and then have an AI model implement the approved tasks.

Agents

  • Specify — Guide AI-assisted app development from a feature description through specifications, planning, and task execution. 2 held

Advice

  • Use a short AI conversation to explore the product idea, technology stack, libraries, and constraints before writing implementation prompts. for A developer or founder building an app with AI.
    A small amount of up-front discussion provides useful context without the overhead of a full specification process.
  • Start the repository with the technology stack you intend to use before asking the model to build the application. for A developer using AI coding tools.
    Providing the stack early keeps the model aligned with the developer's preferred tools and skills.
  • Design the front end first with dummy JSON, and postpone backend architecture and database work until the interface and user flow are clearer. for A developer prototyping an app.
    Backend systems such as Prisma and Postgres can slow progress and introduce more errors during early exploration.
  • Build the smallest viable product, test it with yourself or a user group, and iterate before setting up a larger application and infrastructure. for A founder or developer validating an app idea.
    A project may be discarded or changed substantially, so extensive setup can waste time before the idea is validated.
  • Use lightweight, handpicked specifications and rules, adding them as needed instead of maintaining very large files. for A developer using large language models for software development.
    Feeding too much information to a model can make priorities less clear, even with a large context window.
  • Have the model create a task plan without code, review and edit it, and only then ask the model to implement the task list. for A developer seeking a middle ground between vibe coding and extensive specification.
    This provides planning and control without the overhead of a fully specification-driven workflow.

What it could not do

  • Specify's specification and planning process consumed a large amount of credits and took much longer than direct vibe coding. — The first feature took probably upwards of 40 minutes with Specify, while the equivalent vibe-coded app was running about three minutes after the first prompt.
  • The Specify-built app was not as good as the vibe-coded equivalent and did not reach a satisfactory level before the available usage reset. — The creator ran out of tokens in the five-hour Claude window while working on both projects.
  • The specification-driven app remained dependent on dummy JSON through an API instead of an actual database. — The workflow spent substantial time on application scaffolding and setup, but the database was not completed.
  • The specification-driven result was not the final design and was described as quite broken, requiring additional polishing work. — The creator found that the specification-driven approach lacked somewhat on the design side.
  • A highly rigid specification workflow fits poorly with iterative prototyping where requirements, libraries, and design change during development. — The creator described continually building a little, checking the result, and then changing libraries or design choices.
  • Large rules and specification files can confuse a model by making priorities unclear. — This can happen even with a context window of a million tokens.
  • Building backend architecture and infrastructure too early slows progress and creates more errors. — The creator specifically cited Prisma and Postgres as work to postpone during initial front-end design.

🧰 Tools & AI usage

  • Specify (Spec Kit) — Sets up a spec-driven development workflow, creates specifications and slash commands, generates plans and tasks, and can create feature branches.
  • GitHub — Hosts the Specify Spec Kit project used to obtain the development framework.
  • UV — Provides the installation prerequisite for running Specify Spec Kit.
  • Git — Creates feature branches as part of the Specify workflow.
  • Claude Code — Runs the Specify workflow and implements AI-generated development tasks.
  • ChatGPT — Provides conversational research, setup guidance, and technical discussion before implementation.
  • Claude — Acts as a conversational research and planning partner for selecting the stack and clarifying the app concept.
  • Next.js — Provides the application framework used for the comparison website and recommended as part of the creator's usual stack.
  • Neon DB — Provides the cloud database connected to the vibe-coded comparison website.
  • Prisma — Supports the database-backed application implementation.
  • shadcn — Provides the UI component approach used in the creator's preferred technology stack.

AI is used for

  • Generate specifications, requirements, acceptance scenarios, edge cases, and feature branches — Structure development work through the Specify spec-driven workflow.
  • Generate detailed implementation plans and API contracts — Translate specifications into a safety-focused, test-driven development plan.
  • Break plans into phased task lists — Provide an ordered set of implementation tasks and tests.
  • Discuss an app idea, technology stack, libraries, and technical preferences — Perform a short research and planning phase before coding.
  • Generate front-end designs using dummy JSON — Explore screens, views, and application behavior before implementing backend architecture.
  • Generate and review a task plan without writing implementation code — Plan the next feature and allow the developer to adjust priorities before implementation.
  • Implement the reviewed task list — Build the planned feature using a model's implementation mode.

🔗 Links mentioned

From this video

13 products

Build Apps With AI ChatGPT Claude Claude Code Git Neon DB Next.js Prisma Shadcn Specify Specify (Spec Kit) Three Experts Approach UV

1 business idea

📄 Transcript

Searchable transcript of Spec Driven Development is Slowing You Down: Here’s a Better Way — Rob Shocks (15:59). Search for a phrase, then click its timestamp to jump straight to that moment in the video.

Captions sourced from the original video on YouTube, published by Rob Shocks. The video, its captions and all related intellectual property remain the property of their respective owners; AINotes claims no ownership. Provided for research, accessibility and search — see the Transcript Notice and Copyright Policy.

Hey guys, welcome back. So this week saw an interesting release from the big boys GitHub in the form of Specify. So essentially it's a specd driven development tool. And in this video we're going to check out whether it's actually worth using or not. And what we're going to do to prove that out is we're actually just going to build an app. We're going to vibe code one and we're going to use spec mode in the other.

So originally my goal was to create a tutorial on how to use spec kit. But after running a few bills, I decided to do a completely different video. So, let me give you a little bit of context. So, Vibe coding took the world by storm when it allowed everyone, including 8-year-old girls on Twitter or X, to create apps without writing any code. And while this is a superpower, it kind of became obvious that you still need to understand how apps are built in general in order to make the most out of these tools.

Otherwise, you just end up in this kind of spaghetti code and lots of errors. So the answer to vibe coding to solve this spaghetti code was the idea of specd driven development. So this is creating a plan, a set of documents for agents to follow instead of just feeling around in the dark prompt by prompt. And this is a good idea, but I think the pendulum has swung too far the other way from vibe coding towards too much specification.

We've gone from vibing to being bogged down in spec files and frameworks that to be honest are really just chewing through a ton of tokens and not being used properly. So instead of a long tutorial on how to use spec kit, I'm going to quickly cover specit, show you how it works so you can try it out yourself, the pros and the cons of it, and I'm going to show you the outcome of a sideby-side test where I built the same app without spec kit, just vibe coding.

And then I'm going to give you my insights into where I think spec driven development fits versus vibe code and what I actually recommend as a middle ground based on my working with agents to develop apps over the last 2 years. So apologies if this is a departure from my usual video style. It's not going to be full of cuts and graphics and fancy things.

I'm just going to basically lay out my thoughts and hopefully that's valuable to you. So there are lots of different frameworks to help you with specd driven development. So, one of the more popular ones is BMAD. I covered that in my channel a few weeks ago. Highly recommend taking a look at that. I actually think it's a good implementation. I have my own version that I did back in February.

It's called the three experts approach. I'll link to that in the description as well. And then you have a spec mode that's built directly into the editor like Kira, which I also covered in the channel a few weeks back. So, now we've got a spec kit or specify or specify, whatever you want to call it, from GitHub owned by Microsoft. So, not a small company.

And this is their offering. And I actually think the implementation is quite good, but it has its pros and cons. So to check it out, go to spec kit. You can go to GitHub spec kit to get it. And you just run this command in whatever folder that you want to kick started. So you're going to need UV installed in order to get this to work. If you don't have that, just ask chatbt how to get that installed.

And then you just type this in with a nit project name. Now if you've already got the project set up like I normally do. So if I have Nex.js JS or something like that. Instead of putting in project name, just put in dash dash here and then it will actually set it up in that project folder. So you can see here, this is how I run it. I just hit return and then we're going to get this CLI that pops up and then you just follow the prompts.

It'll ask you if you're going to run this with GitHub Copilot, Gemini, or Claude Code. In this case, I picked Claude Code. Now, I have been using GPD5 a lot more recently because there have been some documented issues with claude code in terms of quality and Tropic just came out yesterday admitting to some issues. So, it'll be interesting to see if those are resolved over the coming weeks.

So, as I said, I was going to give you a full detailed tutorial, but I'm just going to give you the TLDDR or the most important parts I think you need to know. So, it goes and creates this.clude folder with your slash commands in here. And these three commands, plan, specify, and tasks are all that you really need to know in order to run this system.

Everything else is basically managed for you. So if I was to type in here slashsp specify, uh I would follow this prompt with an explanation of what it is I wanted to build in terms of an app, a feature, etc. So over the course of me playing with this, I developed out a dev tool comparison website, and I built this in a vibecoded version and the spec version.

And I'm going to show you those both in a second and what my process was like. But essentially, I just type in /sp specify and then put in my prompt in here and hit return. So that basically goes ahead and creates uh a set of folders here in terms of specs. The other cool thing it does is it runs a set of scripts. So let's say it wants to create a new feature.

What it does is will actually create a new feature branch for you in git. So it builds out this little spec folder then and then your specs are typically what we've seen before. You've got requirements um acceptance scenarios etc. Even building in edge cases and it's a very testdriven development orientated framework. So when you're finished with the specify step you then go and type /pl and what slash plan does is basically generates planning based on the specification that we put forward.

It comes up with a detailed plan and even a set of contracts around your API specifications and everything else. It really is quite in-depth and again very safety focused, very test-driven development focused. And so once these documents are produced, uh it's recommended that you read through them and check for any areas where it says need clarification.

So you need to kind of fill in the blanks on the document yourself. Um once you finish the plan step, then you go to the task step. And what that does then is it breaks it down into multiple different tasks that you can carry out. So let's take a look at a tasks MD file here. Here's one that I actually have carried out already. So it breaks it down into phases.

Setup, endpoint tests, component tests, integration tests, and then as it goes forward, you just say update the last task that we've done and move on to the next. And you can see it's actually filled in that it's completed that and it moves on. Now, while I really appreciated all this detail, this whole process, even just to get through the first feature took a long time and burned through a huge amount of credits.

So, I'm all for the test-driven development approach and this level of planning, but literally it took me three minutes from my first prompt to have the equivalent app running in the vibe coded version. And it took probably upwards of 40 minutes to get through this process. And to be honest, the outcome wasn't even anywhere near as good as the vibe coded equivalent.

and I ran out of tokens in my 5-hour clawed window pretty quickly running both of these projects. So, I didn't even get to a satisfactory level taking this approach. Now, what I do appreciate is just the level of detail and thinking and dotting all the eyes that we have in here. Everything that you could possibly think of in terms of a production level app.

But I think my problem is this is the best case perfect scenario for approaching software development when you have a great idea of what you want build. But the thing is in reality I find that I work very much iteratively in a prototyping sense. I'm going to develop a little bit move forward check my mind move forward again realize that I need to use a different library or I need to change something else in terms of my design.

It's kind of this constantly updating plan, but I feel like this approach for me is just a little bit too rigid and I think we need to scale it back a bit. So, I really like the implementation. I just think maybe we need to uh remove some of the overengineering here. So, what I aimed to get built in the time I had or at least the allowance that Claude was giving me for my 5hour window.

So, for context, I'm on the max plan with Claude. It gives you a certain amount of generation for 5 hours. I pretty much ran out of tokens in about an hour building both of these together before I had to wait for it to reset. So, this is how far I got in that period of time. So, what I wanted to do was create this um uh benchmark for comparing AI dev tools because it's a lot of what I do on my channel just so I can get a feel for what I like and what features are coming out.

Now, this is not any final data. This was just populated by the model itself. So don't take any of these inputs as my own. A very test-driven development approach. It put all the scaffolding in place. Put a huge amount of time into the setup of the application. But where we arrived at was it was still using dummy JSON via an API instead of an actual database.

And this wasn't the final design. I was actually quite broken. I had to do a little bit of work to get it um polished. So um what I have found with spectriven development is it does tend to lack a little bit on the design side. When you have the ability to jump in and prompt it yourself, the design ends up that little bit better. So I feel like a hybrid approach is definitely necessary.

So if we take a look at the vibecoded version, this is what I ended up with in exactly the same amount of time. So we have a much better looking website. um you have all the different tools listed, but then what's more than that is this is actually connected to a full-on database in the cloud. It's Neon DB. And so if I now want to click on any one of these different features, I get uh more details about that feature and then also the ability to submit an update.

So anyone as a user or somebody in the audience can basically say, "Oh, I've seen the clog code have now added this." and then upload a screenshot and share some details on it and submit it and then I or somebody else can review and then add it to the bench. And to be honest, my first oneshot prompt got me pretty much 90% of this functionality, not the database.

So I used Nex.js with Prisma, etc. Um, so in my case, and I know this isn't the most complex app, uh, there's just no comparison in how quickly I was able to vibe code compared to all the waiting, hanging around, and token usage I had to burn when I was in spec mode. So, in reality, I've been building apps using AI solely without writing code for about 2 years now.

Here is my take on when to use spec mode, when to use vibe code, and the kind of hybrid approach that I use in the middle. So again, we're talking about two different approaches here. We have the vibe code approach, and then we have the spec mode approach. So what I'm proposing is something more in the middle, something of a hybrid between both approaches.

So with the hybrid approach, instead of just doing a ton of planning via spec mode before you do any prompting or in the vibe code way that you just jump straight in, I suggest that you just have a conversation with uh chatbt or Claude or whoever your favorite model is in its consumer mode just to say, "Hey, this is what I'm thinking of. I want to build this kind of mobile app.

What kind of a tech stack should I use? Why should I use that?" Ask some questions. Think about the libraries that might be involved. You just want to have a conversation. Get the model to ask you questions about what you're good at. You know, if you like JavaScript, TypeScript, if you're better at Python, these kind of things all matter. Just have this conversation over and back.

Uh in a research phase that doesn't take too long. This can only be like four or five prompts. Or you can use the prompt template. Um I'll attach it down below that I use where I have a chat with three different experts. I'll chat with a UX designer, a product manager, and a software architect. And there's a set of questions they ask me to kind of get me in the right headsp space for what I want to build next.

So the next thing is actually start with a tech stack. So once I know what tech stack I want to use or typically if I build been building for a while, there's a stack that I use a lot that would be like Nex.js and shad CN. I'll input that if it's relevant and then I'll actually set that up in the repo before I do anything else. So my model actually starts with a context of how I like to build things and what it's going to use.

It's not going to suggest uh using VIT or using Django when I'm a TypeScript developer. And that just helps an awful lot in terms of context. So then I go into a design mode. So essentially what I do is I start to work only on the front end of the application. I tell the large language model only to use dummy JSON and I include that as a rule just to make sure that it keeps doing that when it goes to develop all the backend architecture all the things like Prisma and Postgres in the background.

It really slows down your progress and you get a lot more errors. I just want to figure out how the app is going to work where the screens are going to come from what the views are going to be like and that really gives me lots of ideas and then it helps me inform how the database might be built next or the model can figure that out for you. So I would go into a iterative design mode first and then I pick my MVP.

So one thing about specdriven development is it tends to just build out this huge application with all the frameworks and everything set up in place and that's probably overkill when I'm just trying to figure out what I want to build or move iteratively. I like to build the smallest viable thing possible to test out and then bring that to the market or bring it to a user group or even play around with it myself before I decide to go any further because I could decide I want to throw this out and it doesn't make any

sense. Um I don't want to have wasted a load of time in setting up projects, infrastructure, etc. So start with your smallest MVP and then kind of iterate from there. And I still use lightweight specs and rules. So, um I am for specs and I am for using rules. But what I've seen people do is they have really huge rules files, really huge specs. And that really can confuse a model that has even a large context window like a million tokens because when you're feeding it too much information, it still gets a little bit

confused as to what the priority is. So, I like to handpick my specs and my rules and build them over time and then just add them in as they are needed as the model moves forward. and it keeps it on track to the way I like to build software. And then once I'm in flow, how I work in my prompting cycle is I will get it to create the tasks first. So I'll basically have a conversation to say this is the feature I'm developing next.

Come up with a plan. Don't implement code and then I get it to generate maybe a task file. So it's just like task.md. I put it in a docs folder and it will generate what it wants to do next. I'll review that. I'll change what I think is important. Um, and then I then move into implementation mode and I get one of the models to actually run the implementation of the task list.

And you'll find that tools like KO, even claude code, cursor, they all have their kind of lightweight planning modes built in. So they will help with this as they built out each one of the tasks that you have as they as they run and they implement. So all in all, this is my hybrid method between being overly speced and overly vied. So after 2 years of building with large language models, this is the kind of approach that I feel works best for me.

I'd love to know in the comments what approaches you take. Are you more towards specri development? Are there certain frameworks that you really like to use? Or do you just like to vibe your way through, accept all changes, and just hope that everything works out. So I'm going to throw this up somewhere. I just haven't picked a domain name. So if you want to get notified when it's up and running, just drop your name in here and subscribe to the newsletter and I'll let everybody know when I have it launched.

Also, while you're in there, take a look at the course. It's got everything you need in order to learn how to build an app with AI. I also cover a lot of this stuff for free on the channel. Feel free to look through that. Uh, but if you want to accelerate yourself and get closer access to the community, I highly recommend checking it