<?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>Forem: Arvindkumar Akula</title>
    <description>The latest articles on Forem by Arvindkumar Akula (@arvindakula).</description>
    <link>https://forem.com/arvindakula</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%2F3500935%2F08a6dfa8-e9bd-4a1e-aa6c-8dadd304c2f7.png</url>
      <title>Forem: Arvindkumar Akula</title>
      <link>https://forem.com/arvindakula</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arvindakula"/>
    <language>en</language>
    <item>
      <title>Agent Skeleton Framework: Building Domain-Specific AI Agents Through Configuration, Not Code</title>
      <dc:creator>Arvindkumar Akula</dc:creator>
      <pubDate>Sun, 23 Nov 2025 18:01:06 +0000</pubDate>
      <link>https://forem.com/arvindakula/building-domain-specific-ai-agents-through-configuration-not-code-50nh</link>
      <guid>https://forem.com/arvindakula/building-domain-specific-ai-agents-through-configuration-not-code-50nh</guid>
      <description>&lt;h1&gt;
  
  
  Building Domain-Specific AI Agents Through Configuration, Not Code
&lt;/h1&gt;

&lt;p&gt;I built a framework where you can create specialized AI agents (like a Compliance Reviewer or Travel Planner) by writing a YAML file instead of coding. Same core, infinite possibilities. Built entirely with Kiro IDE's powerful features.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Building AI Agents is Too Code-Heavy
&lt;/h2&gt;

&lt;p&gt;Want to build a compliance reviewer AI? Write hundreds of lines of code.&lt;/p&gt;

&lt;p&gt;Need a travel planning assistant? Write hundreds more lines.&lt;/p&gt;

&lt;p&gt;Want to add a customer support bot? You guessed it - more code, more complexity, more maintenance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if you could create a new AI agent just by writing a configuration file?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's exactly what I set out to build during the Kiroween Hackathon 2025.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introducing Agent Skeleton Framework
&lt;/h2&gt;

&lt;p&gt;Agent Skeleton is a &lt;strong&gt;configuration-driven framework&lt;/strong&gt; for building domain-specific AI agents. The same core framework powers completely different specialized agents:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔍 Compliance Reviewer Agent
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reviews documents for regulatory compliance&lt;/li&gt;
&lt;li&gt;Identifies policy violations with severity ratings&lt;/li&gt;
&lt;li&gt;Provides specific regulation citations (FLSA, GDPR, OSHA)&lt;/li&gt;
&lt;li&gt;Generates structured compliance reports&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✈️ Travel Planner Agent
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Creates personalized travel itineraries&lt;/li&gt;
&lt;li&gt;Provides cost estimates and budget breakdowns&lt;/li&gt;
&lt;li&gt;Suggests activities based on preferences&lt;/li&gt;
&lt;li&gt;Offers weather forecasts and local insights&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎯 The Magic: Just YAML
&lt;/h3&gt;

&lt;p&gt;Creating a new agent requires &lt;strong&gt;only a YAML file&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;domain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer-support"&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;customer&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;support"&lt;/span&gt;

&lt;span class="na"&gt;personality&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;tone&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;friendly"&lt;/span&gt;
  &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;helpful"&lt;/span&gt;

&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;allowed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticket_search"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;knowledge_base_search"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_lookup"&lt;/span&gt;

&lt;span class="na"&gt;constraints&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Only&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;respond&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;customer&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;support&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;questions"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Always&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;be&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;empathetic&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;patient"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Provide&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;step-by-step&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;solutions"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;That's it!&lt;/strong&gt; No Python, no TypeScript, just configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works: The Architecture
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Configuration-Driven Core
&lt;/h3&gt;

&lt;p&gt;The framework has a single core that adapts based on YAML configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│         Agent Core                  │
│  • Loads domain config              │
│  • Filters tools by domain          │
│  • Applies personality              │
│  • Enforces constraints             │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│      Domain Configuration           │
│  • compliance-reviewer.yaml         │
│  • travel-planner.yaml              │
│  • customer-support.yaml            │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. MCP (Model Context Protocol) for Pluggable Tools
&lt;/h3&gt;

