<?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: Robert Li</title>
    <description>The latest articles on DEV Community by Robert Li (@robert_lica).</description>
    <link>https://dev.to/robert_lica</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3918823%2Fcd9e50a7-715e-44fe-b55d-50dcc1ba50ff.png</url>
      <title>DEV Community: Robert Li</title>
      <link>https://dev.to/robert_lica</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robert_lica"/>
    <language>en</language>
    <item>
      <title>Agentic Coding Without Losing Control — Supervised Secure Agentic Coding for .NET</title>
      <dc:creator>Robert Li</dc:creator>
      <pubDate>Mon, 29 Jun 2026 23:35:43 +0000</pubDate>
      <link>https://dev.to/robert_lica/agentic-coding-without-losing-control-supervised-secure-agentic-coding-for-net-aei</link>
      <guid>https://dev.to/robert_lica/agentic-coding-without-losing-control-supervised-secure-agentic-coding-for-net-aei</guid>
      <description>&lt;p&gt;Agentic coding is changing what it means to be a software developer.&lt;/p&gt;

&lt;p&gt;Traditionally, writing code consumed a large portion of a developer's day. As AI code agents become more capable, the developer's role is shifting — from writing every line to guiding, supervising, and validating AI-generated work.&lt;/p&gt;

&lt;p&gt;A typical workflow now looks something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Maintain a high-quality knowledge base that accurately captures business requirements and architectural decisions.&lt;/li&gt;
&lt;li&gt;Select the right LLM to generate technical specifications from that knowledge base.&lt;/li&gt;
&lt;li&gt;Review and approve the generated specs &lt;strong&gt;before&lt;/strong&gt; any code is written.&lt;/li&gt;
&lt;li&gt;Use a coding model to implement the approved specifications.&lt;/li&gt;
&lt;li&gt;Review the AI-generated code, reasoning, and comments — refine where necessary.&lt;/li&gt;
&lt;li&gt;Serve as the final gatekeeper, ensuring every change meets production standards for correctness, security, maintainability, and performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rather than replacing developers, agentic coding shifts more of our effort from writing every line to &lt;strong&gt;reviewing, orchestrating, and validating&lt;/strong&gt;. Strong engineering judgment is becoming &lt;em&gt;more&lt;/em&gt; valuable, not less.&lt;/p&gt;

&lt;p&gt;I've been experimenting with this workflow for .NET backend development under the name &lt;strong&gt;Supervised Secure Agentic Coding (SSAC)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem with Pure Agentic Coding
&lt;/h2&gt;

&lt;p&gt;Turning an AI agent loose on a codebase often feels like running a hackathon: fast early wins, inconsistent quality, and a lot of cleanup before anything is production-ready.&lt;/p&gt;

&lt;p&gt;The failure modes are predictable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Request misalignment&lt;/strong&gt; — Code compiles and runs but doesn't match the actual business requirement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Over-complex generation&lt;/strong&gt; — Unnecessary abstractions, extra dependencies, scope the team never asked for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapid AI technical debt&lt;/strong&gt; — Inconsistent patterns and shortcuts accumulate faster than a human team would allow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overconfidence and hallucinations&lt;/strong&gt; — Confident-sounding output hides wrong APIs, invented types, or broken assumptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fix isn't to abandon agents — it's to treat them like a &lt;strong&gt;capable but junior contributor&lt;/strong&gt;: give them clear boundaries, the right tools, and a review gate before anything ships.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Three Pillars of SSAC
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Guardrails as Architectural Constraints
&lt;/h3&gt;

&lt;p&gt;Without guardrails, an agent may invent data models, bypass existing patterns, or pull in libraries that don't fit your stack.&lt;/p&gt;

&lt;p&gt;Example constraint you might give an agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can implement this endpoint, but you &lt;strong&gt;must&lt;/strong&gt; follow our existing repository patterns, you &lt;strong&gt;cannot&lt;/strong&gt; change the database schema without approval, and every public API &lt;strong&gt;must&lt;/strong&gt; include consistent error handling.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent still moves quickly — it just moves inside the sandbox you define.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Skills as Specialized Tooling
&lt;/h3&gt;

&lt;p&gt;A general-purpose model has to guess how your project works. &lt;strong&gt;Skills&lt;/strong&gt; turn guessing into repeatable capability: run tests, query a schema, read internal docs, search the codebase for precedents, or follow the spec format your team already uses.&lt;/p&gt;

