<?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: Siddharth Rathore</title>
    <description>The latest articles on DEV Community by Siddharth Rathore (@siddharth_rathore).</description>
    <link>https://dev.to/siddharth_rathore</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%2F1720993%2Fcb2e773f-1d0c-45dd-a34c-60f863479397.jpg</url>
      <title>DEV Community: Siddharth Rathore</title>
      <link>https://dev.to/siddharth_rathore</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/siddharth_rathore"/>
    <language>en</language>
    <item>
      <title>Vibe Coding Is Fun — Until Your AI Ships Code With No Auth, No Tests, and a SQL Injection Waiting to Happen</title>
      <dc:creator>Siddharth Rathore</dc:creator>
      <pubDate>Thu, 21 May 2026 08:27:43 +0000</pubDate>
      <link>https://dev.to/siddharth_rathore/vibe-coding-is-fun-until-your-ai-ships-code-with-no-auth-no-tests-and-a-sql-injection-waiting-4dk0</link>
      <guid>https://dev.to/siddharth_rathore/vibe-coding-is-fun-until-your-ai-ships-code-with-no-auth-no-tests-and-a-sql-injection-waiting-4dk0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;AI coding agents are the fastest pair programmer you've ever had. They're also the most dangerously agreeable. Here's how to bake your engineering standards into every AI-assisted session — without copy-pasting a prompt manifesto every time you open a terminal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Truth About Vibe Coding
&lt;/h2&gt;

&lt;p&gt;Vibe coding is real, it's productive, and it's not going anywhere.&lt;/p&gt;

&lt;p&gt;You describe what you want in plain language. The AI builds it. You iterate, refine, ship. Features that used to eat three days of focus now land before lunch. Boilerplate evaporates. The flow state hits different — it's faster, more fluid, more &lt;em&gt;fun&lt;/em&gt; than anything the industry has seen in years.&lt;/p&gt;

&lt;p&gt;But here's the thing nobody says loudly enough:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI coding agents are not junior developers with bad habits. They're perfect soldiers who follow orders to the letter — including the ones you forgot to give.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They don't carry your team's institutional knowledge. They don't know about that authentication bypass your security team patched last quarter. They've never read your architecture decision records. They have no idea that your compliance officer will reject any PR that touches PII without an audit trail.&lt;/p&gt;

&lt;p&gt;They know what you told them. In &lt;em&gt;this&lt;/em&gt; session. In &lt;em&gt;this&lt;/em&gt; prompt. Nothing more.&lt;/p&gt;

&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%2Fbhdf2ogz2sq6ouy7ips4.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%2Fbhdf2ogz2sq6ouy7ips4.png" alt="A friendly robot saluting, oblivious to the trail of security vulnerabilities it left behind — broken locks, warning alerts, and missing tests scattered across code blocks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So when you're in the zone — shipping fast, riding the wave — the agent is right there with you. Producing code that &lt;em&gt;works&lt;/em&gt;. Code that does the thing you asked for. Code that might also have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ No input validation on user-facing endpoints&lt;/li&gt;
&lt;li&gt;❌ No error handling beyond letting exceptions bubble to the client&lt;/li&gt;
&lt;li&gt;❌ No tests — not even a smoke test&lt;/li&gt;
&lt;li&gt;❌ No auth check on that shiny new admin route&lt;/li&gt;
&lt;li&gt;❌ A raw SQL query stitched together with f-strings, practically begging for exploitation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI didn't ignore your standards. &lt;strong&gt;You never told it what they were.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that's not a prompt engineering problem. That's an architecture problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Your SDLC Didn't Survive First Contact With Vibes
&lt;/h2&gt;

&lt;p&gt;Software engineering has decades of battle-tested wisdom encoded into process: code review gates, static analysis, security scanning, test coverage thresholds, dependency audits, compliance checklists. None of it exists because someone thought bureaucracy was fun. Every rule in your SDLC is a scar from a production incident someone lived through.&lt;/p&gt;

&lt;p&gt;Vibe coding, done carelessly, routes around all of it.&lt;/p&gt;

&lt;p&gt;Not because the AI is incompetent — because it's &lt;em&gt;obedient&lt;/em&gt;. It builds exactly what you describe. If your description doesn't mention security, the output won't include it. If you don't specify tests, none get written. If your compliance requirements live in a Confluence doc the AI has never seen, those requirements functionally don't exist.&lt;/p&gt;