&lt;p&gt;Tools are organized into swappable toolsets:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance Toolset:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;document_parser&lt;/code&gt; - Parse and chunk documents&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;policy_search&lt;/code&gt; - Search policy database&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;regulation_lookup&lt;/code&gt; - Find regulations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Travel Toolset:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;destination_search&lt;/code&gt; - Find destinations&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;weather_lookup&lt;/code&gt; - Get weather info&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;price_estimator&lt;/code&gt; - Estimate costs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;currency_converter&lt;/code&gt; - Convert currencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The beauty:&lt;/strong&gt; Tools are filtered by domain. The travel agent literally cannot access compliance tools - enforced at the code level, not just prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Guardrails That Actually Work
&lt;/h3&gt;

&lt;p&gt;One of the biggest challenges was preventing agents from answering out-of-scope questions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "Plan a trip to Paris"
Compliance Agent: "Sure! Here's a 3-day itinerary..." ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt;&lt;br&gt;
Place scope restrictions at the TOP of configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;constraints&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SCOPE&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;RESTRICTION:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Only&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;respond&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;compliance&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;questions"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;If&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;asked&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;about&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;travel,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;respond:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'I&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;am&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Compliance&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Reviewer.&lt;/span&gt; 
     &lt;span class="s"&gt;For&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;travel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;planning,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;please&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;use&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Travel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Planner&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;agent.'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "Plan a trip to Paris"
Compliance Agent: "I am a Compliance Reviewer agent specialized 
in regulatory compliance. For travel planning, please use the 
Travel Planner agent." ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;LLMs pay more attention to early content - this simple positioning change eliminated 90% of out-of-scope responses.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built Entirely with Kiro IDE
&lt;/h2&gt;

&lt;p&gt;This project showcases &lt;strong&gt;5 major Kiro features&lt;/strong&gt; working together:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 📋 Spec-Driven Development
&lt;/h3&gt;

&lt;p&gt;I followed Kiro's complete spec workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements Phase:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created &lt;code&gt;requirements.md&lt;/code&gt; with EARS (Easy Approach to Requirements Syntax) patterns&lt;/li&gt;
&lt;li&gt;Defined 12 major requirements with user stories and acceptance criteria&lt;/li&gt;
&lt;li&gt;Established clear system boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Design Phase:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrote comprehensive &lt;code&gt;design.md&lt;/code&gt; with architecture decisions&lt;/li&gt;
&lt;li&gt;Defined component interfaces and data models&lt;/li&gt;
&lt;li&gt;Specified MCP tool architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation Phase:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated &lt;code&gt;tasks.md&lt;/code&gt; with 18 step-by-step tasks&lt;/li&gt;
&lt;li&gt;Executed tasks incrementally with Kiro's assistance&lt;/li&gt;
&lt;li&gt;Validated each step before proceeding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Caught architectural issues early, provided clear success criteria, enabled seamless resumption of work.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 🎯 Steering Documents
&lt;/h3&gt;

