<?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: omu inetimi</title>
    <description>The latest articles on DEV Community by omu inetimi (@omu).</description>
    <link>https://dev.to/omu</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%2F1638423%2Fbe18f490-a6f1-4999-aa46-cb129ee0a386.jpg</url>
      <title>DEV Community: omu inetimi</title>
      <link>https://dev.to/omu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/omu"/>
    <language>en</language>
    <item>
      <title>I Resurrected Encarta 1998</title>
      <dc:creator>omu inetimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 21:48:20 +0000</pubDate>
      <link>https://dev.to/omu/i-resurrected-encarta-1998-2f6g</link>
      <guid>https://dev.to/omu/i-resurrected-encarta-1998-2f6g</guid>
      <description>&lt;p&gt;I built a resurrection of Microsoft Encarta—the 1998 CD-ROM encyclopedia—for #Kiroween that finally delivers on what we all wished it could do: infinite articles on any topic, generated on-demand. The twist: it's powered by GPT-4o-mini, but forced to write in authentic 1990s academic encyclopedia tone. Neutral language, no contractions, and absolutely no post-1998 references.&lt;/p&gt;

&lt;p&gt;Huge props to Kiro for helping me ship this in a weekend with its spec-driven development.&lt;/p&gt;

&lt;p&gt;The History&lt;br&gt;
Encarta launched in 1993 and became the definitive multimedia encyclopedia of the CD-ROM era. That distinctive Windows 95 interface—beveled buttons, blue title bars, serif fonts on cream backgrounds—represented the cutting edge of educational technology. But it had a fundamental limitation: static content. The 1998 edition contained roughly 42,000 articles, and if your topic wasn't included, you were out of luck.&lt;/p&gt;

&lt;p&gt;The combinatorial explosion of human knowledge made comprehensive coverage impossible. By 2009, Microsoft discontinued Encarta entirely, unable to compete with Wikipedia's crowdsourced model.&lt;/p&gt;

&lt;p&gt;Nearly 30 years later, LLMs finally make the original vision possible—an encyclopedia that can generate authoritative articles on anything.&lt;/p&gt;

&lt;p&gt;The Setup&lt;br&gt;
I wrote four spec directories before touching code: ui-layout/ (pixel-perfect Windows 95 requirements), article-generator/ (LLM content structure and tone), enhancement-layer/ (2025 augmentation design), and kiroween-mode/ (VHS horror effects). Each spec had three files: requirements.md with GIVEN/WHEN/THEN acceptance criteria, design.md with architecture and correctness properties, and tasks.md with implementation checklist.&lt;/p&gt;

&lt;p&gt;The design docs defined formal correctness properties that became implementation constraints. Properties like "window MUST be exactly 800x600 pixels" and "all raised elements use white/dark border pattern" ensured the Windows 95 aesthetic stayed authentic.&lt;/p&gt;

&lt;p&gt;Two steering documents enforced tone across all generations:&lt;/p&gt;