&lt;p&gt;The common response is predictable: &lt;strong&gt;"Write better prompts."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Include your standards. Remind the agent every session. Paste in requirements. Maintain a prompt template in Notion.&lt;/p&gt;

&lt;p&gt;Sure. That works. It also means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔄 &lt;strong&gt;Every developer&lt;/strong&gt; has to know which standards to paste, and when, and for which kind of project&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;Every new repo&lt;/strong&gt; starts from zero on prompt setup — even if it's the third FastAPI service this quarter&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Every standards update&lt;/strong&gt; has to be manually propagated across every team's prompt templates&lt;/li&gt;
&lt;li&gt;🚫 &lt;strong&gt;Nothing enforces&lt;/strong&gt; that anyone actually did any of it&lt;/li&gt;
&lt;li&gt;👻 &lt;strong&gt;Nothing detects&lt;/strong&gt; when someone's prompt drifted from the current baseline&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;You didn't eliminate the governance problem. You moved it from code review into an unversioned, unaudited text box.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What the Problem Actually Demands
&lt;/h2&gt;

&lt;p&gt;You need your engineering standards — security rules, testing expectations, architecture constraints, compliance requirements — to be &lt;strong&gt;injected into the agent's context automatically&lt;/strong&gt;. For every project. Every language. Every framework. Without anyone having to remember, copy-paste, or reinvent from scratch.&lt;/p&gt;

&lt;p&gt;You need a policy layer that sits between your governance baseline and the half-dozen AI agents your team actually uses.&lt;/p&gt;

&lt;p&gt;That's exactly what &lt;a href="https://github.com/sidrat2612/agent-policykit" rel="noopener noreferrer"&gt;&lt;code&gt;agent-policykit&lt;/code&gt;&lt;/a&gt; does.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;agent-policykit
agent-policykit init
agent-policykit generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Three commands. Your AI agents — GitHub Copilot, Claude Code, Cursor, Aider, OpenAI Codex, Gemini CLI — all get instruction files that reflect your governance baseline, your stack's best practices, and your SDLC standards. Automatically. Consistently. Every time.&lt;/p&gt;

&lt;p&gt;No prompt templates. No tribal knowledge. No hoping someone remembered.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Policy Compiler for the Age of AI Agents
&lt;/h2&gt;

&lt;p&gt;Think of &lt;code&gt;agent-policykit&lt;/code&gt; the way you think about a compiler. You define policy once, in a structured format. The tool detects your repo's technology stack and compiles that policy into the native instruction files each agent reads at startup.&lt;/p&gt;

&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%2F98yinj74ua5lmekiuef8.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%2F98yinj74ua5lmekiuef8.png" alt="YAML rule packs for governance, security, and testing flowing into a central compiler engine, which outputs agent-specific instruction files for six different AI coding tools"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pipeline is four stages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1️⃣ Detect&lt;/strong&gt; — scans the repo for languages, frameworks, and project type&lt;br&gt;
&lt;strong&gt;2️⃣ Load&lt;/strong&gt; — pulls in YAML rule packs covering governance, security, testing, and compliance&lt;br&gt;
&lt;strong&gt;3️⃣ Merge&lt;/strong&gt; — compiles everything into a single, coherent &lt;code&gt;PolicyBundle&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;4️⃣ Render&lt;/strong&gt; — outputs native instruction files for every configured agent target&lt;/p&gt;

&lt;p&gt;The result isn't a vague "please write secure code" reminder bolted onto a system prompt. It's structured, contextual, stack-specific guidance that the agent processes as first-class instructions.&lt;/p&gt;


&lt;h2&gt;
  
  
  58 Rule Packs. Real SDLC Coverage. Out of the Box.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;agent-policykit&lt;/code&gt; ships with &lt;strong&gt;58 rule packs&lt;/strong&gt; across four categories — enough to cover the vast majority of production stacks without writing a single custom rule:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;What It Covers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8 packs&lt;/td&gt;