&lt;p&gt;Created steering docs to guide behavior:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Base Steering (&lt;code&gt;base_agent_behavior.md&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Core Principles&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Always respect domain constraints
&lt;span class="p"&gt;-&lt;/span&gt; Never fabricate information
&lt;span class="p"&gt;-&lt;/span&gt; Acknowledge uncertainty when appropriate

&lt;span class="gu"&gt;## Response Format&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Provide structured, clear responses
&lt;span class="p"&gt;-&lt;/span&gt; Use appropriate formatting
&lt;span class="p"&gt;-&lt;/span&gt; Include reasoning for decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Domain-Specific Steering:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;compliance_specific.md&lt;/code&gt; - Formal tone, citation-focused&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;travel_specific.md&lt;/code&gt; - Friendly tone, creative suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Consistent behavior without hardcoding personality.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. ⚡ Vibe Coding
&lt;/h3&gt;

&lt;p&gt;Used Kiro's AI assistance for rapid development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Most Impressive Generation:&lt;/strong&gt;&lt;br&gt;
Asked Kiro to create the complete MCP toolset architecture. In one session, it generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base &lt;code&gt;MCPToolset&lt;/code&gt; class&lt;/li&gt;
&lt;li&gt;Tool registry with validation&lt;/li&gt;
&lt;li&gt;Two full domain toolsets (compliance and travel)&lt;/li&gt;
&lt;li&gt;Proper error handling and JSON schema validation&lt;/li&gt;
&lt;li&gt;400+ lines of production-ready code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Built complete framework with API, CLI, and Web UI in days, not weeks.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. 🔌 MCP Integration
&lt;/h3&gt;

&lt;p&gt;Implemented Model Context Protocol for pluggable tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MCPToolset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Tool&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;register_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ToolRegistry&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;registry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add new tools in 15 minutes&lt;/li&gt;
&lt;li&gt;No core code changes needed&lt;/li&gt;
&lt;li&gt;Domain-based tool permissions&lt;/li&gt;
&lt;li&gt;Easy testing with mocks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. 🔗 Agent Hooks
&lt;/h3&gt;

&lt;p&gt;Implemented event-driven callbacks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@hook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;after_tool_call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;log_tool_execution&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tool: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tool_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Duration: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;execution_time_ms&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;ms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@hook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;after_response&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;track_metrics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;record&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;execution_time_ms&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Extensible architecture with clean separation of concerns.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-World Demo: Compliance Review
&lt;/h2&gt;

&lt;p&gt;Let me show you the framework in action:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Query:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Review this employee handbook for overtime policy compliance"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;What Happens Behind the Scenes:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Planning Phase:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   Step 1: Parse document using document_parser
   Step 2: Search for overtime policies using policy_search
   Step 3: Lookup FLSA regulations using regulation_lookup
   Step 4: Compare requirements and generate report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Execution Phase:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document parsed into chunks&lt;/li&gt;
&lt;li&gt;Relevant policies found (Employee Overtime Policy - POL-001)&lt;/li&gt;
&lt;li&gt;FLSA Section 7 regulation retrieved&lt;/li&gt;
&lt;li&gt;Comparison performed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Response:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   COMPLIANCE REVIEW REPORT

   Executive Summary:
   The employee handbook's overtime policy is COMPLIANT with 
   federal requirements under FLSA Section 7.

   Findings:
   ✅ Policy correctly states 1.5x rate for hours over 40/week
   ✅ Proper reference to FLSA requirements
   ✅ Clear definition of non-exempt employees

   Regulation References:
   - FLSA-Section-7: Fair Labor Standards Act - Overtime

   Severity: LOW (No violations found)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Total Time:&lt;/strong&gt; 3-5 seconds&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technical Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10+ with FastAPI&lt;/li&gt;
&lt;li&gt;Pydantic for data validation&lt;/li&gt;
&lt;li&gt;OpenAI/Anthropic LLM support&lt;/li&gt;
&lt;li&gt;In-memory and persistent storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 14 with TypeScript&lt;/li&gt;
&lt;li&gt;TailwindCSS for styling&lt;/li&gt;
&lt;li&gt;Real-time step visualization&lt;/li&gt;
&lt;li&gt;Domain switching with state isolation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core Framework:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planner: Goal decomposition and execution&lt;/li&gt;
&lt;li&gt;Memory: Short-term and long-term strategies&lt;/li&gt;
&lt;li&gt;Evaluation: Response validation and revision&lt;/li&gt;
&lt;li&gt;Steering: Behavior guidance system&lt;/li&gt;
&lt;li&gt;Hooks: Event-driven callbacks&lt;/li&gt;
&lt;li&gt;Tools: MCP-based registry&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Challenges and Solutions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Challenge 1: Tool Response Formatting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Tool results were showing as raw JSON instead of human-readable text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;policies&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;POL-001&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Employee Overtime Policy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;...&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;relevance_score&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;}]}&lt;/span&gt; &lt;span class="err"&gt;❌&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br&gt;
Modified the response synthesis logic to always format tool results through the LLM, even for single-step plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Based on your query about employee compliance, here are the 
top requirements:

**Employee Overtime Policy (POL-001)**
All non-exempt employees must be paid overtime at 1.5x their 
regular rate for hours worked over 40 in a workweek. ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Challenge 2: Domain Switching UX
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; When switching between agents, chat history persisted, causing confusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clear chat history on domain switch&lt;/li&gt;
&lt;li&gt;Clear execution steps and state&lt;/li&gt;
&lt;li&gt;Show system message indicating fresh start&lt;/li&gt;
&lt;li&gt;Separate memory contexts per domain&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Clean separation between domains with clear visual feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 3: Performance
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Initial:&lt;/strong&gt; 10-15 seconds per query&lt;br&gt;
&lt;strong&gt;Optimized:&lt;/strong&gt; 3-5 seconds per query&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimizations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switched to GPT-3.5-turbo (3x faster than GPT-4)&lt;/li&gt;
&lt;li&gt;Disabled evaluation layer (saves 2-3s)&lt;/li&gt;
&lt;li&gt;Reduced memory context (5 items vs 10-15)&lt;/li&gt;
&lt;li&gt;Minimal verbosity in responses&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Adding a New Agent: Customer Support Bot
&lt;/h2&gt;

