<?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: Natu Lauchande</title>
    <description>The latest articles on DEV Community by Natu Lauchande (@nlauchande).</description>
    <link>https://dev.to/nlauchande</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%2F1372550%2Fe00cbd8e-d5a8-4d30-89c6-b70a571e19a1.jpeg</url>
      <title>DEV Community: Natu Lauchande</title>
      <link>https://dev.to/nlauchande</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nlauchande"/>
    <language>en</language>
    <item>
      <title>VibeOps Quickstart: From Clone to Governed Agent in 5 Minutes</title>
      <dc:creator>Natu Lauchande</dc:creator>
      <pubDate>Sun, 22 Mar 2026 14:06:40 +0000</pubDate>
      <link>https://dev.to/nlauchande/vibeops-quickstart-run-a-governed-fastapi-project-in-5-minutes-19f4</link>
      <guid>https://dev.to/nlauchande/vibeops-quickstart-run-a-governed-fastapi-project-in-5-minutes-19f4</guid>
      <description>&lt;p&gt;You've heard about VibeOps. Here's how it actually feels to use it.&lt;/p&gt;

&lt;p&gt;Five minutes. Real interaction. No hand-waving.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 — Configure Your Code Agent
&lt;/h2&gt;

&lt;p&gt;VibeOps works with whatever AI coding tool you already use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&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;# CLAUDE.md in the repo root is a symlink to AGENTS.md&lt;/span&gt;
&lt;span class="c"&gt;# Claude reads it automatically — nothing to configure&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;br&gt;
Add to your &lt;code&gt;.cursorrules&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Always read AGENTS.md at the start of every session before writing any code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windsurf / Copilot / any tool with a system prompt&lt;/strong&gt;&lt;br&gt;
Paste the contents of &lt;code&gt;AGENTS.md&lt;/code&gt; into your project context or system prompt.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The rule: your agent needs to read &lt;code&gt;AGENTS.md&lt;/code&gt; before it does anything. That's it.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Step 2 — Get the Template
&lt;/h2&gt;

&lt;p&gt;Go to the repo and click &lt;strong&gt;"Use this template" → "Create a new repository"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/vibeops-central/fastapi-vibeops-template" rel="noopener noreferrer"&gt;https://github.com/vibeops-central/fastapi-vibeops-template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This creates a fresh repo in your account with no git history — clean slate, ready to build.&lt;/p&gt;

&lt;p&gt;Or via GitHub CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh repo create my-project &lt;span class="nt"&gt;--template&lt;/span&gt; vibeops-central/fastapi-vibeops-template
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The template ships with &lt;code&gt;AGENTS.md&lt;/code&gt; already written — a full agent constitution covering architecture, conventions, hard constraints, and the Feature Kickoff Protocol.&lt;/p&gt;

&lt;p&gt;Open it. Read it. It's the most important file in the repo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 — Fire Up Your Agent
&lt;/h2&gt;

&lt;p&gt;Open the project in your tool of choice and start a new session.&lt;/p&gt;

&lt;p&gt;Your agent will read &lt;code&gt;AGENTS.md&lt;/code&gt; and know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The stack (FastAPI, PostgreSQL, SQLAlchemy 2.0 async, Redis)&lt;/li&gt;
&lt;li&gt;The patterns to follow&lt;/li&gt;
&lt;li&gt;The mistakes it's not allowed to make&lt;/li&gt;
&lt;li&gt;How to handle new feature requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now give it something real to build.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 — Prompt Your App
&lt;/h2&gt;

&lt;p&gt;Here's where VibeOps earns its keep. Try this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You:&lt;/strong&gt; &lt;code&gt;New feature: user registration and JWT authentication&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A &lt;em&gt;non-governed&lt;/em&gt; agent starts writing code immediately.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;VibeOps-governed&lt;/em&gt; agent does this instead:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Agent:&lt;/strong&gt; &lt;em&gt;Entering design mode. No code yet.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'll produce a spec and test scenarios for your review before writing anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;specs/auth.md&lt;/code&gt;&lt;/strong&gt; (excerpt):&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;## Feature: User Registration &amp;amp; JWT Auth&lt;/span&gt;

