<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yuji Yamamoto</title>
    <description>The latest articles on DEV Community by Yuji Yamamoto (@yyuji).</description>
    <link>https://dev.to/yyuji</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3772386%2Ff2ef8125-afe5-4c96-80fc-9862a7cd9610.jpg</url>
      <title>DEV Community: Yuji Yamamoto</title>
      <link>https://dev.to/yyuji</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yyuji"/>
    <language>en</language>
    <item>
      <title>Spec First, Code Later: My Spec-Driven Development Adventure with AI</title>
      <dc:creator>Yuji Yamamoto</dc:creator>
      <pubDate>Sat, 14 Feb 2026 09:30:28 +0000</pubDate>
      <link>https://dev.to/yyuji/spec-first-code-later-my-spec-driven-development-adventure-with-ai-4c7b</link>
      <guid>https://dev.to/yyuji/spec-first-code-later-my-spec-driven-development-adventure-with-ai-4c7b</guid>
      <description>&lt;h1&gt;
  
  
  Spec First, Code Later: My Spec-Driven Development Adventure with AI
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Lately, I've been seeing a lot of "I vibe-coded this thing!" posts popping up everywhere.&lt;br&gt;
Being able to build something just by going with the flow -- that's pretty amazing in its own right.&lt;/p&gt;

&lt;p&gt;But what I wanted to try was a slightly different approach:&lt;br&gt;
&lt;strong&gt;Write the specs first, then let the AI do the coding -- Spec-Driven Development.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I happened to have an upcoming presentation at work, and I went looking for a timekeeper app that fit my needs. Couldn't find one. Since I knew exactly what I wanted, and I had the perfect excuse to experiment, I thought, "Why not build it myself?"&lt;/p&gt;

&lt;p&gt;This is the story of that experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PresentationTimekeeper&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://presentation-timekeeper.pages.dev/" rel="noopener noreferrer"&gt;https://presentation-timekeeper.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A timekeeper app for presentations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs entirely in the browser (frontend only, no server needed)&lt;/li&gt;
&lt;li&gt;Set expected durations per section, track progress in real time&lt;/li&gt;
&lt;li&gt;Import/export settings as JSON&lt;/li&gt;
&lt;li&gt;Built with Vanilla JavaScript -- no frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is simple: just glance at it during your talk, and you instantly know where you are and how much time is left.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Spec-Driven Development?
&lt;/h2&gt;

&lt;p&gt;In a nutshell, it's a development style where &lt;strong&gt;the spec is the source of truth, and the AI agent handles the implementation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of tossing a vague "build me this" at the AI, you work out the requirements and design yourself, then hand those specs over to the AI for coding. You write specs instead of code -- think of the spec as your "instruction manual" for the AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing the Specs Together with AI
&lt;/h2&gt;

&lt;p&gt;For this project, I created the following documents in Markdown, collaborating with the AI on each one.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Requirements Document
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;App name, purpose&lt;/li&gt;
&lt;li&gt;Functional requirements (section setup, auto-start timer, progress display, JSON I/O, etc.)&lt;/li&gt;
&lt;li&gt;Non-functional requirements (performance, compatibility, usability)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Basic Design Document
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;System architecture (SPA, LocalStorage, no external dependencies)&lt;/li&gt;
&lt;li&gt;Tech stack (Vanilla JavaScript, CSS3)&lt;/li&gt;
&lt;li&gt;Module design&lt;/li&gt;
&lt;li&gt;Inter-module interfaces&lt;/li&gt;
&lt;li&gt;Error handling policy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. UI Design Document
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Screen list and navigation flow&lt;/li&gt;
&lt;li&gt;Screen layout design (settings screen / timer screen)&lt;/li&gt;
&lt;li&gt;UI/UX guidelines, theme and color design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Naturally, each document needed multiple rounds of back-and-forth with the AI to get right. You don't just accept the first output -- you refine it through feedback like "this requirement is missing" or "this module's responsibilities are too vague."&lt;/p&gt;

&lt;h3&gt;
  
  
  I Skipped the Detailed Design
&lt;/h3&gt;

&lt;p&gt;I decided not to create a detailed design document this time. Here's why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The basic design already covered module responsibilities, interfaces, and data structures well enough&lt;/li&gt;
&lt;li&gt;If you're letting the AI handle all the coding, you can probably skip function-level flow diagrams and UML (hopefully)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking back, this turned out to be the right call. As long as the basic design was solid, the AI generated appropriate code just fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Rules for the AI (MDC Files)
&lt;/h2&gt;

&lt;p&gt;In Cursor, you can place MDC (Markdown Configuration) files under &lt;code&gt;.cursor/rules/&lt;/code&gt; to define rules for how the AI agent should behave.&lt;/p&gt;

&lt;p&gt;Here are some of the rules I set up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't do anything extra&lt;/strong&gt;: Only execute what's explicitly asked in the prompt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't touch the specs without permission&lt;/strong&gt;: If specs need changes, ask the user first&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggestions are welcome&lt;/strong&gt;: Propose improvements, but only apply them after approval&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically: "Don't go rogue. But feel free to speak up."&lt;/p&gt;

&lt;p&gt;I found that this MDC system plays really nicely with traditional project management practices. Defining project rules, managing a WBS (Work Breakdown Structure), setting communication guidelines...&lt;/p&gt;

&lt;p&gt;With AI's dramatic arrival, it feels like we need some massive paradigm shift. But honestly, &lt;strong&gt;evolving existing project management practices for the AI era&lt;/strong&gt; seems more realistic and easier to adopt on the ground.&lt;/p&gt;

&lt;h2&gt;
  
  
  UI/UX Belongs to Vibe Coding
&lt;/h2&gt;

&lt;p&gt;On the flip side, when it came to UI/UX, I felt like &lt;strong&gt;Vibe Coding&lt;/strong&gt; was the better fit.&lt;/p&gt;

&lt;p&gt;Trying to nail down every little design detail, animation, and spacing in a spec document just isn't practical. How something feels when you interact with it -- that's best figured out by actually trying it and tweaking on the spot.&lt;/p&gt;

&lt;p&gt;That said, even here, having specs paid off. When the UI design doc already defined "what goes on which screen" and "the general color theme direction," Vibe Coding became &lt;strong&gt;less wandering and more intentional&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Specs provide the skeleton; Vibe Coding adds the flesh.&lt;br&gt;
That's the kind of balance I was able to strike.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;These days, you see a lot of ad-hoc "I just built this thing!" posts on social media. And sure -- if you know exactly what you want, just let the AI agent build it. Nothing wrong with that.&lt;/p&gt;

&lt;p&gt;But if things are still fuzzy, starting from requirements and design documents the old-fashioned way tends to produce better results. Having that "map" in the form of specs keeps both the AI and the human from getting lost.&lt;/p&gt;

&lt;p&gt;Or, even as AI reshapes how software gets built, if you're doing contract development for small and mid-sized businesses, combining a waterfall-ish approach with AI agents might just be a viable path forward.&lt;/p&gt;

&lt;p&gt;Writing specs isn't about losing your job to AI -- it's about &lt;strong&gt;sharing the work with AI&lt;/strong&gt;. That's what this experience taught me.&lt;/p&gt;

&lt;p&gt;Let's survive this together, folks :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>cursor</category>
      <category>specdrivendevelopment</category>
    </item>
  </channel>
</rss>