&lt;p&gt;Want to see how easy it is? Here's how to add a customer support bot:&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Create YAML (5 minutes)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# domains/customer-support.yaml&lt;/span&gt;
&lt;span class="na"&gt;domain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer-support"&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;customer&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;support"&lt;/span&gt;

&lt;span class="na"&gt;personality&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;tone&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;friendly"&lt;/span&gt;
  &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;helpful"&lt;/span&gt;
  &lt;span class="na"&gt;verbosity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;balanced"&lt;/span&gt;
  &lt;span class="na"&gt;characteristics&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Empathetic&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;patient"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Solution-oriented"&lt;/span&gt;

&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;allowed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticket_search"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;knowledge_base_search"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_lookup"&lt;/span&gt;

&lt;span class="na"&gt;constraints&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SCOPE&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;RESTRICTION:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Only&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;respond&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;customer&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;support&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;questions"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Always&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;acknowledge&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;customer&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;frustration"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Provide&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;step-by-step&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;solutions"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2: Create Toolset (15 minutes)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# tools/customer_support_toolset.py
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CustomerSupportToolset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MCPToolset&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;super&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer-support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Customer support tools&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_create_ticket_search&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_create_kb_search&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_create_order_lookup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Register (2 minutes)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# api/main.py
&lt;/span&gt;&lt;span class="n"&gt;customer_support_tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CustomerSupportToolset&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;customer_support_tools&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool_registry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 4: Update UI (5 minutes)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ui/web/components/DomainSelector.tsx&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;domains&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;compliance-reviewer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Compliance Reviewer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;travel-planner&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Travel Planner&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;customer-support&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Customer Support&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="c1"&gt;// NEW&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Total Time: ~30 minutes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compare that to building a customer support bot from scratch (weeks of work)!&lt;/p&gt;


&lt;h2&gt;
  
  
  Key Learnings
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Spec-Driven Development Works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Jump into coding, refactor constantly, miss requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With Kiro's Specs:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements phase catches issues early&lt;/li&gt;
&lt;li&gt;Design phase prevents architectural mistakes&lt;/li&gt;
&lt;li&gt;Task phase provides clear roadmap&lt;/li&gt;
&lt;li&gt;Implementation is smooth and predictable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; Upfront planning saves time overall.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Steering Documents Are Powerful
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Discovery:&lt;/strong&gt; Placing scope restrictions at the TOP of steering docs is critical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LLMs pay more attention to early content&lt;/li&gt;
&lt;li&gt;Guardrails need maximum visibility&lt;/li&gt;
&lt;li&gt;Prevents hallucinations effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; Document structure affects AI behavior significantly.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Configuration &amp;gt; Code for Flexibility
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Insight:&lt;/strong&gt; Configuration-driven architecture enables rapid iteration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Changed agent personality in seconds&lt;/li&gt;
&lt;li&gt;Added new tools without core changes&lt;/li&gt;
&lt;li&gt;Adjusted guardrails without redeployment&lt;/li&gt;
&lt;li&gt;Tested different configurations easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; Separate configuration from logic for maximum flexibility.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. MCP Protocol Scales
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Without MCP:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding 10 tools = modifying core 10 times&lt;/li&gt;
&lt;li&gt;Risk of breaking existing functionality&lt;/li&gt;
&lt;li&gt;2-3 hours per tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;With MCP:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding 10 tools = 10 independent toolsets&lt;/li&gt;
&lt;li&gt;Zero risk to existing tools&lt;/li&gt;
&lt;li&gt;15 minutes per toolset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; Abstraction layers are worth the initial investment.&lt;/p&gt;