&lt;td&gt;Architecture, security baselines, compliance, operations, testing, review, output contracts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Languages&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;28 packs&lt;/td&gt;
&lt;td&gt;Python, TypeScript, Go, Java, Rust, Ruby, PHP, Kotlin, Swift, C#, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frameworks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;13 packs&lt;/td&gt;
&lt;td&gt;FastAPI, Django, Express, NestJS, Next.js, Spring Boot, Rails, Flask, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Project Types&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;9 packs&lt;/td&gt;
&lt;td&gt;API service, web app, microservice, worker, CLI tool, SDK, monolith, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The governance packs are the load-bearing ones. When &lt;code&gt;agent-policykit&lt;/code&gt; generates instruction files for your project, the AI agent starts every session already knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔐 &lt;strong&gt;Security baseline&lt;/strong&gt; — input validation, auth patterns, dependency hygiene, secret management&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Testing requirements&lt;/strong&gt; — expected coverage, testing idioms for your stack, what qualifies as "tested"&lt;/li&gt;
&lt;li&gt;🏗️ &lt;strong&gt;Architecture constraints&lt;/strong&gt; — layer boundaries, allowed dependencies, communication patterns&lt;/li&gt;
&lt;li&gt;📋 &lt;strong&gt;Compliance posture&lt;/strong&gt; — data handling rules, audit trails, regulatory considerations&lt;/li&gt;
&lt;li&gt;👁️ &lt;strong&gt;Review standards&lt;/strong&gt; — what a proper code review looks like for this kind of project&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This is the difference between telling a developer "be secure" and handing them a security checklist calibrated to their exact stack.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Stack-Aware Instructions — Because One Size Fits Nothing
&lt;/h2&gt;

&lt;p&gt;A Python/FastAPI API service and a TypeScript/Next.js web app live in different security universes. They have different injection surfaces, different auth patterns, different testing idioms, different deployment models. A generic "follow best practices" prompt is worse than useless — it's actively misleading.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;agent-policykit&lt;/code&gt; eliminates this problem at the source. When you run &lt;code&gt;init&lt;/code&gt;, it reads your repo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-policykit detect
&lt;span class="c"&gt;# → Python, FastAPI, api_service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then &lt;code&gt;generate&lt;/code&gt; compiles instructions that include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI-specific&lt;/strong&gt; security patterns (Depends-based auth, Pydantic validation, middleware ordering)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python-specific&lt;/strong&gt; testing conventions (pytest idioms, fixture patterns, coverage tooling)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API service-specific&lt;/strong&gt; architecture guidance (request lifecycle, error response contracts, rate limiting)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of it layered on top of your governance baseline. A Rails monolith gets different output — because it &lt;em&gt;should&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Your developers stop guessing which standards apply. The agent already knows.&lt;/p&gt;


&lt;h2&gt;
  
  
  One Config. Every Agent. Zero Drift.
&lt;/h2&gt;

&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%2Fd8eo1l04ug70z54tuy5m.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%2Fd8eo1l04ug70z54tuy5m.png" alt="A single glowing TOML config file radiating golden light beams down to six AI agent workspaces, each displaying identical security shields — representing consistent standards from one source of truth"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what the configuration looks like in your &lt;code&gt;pyproject.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[tool.agent-policykit]&lt;/span&gt;
&lt;span class="py"&gt;targets&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"copilot"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"agents-md"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"cursor"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"claude-code"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"aider"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"gemini-cli"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="py"&gt;languages&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"python"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="py"&gt;frameworks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"fastapi"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="py"&gt;project_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"api_service"&lt;/span&gt;
&lt;span class="py"&gt;review_mode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;From this single source of truth, &lt;code&gt;agent-policykit generate&lt;/code&gt; writes every instruction file your agents need:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.github/copilot-instructions.md              # GitHub Copilot
.github/instructions/project.instructions.md # VS Code Agents
AGENTS.md                                    # Generic agent instructions
CLAUDE.md                                    # Claude Code (project root)
.claude/rules/shared.md                      # Claude Code (rules)
.cursor/rules/project.mdc                    # Cursor
CONVENTIONS.md                               # Convention-based agents
.aider.conf.yml                              # Aider
GEMINI.md                                    # Gemini CLI
AGENT_POLICY.md                              # Universal policy reference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;All consistent. All from the same policy. When your security standards evolve, you regenerate — and every file updates. No manual sync. No "oh, we forgot to update the Cursor rules."&lt;/p&gt;


&lt;h2&gt;
  
  
  Review Mode: Turn the AI Into Your Toughest Reviewer
&lt;/h2&gt;

&lt;p&gt;Standards enforcement isn't just about what code gets generated — it's about what code gets &lt;em&gt;caught&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-policykit generate &lt;span class="nt"&gt;--mode&lt;/span&gt; review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Review mode activates a stricter behavioral overlay. The agent shifts posture: instead of a helpful pair programmer, it becomes a technically demanding code reviewer. Skeptical of missing safeguards. Explicit about security gaps. Thorough on test coverage. Vocal about architectural drift.&lt;/p&gt;