&lt;p&gt;encyclopedia-tone.md: "1998 mode uses neutral, academic language without contractions or post-1998 references"&lt;br&gt;
ui-consistency.md: Exact color codes (#C0C0C0, #000080), font stacks (MS Sans Serif → Tahoma → Arial), and icon rules (emoji only, no modern vectors)&lt;br&gt;
What Changed&lt;br&gt;
Normally with AI coding assistants, you're constantly re-explaining context. With specs and steering, you explain once. When I asked to "fix the sidebar categories," Kiro already knew the Windows 95 color palette, the bevel border patterns, and that responsive CSS units weren't allowed. The changes stayed within constraints automatically.&lt;/p&gt;

&lt;p&gt;The most impressive generation was the complete Kiroween mode. I described wanting "VHS glitch effects with haunted content" and got back:&lt;/p&gt;

&lt;p&gt;CSS @keyframes for glitch animations with transform and text-shadow manipulation&lt;br&gt;
Scanline overlay using repeating-linear-gradient at 2-4px intervals&lt;br&gt;
Static noise using SVG feTurbulence filter at 2% opacity&lt;br&gt;
Content generation with [REDACTED] sections, haunted footnotes referencing "3:33 AM modifications by [USER UNKNOWN]," and eerie cross-references to "The Vanishing" and "[ENTRY NOT FOUND]"&lt;br&gt;
Dark purple/green palette (#1A1A2E, #00FF88, #FF0066) replacing the Windows 95 silver&lt;br&gt;
Four agent hooks automated validation on every save:&lt;/p&gt;

&lt;p&gt;ui-consistency.json scans CSS for forbidden modern properties&lt;br&gt;
tonal-validation.json reviews LLM prompts for era-appropriate language&lt;br&gt;
cross-reference-check.json verifies all "See also" links generate valid articles&lt;br&gt;
retro-commits.json generates CD-ROM era commit messages ("Updated Knowledge Module: Volcanology 3.2")&lt;br&gt;
Three Modes&lt;br&gt;
Classic 1998 Mode: Neutral academic tone, 3-5 paragraphs, ASCII art diagrams, cross-references—exactly like the original Encarta&lt;/p&gt;

&lt;p&gt;Enhanced Mode: Retro article plus a "2025 Expansion" panel with timelines, modern examples, and analogies bridging 1998 to present&lt;/p&gt;

&lt;p&gt;Kiroween Spooky Mode: The "Corrupted Encyclopedia" speaks from a glitching dimension, with VHS flicker effects, [REDACTED] sections, haunted footnotes, and references to researchers who disappeared under mysterious circumstances&lt;/p&gt;

&lt;p&gt;Takehome&lt;br&gt;
Spec-driven development isn't just documentation—it's persistent context that shapes every interaction. The correctness properties in my design docs meant I could iterate quickly on features while Kiro ensured the Windows 95 aesthetic stayed pixel-perfect. Steering docs eliminated repetitive prompting—I never had to say "use #C0C0C0 for backgrounds" twice.&lt;/p&gt;

&lt;p&gt;The combination of spec-driven development for architecture and vibe coding for rapid iteration worked perfectly. Specs for structure, vibes for speed.&lt;/p&gt;

&lt;p&gt;Agent hooks acted as automated code reviewers, catching drift from the retro aesthetic before it could accumulate. MCP configuration enabled future features like search indexing and topic graph visualization without leaving the Kiro workflow.&lt;/p&gt;

&lt;p&gt;Check out the project: github.com/mizzleinetimi/encart-ai&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>ai</category>
      <category>typescript</category>
    </item>
    <item>
      <title>I built a ghost that haunts your browser</title>
      <dc:creator>omu inetimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 21:22:01 +0000</pubDate>
      <link>https://dev.to/omu/i-built-a-ghost-that-haunts-your-browser-5f4e</link>
      <guid>https://dev.to/omu/i-built-a-ghost-that-haunts-your-browser-5f4e</guid>
      <description>&lt;p&gt;I built Muriel—a productivity ghost that haunts your browser for #Kiroween. She watches what you browse, tracks your tasks, and delivers snarky AI-powered commentary when you stray from your goals. The twist: her personality scales from gentle encouragement to savage roasts based on a "snark level" slider (1-10).&lt;/p&gt;

&lt;p&gt;Huge props to Kiro for helping me ship this Chrome extension with spec-driven development and steering docs that kept Muriel's personality consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Productivity tools are boring. They nag you with sterile notifications and guilt-inducing statistics. Nobody wants another app that makes them feel bad about checking Twitter. I wanted something with personality—a companion that could roast you with love when you've been doom-scrolling for 45 minutes instead of finishing that report.&lt;/p&gt;

&lt;p&gt;The challenge: making AI commentary feel consistent and characterful across hundreds of possible interactions, while keeping all user data private.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;I wrote three spec documents covering the core systems: AI Integration (on-device Gemini Nano with cloud fallback), Productivity Tracking (privacy-first local storage, task keyword matching), and Ghost UI (mood states, draggable positioning, accessibility). Each spec had requirements, design decisions, and implementation tasks.&lt;/p&gt;

&lt;p&gt;The key innovation was the steering docs. Two files that Kiro referenced throughout development:&lt;/p&gt;

&lt;p&gt;coding-standards.md: Enforced vanilla JS, ES6 modules, Chrome extension patterns, and the BYOK (Bring Your Own Key) model&lt;br&gt;
ai-prompts.md: Defined Muriel's personality across all 10 snark levels with prompt templates&lt;br&gt;
What Changed&lt;br&gt;
Normally with AI coding assistants, you're constantly re-explaining character voice. "Remember, she's snarky but not mean." "Keep responses under 50 words." With steering docs, you explain once. When I asked to "add ElevenLabs with a scarier voice," Kiro already knew the privacy constraints, the BYOK model, and that voice output needed to queue to prevent overlap.&lt;/p&gt;

&lt;p&gt;The most impressive generation was the complete ai-service.js—Gemini Nano capability detection, session management, graceful API fallback, and prompt construction that incorporates snark level, current site, time spent, and task relevance. All in one coherent file that just worked.&lt;/p&gt;

&lt;p&gt;I also got the speech-service.js audio queue system. Multiple AI comments could trigger simultaneously (mood change + time threshold + task mismatch), and without queuing they'd overlap into chaos. Kiro generated a queue processor that handles Web Speech API and ElevenLabs TTS with automatic fallback.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Snark Scale
&lt;/h2&gt;

&lt;p&gt;Muriel's personality ranges from supportive friend to savage critic:&lt;/p&gt;

&lt;p&gt;Level 1-3 (Gentle): "You're doing great! Maybe check on that report when you have a moment? 👻"&lt;/p&gt;

&lt;p&gt;Level 4-6 (Moderate): "Interesting choice spending 20 minutes on Reddit when you said you'd finish the presentation..."&lt;/p&gt;

&lt;p&gt;Level 7-10 (Savage): "Oh, we're on Twitter AGAIN? Bold strategy for someone with three overdue tasks. I'm not mad, just disappointed. Actually, I'm a little mad."&lt;/p&gt;

&lt;p&gt;The steering doc meant every AI-generated prompt automatically included the right tone instructions without me re-specifying each time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy First
&lt;/h2&gt;

&lt;p&gt;Everything stays local. Muriel uses Chrome's built-in Gemini Nano for on-device AI inference—your browsing data never leaves your machine. Cloud APIs (Gemini, ElevenLabs) only activate if you explicitly provide your own keys AND Nano isn't available. No bundled API keys, no tracking servers, no data collection.&lt;/p&gt;

&lt;p&gt;The BYOK model was a core requirement in the specs, and Kiro enforced it across every feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takehome
&lt;/h2&gt;

&lt;p&gt;Steering docs aren't just style guides—they're persistent character sheets that shape every interaction. The snark level system meant I could iterate on features while Kiro ensured Muriel's voice stayed consistent. Specs for architecture, steering for personality, vibe coding for polish.&lt;/p&gt;

&lt;p&gt;The combination worked perfectly. Muriel shipped in a weekend with a coherent personality across hundreds of possible comments.&lt;/p&gt;

&lt;p&gt;Check out the project: &lt;a href="//github.com/mizzleinetimi/Muriel"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>ai</category>
      <category>javascript</category>
      <category>chromeextension</category>
    </item>
    <item>
      <title>I resurrected Ask-jeeves</title>
      <dc:creator>omu inetimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 20:27:06 +0000</pubDate>
      <link>https://dev.to/omu/i-resurrected-ask-jeeves-3829</link>
      <guid>https://dev.to/omu/i-resurrected-ask-jeeves-3829</guid>
      <description>&lt;p&gt;I built a resurrection of Ask Jeeves—the 1996 "answer engine"—for #Kiroween that finally delivers on the original promise: direct answers to natural language questions instead of link lists. The twist: it's powered by GPT-4, but forced to stay in character as a polite British butler. Formal language, honorifics like "sir" and "madam," and absolutely no modern slang.&lt;/p&gt;

&lt;p&gt;Huge props to Kiro for helping me ship this in a weekend with its spec-driven development.&lt;/p&gt;

&lt;p&gt;The History&lt;br&gt;
Ask Jeeves launched in 1996 with a revolutionary idea: users don't want links, they want answers. But the technology didn't exist. They relied on human editors manually curating question-answer pairs—an approach that couldn't scale. The combinatorial explosion of possible questions made comprehensive coverage impossible. By 2005, they gave up and became just another search engine.&lt;/p&gt;

&lt;p&gt;Nearly 30 years later, LLMs finally make the original vision possible.&lt;/p&gt;

&lt;p&gt;The Setup&lt;br&gt;
I wrote three spec documents before touching code: requirements.md (13 detailed requirements with acceptance criteria), design.md (architecture, TypeScript interfaces, 15 correctness properties), and tasks.md (18 implementation tasks). Each requirement had explicit criteria—things like "direct answers must be 1-2 sentences maximum," "always use honorifics," and "no URLs unless explicitly requested."&lt;/p&gt;

&lt;p&gt;The design doc defined 15 formal correctness properties that translated directly into property-based tests using fast-check. Properties like "for any response, the relatedQuestions array SHALL contain between 3 and 5 items" became automated tests that generate random inputs and verify the property holds.&lt;/p&gt;

&lt;p&gt;What Changed&lt;br&gt;
Normally with AI coding assistants, you're constantly re-explaining context. With specs, you explain once. When I asked to "make the spooky mode more dramatic," Kiro already knew the persona constraints, the response structure requirements, and that the UI couldn't use modern CSS properties. The changes stayed within constraints automatically.&lt;/p&gt;

&lt;p&gt;The most impressive generation was the LLM client with constraint enforcement. I described wanting "responses that maintain the Jeeves persona with strict sentence limits" and got back a complete implementation with OpenAI integration, retry logic with exponential backoff, error messages in Jeeves voice ("I beg your pardon, sir, but I require a moment to gather my thoughts..."), and post-processing that enforces constraints even when GPT-4 ignores instructions.&lt;/p&gt;

&lt;p&gt;I also got property-based tests that scan the CSS file for modern UI properties. The test fails if it detects border-radius, box-shadow, or CSS animations (except in spooky mode where VHS effects are explicitly allowed). This enforced the 1990s aesthetic automatically.&lt;/p&gt;

&lt;p&gt;Three Modes&lt;br&gt;
Classic 1998 Mode: Short responses, simple explanations, strict persona—like the original Ask Jeeves&lt;br&gt;
Enhanced Mode: Deeper explanations with analogies and examples&lt;br&gt;
Kiroween Spooky Mode: The "Ghost of Jeeves" speaks from beyond, with VHS flicker effects, dark maroon palette, and cryptic footnotes&lt;br&gt;
Takehome&lt;br&gt;
Spec-driven development isn't just documentation—it's persistent context that shapes every interaction. The 15 correctness properties meant I could iterate quickly on features while Kiro ensured the implementation stayed correct. Property-based testing caught edge cases I never would have thought to test manually.&lt;/p&gt;

&lt;p&gt;The combination of spec-driven development for the core architecture and vibe coding for polish worked perfectly. Specs for structure, vibes for style.&lt;/p&gt;

&lt;p&gt;Check out the project: &lt;a href="https://ask-reeves.vercel.app" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I ressurected ELIZA</title>
      <dc:creator>omu inetimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 19:31:18 +0000</pubDate>
      <link>https://dev.to/omu/i-ressurected-eliza-13p3</link>
      <guid>https://dev.to/omu/i-ressurected-eliza-13p3</guid>
      <description>&lt;p&gt;I built a resurrection of ELIZA—the 1966 MIT chatbot—for #Kiroween that combines the original pattern-matching DOCTOR script with GPT-4o-mini for actual conversation. The twist: the LLM is forced to stay in character as a 1960s Rogerian therapist. No modern therapy buzzwords, no advice-giving, just reflective questions and "tell me more about that."&lt;/p&gt;

&lt;p&gt;Huge props to Kiro for helping me ship this in a weekend with its spec-driven development and steering files.&lt;/p&gt;

&lt;p&gt;The Setup&lt;br&gt;
I wrote four specs before touching code: pattern engine, LLM layer, terminal UI, and mode system. Each spec defined acceptance criteria—things like "responses must be under 30 words" and "never use modern therapy terms (CBT, mindfulness, trauma-informed)"—and Kiro handled the implementation.&lt;/p&gt;

&lt;p&gt;Then I added two steering docs. One for code style (ES Modules, async/await, graceful degradation). One for ELIZA's persona—this was the important one. It defined her 1966 Rogerian identity with explicit rules: ask reflective questions, reflect pronouns (I→you, my→your), never acknowledge being AI.&lt;/p&gt;

&lt;p&gt;What Changed&lt;br&gt;
Normally with AI coding assistants, you're constantly re-explaining context. With specs and steering, you explain once. When I asked to "make ELIZA more conversational," Kiro already knew the persona constraints, the response length limits, and that she should never give advice. The changes stayed in character automatically.&lt;/p&gt;

&lt;p&gt;The most impressive generation was the LLM enhancer. I described wanting "ELIZA powered by an LLM but staying completely in 1966 character" and got back a complete implementation with OpenAI integration, conversation history, and a system prompt that actually maintains the Rogerian therapist persona across multi-turn conversations.&lt;/p&gt;

&lt;p&gt;I also set up hooks that scanned for anachronistic language on every file save. Caught me twice when I accidentally used "boundaries" in a response template.&lt;/p&gt;

&lt;p&gt;Takehome&lt;br&gt;
Steering files aren't just style guides—they're persistent context that shapes every interaction. The persona steering meant I could iterate quickly on features without worrying about breaking the 1966 illusion. Kiro was always working within those constraints.&lt;/p&gt;

&lt;p&gt;Check out the project: &lt;a href="//github.com/mizzleinetimi/eliz-ai"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>python</category>
      <category>ai</category>
    </item>
    <item>
      <title>Trash-Talking Chess AI with Kiro</title>
      <dc:creator>omu inetimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 17:01:22 +0000</pubDate>
      <link>https://dev.to/omu/trash-talking-chess-ai-with-kiro-2a87</link>
      <guid>https://dev.to/omu/trash-talking-chess-ai-with-kiro-2a87</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeg0xvi9296rm68fem77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeg0xvi9296rm68fem77.png" alt=" " width="800" height="955"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built a terminal chess app for #Kiroween that stitches together python-chess, Lichess puzzles, Stockfish analysis, and ai (using GPT-4) for trash talk. The AI actually reacts to your moves. if you blunder - it laughs at you, play well and it grudgingly respects you.&lt;/p&gt;

&lt;p&gt;huge props to kiro for actually helping me put this together in just a weekend with its powerful spec driven development feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Setup
&lt;/h3&gt;

&lt;p&gt;I wrote four specs before any code: chess engine, puzzle engine, terminal renderer, and UI navigation. Each spec outlined what the component needed to do, not how. Kiro figured out the implementation.&lt;/p&gt;

&lt;p&gt;Then I added two steering docs - one for code style (PEP 8, type hints, error handling) and one for UI consistency (feedback patterns, navigation commands, screen transitions).&lt;/p&gt;

&lt;h3&gt;
  
  
  What Changed
&lt;/h3&gt;

&lt;p&gt;Normally when working with AI coding assistants, you spend a lot of time re-explaining context. With specs and steering you pretty much just explain once. When I asked for "Analysis Mode", Kiro already knew how the renderer worked, what input formats to accept, and that every screen needs a way back to the menu.&lt;/p&gt;

&lt;p&gt;The most impressive generation I'd say was the AIOpponent class. I described wanting "a spooky AI that trash talks based on how well I'm playing" and got back a complete implementation with GPT-4 integration, 3-second timeouts, static fallbacks, and move quality detection for contextual taunts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Takehome
&lt;/h3&gt;

&lt;p&gt;Specs are not just documentation - they are context that compounds. Every feature I added benefited from the architecture decisions already captured in those markdown files.&lt;/p&gt;

&lt;p&gt;Check out the project: &lt;a href="//github.com/mizzleinetimi/chessimus"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>python</category>
      <category>chess</category>
      <category>ai</category>
    </item>
    <item>
      <title>Trash-Talking Chess AI with Kiro</title>
      <dc:creator>omu inetimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 17:01:22 +0000</pubDate>
      <link>https://dev.to/omu/trash-talking-chess-ai-with-kiro-4fl1</link>
      <guid>https://dev.to/omu/trash-talking-chess-ai-with-kiro-4fl1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeg0xvi9296rm68fem77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeg0xvi9296rm68fem77.png" alt=" " width="800" height="955"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built a terminal chess app for #Kiroween that stitches together python-chess, Lichess puzzles, Stockfish analysis, and ai (using GPT-4) for trash talk. The AI actually reacts to your moves. if you blunder - it laughs at you, play well and it grudgingly respects you.&lt;/p&gt;

&lt;p&gt;huge props to kiro for actually helping me put this together in just a weekend with its powerful spec driven development feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Setup
&lt;/h3&gt;

&lt;p&gt;I wrote four specs before any code: chess engine, puzzle engine, terminal renderer, and UI navigation. Each spec outlined what the component needed to do, not how. Kiro figured out the implementation.&lt;/p&gt;

&lt;p&gt;Then I added two steering docs - one for code style (PEP 8, type hints, error handling) and one for UI consistency (feedback patterns, navigation commands, screen transitions).&lt;/p&gt;

&lt;h3&gt;
  
  
  What Changed
&lt;/h3&gt;

&lt;p&gt;Normally when working with AI coding assistants, you spend a lot of time re-explaining context. With specs and steering you pretty much just explain once. When I asked for "Analysis Mode", Kiro already knew how the renderer worked, what input formats to accept, and that every screen needs a way back to the menu.&lt;/p&gt;

&lt;p&gt;The most impressive generation I'd say was the AIOpponent class. I described wanting "a spooky AI that trash talks based on how well I'm playing" and got back a complete implementation with GPT-4 integration, 3-second timeouts, static fallbacks, and move quality detection for contextual taunts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Takehome
&lt;/h3&gt;

&lt;p&gt;Specs are not just documentation - they are context that compounds. Every feature I added benefited from the architecture decisions already captured in those markdown files.&lt;/p&gt;

&lt;p&gt;Check out the project: &lt;a href="//github.com/mizzleinetimi/chessimus"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>python</category>
      <category>chess</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
