<?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: Manas Khare</title>
    <description>The latest articles on DEV Community by Manas Khare (@manas_khare_aee7d71bdde0b).</description>
    <link>https://dev.to/manas_khare_aee7d71bdde0b</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%2F3926221%2Fc429676c-2bc2-4207-ac35-99a98ebe045d.jpg</url>
      <title>DEV Community: Manas Khare</title>
      <link>https://dev.to/manas_khare_aee7d71bdde0b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/manas_khare_aee7d71bdde0b"/>
    <language>en</language>
    <item>
      <title>Your AI Coding Tool Has No Idea What Your Codebase Is Supposed To Do</title>
      <dc:creator>Manas Khare</dc:creator>
      <pubDate>Tue, 12 May 2026 04:12:55 +0000</pubDate>
      <link>https://dev.to/manas_khare_aee7d71bdde0b/your-ai-coding-tool-has-no-idea-what-your-codebase-is-supposed-to-do-2m77</link>
      <guid>https://dev.to/manas_khare_aee7d71bdde0b/your-ai-coding-tool-has-no-idea-what-your-codebase-is-supposed-to-do-2m77</guid>
      <description>&lt;p&gt;&lt;em&gt;Introducing Intent Files - the missing bridge between your repository and your AI&lt;/em&gt;&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%2F1m3zg98wmp4o4lf5uva9.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%2F1m3zg98wmp4o4lf5uva9.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every developer I know has hit the same wall.&lt;/p&gt;

&lt;p&gt;You open Copilot or Gemini, ask it to write a service class, and it generates something that works — but violates half your team's coding standards. Wrong naming conventions. Logic too complex. The entire business flow crammed into one function. So you write another prompt to fix it. Then another. Every session. Every file. Every developer on the team independently re-explaining the same rules to the same tool that forgot everything the moment you closed the tab.&lt;/p&gt;

&lt;p&gt;And it is not just standards. The prompt you spent twenty minutes crafting — the one that finally got the AI to understand your schema, your edge cases, your team's approach — is gone the moment the chat closes. Next week, when you or a new teammate needs to understand that code, there is nothing to go back to. No record of why it was structured that way. Just code. And code does not explain itself.&lt;/p&gt;

&lt;p&gt;So you read it. You trace every reference. What calls this function. What this function calls. Under what conditions. You reverse-engineer intent from implementation — slowly, painstakingly, getting exponentially harder as the codebase grows.&lt;/p&gt;

&lt;p&gt;Then there is the PR review. Before raising one you mentally run through a checklist hoping you covered everything. The lead engineer takes your code, pastes it alongside the team's standard guidelines into an AI prompt, checks it, comes back with comments. You fix. Resubmit. Repeat. Too much back and forth for something that should be automatic.&lt;/p&gt;

&lt;p&gt;The longer you work with AI on a large project the worse it gets. By the time you are covering ten components in one conversation, the AI is mixing context from component two into component six's logic. It hallucinates solutions based on earlier discussion that had nothing to do with the current module. The fix everyone knows but nobody says out loud — start a new chat. Lose all the context. Begin again.&lt;/p&gt;

&lt;p&gt;And if your team is doing this properly, someone has asked you to log your prompts into an Excel file. A reusable prompt library. A reasonable goal in theory. In practice you are trying to remember, after the fact, from a cluttered chat history, what you actually typed three hours ago. The AI automated your work and you got assigned manual work to document the automation. The prompts that produced the code are gone. The Excel file gets filled with approximations nobody will reuse.&lt;/p&gt;

&lt;p&gt;Every session you also paste the same structural files. model.py in Django. Entity classes in Spring Boot. Object definitions in Salesforce. The schema the AI needs to understand your data layer — field types, constraints, relationships, enums. Every developer on the team independently re-explaining the same structure in every new session because the AI has no persistent awareness of your project.&lt;/p&gt;

&lt;p&gt;Seven frustrations. One root cause.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI has no permanent, structured, scoped awareness of your project. It knows everything from your chat and nothing from your codebase.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your AI coding tool and your repository are two entirely disconnected systems. You are the only bridge between them. And you rebuild that bridge manually, from scratch, every single session.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The pattern that keeps repeating&lt;/strong&gt;&lt;br&gt;
Software engineering has always evolved by adding abstraction layers. Each layer hides the complexity below it and lets the engineer work at a higher level.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Machine code     ← what the CPU executes
Assembly         ← human-readable instructions  
C / C++          ← structured systems programming
Java / Python    ← managed high-level languages
Frameworks       ← domain-specific abstractions
???              ← what the engineer actually means
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At every transition the lower layer became a build artefact — something generated, not hand-crafted. Nobody writes bytecode by hand. Nobody writes raw memory addresses. The generated output is trusted, verified by tooling, and largely invisible to daily work.&lt;/p&gt;

&lt;p&gt;Each transition also shifted what it meant to be a skilled engineer. The valuable skill moved up the stack — from bit manipulation to memory management to algorithm design to system architecture. The engineer's job became progressively more about expressing intent clearly and less about managing implementation detail.&lt;/p&gt;