&lt;p&gt;The same policy that guided code generation now guides code review — from the same source, with the same rules, coherently.&lt;/p&gt;


&lt;h2&gt;
  
  
  Safety Guarantees Built for Governance
&lt;/h2&gt;

&lt;p&gt;Because &lt;code&gt;agent-policykit&lt;/code&gt; manages files that carry real governance weight, it ships with hard safety properties:&lt;/p&gt;

&lt;p&gt;🔒 &lt;strong&gt;Security downgrade blocking&lt;/strong&gt; — If a regeneration would &lt;em&gt;remove&lt;/em&gt; a security rule, the operation halts. You must pass &lt;code&gt;--force&lt;/code&gt; to override. You cannot silently weaken your agents' security posture.&lt;/p&gt;

&lt;p&gt;📐 &lt;strong&gt;Managed-section ownership&lt;/strong&gt; — Generated content is clearly demarcated. Human-authored additions outside managed sections are preserved through every regeneration.&lt;/p&gt;

&lt;p&gt;👁️ &lt;strong&gt;Dry-run everything&lt;/strong&gt; — &lt;code&gt;diff&lt;/code&gt; is always non-destructive. Both &lt;code&gt;generate&lt;/code&gt; and &lt;code&gt;update&lt;/code&gt; support &lt;code&gt;--dry-run&lt;/code&gt; so you can audit changes before they land.&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Structured conflict surfacing&lt;/strong&gt; — Non-security rule removals aren't silently dropped. They're flagged with clear explanations.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Day-to-Day Workflow
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# First time in a repo&lt;/span&gt;
agent-policykit init        &lt;span class="c"&gt;# Detect stack, write config&lt;/span&gt;
agent-policykit generate    &lt;span class="c"&gt;# Compile policy, write all agent files&lt;/span&gt;

&lt;span class="c"&gt;# When standards evolve&lt;/span&gt;
agent-policykit diff        &lt;span class="c"&gt;# Preview what would change&lt;/span&gt;
agent-policykit update      &lt;span class="c"&gt;# Regenerate safely, preserve human edits&lt;/span&gt;

&lt;span class="c"&gt;# CI integration&lt;/span&gt;
agent-policykit validate    &lt;span class="c"&gt;# Check structural correctness&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is the full loop. It's designed to live in your repo alongside your source code — checked in, versioned, CI-validated, reviewed in PRs like any other infrastructure change.&lt;/p&gt;


&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&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%2F4urlynvidh1dq0e9b4b5.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%2F4urlynvidh1dq0e9b4b5.png" alt="Before and after: chaotic tangled code with broken locks and warnings transforms into organized, secure pipelines with shields and green checkmarks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👩‍💻 &lt;strong&gt;Developers&lt;/strong&gt; who want to vibe code at full speed without silently shipping vulnerabilities&lt;/li&gt;
&lt;li&gt;🏢 &lt;strong&gt;Engineering leads&lt;/strong&gt; tired of standards being bypassed because nobody remembered the right prompt&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Platform &amp;amp; DevSecOps teams&lt;/strong&gt; managing secure defaults across dozens of repos and agents&lt;/li&gt;
&lt;li&gt;🤝 &lt;strong&gt;Consultancies&lt;/strong&gt; onboarding clients onto different stacks with consistent governance&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Open-source maintainers&lt;/strong&gt; who want every contributor's AI agent following the same rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common thread: &lt;strong&gt;anyone who has watched an AI agent produce working, shippable, dangerously insecure code — because nobody told it not to.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Get Started in 60 Seconds
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;agent-policykit
agent-policykit init
agent-policykit generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sidrat2612" rel="noopener noreferrer"&gt;
        sidrat2612
      &lt;/a&gt; / &lt;a href="https://github.com/sidrat2612/agent-policykit" rel="noopener noreferrer"&gt;
        agent-policykit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      For teams using multiple AI coding agents: detect the repo stack, generate Copilot, Claude, Cursor, Codex, Aider, and Gemini instruction files from one policy, and update them safely.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;agent-policykit&lt;/h1&gt;
&lt;/div&gt;