&lt;span class="gu"&gt;### Scope&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; POST /auth/register — create user, hash password with bcrypt
&lt;span class="p"&gt;-&lt;/span&gt; POST /auth/login — validate credentials, return JWT access token
&lt;span class="p"&gt;-&lt;/span&gt; JWT: RS256, 30-min expiry, user_id + roles in payload

&lt;span class="gu"&gt;### Hard constraints (from AGENTS.md)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use bcrypt directly — no passlib
&lt;span class="p"&gt;-&lt;/span&gt; All DB calls via async SQLAlchemy session
&lt;span class="p"&gt;-&lt;/span&gt; No synchronous code in async routes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;tests/bdd/features/auth.feature&lt;/code&gt;&lt;/strong&gt; (excerpt):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gherkin"&gt;&lt;code&gt;&lt;span class="kd"&gt;Feature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; User Authentication

  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Successful registration
    &lt;span class="nf"&gt;Given &lt;/span&gt;no user exists with email &lt;span class="s"&gt;"dev@example.com"&lt;/span&gt;
    &lt;span class="nf"&gt;When &lt;/span&gt;I POST /auth/register with valid credentials
    &lt;span class="nf"&gt;Then &lt;/span&gt;the response status is 201
    &lt;span class="nf"&gt;And &lt;/span&gt;a user record exists in the database

  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Login with valid credentials
    &lt;span class="nf"&gt;Given &lt;/span&gt;a user exists with email &lt;span class="s"&gt;"dev@example.com"&lt;/span&gt;
    &lt;span class="nf"&gt;When &lt;/span&gt;I POST /auth/login with correct password
    &lt;span class="nf"&gt;Then &lt;/span&gt;the response status is 200
    &lt;span class="nf"&gt;And &lt;/span&gt;the response contains an access_token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Spec and scenarios are ready. Reply *&lt;/em&gt;"proceed"** to begin implementation.*&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;You:&lt;/strong&gt; &lt;code&gt;proceed&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent:&lt;/strong&gt; &lt;em&gt;Implementing...&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/models/user.py&lt;/code&gt; — SQLAlchemy User model&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/routers/auth.py&lt;/code&gt; — register + login endpoints&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/services/auth_service.py&lt;/code&gt; — bcrypt hashing, JWT generation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tests/bdd/steps/auth_steps.py&lt;/code&gt; — BDD step definitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;All tests passing. No passlib. No sync code in async routes. Vibecheck: 10/12.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;That's the loop. Spec → Gherkin → Approval → Code. Every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why It Works
&lt;/h2&gt;

&lt;p&gt;The agent didn't guess at your conventions. It didn't invent its own patterns. It read &lt;code&gt;AGENTS.md&lt;/code&gt;, knew the rules, and followed them — without you having to repeat yourself.&lt;/p&gt;

&lt;p&gt;That's what governed agentic development looks like.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href="https://github.com/vibeops-central/fastapi-vibeops-template" rel="noopener noreferrer"&gt;Star the template on GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 Read the &lt;a href="https://vibeopscentral.ai" rel="noopener noreferrer"&gt;12 Vibing Factors&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💬 Share your Vibecheck score with &lt;code&gt;#VibeOps&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;VibeOps — the governance layer for the agentic era.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://vibeopscentral.ai" rel="noopener noreferrer"&gt;vibeopscentral.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fastapi</category>
      <category>python</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>VibeOps: The Missing Governance Layer in Agentic Coding</title>
      <dc:creator>Natu Lauchande</dc:creator>
      <pubDate>Sat, 21 Mar 2026 04:05:01 +0000</pubDate>
      <link>https://dev.to/nlauchande/vibeops-the-missing-governance-layer-in-agentic-coding-166j</link>
      <guid>https://dev.to/nlauchande/vibeops-the-missing-governance-layer-in-agentic-coding-166j</guid>
      <description>&lt;p&gt;You've felt it. That moment when you prompt your AI coding agent, it confidently generates 200 lines of code — and somehow breaks three things you didn't ask it to touch.&lt;/p&gt;