&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Short-Term (Next Month)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;More Domain Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer Support Agent&lt;/li&gt;
&lt;li&gt;Code Review Agent&lt;/li&gt;
&lt;li&gt;Data Analysis Agent&lt;/li&gt;
&lt;li&gt;Content Writer Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Visual Configuration Builder&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drag-and-drop tool selection&lt;/li&gt;
&lt;li&gt;Visual personality customization&lt;/li&gt;
&lt;li&gt;Real-time validation&lt;/li&gt;
&lt;li&gt;Export to YAML&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enhanced Memory&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vector search for semantic retrieval&lt;/li&gt;
&lt;li&gt;Cross-session persistence&lt;/li&gt;
&lt;li&gt;Memory summarization&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Medium-Term (Next Quarter)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Agent Collaboration&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Agent-to-agent communication&lt;/li&gt;
&lt;li&gt;Task delegation between agents&lt;/li&gt;
&lt;li&gt;Collaborative problem solving&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   User: "Review this contract and plan a business trip"
   → Compliance Agent reviews contract
   → Travel Agent plans trip based on contract dates
   → Combined response delivered
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Streaming Responses&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stream LLM responses as they generate&lt;/li&gt;
&lt;li&gt;Show tool execution progress&lt;/li&gt;
&lt;li&gt;Reduce perceived latency&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tool Marketplace&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share custom toolsets&lt;/li&gt;
&lt;li&gt;Rate and review tools&lt;/li&gt;
&lt;li&gt;One-click installation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Long-Term (Next Year)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enterprise Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role-based access control&lt;/li&gt;
&lt;li&gt;Audit logging&lt;/li&gt;
&lt;li&gt;Multi-tenancy support&lt;/li&gt;
&lt;li&gt;SSO integration&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Agent Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usage metrics per agent&lt;/li&gt;
&lt;li&gt;Performance dashboards&lt;/li&gt;
&lt;li&gt;Cost tracking&lt;/li&gt;
&lt;li&gt;A/B testing framework&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;The framework is open source and ready to use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; [Link to repository]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Start:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the repository&lt;/span&gt;
git clone &amp;lt;repository-url&amp;gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;agent-skeleton

&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Set up environment&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;span class="c"&gt;# Add your OpenAI/Anthropic API key&lt;/span&gt;

&lt;span class="c"&gt;# Start the API&lt;/span&gt;
uvicorn api.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;

&lt;span class="c"&gt;# Or use the CLI&lt;/span&gt;
python agent_cli.py &lt;span class="nt"&gt;--domain&lt;/span&gt; travel &lt;span class="nt"&gt;--goal&lt;/span&gt; &lt;span class="s2"&gt;"Plan a weekend getaway"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete setup guide in README.md&lt;/li&gt;
&lt;li&gt;Architecture details in ARCHITECTURE.md&lt;/li&gt;
&lt;li&gt;Kiro usage documented in KIRO_USAGE.md&lt;/li&gt;
&lt;li&gt;7 PlantUML diagrams showing system flows&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building AI agents doesn't have to be code-heavy. With the right architecture and tools, you can create specialized agents through configuration alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Configuration-driven architecture&lt;/strong&gt; enables rapid iteration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP protocol&lt;/strong&gt; provides clean, scalable tool integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails&lt;/strong&gt; require intentional design (position matters!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kiro's features&lt;/strong&gt; work synergistically for powerful results&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spec-driven development&lt;/strong&gt; catches issues early and maintains quality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Agent Skeleton Framework demonstrates that with proper abstraction and configuration, you can build production-ready AI agents in days, not weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would you build with this framework?&lt;/strong&gt; Drop a comment below! 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/ArvindAkula/agent-skeleton" rel="noopener noreferrer"&gt;https://github.com/ArvindAkula/agent-skeleton&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; [Link if deployed]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kiro IDE:&lt;/strong&gt; &lt;a href="https://kiro.ai" rel="noopener noreferrer"&gt;https://kiro.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kiroween Hackathon:&lt;/strong&gt; &lt;a href="https://kiroween.devpost.com/" rel="noopener noreferrer"&gt;https://kiroween.devpost.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture Diagrams:&lt;/strong&gt; &lt;a href="https://github.com/ArvindAkula/agent-skeleton/blob/main/docs/workflows/diagrams/Complete_System_Flow-Agent_Skeleton___Complete_System_Data_Flow.png" rel="noopener noreferrer"&gt;https://github.com/ArvindAkula/agent-skeleton/blob/main/docs/workflows/diagrams/Complete_System_Flow-Agent_Skeleton___Complete_System_Data_Flow.png&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Built with ❤️ using Kiro IDE for Kiroween Hackathon 2025&lt;/strong&gt; 🎃&lt;/p&gt;