&lt;p&gt;&lt;br&gt;
    &lt;strong&gt;One engineering policy in. Agent-specific instruction files out.&lt;/strong&gt;&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
  &lt;p&gt;&lt;br&gt;
    For teams using multiple AI coding agents in the same repository&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
  &lt;p&gt;&lt;br&gt;
    &lt;a href="https://github.com/sidrat2612/agent-policykit/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/sidrat2612/agent-policykit/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;br&gt;
    &lt;a href="https://github.com/sidrat2612/agent-policykit/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d39e34234d96fea5e65dcd9af532e7bf3c3603f6e4dc3510ffe0f1b05f5b20d7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f736964726174323631322f6167656e742d706f6c6963796b6974" alt="License"&gt;&lt;/a&gt;&lt;br&gt;
    &lt;a href="https://github.com/sidrat2612/agent-policykit/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ba378306eed91ea7236bc3260b1b964eb6fbd49879e60ec95ab4f3646efb5bca/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f736964726174323631322f6167656e742d706f6c6963796b69743f7374796c653d736f6369616c" alt="Stars"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;code&gt;agent-policykit&lt;/code&gt; detects the stack in a repository, merges governance with language, framework, and project-type rules, and writes the exact instruction files each coding agent expects.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your repo has Copilot, Cursor, Claude Code, Codex, Aider, or Gemini users, &lt;code&gt;agent-policykit&lt;/code&gt; keeps them aligned on the same security, architecture, testing, and review guidance without hand-editing separate prompt files.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Most teams that adopt AI coding assistants hit the same problem quickly: every tool wants a different file, a different format, and a different maintenance path.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;agent-policykit&lt;/code&gt; solves that with a compiler-style workflow:&lt;/p&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;Without agent-policykit&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;With agent-policykit&lt;/th&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Multiple agents in one repo&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Prompt files drift and contradict each other&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;One shared policy generates all outputs&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Stack-specific guidance&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Generic prompts ignore framework and project type&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Packs inject Python, FastAPI, monolith, SDK, and other&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sidrat2612/agent-policykit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;The repo includes real, validated example fixtures for FastAPI, Next.js, and Rails projects — tested in CI. Inspect exactly what the generated output looks like before running anything against your own codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe coding is worth keeping. Your engineering standards are non-negotiable. &lt;code&gt;agent-policykit&lt;/code&gt; is how you stop choosing between the two.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;MIT licensed. Contributions welcome — see &lt;a href="https://github.com/sidrat2612/agent-policykit/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Found this useful? Drop a 🦄 and follow for more on AI-assisted development, DevSecOps, and developer tooling.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>security</category>
    </item>
    <item>
      <title>Stop Treating Mixed Prompts Like One Task: Why I Built RouteSmith</title>
      <dc:creator>Siddharth Rathore</dc:creator>
      <pubDate>Thu, 07 May 2026 14:24:28 +0000</pubDate>
      <link>https://dev.to/siddharth_rathore/stop-treating-mixed-prompts-like-one-task-why-i-built-routesmith-2bbh</link>
      <guid>https://dev.to/siddharth_rathore/stop-treating-mixed-prompts-like-one-task-why-i-built-routesmith-2bbh</guid>
      <description>&lt;p&gt;&lt;em&gt;I built RouteSmith because mixed prompts are workflows, not single tasks. It routes coding-agent work across real host constraints instead of pretending every environment works the same way.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;I built RouteSmith because coding agents still make users do too much manual routing.&lt;/p&gt;

&lt;p&gt;If a prompt says, "plan this feature, implement it, add tests, and write docs," that is not one task. It is a workflow.&lt;/p&gt;

&lt;p&gt;RouteSmith detects the current host, decomposes the prompt into task types, maps those tasks to capability classes, and routes them using what the host can actually support. If the host supports switching, RouteSmith can suggest concrete models. If it does not, RouteSmith falls back honestly instead of pretending switching happened.&lt;/p&gt;

&lt;p&gt;It is especially useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;people starting with coding agents&lt;/li&gt;
&lt;li&gt;vibe coders who do not want to learn model tradeoffs first&lt;/li&gt;
&lt;li&gt;solo builders doing mixed-task prompts&lt;/li&gt;
&lt;li&gt;advanced users who want measurable, configurable routing&lt;/li&gt;
&lt;/ul&gt;

&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%2F6v5mfjx73sx8adma3uhg.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%2F6v5mfjx73sx8adma3uhg.png" alt="One coding prompt branching into multiple task-specific workstreams inside an IDE and terminal workflow." width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem That Kept Annoying Me
&lt;/h2&gt;

&lt;p&gt;I kept running into the same moment.&lt;/p&gt;

&lt;p&gt;I would open a coding agent and give it one big prompt:&lt;/p&gt;

&lt;p&gt;"Plan this feature, implement it, add tests, write docs, and review the result."&lt;/p&gt;

&lt;p&gt;At first it felt smooth.&lt;/p&gt;