&lt;p&gt;The agent was &lt;em&gt;vibing&lt;/em&gt;. But it wasn't &lt;em&gt;governed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That's the gap VibeOps fills.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is VibeOps?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;VibeOps&lt;/strong&gt; is a governance and optimisation framework for agentic coding environments. It sits between you and your AI agent — not to slow it down, but to make it &lt;em&gt;consistently good&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Think of it as the missing config layer. You have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt; for dependencies&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt; for secrets
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Dockerfile&lt;/code&gt; for environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; for your AI agent's behaviour&lt;/strong&gt; ← this is VibeOps&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problem with Raw Vibing
&lt;/h2&gt;

&lt;p&gt;Modern AI coding tools (Cursor, Copilot, Claude, Devin) are powerful but chaotic without structure. Left ungoverned, agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forget context between sessions&lt;/li&gt;
&lt;li&gt;Make assumptions that break conventions&lt;/li&gt;
&lt;li&gt;Repeat mistakes they've already made&lt;/li&gt;
&lt;li&gt;Have no memory of what "good" looks like in your codebase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You end up re-explaining, re-correcting, and re-reviewing the same things. The agent is fast, but &lt;em&gt;you&lt;/em&gt; become the bottleneck.&lt;/p&gt;

&lt;h2&gt;
  
  
  The VibeOps Solution
&lt;/h2&gt;

&lt;p&gt;VibeOps introduces four primary contributions:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;AGENTS.md&lt;/code&gt; — The Agent Constitution
&lt;/h3&gt;

&lt;p&gt;A structured markdown file that lives in your repo and tells your AI agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What this project is and how it's structured&lt;/li&gt;
&lt;li&gt;What conventions to follow&lt;/li&gt;
&lt;li&gt;What mistakes to never repeat&lt;/li&gt;
&lt;li&gt;How to behave across sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not a prompt. It's a &lt;strong&gt;persistent identity&lt;/strong&gt; for your agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Agent Skills
&lt;/h3&gt;

&lt;p&gt;Reusable, composable skill packages that agents can load on demand. Instead of explaining "how to deploy to Vercel" in every session, you write it once as a skill. The agent reads it when needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. VibeEvals
&lt;/h3&gt;

&lt;p&gt;Evaluation primitives for measuring agent output quality. Not just "did the tests pass?" but "did the agent follow conventions, avoid anti-patterns, and stay within scope?"&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The 12 Vibing Factors
&lt;/h3&gt;

&lt;p&gt;A checklist of governance principles for AI-assisted development — inspired by the 12-Factor App methodology, adapted for the agentic era.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vibecheck Score
&lt;/h2&gt;

&lt;p&gt;Every codebase can be scored on how well it's set up for agentic development. A high Vibecheck Score means your agent will produce better outputs, faster, with fewer corrections.&lt;/p&gt;

&lt;p&gt;A low score means you're fighting your tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Now?
&lt;/h2&gt;

&lt;p&gt;We're at an inflection point. AI coding agents went from "nice to have" to "core workflow" in 18 months. But the tooling to &lt;em&gt;govern&lt;/em&gt; them hasn't kept up.&lt;/p&gt;

&lt;p&gt;VibeOps is that tooling.&lt;/p&gt;




&lt;p&gt;The movement starts here: &lt;a href="https://vibeopscentral.ai" rel="noopener noreferrer"&gt;vibeopscentral.ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We're building the governance layer for the agentic era. Follow along.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
