<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://slmcmahon.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://slmcmahon.github.io/" rel="alternate" type="text/html" /><updated>2026-05-31T16:44:48+00:00</updated><id>https://slmcmahon.github.io/feed.xml</id><title type="html">Stephen L. McMahon</title><subtitle>Thoughts, architecture, random stuff.</subtitle><entry><title type="html">Spec Kit - Under the Hood - Part 1</title><link href="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-1.html" rel="alternate" type="text/html" title="Spec Kit - Under the Hood - Part 1" /><published>2026-06-01T00:00:00+00:00</published><updated>2026-06-01T00:00:00+00:00</updated><id>https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-1</id><content type="html" xml:base="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-1.html"><![CDATA[<h1 id="part-1-inside-spec-kit---how-prompts-context-and-llms-coordinate-to-write-software">Part 1. Inside Spec-Kit - How Prompts, Context, and LLMs Coordinate to Write Software</h1>

<p>Modern AI coding assistants often treat the Large Language Model (LLM) like a chat box - you throw code and prompts at it, and it throws code back. While this works for small scripts, it falls apart on production-grade codebases where context drift, token bloat, and hallucinations quickly compound.</p>

<p>GitHub’s <strong>Spec-Kit</strong> framework takes a radically different approach known as <strong>Spec-Driven Development (SDD)</strong>. Instead of relying on a single, massive prompt, Spec-Kit breaks the software development lifecycle into <strong>7 distinct agentic boundaries</strong>. Each boundary represents a specialized slash-command that isolates context, optimizes token usage, and interacts with the underlying LLM with a highly specific, surgical intent.</p>

<p>Here is an architectural look at how these 7 core steps choreograph their interactions with the underlying LLM to transform a raw idea into production-ready code.</p>

<h2 id="the-7-step-spec-kit-lifecycle-architecture">The 7-Step Spec-Kit Lifecycle Architecture</h2>

<p>The following sequence diagram illustrates the chronological progression of a feature within Spec-Kit. It maps out how the framework continually builds, clarifies, plans, and validates information by making isolated, targeted API requests to the LLM.</p>

<pre><code class="language-mermaid">sequenceDiagram
    autonumber
    actor Dev as Developer / Architect
    participant SK as Spec-Kit Core Engine
    participant FS as Local Workspace (Git)
    participant LLM as Underlying AI Model

    %% Step 1: Constitution
    Note over Dev, LLM: Phase 1: Governance &amp; Alignment
    Dev-&gt;&gt;SK: /speckit.constitution &lt;Define Global Rules&gt;
    SK-&gt;&gt;LLM: Evaluate Rules &amp; Generate System Prompt Guardrails
    LLM--&gt;&gt;SK: Return Optimized `.specify/memory/constitution.md`
    SK-&gt;&gt;FS: Persist Global Project Rules

    %% Step 2: Specify
    Note over Dev, LLM: Phase 2: Requirements &amp; Planning
    Dev-&gt;&gt;SK: /speckit.specify &lt;High-Level Feature Intent&gt;
    SK-&gt;&gt;FS: Read Constitution &amp; Target Templates
    SK-&gt;&gt;LLM: Context: Constitution + Feature Intent + Markdown Template
    LLM--&gt;&gt;SK: Return Structured Product Specification
    SK-&gt;&gt;FS: Write Product Spec (`specs/feature/spec.md`)

    %% Step 3: Clarify
    Dev-&gt;&gt;SK: /speckit.clarify
    SK-&gt;&gt;FS: Read `spec.md`
    SK-&gt;&gt;LLM: Context: Identify ambiguities, contradictions, or missing edge cases
    LLM--&gt;&gt;SK: Return targeted questions/gaps for the developer
    SK--&gt;&gt;Dev: Display interactive clarification prompt

    %% Step 4: Plan
    Note over Dev, LLM: Phase 3: Engineering Architecture
    Dev-&gt;&gt;SK: /speckit.plan
    SK-&gt;&gt;FS: Read Approved `spec.md` + Active Code Tree Index
    SK-&gt;&gt;LLM: Context: Spec Requirements + Existing Code Architecture
    LLM--&gt;&gt;SK: Return Implementation Plan (Files to modify, create, delete)
    SK-&gt;&gt;FS: Write Plan (`specs/feature/plan.md`)

    %% Step 5: Tasks
    Dev-&gt;&gt;SK: /speckit.tasks
    SK-&gt;&gt;FS: Read `plan.md`
    SK-&gt;&gt;LLM: Context: Plan Overview -&gt; Break down into Atomic Steps
    LLM--&gt;&gt;SK: Return Checklist of Byte-Sized Engineering Tasks
    SK-&gt;&gt;FS: Append Task List (`specs/feature/tasks.md`)

    %% Step 6: Analyze
    Note over Dev, LLM: Phase 4: Execution &amp; Verification
    Dev-&gt;&gt;SK: /speckit.analyze [Target Code Files]
    SK-&gt;&gt;FS: Read Code Files + `plan.md` + `tasks.md`
    SK-&gt;&gt;LLM: Context: Verify current state vs. intended engineering plan
    LLM--&gt;&gt;SK: Return Drift Analysis / Verification Status
    
    %% Step 7: Implement
    Dev-&gt;&gt;SK: /speckit.implement &lt;Task #&gt;
    SK-&gt;&gt;FS: Read Exact Code Target + Spec + Plan + Single Task
    SK-&gt;&gt;LLM: Context: Minimum viable code context + isolated task prompt
    LLM--&gt;&gt;SK: Return Pure Code Diffs / New File Content
    SK-&gt;&gt;FS: Apply patches to local workspace files
</code></pre>

<h2 id="deconstructing-the-llm-interaction-mechanics">Deconstructing the LLM Interaction Mechanics</h2>

<p>To understand why Spec-Kit is so efficient, we have to look at what is happening under the hood during these API payloads. The architecture solves the “Maximum Context Window” problem by strict categorization.</p>

<h3 id="1-context-isolation-the-anti-bloat-strategy">1. Context Isolation (The “Anti-Bloat” Strategy)</h3>