&lt;p&gt;Then the flow broke.&lt;/p&gt;

&lt;p&gt;I stopped thinking about the feature and started doing routing in my head.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;should planning use a stronger reasoning model?&lt;/li&gt;
&lt;li&gt;should coding use something different?&lt;/li&gt;
&lt;li&gt;why am I spending the heaviest model on docs and formatting?&lt;/li&gt;
&lt;li&gt;does this host even support switching the way I think it does?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was the real problem.&lt;/p&gt;

&lt;p&gt;The prompt was never one task. It was several different jobs bundled together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RouteSmith Is
&lt;/h2&gt;

&lt;p&gt;RouteSmith is a host-aware routing layer for coding agents.&lt;/p&gt;

&lt;p&gt;It is not another coding agent.&lt;/p&gt;

&lt;p&gt;It is not an API gateway.&lt;/p&gt;

&lt;p&gt;It sits between a mixed prompt and the host's real capabilities.&lt;/p&gt;

&lt;p&gt;The basic flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;detect the current host&lt;/li&gt;
&lt;li&gt;classify the prompt into task types&lt;/li&gt;
&lt;li&gt;map those task types to capability classes&lt;/li&gt;
&lt;li&gt;resolve those capabilities against host-native models or strategies&lt;/li&gt;
&lt;li&gt;preserve dependency order&lt;/li&gt;
&lt;li&gt;track outcomes and improve routing over time&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why "Host-Aware" Is the Important Part
&lt;/h2&gt;

&lt;p&gt;This is the part I care about most.&lt;/p&gt;

&lt;p&gt;Too many conversations about multi-model workflows flatten away the host and act like every environment exposes the same control surface.&lt;/p&gt;

&lt;p&gt;They do not.&lt;/p&gt;

&lt;p&gt;Claude Code, Cursor, Copilot, Codex, Gemini CLI, and Aider do not all behave the same way. Some support real model switching. Some expose model choice differently. Some are much more host-controlled.&lt;/p&gt;

&lt;p&gt;So RouteSmith is built around a simple rule:&lt;/p&gt;

&lt;p&gt;the host is the source of truth.&lt;/p&gt;

&lt;p&gt;If the host supports dynamic switching, RouteSmith can route tasks to concrete models.&lt;/p&gt;

&lt;p&gt;If the host does not, RouteSmith does not fake it. It keeps the routing logic and applies prompt strategy instead.&lt;/p&gt;

&lt;p&gt;That honest behavior matters more than a fake universal abstraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;This project is not just for people who already know the difference between reasoning models, coding models, fast utility models, and cost-optimized routing.&lt;/p&gt;

&lt;p&gt;It is also for people who are new to all of that.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. People starting with coding agents
&lt;/h3&gt;

&lt;p&gt;If you are using agent tools but still do not know when to switch models, RouteSmith is meant to help reduce that decision burden.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. People doing vibe coding
&lt;/h3&gt;

&lt;p&gt;If your style is to describe the outcome in plain English and keep moving, RouteSmith helps because it treats the prompt like a workflow rather than a blob.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Solo builders and founders
&lt;/h3&gt;

&lt;p&gt;If you are doing planning, implementation, tests, docs, and review yourself, task-aware routing becomes immediately useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Advanced users
&lt;/h3&gt;

&lt;p&gt;If you care about policy overrides, plugins, telemetry, performance-aware routing, and host constraints, RouteSmith has room for that too.&lt;/p&gt;

&lt;p&gt;The short version:&lt;/p&gt;

&lt;p&gt;RouteSmith is for people who want the benefits of multi-model workflows without having to become experts in model routing first.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Concrete Example
&lt;/h2&gt;

&lt;p&gt;Say a beginner types this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build me a simple expense tracker with authentication, add tests, and write a README.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What that usually means is something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;planning the feature structure&lt;/li&gt;
&lt;li&gt;implementing the app&lt;/li&gt;
&lt;li&gt;writing tests&lt;/li&gt;
&lt;li&gt;documenting the result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are different kinds of work.&lt;/p&gt;

&lt;p&gt;RouteSmith can treat them that way.&lt;/p&gt;

&lt;p&gt;A conceptual route might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;planning      -&amp;gt; deep_reasoning
coding        -&amp;gt; coding
testing       -&amp;gt; coding
documentation -&amp;gt; balanced
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the host adapter decides what that means in practice.&lt;/p&gt;

&lt;p&gt;If the host supports switching, RouteSmith can suggest concrete models for each step.&lt;/p&gt;