&lt;p&gt;We are at the next transition. Code is becoming the build artefact. Intent is becoming the source.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Introducing Intent-Oriented Architecture&lt;/strong&gt;&lt;br&gt;
Intent-Oriented Architecture — IOA — is a methodology where human intent at each organisational level is explicitly declared, version-controlled, and treated as the source of truth for all downstream artefacts. Code, documentation, API specifications — all derived from intent.&lt;br&gt;
It is built on four levels, each owned by a different role, each answering a different question.&lt;br&gt;
&lt;strong&gt;Level 1 — project.intent&lt;/strong&gt;&lt;br&gt;
Written by the architect. Org-wide rules that hold everywhere — security mandates, architectural patterns, compliance requirements. Language independent. Platform independent. Written once, rarely changed. References your existing PMD rules, checkstyle config, and SonarQube settings. The AI is never asked to guess your standards — they are part of every compilation by default.&lt;br&gt;
&lt;strong&gt;Level 2 — module.intent&lt;/strong&gt;&lt;br&gt;
The business contract. Pure intent — no language, no framework, no implementation detail. A Business Analyst can write this without knowing Java or Swift. Behaviours, business rules, edge cases, user journeys. The same file drives Android, iOS, backend, and web simultaneously.&lt;br&gt;
&lt;strong&gt;Level 3 — language.intent&lt;/strong&gt;&lt;br&gt;
The lead engineer's institutional knowledge made explicit. MVVM enforced. Repository pattern for all data access. Coroutines for async operations. Dependency injection via Hilt. Every component in that language inherits this automatically — no hoping developers read the wiki.&lt;br&gt;
&lt;strong&gt;Level 4 — component.intent&lt;/strong&gt;&lt;br&gt;
Developer owned. Inherits from the business module and the language guidelines. Adds platform-specific implementation detail and overrides where the platform genuinely requires different handling.&lt;/p&gt;

&lt;p&gt;Each level answers a different question:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project.intent    ← What are our non-negotiables as an org?
module.intent     ← What does this feature do for the business?
language.intent   ← How do we write code in this language here?
component.intent  ← How does this specific component work?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And critically — no role is asked to do something outside their domain. The architect defines what goes into project.intent. The BA's requirements are the input for module.intent. Neither is asked to maintain a file format. The developer structures and maintains the intent. The source provides the knowledge. The developer ensures it is correctly captured.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What this looks like in practice&lt;/strong&gt;&lt;br&gt;
A component.intent file for an Android UserService looks like this:&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;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;USR-001-AND&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;component&lt;/span&gt;
&lt;span class="na"&gt;extends&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;business&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;USR-001&lt;/span&gt;
  &lt;span class="na"&gt;language&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;android-guidelines&lt;/span&gt;

&lt;span class="na"&gt;implementation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Expose authentication state as StateFlow for UI observation&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Use UserRepository for all data operations via Hilt injection&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Handle token refresh transparently via OkHttp interceptor&lt;/span&gt;

&lt;span class="na"&gt;platform-specific&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Support biometric authentication as fallback login method&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Cache session in EncryptedSharedPreferences only&lt;/span&gt;

&lt;span class="na"&gt;overrides&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;USR-001-B1&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
      &lt;span class="s"&gt;Show biometric re-authentication prompt before&lt;/span&gt;
      &lt;span class="s"&gt;allowing admin to manually unlock an account.&lt;/span&gt;
      &lt;span class="s"&gt;Standard 5-attempt lockout otherwise unchanged.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Forty lines. A reviewer understands exactly what this component does, how it differs from the business default, and why — without reading a single line of Java.&lt;br&gt;
The module.intent it inherits from was written by a BA in plain language. The language.intent it inherits from was written once by the lead engineer and applies to every Android component automatically. The project.intent security rules apply without being mentioned — they are always in scope.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;What this unlocks&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Framework migration becomes recompilation.&lt;/strong&gt; Your .intent files never knew they were Java Spring Boot 2.7. They declared intent. Point them at Java 21 and Spring Boot 3.2 and generate fresh, idiomatic, technically-clean code. The accumulated technical debt does not migrate because it was never in the intent file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-platform consistency is guaranteed by design.&lt;/strong&gt; Change business logic in module.intent once. Android is flagged stale. iOS is flagged stale. Each recompiles when the team is ready — independently, at their own pace, tracked by the tool. No risk of platforms silently diverging.&lt;br&gt;
&lt;strong&gt;Business requirements become machine-executable.&lt;/strong&gt; For the first time, what the BA writes directly drives what the code does. No translation layer. No "what did they actually mean." The intent file is the requirement.&lt;br&gt;
&lt;strong&gt;Code reviews shift from archaeology to verification.&lt;/strong&gt; Before raising a PR the developer runs aic status — all in sync — and aic audit — no violations. The lead reads forty lines of intent to understand what changed and why — then reviews the actual code focused entirely on subtle logic and edge cases, not procedural checklist items the tool already verified&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation is always in sync.&lt;/strong&gt; Because it compiles from the same source as the code. Always current by definition.&lt;/p&gt;