&lt;p&gt;Well-chosen skills shift the agent from guessing to operating with the same tools a mid-level developer would reach for on day one.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Approvals as the Definition of Done
&lt;/h3&gt;

&lt;p&gt;Supervision isn't optional. Generated code should pass the same bar as human-written code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acceptance criteria are explicit &lt;strong&gt;before&lt;/strong&gt; work starts.&lt;/li&gt;
&lt;li&gt;Automated checks (tests, lint, build) run before review.&lt;/li&gt;
&lt;li&gt;A human approves or rejects the result in a pull request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the output fails on security, performance, or business logic, it goes back to the agent with feedback — same loop as any other code review.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Two Loops
&lt;/h2&gt;

&lt;p&gt;SSAC operates on two decoupled iterative cycles:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fztohlmfxdfqjzy8ovlt6.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fztohlmfxdfqjzy8ovlt6.png" alt="SSAC Tow Loops" width="798" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Planning Loop&lt;/strong&gt; (Requirements → Specifications): Refine high-level business goals into rigorous, deterministic markdown specs before a single line of code is written.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Execution Loop&lt;/strong&gt; (Specifications → Production Code): Agents write code locally, iterating against local tests and lints until they hit the human approval gate.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Secure by Design
&lt;/h2&gt;

&lt;p&gt;Many enterprise environments can't leak source code, credentials, or internal schemas to public cloud LLMs. SSAC addresses this directly with a &lt;strong&gt;local-first&lt;/strong&gt; approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight models&lt;/strong&gt; running via vLLM, llama.cpp, or Ollama keep all project context inside your network boundary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GGUF quantization&lt;/strong&gt; lets you run capable models on consumer-grade workstation GPUs (16–24 GB VRAM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixture-of-Experts (MoE)&lt;/strong&gt; models split compute across RAM and VRAM, unlocking deeper reasoning without enterprise hardware budgets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For cost routing, the strategy is simple: use open-source models for routine tasks (linting, basic refactoring) and reserve premium cloud models strictly for complex, high-risk architectural decisions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Open-Source Stack
&lt;/h2&gt;

&lt;p&gt;The framework is &lt;strong&gt;agent-agnostic and LLM-agnostic&lt;/strong&gt; — swap out the agent as long as skills and guardrails are configured for it. The demo defaults to &lt;a href="https://opencode.ai/docs" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt;, but the workflow is not locked to it.&lt;/p&gt;

&lt;p&gt;Key tools used in the reference setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Fission-AI/OpenSpec/" rel="noopener noreferrer"&gt;OpenSpec&lt;/a&gt;&lt;/strong&gt; — spec-driven agent workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/abhigyanpatwari/GitNexus" rel="noopener noreferrer"&gt;GitNexus&lt;/a&gt;&lt;/strong&gt; — local semantic search over your codebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Piotr1215/mcp-obsidian" rel="noopener noreferrer"&gt;Obsidian MCP&lt;/a&gt;&lt;/strong&gt; — bring internal documentation into agent context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" rel="noopener noreferrer"&gt;Karpathy LLM Wiki&lt;/a&gt;&lt;/strong&gt; — wiki-style knowledge base ingestion&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What This Means for Developers
&lt;/h2&gt;

&lt;p&gt;The developer's role doesn't disappear — it evolves. You become:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;toolsmith&lt;/strong&gt;: maintaining guardrails and skills that constrain and enable the agent.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;specification writer&lt;/strong&gt;: capturing business requirements clearly enough for an agent to implement them correctly.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;gatekeeper&lt;/strong&gt;: reviewing, reasoning about, and approving AI-generated changes — same standards as human-written code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The engineers who thrive in this model are the ones with strong enough intuition to know when the output is wrong, even when it &lt;em&gt;looks&lt;/em&gt; right.&lt;/p&gt;




&lt;p&gt;If you're interested in how this works in practice for .NET backend development, check out the repository:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/robert-li/SupervisedSecureAgenticCoding" rel="noopener noreferrer"&gt;github.com/robert-li/SupervisedSecureAgenticCoding&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Issues, guardrail templates, and .NET-focused skills are welcome contributions.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agenticcoding</category>
      <category>dotnet</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