&lt;p&gt;If the host does not, it still preserves the task-aware strategy without lying about model control.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works Under the Hood
&lt;/h2&gt;

&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%2Fl8z40qp359v0m7niolnx.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%2Fl8z40qp359v0m7niolnx.png" alt="Flow diagram showing host detection, task classification, capability mapping, routing, execution, and telemetry feedback." width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deterministic planning
&lt;/h3&gt;

&lt;p&gt;RouteSmith classifies prompts into task types such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;planning&lt;/li&gt;
&lt;li&gt;analysis&lt;/li&gt;
&lt;li&gt;coding&lt;/li&gt;
&lt;li&gt;testing&lt;/li&gt;
&lt;li&gt;refactor&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;formatting&lt;/li&gt;
&lt;li&gt;review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That planning is deterministic. It does not need live API calls just to understand the shape of the request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Capability classes
&lt;/h3&gt;

&lt;p&gt;Instead of hardcoding routes directly to model names, RouteSmith maps tasks into capability classes like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;deep_reasoning&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;coding&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;balanced&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fast&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes the system portable across hosts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dependency-aware execution
&lt;/h3&gt;

&lt;p&gt;Mixed prompts are not just lists. Tests often depend on implementation. Docs usually follow the change. Review comes later.&lt;/p&gt;

&lt;p&gt;RouteSmith keeps that order intact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance-aware routing
&lt;/h3&gt;

&lt;p&gt;RouteSmith also records local telemetry such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;model used&lt;/li&gt;
&lt;li&gt;host name&lt;/li&gt;
&lt;li&gt;task type&lt;/li&gt;
&lt;li&gt;capability class&lt;/li&gt;
&lt;li&gt;success or failure&lt;/li&gt;
&lt;li&gt;duration&lt;/li&gt;
&lt;li&gt;telemetry source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That data is not just for display.&lt;/p&gt;

&lt;p&gt;If enough evidence shows that a default model is weak for a capability and a better host-available option exists, RouteSmith can de-prioritize the weaker model.&lt;/p&gt;

&lt;p&gt;That turns performance tracking into an active routing signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Compares to Other Tools
&lt;/h2&gt;

&lt;p&gt;I do not think the useful framing here is "RouteSmith vs everything else."&lt;/p&gt;

&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%2Fyjk8byjv4w5vcdt5yf49.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%2Fyjk8byjv4w5vcdt5yf49.png" alt="Diagram showing agent products, RouteSmith as a routing layer, and API gateway infrastructure as separate layers." width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The useful framing is that adjacent tools solve different layers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent products
&lt;/h3&gt;

&lt;p&gt;Claude Code, Cursor, and Aider are agent products. They are the tools doing the coding work.&lt;/p&gt;

&lt;p&gt;RouteSmith is not trying to replace them.&lt;/p&gt;

&lt;h3&gt;
  
  
  API and gateway infrastructure
&lt;/h3&gt;

&lt;p&gt;LiteLLM and Portkey solve a different problem: multi-provider routing, control, and observability at the API layer.&lt;/p&gt;

&lt;p&gt;That is useful, but it is not the same layer RouteSmith lives in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rules, skills, and instructions
&lt;/h3&gt;

&lt;p&gt;Instruction surfaces help shape behavior, but they are not routing brains on their own.&lt;/p&gt;

&lt;p&gt;RouteSmith sits between these layers as a host-aware routing layer for coding-agent workflows.&lt;/p&gt;

&lt;p&gt;If I had to summarize it simply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use Claude Code, Cursor, or Aider when you want a coding agent&lt;/li&gt;
&lt;li&gt;use LiteLLM or Portkey when you want API-layer routing or gateway control&lt;/li&gt;
&lt;li&gt;use RouteSmith when you want mixed-task coding prompts routed more intelligently inside real host constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What It Actually Gives You
&lt;/h2&gt;

&lt;p&gt;The main benefit is not novelty. It is leverage.&lt;/p&gt;