&lt;p&gt;AIC — the reference implementation&lt;br&gt;
AIC is a lightweight CLI tool that compiles .intent files to any target language and version.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aic compile UserService &lt;span class="nt"&gt;--target&lt;/span&gt; java@21
aic compile UserService &lt;span class="nt"&gt;--target&lt;/span&gt; swift@5.9
aic compile UserService &lt;span class="nt"&gt;--target&lt;/span&gt; flutter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same intent file. Multiple targets. One source of truth.&lt;br&gt;
Three things AIC is not:&lt;br&gt;
It is not a real-time compiler. It does not watch files and regenerate code continuously. It is invoked explicitly when intent changes. Generated code is committed to version control just like hand-written code.&lt;br&gt;
It is not full regeneration. When intent changes, AIC reads the existing generated file, identifies exactly what changed in the delta, and surgically updates only the affected code. The git diff is clean and minimal. The rest of the file is untouched.&lt;br&gt;
It is not its own AI. AIC uses whatever AI you already have configured — Claude, Gemini, Copilot, or a local Ollama model. No new subscriptions. No new API keys. No new trust decisions. You bring the engine. AIC brings the architecture.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;You do not need the tool to start&lt;/strong&gt;&lt;br&gt;
IOA is a methodology first. A team can adopt it today with nothing but a folder and a text editor.&lt;br&gt;
Create a /intent folder. Write a project.intent with your architectural rules. Write a module.intent before every feature. Write a language.intent capturing your team's conventions. Use these files as the primary reference in every code review.&lt;br&gt;
That alone — without any tool, without any AI integration — eliminates most of the communication failures that plague software teams. Misunderstood requirements, undocumented architectural decisions, inconsistent patterns, knowledge locked in one person's head.&lt;br&gt;
The tool makes IOA effortless. The methodology makes software teams coherent. Both have independent value.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The honest open questions&lt;/strong&gt;&lt;br&gt;
AI is not fully there yet. Generated code will have bugs. Complex platform-specific behaviour will sometimes require human correction. Edge cases declared in intent will sometimes translate imperfectly.&lt;br&gt;
This is not a reason to wait. It is a reason to be honest.&lt;br&gt;
The architecture is AI-model agnostic by design. As models improve the same .intent files produce better output automatically. No migration. No catch-up. The foundation remains. The engine gets stronger.&lt;br&gt;
And this is the property that matters most — your .intent files do not age. They do not accumulate technical debt. They do not break when a framework updates. The worst case scenario is that your intent files sit unchanged for two years and compile dramatically better code when you come back to them. That has never been true of any other investment in a technology stack.&lt;br&gt;
The open question that matters for the future is different. Today AI is an assistant you prompt session by session. The future is autonomous agents that maintain and evolve a codebase given a high-level instruction — the way a senior developer is briefed on a task and trusted to execute it. For that future to work, the agent needs a navigable structure. Training on thousands of lines of changing code is computationally infeasible and produces hallucinations as old patterns conflict with new ones. The answer is not better training. It is structured intent files — a map the agent navigates from project level to component level, arriving at precisely the right context for precisely the right task. IOA is not just a better way to work with AI today. It is the architectural foundation that makes autonomous AI development possible tomorrow.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The one thing&lt;/strong&gt;&lt;br&gt;
AI will never optimally maintain your codebase if it has to reverse-engineer understanding from code every single session.&lt;br&gt;
If you plan to let AI handle significant parts of your development workflow — and that future is closer than most teams are ready for — then AI needs intent written in clear, structured, permanent language. Not inferred from syntax. Not rebuilt from chat history. Not pasted manually every session.&lt;/p&gt;

&lt;p&gt;It needs to know how each component was intended to work. And it needs to maintain that understanding consistently — across sessions, across developers, across languages, across years.&lt;/p&gt;

&lt;p&gt;Right now your codebase and your AI are two disconnected systems. You bridge them manually every day — pasting schemas, re-explaining standards, starting new chats when the old ones get too cluttered. That bridge is made of impulsive prompts and partial context. It breaks constantly and gets rebuilt constantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.intent files make that bridge permanent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not a workaround. Not a prompt library in an Excel file. A first-class architectural layer that integrates your project and your AI into a single coherent entity — where the AI knows your system the way a senior developer knows it. Deeply, structurally, permanently.&lt;br&gt;
The question is not whether this integration needs to happen. It does. The question is whether you build the bridge deliberately — or keep patching it with duct tape one prompt at a time.&lt;/p&gt;




&lt;p&gt;The full design document — covering IOA methodology, AIC implementation, file structure, inheritance model, commands, use cases, and proposed proof-of-concept experiments — is available at &lt;a href="https://github.com/manas-16/AIC" rel="noopener noreferrer"&gt;GitHub link&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;If you run any of the proposed experiments, share your results. Positive results strengthen the methodology. Negative results improve it.&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://medium.com/@manaskhare07/your-ai-coding-tool-has-no-idea-what-your-codebase-is-supposed-to-do-5f4a3cd0e5a8" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>software</category>
      <category>developers</category>
    </item>
  </channel>
</rss>