<p>In a typical AI chat assistant, if you are on step 7 (writing code), your chat history contains the original feature request, the mid-way arguments, the architectural debates, and old code snippets. The LLM has to parse thousands of redundant tokens.</p>

<p>Spec-Kit completely severs this history. Notice in <strong>Step 7 (/speckit.implement)</strong>, the engine does <em>not</em> pass the entire conversation history to the model. Instead, it programmatically constructs a clean payload consisting of:</p>

<ul>
  <li>The <strong>Global Governance</strong> (<code class="language-plaintext highlighter-rouge">constitution.md</code>)</li>
  <li>The <strong>Isolated Architectural Task</strong> (<code class="language-plaintext highlighter-rouge">tasks.md</code> step #3)</li>
  <li>The <strong>Target File</strong> needing modification.</li>
</ul>

<p>By keeping the context window laser-focused, the model has fewer variables to juggle, resulting in near-zero code hallucination rates.</p>

<h3 id="2-state-driven-handshakes">2. State-Driven Handshakes</h3>

<p>Each slash-command acts as a state transition. The output of one LLM call becomes the foundational structural input for the next:</p>

<ul>
  <li><strong>The Product Handshake:</strong> <code class="language-plaintext highlighter-rouge">/speckit.specify</code> takes business intent and outputs structural markdown.</li>
  <li><strong>The Engineering Handshake:</strong> <code class="language-plaintext highlighter-rouge">/speckit.plan</code> consumes that markdown, matches it against your repository’s abstract syntax tree (AST), and outputs structural architecture.</li>
  <li><strong>The Execution Handshake:</strong> <code class="language-plaintext highlighter-rouge">/speckit.tasks</code> parses the architecture into discrete execution blocks.</li>
</ul>

<p>Because the data passed between steps is written to disk as clear markdown files (<code class="language-plaintext highlighter-rouge">spec.md</code>, <code class="language-plaintext highlighter-rouge">plan.md</code>), human developers can step in, modify the state manually, and the LLM will seamlessly pick up the new source of truth on the next command.</p>

<h2 id="whats-next-in-this-series">What’s Next in This Series</h2>

<p>Now that we have mapped out the global data flow and the 7 core touchpoints between Spec-Kit and the LLM, we can begin optimizing them.</p>

<p>In the upcoming articles in this best-practices series, we will dive deep into each individual command to look at exact prompt payloads, token budget management, and markdown design patterns:</p>

<ul>
  <li><a href="/2026/06/01/spec-kit-under-the-hood-2.html"><strong>Part 2:</strong> Drafting an Immutable Constitution (Optimizing Global Prompts)</a></li>
  <li><a href="/2026/06/01/spec-kit-under-the-hood-3.html"><strong>Part 3:</strong> The Specify &amp; Clarify Loop (Extracting Bulletproof Requirements Without Token Bloat)</a></li>
  <li><a href="/2026/06/01/spec-kit-under-the-hood-4.html"><strong>Part 4:</strong> Blueprint to Code (How /speckit.plan and /speckit.tasks prevent architectural drift)</a></li>
  <li><a href="/2026/06/01/spec-kit-under-the-hood-5.html"><strong>Part 5</strong>: Execution, Validation, and Customization (Surgical Code Generation without Model Fatigue)</a></li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[Part 1. Inside Spec-Kit - How Prompts, Context, and LLMs Coordinate to Write Software]]></summary></entry><entry><title type="html">Spec Kit - Under the Hood - Part 2</title><link href="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-2.html" rel="alternate" type="text/html" title="Spec Kit - Under the Hood - Part 2" /><published>2026-06-01T00:00:00+00:00</published><updated>2026-06-01T00:00:00+00:00</updated><id>https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-2</id><content type="html" xml:base="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-2.html"><![CDATA[<h1 id="part-2-drafting-an-immutable-constitution---optimizing-global-prompts">Part 2. Drafting an Immutable Constitution - Optimizing Global Prompts</h1>

<p>In the <a href="/2026/06/01/spec-kit-under-the-hood-1.html">first article</a> of this series, we mapped out the 7-step lifecycle of Spec-Kit and introduced the concept of <strong>Context Isolation</strong>. We established that the local files in your repository serve as an immutable state machine, allowing us to sever conversational chat history and keep LLM payloads lean.</p>

<p>But context isolation only works if the model still understands your organizational boundaries, architectural stacks, and security compliance rules. If we don’t pass this information in a chat history, where does it live?</p>

<p>It lives in the <strong>Constitution</strong> (<code class="language-plaintext highlighter-rouge">.specify/memory/constitution.md</code>).</p>

<p>The constitution is the universal ballast of your Spec-Kit environment. It is programmatically injected as a foundational system prompt into almost every single slash-command execution. Because it is omnipresent, an unoptimized constitution is the single greatest contributor to token bloat and model fatigue.</p>

<p>Let’s look under the hood at how the engine processes the constitution, how to optimize its structural token footprint, and how to write rules that enforce strict compliance without wasting computing resources.</p>

<h2 id="the-mechanical-lifecycle-of-speckitconstitution">The Mechanical Lifecycle of <code class="language-plaintext highlighter-rouge">/speckit.constitution</code></h2>

<p>The constitution isn’t just a static markdown document you write by hand and leave alone. It is an agentically managed artifact initialized and optimized via the <code class="language-plaintext highlighter-rouge">/speckit.constitution</code> command.</p>

<pre><code class="language-mermaid">sequenceDiagram
    autonumber
    actor Arch as Software Architect
    participant SK as Spec-Kit Core Engine
    participant LLM as Underlying AI Model
    participant FS as Local Workspace (.specify/)

    Arch-&gt;&gt;SK: Run `/speckit.constitution &lt;Raw Business &amp; Tech Rules&gt;`
    activate SK
    Note over SK,LLM: Compilation Phase
    SK-&gt;&gt;LLM: Pass Raw Rules + Compression Template
    Note over LLM: Strips narrative prose,&lt;br/&gt;deduplicates rules,&lt;br/&gt;formats into declarative tokens.
    LLM--&gt;&gt;SK: Return Token-Dense Markdown Text
    SK-&gt;&gt;FS: Write to `.specify/memory/constitution.md`
    deactivate SK
    Note over Arch,FS: The Constitution is now automatically injected into all future commands.
</code></pre>

<p>When you execute <code class="language-plaintext highlighter-rouge">/speckit.constitution</code>, the engine takes your messy internal wikis, compliance bullet points, and tech stack choices, and passes them to the LLM alongside a strict compression meta-template. The model’s job during this initialization phase is to act as a compiler: it strips out linguistic fluff, groups overlapping rules, and outputs a highly dense, declarative markdown schema designed for optimal token weight and semantic clarity.</p>

<h2 id="anatomy-of-a-high-efficiency-constitution">Anatomy of a High-Efficiency Constitution</h2>

<p>To prevent your constitution from eating up your entire context window, the document must be strictly compartmentalized. A high-efficiency constitution should be capped at <strong>500 to 800 tokens</strong> and strictly adhere to a flat, three-sector layout:</p>

<h3 id="1-the-global-guardrails-negative-constraints">1. The Global Guardrails (Negative Constraints)</h3>

<p>LLMs respond with much higher fidelity to negative constraints (“Never do X”) than to passive suggestions (“Try to avoid X”). This section must be reserved for non-negotiable boundaries like security, privacy, and compliance.</p>

<ul>
  <li><strong>Flabby (Wastes Tokens):</strong> <em>“We need to make sure that we are keeping user data safe. Please do not log passwords or any personally identifiable information to the console because it violates our security policy.”</em></li>
  <li><strong>Lean (Saves Tokens):</strong> <code class="language-plaintext highlighter-rouge">* NEVER: Log PII, credentials, or session tokens to application logs.</code></li>
</ul>

<h3 id="2-the-architectural-stack-hard-assertions">2. The Architectural Stack (Hard Assertions)</h3>

<p>Do not allow the model to guess your infrastructure or propose alternative libraries. If your team uses a specific stack, state it as a hard constraint. This eliminates the need for downstream planning agents to debate architectural patterns.</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gu">### ARCHITECTURAL STACK</span>
<span class="p">*</span> BACKEND: .NET 8 Web API, C# 12
<span class="p">*</span> ORM: Entity Framework Core (Code-First)
<span class="p">*</span> DATABASE: PostgreSQL
<span class="p">*</span> OBSERVABILITY: OpenTelemetry protocol (OTLP) to Cloud Trace
</code></pre></div></div>

<h3 id="3-context-boundaries-scope-enforcers">3. Context Boundaries (Scope Enforcers)</h3>

<p>This section defines the high-level business domain of your system so the model understands the ambient language of your codebase without needing a massive dictionary file.</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gu">### SYSTEM CONTEXT</span>
<span class="p">*</span> DOMAIN: Enterprise Asset Management (EAM)
<span class="p">*</span> TARGET AUDIENCE: Field engineers operating with intermittent network connectivity.
<span class="p">*</span> CORE STATE: Offline-first synchronization via local SQLite caching.
</code></pre></div></div>

<h2 id="token-economics-calculating-the-constitution-tax">Token Economics: Calculating the Constitution Tax</h2>

<p>Why are we being so aggressive about the word count of a single markdown file? Because of the <strong>Multiplication Tax</strong>.</p>

<p>Consider a typical feature development cycle consisting of 1 specification, 1 clarification loop, 1 planning execution, and 5 separate task implementations (8 distinct LLM interactions total).</p>

<p>Let’s look at the compounding cost math between a bloated constitution and a streamlined one:</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>The Bloated Constitution</th>
      <th>The Streamlined Constitution</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Character/Word Count</strong></td>
      <td>~2,500 words (Narrative style)</td>
      <td>~500 words (Declarative style)</td>
    </tr>
    <tr>
      <td><strong>Token Cost per Request</strong></td>
      <td>~3,200 tokens</td>
      <td>~650 tokens</td>
    </tr>
    <tr>
      <td><strong>Total Cost for 8-Step Lifecycle</strong></td>
      <td><strong>25,600 input tokens</strong></td>
      <td><strong>5,200 input tokens</strong></td>
    </tr>
    <tr>
      <td><strong>Model Attention Degradation</strong></td>
      <td>High (Lost in the Middle)</td>
      <td>Near Zero (High Density)</td>
    </tr>
  </tbody>
</table>

<p>By treating your constitution like production source code—refactoring it, compressing its grammar, and removing conversational noise—you save nearly <strong>80% of your foundational input tokens</strong> before your developers even type their first line of functional intent.</p>

<h2 id="the-golden-rule-of-constitutional-governance">The Golden Rule of Constitutional Governance</h2>

<p>The most critical operational rule when managing your Spec-Kit environment is this: <strong>If a constraint applies to less than 80% of your application, remove it from the constitution.</strong></p>

<p>Local feature variations do not belong in global memory. If a single feature requires specialized encryption or a unique UI framework, that rule belongs inside the explicit user prompt passed to <code class="language-plaintext highlighter-rouge">/speckit.specify</code> for <em>that feature alone</em>. Keep your constitution pure, systemic, and absolute.</p>

<h2 id="whats-next">What’s Next</h2>

<p>Now that we have established an immutable, token-optimized global playground via our constitution, we can safely allow our developers to begin defining features.</p>

<p>In <a href="/2026/06/01/spec-kit-under-the-hood-3.html"><strong>Part 3: The Specify &amp; Clarify Loop</strong></a>, we will analyze the mechanical handshake between <code class="language-plaintext highlighter-rouge">/speckit.specify</code> and <code class="language-plaintext highlighter-rouge">/speckit.clarify</code>, exploring how to extract rock-solid product requirements from a tiny seed prompt without triggering a massive rewriting tax.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Part 2. Drafting an Immutable Constitution - Optimizing Global Prompts]]></summary></entry><entry><title type="html">Spec Kit - Under the Hood - Part 3</title><link href="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-3.html" rel="alternate" type="text/html" title="Spec Kit - Under the Hood - Part 3" /><published>2026-06-01T00:00:00+00:00</published><updated>2026-06-01T00:00:00+00:00</updated><id>https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-3</id><content type="html" xml:base="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-3.html"><![CDATA[<h1 id="part-3-the-specify-and-clarify-loop---extracting-bulletproof-requirements-without-token-bloat">Part 3. The Specify and Clarify Loop - Extracting Bulletproof Requirements Without Token Bloat</h1>

<p>In <a href="/2026/06/01/spec-kit-under-the-hood-2.html">Part 2</a>, we optimized the global playground by compressing the constitution down to a lean, declarative set of immutable rules. With our system constraints solidified, we can now look at how Spec-Kit initiates a new feature.</p>

<p>The entry point of any new piece of functionality relies on a tight coordination loop between two commands: <code class="language-plaintext highlighter-rouge">/speckit.specify</code> and <code class="language-plaintext highlighter-rouge">/speckit.clarify</code>.</p>

<p>In traditional AI workflows, this is where massive token waste occurs. Developers often write extensive, unstructured prompts, or worse, get locked into long, conversational chat debates with an AI agent trying to refine a document. Every adjustment forces the model to re-digest the entire chat history and re-generate a massive markdown file from scratch—a massive “re-generation tax.”</p>

<p>Spec-Kit completely bypasses this loop by enforcing a <strong>file-first state architecture</strong>. Let’s peel back the curtain on the underlying mechanics of the specify-and-clarify loop to see how it extracts ironclad product requirements while protecting your token budget.</p>

<h2 id="the-mechanical-handshake-state-driven-progress">The Mechanical Handshake: State-Driven Progress</h2>

<p>The core architectural principle of Spec-Kit is that <strong>memory belongs in the repository files, not in the LLM’s active chat window.</strong> Instead of relying on a persistent chat thread to handle iterative changes, Spec-Kit treats individual slash-commands as stateless functions that read and write directly to disk.</p>

<p>The loop moves through three distinct micro-phases, shifting the source of truth between the developer, the file system, and specialized agent layers:</p>

<pre><code class="language-mermaid">sequenceDiagram
    autonumber
    actor Dev as Developer / Architect
    participant FS as Local Workspace (Git)
    participant SK as Spec-Kit Core Engine
    participant LLM as Underlying AI Model

    %% Phase 1: Generation
    Note over Dev, LLM: Phase 1: Clean Generation
    Dev-&gt;&gt;SK: Run `/speckit.specify` with Minimal Intent Prompt
    SK-&gt;&gt;FS: Read Constitution (`constitution.md`) + Spec Blueprint Template
    SK-&gt;&gt;LLM: Construct Payload: [Constitution] + [Template] + [Minimal Prompt]
    LLM--&gt;&gt;SK: Return Populated Markdown Structure
    SK-&gt;&gt;FS: Write First-Draft Spec to `specs/feature/spec.md`
    SK--&gt;&gt;Dev: Stream Completion Message &amp; Close Prompt Window

    %% Phase 2: Manual Intervention
    Note over Dev, FS: Phase 2: File-First Manual Triage
    Dev-&gt;&gt;FS: Open `spec.md`, read, and directly type manual corrections
    Note over Dev, FS: Minor gaps and explicit business rules are fixed natively on disk.

    %% Phase 3: Automated Analysis
    Note over Dev, LLM: Phase 3: Bounded Clarification Analysis
    Dev-&gt;&gt;SK: Run `/speckit.clarify`
    SK-&gt;&gt;FS: Read Manually Adjusted `spec.md`
    SK-&gt;&gt;LLM: Construct Payload: Analyze `spec.md` for logical blind spots only
    LLM--&gt;&gt;SK: Return 3-5 Targeted, High-Density Questions
    SK--&gt;&gt;Dev: Display interactive clarification prompt
    Dev-&gt;&gt;SK: Submit concise answers
    SK-&gt;&gt;FS: Append clarifications directly to `spec.md` [Clarifications] block
</code></pre>

<h2 id="phase-1-designing-the-input-payload-speckitspecify">Phase 1: Designing the Input Payload (<code class="language-plaintext highlighter-rouge">/speckit.specify</code>)</h2>

<p>When a developer executes <code class="language-plaintext highlighter-rouge">/speckit.specify</code>, the agent’s prompt builder creates a tightly partitioned context window. It pulls the global <code class="language-plaintext highlighter-rouge">constitution.md</code>, reads the empty <code class="language-plaintext highlighter-rouge">templates/spec.md</code> blueprint, and appends the user’s raw input.</p>

<p>Because the target layout and global constraints are already provided by the system, the user prompt does not need to be a long, narrative essay. To get the highest fidelity out of the underlying model, train your engineering team to use a highly dense <strong>“What-Why-Who-Limits” block format</strong>:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/speckit.specify 
- WHAT: A drag-and-drop file uploader inside user profile settings.
- WHY: Users report that clicking a native file picker feels outdated.
- WHO: Standard authenticated users.
- LIMITS: Max 5MB per upload, JPEG or PNG formats only.
</code></pre></div></div>

<p>The model takes this small seed of intent, aligns it against your architectural stack inside the constitution, and maps it directly into the target markdown sections (User Stories, Core Workflows, Event Boundaries, and Acceptance Criteria) before immediately dropping the session context.</p>

<h2 id="phase-2-bypassing-the-chat-window-via-file-first-adjustments">Phase 2: Bypassing the Chat Window via File-First Adjustments</h2>

<p>Once <code class="language-plaintext highlighter-rouge">specs/feature/spec.md</code> is written to your workspace, <strong>the initial LLM chat context should be cleared.</strong> If you notice a typo, a missing business requirement, or a minor misinterpretation in the generated file, <strong>do not type a follow-up message into the agent chat window.</strong> * <strong>The Bad Way (Conversational):</strong> Prompting <em>“Hey, you missed the requirement that images should be compressed client-side before uploading, please fix that”</em> forces the LLM to process your system prompt, your original prompt, the 1,000-token markdown specification it just generated, and your correction. It then spends output tokens completely rewriting the entire 1,000-token file just to insert one sentence.</p>

<ul>
  <li><strong>The Spec-Kit Way (File-First):</strong> Open <code class="language-plaintext highlighter-rouge">specs/feature/spec.md</code> in your editor and type the constraint yourself: <code class="language-plaintext highlighter-rouge">- Must compress images client-side down to &lt; 1MB before hitting the API.</code></li>
</ul>

<p>It takes a human 5 seconds to type a bullet point. By modifying the file directly on disk, you completely eliminate the re-generation tax and preserve perfect context hygiene for the next phase.</p>

<h2 id="phase-3-isolating-analytical-reasoning-speckitclarify">Phase 3: Isolating Analytical Reasoning (<code class="language-plaintext highlighter-rouge">/speckit.clarify</code>)</h2>

<p>Once you have applied your known corrections to the local markdown file, it is time to hunt for unhandled exceptions. This is the explicit job of <code class="language-plaintext highlighter-rouge">/speckit.clarify</code>.</p>

<p>Unlike the specify agent—which is optimized to <em>write and expand</em> requirements—the clarify agent is a highly specialized, defensive critic. When executed, it pulls your local <code class="language-plaintext highlighter-rouge">spec.md</code> file from disk and evaluates it with a single, isolated prompt mandate: <strong>Find logical contradictions, ambiguous state flows, or missing failure paths.</strong></p>

<p>The model doesn’t rewrite anything yet. It simply outputs 3 to 5 highly specific questions directly to the terminal or agent chat interface:</p>

<blockquote>
  <ol>
    <li><em>What should happen to the UI if an upload fails mid-transit due to a dropped network connection?</em></li>
    <li><em>Do we need to retain an audit log of rejected file uploads, or do we only log successful profile updates?</em></li>
  </ol>
</blockquote>

<p>When you answer these targeted questions, the agent doesn’t rewrite the whole specification. It surgically appends your exact answers into a dedicated <code class="language-plaintext highlighter-rouge">## Clarifications</code> appendix at the bottom of your local file.</p>

<h2 id="the-efficiency-payoff">The Efficiency Payoff</h2>

<p>By decoupling requirement expansion (<code class="language-plaintext highlighter-rouge">.specify</code>) from analytical audit loops (<code class="language-plaintext highlighter-rouge">.clarify</code>), and routing human adjustments directly through git-managed markdown files, Spec-Kit drastically reduces the token footprint of the product lifecycle phase.</p>

<table>
  <thead>
    <tr>
      <th>Metric / Scenario</th>
      <th>Conversational Chatbot Workflow</th>
      <th>Spec-Kit Decoupled Loop</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Iterative Edits</strong></td>
      <td>3-4 prompt adjustments rewriting the full document.</td>
      <td>Direct manual disk edits + 1 localized clarification append.</td>
    </tr>
    <tr>
      <td><strong>Total Input Tokens</strong></td>
      <td>~12,000+ tokens (compounding history)</td>
      <td>~1,800 tokens (stateless, isolated steps)</td>
    </tr>
    <tr>
      <td><strong>Total Output Tokens</strong></td>
      <td>~4,000 tokens (frequent full-file rewrites)</td>
      <td>~1,200 tokens (1 initial write + minor text appends)</td>
    </tr>
    <tr>
      <td><strong>Context Drift Risk</strong></td>
      <td>High (Model drops rules as history expands)</td>
      <td>Zero (Disk-backed file stays perfectly bounded)</td>
    </tr>
  </tbody>
</table>

<h2 id="whats-next">What’s Next</h2>

<p>Your specification file is now locked down, verified by a human, hardened by an automated critique, and saved cleanly to disk under 300 lines of highly accurate text.</p>

<p>In <a href="/2026/06/01/spec-kit-under-the-hood-4.html"><strong>Part 4: Blueprint to Code</strong></a>, we will move out of product requirements and dive into engineering execution, analyzing how <code class="language-plaintext highlighter-rouge">/speckit.plan</code> and <code class="language-plaintext highlighter-rouge">/speckit.tasks</code> consume this markdown state to map out architectural changes across your repository without inducing context window fatigue.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Part 3. The Specify and Clarify Loop - Extracting Bulletproof Requirements Without Token Bloat]]></summary></entry><entry><title type="html">Spec Kit - Under the Hood - Part 4</title><link href="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-4.html" rel="alternate" type="text/html" title="Spec Kit - Under the Hood - Part 4" /><published>2026-06-01T00:00:00+00:00</published><updated>2026-06-01T00:00:00+00:00</updated><id>https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-4</id><content type="html" xml:base="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-4.html"><![CDATA[<h1 id="part-4-blueprint-to-code---how-speckitplan-and-speckittasks-prevent-architectural-drift">Part 4. Blueprint to Code - How speckit.plan and speckit.tasks Prevent Architectural Drift</h1>

<p>Up to this point in our best-practices series, our focus has been entirely within the domain of product requirements. We used <code class="language-plaintext highlighter-rouge">.constitution</code> to establish the global guardrails, and we synchronized <code class="language-plaintext highlighter-rouge">.specify</code> and <code class="language-plaintext highlighter-rouge">.clarify</code> to build a dense, hardened product specification (<code class="language-plaintext highlighter-rouge">spec.md</code>) under 300 lines of text.</p>

<p>Now comes the critical pivot in Spec-Driven Development (SDD): <strong>translating business requirements into an engineering architecture.</strong></p>

<p>In standard AI assistance workflows, developers often paste their specification file along with five or six raw source files into a chat box and say, <em>“Implement this.”</em> This is an invitation for disaster. The LLM tries to simultaneously reason through product logic, parse large blocks of code syntax, and invent an implementation strategy on the fly. The result is almost always architectural drift, hallucinated APIs, and broke dependencies.</p>

<p>Spec-Kit solves this by splitting engineering execution into two distinct, highly isolated steps: <code class="language-plaintext highlighter-rouge">/speckit.plan</code> and <code class="language-plaintext highlighter-rouge">/speckit.tasks</code>. Let’s look under the hood at the underlying data coordination and LLM interaction mechanics of this engineering transition.</p>

<h2 id="the-mechanical-boundary-architecture-vs-break-down">The Mechanical Boundary: Architecture vs. Break-Down</h2>

<p>The core rule of context management during engineering execution is that <strong>designing a plan is a completely separate cognitive task from scheduling atomic work.</strong> The transition is handled via a programmatic two-step handshake that converts your requirement document into a technical blueprint, and then into an actionable, byte-sized checklist.</p>

<pre><code class="language-mermaid">sequenceDiagram
    autonumber
    actor Dev as Developer / Architect
    participant FS as Local Workspace (Git)
    participant SK as Spec-Kit Core Engine
    participant LLM as Underlying AI Model

    %% Step 4: Planning
    Note over Dev, LLM: Phase 1: Architectural Mapping
    Dev-&gt;&gt;SK: Run `/speckit.plan`
    SK-&gt;&gt;FS: Read `spec.md` + Active Codebase Tree Index (AST File Paths)
    SK-&gt;&gt;LLM: Context: Global Constitution + Final Spec + Code Repository Outline
    Note over LLM: Evaluates where requirements intersect&lt;br/&gt;with existing file structures.
    LLM--&gt;&gt;SK: Return Structural Implementation Plan
    SK-&gt;&gt;FS: Write Plan to `specs/feature/plan.md`

    %% Step 5: Tasking
    Note over Dev, LLM: Phase 2: Actionable Task Break-Down
    Dev-&gt;&gt;SK: Run `/speckit.tasks`
    SK-&gt;&gt;FS: Read `plan.md`
    SK-&gt;&gt;LLM: Context: Read Implementation Plan Only
    Note over LLM: Breaks down macro architectural changes&lt;br/&gt;into sequential, isolated code tasks.
    LLM--&gt;&gt;SK: Return Checklist of Atomic Tasks
    SK-&gt;&gt;FS: Append Checklist to `specs/feature/tasks.md`
</code></pre>

<h2 id="phase-1-the-context-injection-matrix-of-speckitplan">Phase 1: The Context Injection Matrix of <code class="language-plaintext highlighter-rouge">/speckit.plan</code></h2>

<p>When you run <code class="language-plaintext highlighter-rouge">/speckit.plan</code>, the agent doesn’t read your entire codebase line-by-line—doing so would immediately exhaust your token window and inject massive amounts of noisy syntax into the model’s short-term memory.</p>

<p>Instead, Spec-Kit constructs a high-level representation of your repository. It builds a payload consisting of:</p>

<ol>
  <li><strong>The Global Constitution:</strong> (To remind the model of your core stack, e.g., Next.js, .NET 8, PostgreSQL).</li>
  <li><strong>The Finalized spec.md:</strong><code class="language-plaintext highlighter-rouge">spec.md</code> (The business requirements source of truth).</li>
  <li><strong>The Repository File Tree Index:</strong> An abstract layout of file paths, directories, and top-level entry points (controllers, routing files, data contexts).</li>
</ol>

<p>The model evaluates these three inputs to map out the surface area of the change. It identifies exactly which existing files must be modified, which new files must be created, and which files can remain untouched.</p>

<p>The output is written to disk as <code class="language-plaintext highlighter-rouge">specs/feature/plan.md</code>. This file acts as a high-level blueprint:</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gu">## Implementation Plan: Drag-and-Drop Photo Upload</span>

<span class="gu">### Proposed Changes</span>
<span class="p">*</span> CREATE: <span class="sb">`src/components/ui/FileUploader.tsx`</span> (New client component)
<span class="p">*</span> MODIFY: <span class="sb">`src/app/settings/profile/page.tsx`</span> (Integrate uploader component)
<span class="p">*</span> MODIFY: <span class="sb">`src/api/profile/upload/route.ts`</span> (Handle payload size validation)

<span class="gu">### Data Flow Impact</span>
<span class="p">*</span> Component triggers client-side compression -&gt; POST request to api route -&gt; updates profile state.
</code></pre></div></div>

<h2 id="phase-2-protecting-attention-via-atomic-break-down-speckittasks">Phase 2: Protecting Attention via Atomic Break-Down (<code class="language-plaintext highlighter-rouge">/speckit.tasks</code>)</h2>

<p>Once <code class="language-plaintext highlighter-rouge">plan.md</code> is written, you have a solid architectural map. But you still shouldn’t write code yet. A macro plan like <em>“Modify the API route to handle payload size validation”</em> contains multiple distinct steps. If an LLM attempts to execute that entire line at once, it will likely skip edge cases or fail to write clean error handling.</p>

<p>This is where <code class="language-plaintext highlighter-rouge">/speckit.tasks</code> steps in, enforcing a strict context filter.</p>

<p>When you run <code class="language-plaintext highlighter-rouge">/speckit.tasks</code>, the engine <strong>completely isolates the payload.</strong> It does <em>not</em> look back at the original <code class="language-plaintext highlighter-rouge">spec.md</code>, nor does it pull the repository file index again. It reads <strong>only</strong> the <code class="language-plaintext highlighter-rouge">plan.md</code> blueprint. It asks the model a single, highly focused question: <em>“Break this macro architectural plan down into sequential, atomic execution blocks that a single agent can write without changing contexts.”</em></p>

<p>The model outputs a highly granular, checklist-style markdown file (<code class="language-plaintext highlighter-rouge">specs/feature/tasks.md</code>):</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gu">## Task List: Photo Upload Implementation</span>
<span class="p">
-</span> [ ] Task 1: Create <span class="sb">`FileUploader.tsx`</span> with basic drag-and-drop UI and file type constraints.
<span class="p">-</span> [ ] Task 2: Implement client-side image compression logic inside <span class="sb">`FileUploader.tsx`</span>.
<span class="p">-</span> [ ] Task 3: Update <span class="sb">`route.ts`</span> to implement 5MB hard boundaries and throw explicit HTTP 413 exceptions.
<span class="p">-</span> [ ] Task 4: Integrate <span class="sb">`FileUploader.tsx`</span> into the profile settings page view.
</code></pre></div></div>

<h2 id="why-the-plantask-split-protects-token-budgets">Why the Plan/Task Split Protects Token Budgets</h2>

<p>By separating planning from task extraction, Spec-Kit avoids the <strong>“Reasoning Overload”</strong> that tanks typical AI coding assistants.</p>

<p>If you bundle planning and tasking into a single step, the model has to balance product logic, file paths, structural architecture, and micro-coding tasks all in the same output generation. The model’s attention is spread thin across multiple cognitive layers, leading to generic plans and missed requirements.</p>

<p>By forcing a hard file boundary between <code class="language-plaintext highlighter-rouge">plan.md</code> and <code class="language-plaintext highlighter-rouge">tasks.md</code>, the model has a single objective per command:</p>

<ul>
  <li>
    <p><strong>The Planning Command</strong> only focuses on <strong>Where</strong> changes happen.</p>
  </li>
  <li>
    <p><strong>The Tasking Command</strong> only focuses on <strong>How</strong> to break those changes into a sequential timeline.</p>
  </li>
</ul>

<h2 id="whats-next">What’s Next</h2>

<p>Your feature has been analyzed, planned, and broken down into a hyper-focused checklist of independent engineering blocks. The architecture is locked down on disk.</p>

<p>In <a href="/2026/06/01/spec-kit-under-the-hood-5.html"><strong>Part 5: Execution, Validation, and Customization</strong></a>, we will explore the final phase of the Spec-Kit lifecycle: running <code class="language-plaintext highlighter-rouge">/speckit.implement</code> against our isolated task list, applying surgical code diffs to our repository, and using quality gates to ensure the final code perfectly aligns with our initial constitution.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Part 4. Blueprint to Code - How speckit.plan and speckit.tasks Prevent Architectural Drift]]></summary></entry><entry><title type="html">Spec Kit - Under the Hood - Part 5</title><link href="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-5.html" rel="alternate" type="text/html" title="Spec Kit - Under the Hood - Part 5" /><published>2026-06-01T00:00:00+00:00</published><updated>2026-06-01T00:00:00+00:00</updated><id>https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-5</id><content type="html" xml:base="https://slmcmahon.github.io/2026/06/01/spec-kit-under-the-hood-5.html"><![CDATA[<h1 id="part-5-execution-validation-and-customization---surgical-code-generation-without-model-fatigue">Part 5. Execution, Validation, and Customization - Surgical Code Generation without Model Fatigue</h1>

<p>We have arrived at the final frontier of the Spec-Kit lifecycle. Up to this point, our repository has accumulated an airtight, file-backed trail of markdown states: <code class="language-plaintext highlighter-rouge">.constitution</code> enforces our global engineering guardrails, <code class="language-plaintext highlighter-rouge">spec.md</code> outlines the verified product requirements, <code class="language-plaintext highlighter-rouge">plan.md</code> maps the targeted file architecture, and <code class="language-plaintext highlighter-rouge">tasks.md</code> breaks the work down into an atomic, sequential checklist.</p>

<p>Now, it is finally time to write code.</p>

<p>In a standard AI development workflow, this is where projects derail. Developers typically open their IDE chat panel, point the AI at an entire folder of source files, and ask it to execute a large feature. The model is forced to process thousands of lines of code syntax, track product logic, and maintain architectural constraints simultaneously. This massive cognitive load causes model fatigue, leading to dropped requirements, broken imports, and code regression.</p>

<p>Spec-Kit completely eliminates this problem by turning the execution phase into a highly restricted, automated production assembly line driven by <code class="language-plaintext highlighter-rouge">/speckit.analyze</code> and <code class="language-plaintext highlighter-rouge">/speckit.implement</code>. Let’s look at how this phase manages context at a surgical level to generate production-ready code with zero bloat.</p>

<h2 id="the-mechanical-boundary-code-generation-in-isolation">The Mechanical Boundary: Code Generation in Isolation</h2>

<p>The foundational rule of Spec-Kit’s execution phase is that <strong>the LLM should never be allowed to look at the entire task list or the entire codebase while writing code.</strong> Instead, the Spec-Kit core engine constructs a hyper-focused, minimum viable context payload for every single line of code it modifies. It processes your checklist using a strict token-diet loop:</p>

<pre><code class="language-mermaid">sequenceDiagram
    autonumber
    actor Dev as Developer / Architect
    participant FS as Local Workspace (Git)
    participant SK as Spec-Kit Core Engine
    participant LLM as Underlying AI Model

    %% Step 1: Validation Gate
    Note over Dev, LLM: Phase 1: Pre-Implementation Quality Gate
    Dev-&gt;&gt;SK: Run `/speckit.analyze`
    SK-&gt;&gt;FS: Read `spec.md` + `plan.md` + `tasks.md` + Local Code Base
    SK-&gt;&gt;LLM: Verify all engineering files are synchronized and free of drift
    LLM--&gt;&gt;SK: Return Validation Approval (Green Light)
    SK--&gt;&gt;Dev: Display Clean Status Report

    %% Step 2: Bounded Execution
    Note over Dev, LLM: Phase 2: Bounded Bounded Execution Loop
    Dev-&gt;&gt;SK: Run `/speckit.implement tasks 1-2`
    
    loop For Each Isolated Task
        SK-&gt;&gt;FS: Read Global Constitution + Current Task Block Only
        SK-&gt;&gt;FS: Pull Target Source File Only (e.g., `FileUploader.tsx`)
        SK-&gt;&gt;LLM: Construct Payload: [Constitution] + [Task 1 Description] + [Target File Content]
        Note over LLM: Focuses 100% of attention window&lt;br/&gt;on a single code file and task.
        LLM--&gt;&gt;SK: Return Targeted Patch / Code Diff
        SK-&gt;&gt;FS: Surgically apply code diff to local workspace
    end
    
    SK--&gt;&gt;Dev: Execution Complete. Stream Changes for Local Compilation &amp; Test Review.
</code></pre>

<h2 id="phase-1-the-pre-implementation-quality-gate-speckitanalyze">Phase 1: The Pre-Implementation Quality Gate (<code class="language-plaintext highlighter-rouge">/speckit.analyze</code>)</h2>

<p>Before a single line of code is generated, Spec-Kit enforces a strict static-analysis checkpoint using <code class="language-plaintext highlighter-rouge">/speckit.analyze</code>.</p>

<p>If a human developer has manually tweaked the code or adjusted the <code class="language-plaintext highlighter-rouge">plan.md</code> file since the last generation, the repository state might be out of alignment. The <code class="language-plaintext highlighter-rouge">/speckit.analyze</code> command acts as an automated compiler check. It reads your local files from disk and passes an analytical payload to the LLM to cross-check structural consistency.</p>

<p>The model explicitly validates:</p>

<ol>
  <li><strong>Requirements Coverage:</strong> Does the <code class="language-plaintext highlighter-rouge">tasks.md</code> list cover 100% of the acceptance criteria defined in <code class="language-plaintext highlighter-rouge">spec.md</code>?</li>
  <li><strong>Architectural Drift:</strong> Do the target file modifications in <code class="language-plaintext highlighter-rouge">plan.md</code> match the file paths currently sitting in your git repository index?</li>
  <li><strong>Constitutional Alignment:</strong> Are the proposed changes free of any conflicts with your global <code class="language-plaintext highlighter-rouge">.constitution</code> rules?</li>
</ol>

<p>Once the model verifies that your local workspace state is completely synchronized, it grants a “green light,” ensuring you aren’t building code on top of a fractured foundation.</p>

<h2 id="phase-2-bounded-execution-via-scope-targeting">Phase 2: Bounded Execution via Scope Targeting</h2>

<p>When you invoke code generation, you do not run a blanket, open-ended implementation command. To maintain an incredibly low token footprint and maximize model attention, you restrict the agent to narrow task boundaries using explicit scoping arguments:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/speckit.implement tasks 1-2
</code></pre></div></div>

<p>By passing a restricted range, you radically alter the context payload sent to the underlying LLM. Let’s compare the token ergonomics of this approach against a traditional conversational AI assistant:</p>

<h3 id="traditional-ai-assistant-payload-massive-bloat">Traditional AI Assistant Payload (Massive Bloat)</h3>

<ul>
  <li><strong>System Prompt:</strong> Generic instructions.</li>
  <li><strong>Chat History:</strong> The original prompt, the full specification prose, the raw architectural plans, previous failed code iterations, and conversational fluff.</li>
  <li><strong>Code Context:</strong> 5 to 10 full files pasted into the window so the model “has the whole picture.”</li>
  <li><strong>Result:</strong> <strong>15,000+ input tokens.</strong> The model’s attention window is heavily diluted. It easily overlooks edge cases, hallucinates utility functions, and drops structural boundaries.</li>
</ul>

<h3 id="spec-kit-bounded-payload-surgical-precision">Spec-Kit Bounded Payload (Surgical Precision)</h3>

<ul>
  <li><strong>System Prompt:</strong> Your 600-token global <code class="language-plaintext highlighter-rouge">.constitution</code>.</li>
  <li><strong>Isolated Intent:</strong> The precise text block for <em>Task 1 and Task 2 only</em> extracted directly from <code class="language-plaintext highlighter-rouge">tasks.md</code>.</li>
  <li><strong>Surgical Code Target:</strong> The <em>single</em> source file needing modification (e.g., <code class="language-plaintext highlighter-rouge">FileUploader.tsx</code>).</li>
  <li><strong>Result:</strong> <strong>~1,500 input tokens.</strong> Because the context window is entirely stripped of historical chat noise, old iterations, and unrelated files, the model applies 100% of its reasoning capacity directly to the target syntax.</li>
</ul>

<p>The model generates a clean, precise code patch or a completely structured new file, which Spec-Kit automatically writes directly to your local workspace.</p>

<h2 id="execution-behavior--automated-supervision">Execution Behavior &amp; Automated Supervision</h2>

<p>As <code class="language-plaintext highlighter-rouge">/speckit.implement</code> marches through your bounded task range, it continuously reconciles its outputs against your repository’s local environment. It doesn’t just vomit text into your editor; it works under your direct supervision:</p>

<ul>
  <li><strong>Surgical Code Diffs:</strong> The agent modifies your codebase using precise structural patches rather than completely rewriting large files, preventing accidental deletions of neighboring code blocks.</li>
  <li><strong>Local Command Execution:</strong> Depending on your environment configurations, the agent can be granted bounded permissions to trigger local terminal commands—such as running <code class="language-plaintext highlighter-rouge">npm run lint</code>, running unit tests, or executing a backend build script—to verify that its own code passes local quality checks before completing the command.</li>
  <li><strong>Constitutional Compliance:</strong> Every generated code block is checked against your constitution’s strict architectural limitations (e.g., ensuring an image uploader utilizes OpenTelemetry logging protocols to Cloud Trace, as commanded by the global rules we established in Part 2).</li>
</ul>

<h2 id="series-summary-the-golden-rules-of-context-management">Series Summary: The Golden Rules of Context Management</h2>

<p>We have now tracked the entire Spec-Driven Development journey from an abstract global rule to a compiled line of production code. By maintaining a strict data-diet across all 7 main steps of Spec-Kit, we turn LLM interactions into an exceptionally predictable, cost-effective engineering asset.</p>

<p>As you scale Spec-Kit across your enterprise software delivery teams, print out these four golden rules of context management:</p>

<ol>
  <li><strong>Memory belongs in files, not in the chat window.</strong> Clear your conversational agent history frequently; let markdown files on disk store the application state.</li>
  <li><strong>Enforce declarative constraints.</strong> Write your <code class="language-plaintext highlighter-rouge">.constitution</code> using strict “NEVER/ALWAYS” parameters to slash global input tokens by up to 80%.</li>
  <li><strong>Pay no re-generation tax.</strong> Edit your local <code class="language-plaintext highlighter-rouge">spec.md</code> and <code class="language-plaintext highlighter-rouge">plan.md</code> documents directly in your IDE for quick iterations instead of arguing with a chatbot to rewrite them.</li>
  <li><strong>Isolate your execution scopes.</strong> Never let an LLM write code for an entire feature at once. Run <code class="language-plaintext highlighter-rouge">/speckit.implement</code> against narrow task boundaries to maintain absolute code fidelity.</li>
</ol>]]></content><author><name></name></author><summary type="html"><![CDATA[Part 5. Execution, Validation, and Customization - Surgical Code Generation without Model Fatigue]]></summary></entry></feed>