&lt;p&gt;RouteSmith helps by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reducing model micromanagement&lt;/li&gt;
&lt;li&gt;making mixed prompts more structured&lt;/li&gt;
&lt;li&gt;respecting host-specific constraints&lt;/li&gt;
&lt;li&gt;helping beginners benefit from better routing without needing deep model knowledge&lt;/li&gt;
&lt;li&gt;giving advanced users telemetry, policy, and performance-aware adaptation&lt;/li&gt;
&lt;/ul&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;routesmith
routesmith detect-host
routesmith explain &lt;span class="s2"&gt;"Plan this feature, implement it, add tests, and write docs"&lt;/span&gt;
routesmith run &lt;span class="s2"&gt;"Plan this feature, implement it, add tests, and write docs"&lt;/span&gt;
routesmith stats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you want to use it as a tool inside larger workflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;routesmith serve-stdio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;The interesting part of coding-agent workflows is no longer just the model.&lt;/p&gt;

&lt;p&gt;It is the routing layer around the work.&lt;/p&gt;

&lt;p&gt;If a prompt contains planning, coding, testing, documentation, and review, then treating it like one undifferentiated request is a bad fit for how software work actually happens.&lt;/p&gt;

&lt;p&gt;That is the gap RouteSmith is trying to close.&lt;/p&gt;




&lt;p&gt;Github link: &lt;a href="https://github.com/sidrat2612/routesmith" rel="noopener noreferrer"&gt;github.com/sidrat2612/routesmith&lt;/a&gt;&lt;br&gt;
PyPI link: &lt;a href="https://pypi.org/project/routesmith/" rel="noopener noreferrer"&gt;pypi.org/project/routesmith&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>vibecoding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How a small misconfiguration cost me $10000 in AWS Bill!!</title>
      <dc:creator>Siddharth Rathore</dc:creator>
      <pubDate>Mon, 05 Jan 2026 06:39:18 +0000</pubDate>
      <link>https://dev.to/siddharth_rathore/how-a-small-misconfiguration-cost-me-10000-in-aws-bill-4lb5</link>
      <guid>https://dev.to/siddharth_rathore/how-a-small-misconfiguration-cost-me-10000-in-aws-bill-4lb5</guid>
      <description>&lt;p&gt;This was the time when I was just starting with AWS. I came from a background where I worked on bare-metal servers and knew little about Cloud Platforms. I joined a startup, and there I started working on AWS, where the company's entire production environment had only two EC2 instances - one hosting the web application and the other running the database.&lt;/p&gt;

&lt;p&gt;Being a startup, after some time, they started getting traction, and with growing users, the database started growing at a rapid pace. To ensure data protection and business continuity, I was asked to design and implement a backup and disaster recovery (DR) strategy.&lt;/p&gt;

&lt;p&gt;At the time, AWS did not offer a secondary region within the same country for our geography. Due to strict data compliance requirements, storing data outside the country was not an option - effectively ruling out cross-region DR within AWS. So, after much discussion, I finalised the following plan&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Primary Hosting would remain on AWS.&lt;/li&gt;
&lt;li&gt;Cold Disaster Recovery would be hosted on Google Cloud Platform (GCP), solely for worst-case scenarios.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To achieve the above I created 3 types of backup jobs–&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Full Backup - Once every Friday night&lt;/li&gt;
&lt;li&gt;Differential Backup - Every night&lt;/li&gt;
&lt;li&gt;Transactional backup - Every 30 min&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I uploaded the backups to AWS S3 and then synced them to GCP. In GCP, I retained only two weeks of data to keep storage costs under control.&lt;/p&gt;

&lt;p&gt;For the first few months, everything appeared to work as expected. However, after roughly 4 months, I started seeing our AWS bill rising. When I looked closely at the bill, the cost spike was primarily due to data transfer charges running into terabytes. This was puzzling. Our database size was around 200 GB, and even with regular backups, my calculations suggested that monthly transfer costs should not exceed $500.&lt;/p&gt;

&lt;p&gt;We raised a support ticket with AWS. After reviewing the case, AWS confirmed that the data transfer charges were legitimate and advised us to inspect our S3 buckets more closely.&lt;/p&gt;

&lt;p&gt;After more investigation, I found terabytes of broken multipart uploads - incomplete files that had never been cleaned up. These broken multipart uploads were being picked up by the S3-to-GCP sync process and transferred repeatedly, massively increasing data transfer costs.&lt;/p&gt;

&lt;p&gt;With the root cause found, the solution was simple. I applied S3 lifecycle policy to automatically delete incomplete multipart uploads. Once this rule was applied, the unnecessary data transfers stopped, and the AWS bills came down to normal in subsequent months.&lt;/p&gt;

&lt;p&gt;From that point onward, every new S3 bucket I created included a default lifecycle rule to clean up incomplete multipart uploads. This costly lesson not only taught me to include this in our best practice but also to check and verify small configurations for Cloud setup and its governance, which we often overlook.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