</description>
      <category>agents</category>
      <category>llm</category>
      <category>tooling</category>
      <category>ai</category>
    </item>
    <item>
      <title>How spec-driven dev helped me ship “AI Math Tutor” from living-room idea to production</title>
      <dc:creator>Arvindkumar Akula</dc:creator>
      <pubDate>Sun, 14 Sep 2025 07:48:44 +0000</pubDate>
      <link>https://forem.com/arvindakula/how-spec-driven-dev-helped-me-ship-ai-math-tutor-from-living-room-idea-to-production-3k00</link>
      <guid>https://forem.com/arvindakula/how-spec-driven-dev-helped-me-ship-ai-math-tutor-from-living-room-idea-to-production-3k00</guid>
      <description>&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;I built AI Math Tutor after mentoring my high-schooler and seeing how often students get stuck between steps. I combined a Python math engine (symbolic steps + visuals), a Go API gateway (auth, WebSockets), and a React frontend into a production-ready platform with observability baked in. The spec-driven flow took me from requirements → design → implementation without thrash.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;p&gt;• Step-by-step solutions + AI explanations&lt;br&gt;
• Realtime collaboration; JWT + RBAC&lt;br&gt;
• Docker/K8s, PostgreSQL, Redis&lt;br&gt;
• Roadmap: handwriting/voice input; dashboards; spaced repetition&lt;/p&gt;

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

&lt;p&gt;Specs reduce rework; separating I/O (Go) from math (Python) keeps performance predictable; pedagogy is a feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI Math Tutor does
&lt;/h2&gt;

&lt;p&gt;• Step-by-step solutions (algebra, calculus, linear algebra, stats, AI/ML math)&lt;br&gt;
• Interactive quizzes with targeted hints and feedback&lt;br&gt;
• Visual intuition (2D/3D plots, vector fields, function graphs)&lt;br&gt;
• Personalized learning paths with progress tracking&lt;br&gt;
• Realtime collaboration (coach ↔ learner)&lt;br&gt;
• Planned: voice/handwriting input (OCR/STT)&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture at a glance
&lt;/h2&gt;

&lt;p&gt;We use a microservices approach:&lt;br&gt;
• Python Math Engine (FastAPI) for symbolic computation, AI explainers, and visuals&lt;br&gt;
• Go API Gateway (Gin) for high-throughput APIs, JWT auth, WebSockets, rate-limiting&lt;br&gt;
• React Frontend for a clean, responsive UI&lt;br&gt;
• PostgreSQL + Redis for durable data + fast sessions/caching&lt;br&gt;
• Docker/K8s for local dev and production deployment&lt;/p&gt;

&lt;h2&gt;
  
  
  Spec-driven from day one
&lt;/h2&gt;

&lt;p&gt;I ran a requirements → design → tasks flow and built in observability and security early: health checks, metrics, error tracking, JWT + RBAC, and session management. That discipline helped move from concept → stable production system without big-bang rewrites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;p&gt;• Grounding LLM explanations in exact symbolic steps&lt;br&gt;
• Realtime stability at scale with WebSockets + sessions&lt;br&gt;
• Consistent math rendering (LaTeX + plots) across devices&lt;br&gt;
• Security (roles, tokens) while keeping UX friction-free&lt;/p&gt;

&lt;h2&gt;
  
  
  Results &amp;amp; what I’m proud of
&lt;/h2&gt;

&lt;p&gt;• End-to-end auth + RBAC; secure session flows&lt;br&gt;
• Health/observability wired throughout&lt;br&gt;
• Realtime collaboration that behaves under load&lt;br&gt;
• A symbolic engine paired with AI explanations for clarity&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;• Mobile + handwriting/voice input&lt;br&gt;
• Teacher/parent dashboards and mastery insights&lt;br&gt;
• Spaced repetition for long-term retention&lt;br&gt;
• Deeper AI/ML math tracks (optimization, spectral methods, backprop labs)&lt;br&gt;
• Privacy by design (data minimization, audit trails)&lt;br&gt;
• Open-source modules for community reuse&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it / Contribute
&lt;/h2&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/ArvindAkula/ai_math_tutor" rel="noopener noreferrer"&gt;https://github.com/ArvindAkula/ai_math_tutor&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>edtech</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
