<?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: Avery</title>
    <description>The latest articles on DEV Community by Avery (@avery_code).</description>
    <link>https://dev.to/avery_code</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%2F3837121%2F51bc1289-fc3a-49a8-ace7-d5052dd80cd9.png</url>
      <title>DEV Community: Avery</title>
      <link>https://dev.to/avery_code</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avery_code"/>
    <language>en</language>
    <item>
      <title>Your AI Knows Everything About React. It Knows Nothing About Your React Project.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:10:51 +0000</pubDate>
      <link>https://dev.to/avery_code/your-ai-knows-everything-about-react-it-knows-nothing-about-your-react-project-2kif</link>
      <guid>https://dev.to/avery_code/your-ai-knows-everything-about-react-it-knows-nothing-about-your-react-project-2kif</guid>
      <description>&lt;p&gt;There is a gap that most developers do not think about until it causes a problem.&lt;/p&gt;

&lt;p&gt;The AI you use every day has been trained on enormous amounts of React code. It knows the patterns. It knows the hooks. It knows how components should be structured, how TypeScript integrates, how state management libraries work, what the common anti-patterns are and how to avoid them.&lt;/p&gt;

&lt;p&gt;It is genuinely knowledgeable about React as a technology. More knowledgeable than most developers who use it.&lt;/p&gt;

&lt;p&gt;And it knows absolutely nothing about your React project specifically.&lt;/p&gt;

&lt;p&gt;Not how you structure features. Not what naming conventions your team has settled on. Not where state belongs in your architecture. Not what your component boundaries look like. Not what patterns you have deliberately chosen and which ones you have deliberately avoided. Not the decisions that took months of iteration to arrive at and that define how this particular codebase works.&lt;/p&gt;

&lt;p&gt;Every session starts with the same AI that knows everything about React and nothing about yours. And then it generates code. And then you wonder why the output does not quite fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The difference between knowing React and knowing your project
&lt;/h2&gt;

&lt;p&gt;React knowledge is general. It applies to every React project that has ever existed or will ever exist.&lt;/p&gt;

&lt;p&gt;Project knowledge is specific. It only applies to this codebase, this team, this set of decisions, this particular way of solving the problems this product has.&lt;/p&gt;

&lt;p&gt;A developer who knows React but not your project can still write good React code. It just will not fit your project without guidance. You would onboard them. You would explain the architecture, the conventions, the decisions that define how things are done here. You would give them the context they need to make their general React knowledge useful in your specific situation.&lt;/p&gt;

&lt;p&gt;The AI gets no such onboarding. It shows up with all its general React knowledge and starts generating based on that plus whatever it can infer from the files around the current work. Which is never enough to substitute for actually knowing the project.&lt;/p&gt;

&lt;p&gt;The result is React code that is technically correct and contextually wrong. Code that follows best practices for React as a technology while ignoring the specific practices of your particular project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the AI is actually doing when it generates
&lt;/h2&gt;

&lt;p&gt;When the AI generates a component for your project it is making decisions.&lt;/p&gt;

&lt;p&gt;Where does this state belong? What should this be named? How should this component be structured? What is the right way to handle this type of interaction given the patterns I can see around me?&lt;/p&gt;

&lt;p&gt;These are not trivial decisions. They are exactly the kinds of decisions that experienced developers on your team make quickly because they have internalized the project's standards. They know the answer before they have to think about it because the answer has been established over months of building together.&lt;/p&gt;

&lt;p&gt;The AI does not have that internalized knowledge. It has general React knowledge and whatever it can read in the immediate context. So it makes the best decision it can with what it has. Which is often a reasonable React decision that is not your project's decision.&lt;/p&gt;

&lt;p&gt;Every session. Every component. Every hook. Every time it names something or decides where something belongs or chooses how to structure a piece of logic, it is working from general knowledge in the absence of specific rules.&lt;/p&gt;

&lt;p&gt;And the output reflects that. Not because the AI is bad at React. Because nobody told it how your project works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What your project knowledge actually consists of
&lt;/h2&gt;

&lt;p&gt;Most developers do not think of their project knowledge as something that can be written down and transferred. It feels too embedded, too contextual, too much like intuition built up over time.&lt;/p&gt;

&lt;p&gt;But when you look at what actually constitutes project-specific knowledge for an AI, it breaks down into surprisingly concrete things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural decisions.&lt;/strong&gt; Where does logic live? What is the layer structure? What goes in a hook versus a service versus a component? These are not vague preferences. They are decisions your team made and has been following. They can be written as rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Naming conventions.&lt;/strong&gt; What are event handlers called? How are hooks named? What is the pattern for boolean props? What domain language does this project use? These are specific and writable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component boundaries.&lt;/strong&gt; When does a component get split? What is the maximum scope of a single component? What makes something presentational versus container? Again, specific and writable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import and module structure.&lt;/strong&gt; How are features organized? What can import from what? Where do shared utilities live? How are public APIs defined for each feature? Completely writable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Patterns to use and patterns to avoid.&lt;/strong&gt; What has your team tried and rejected? What approaches work well in this codebase specifically? What does good look like here, beyond what good looks like in React generally? Writable.&lt;/p&gt;

&lt;p&gt;None of this is too contextual or too intuitive to write down. It just has never been written in a form the AI can use before a session starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap between what the AI knows and what it needs
&lt;/h2&gt;

&lt;p&gt;The AI's React knowledge is genuinely comprehensive. It knows what it knows about React deeply and accurately.&lt;/p&gt;

&lt;p&gt;The gap is not in its React knowledge. The gap is in everything that is specific to your project that cannot be derived from general React knowledge alone.&lt;/p&gt;

&lt;p&gt;Think about the last time you corrected AI output. What was the correction? Was it a React mistake, something that violated React best practices or introduced a technical error? Or was it a project mismatch, something that was technically fine React but not how things are done in your codebase?&lt;/p&gt;

&lt;p&gt;For most developers it is almost always the second category. The AI knows React. What it does not know is your project's specific application of React. And that is the gap that rules close.&lt;/p&gt;

&lt;p&gt;Here is what closing that gap looks like in practice:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Project-specific rules that the AI cannot derive from React knowledge alone:
1. Features are self-contained modules. Each feature has its own components, hooks, services, and types folder. External access goes through the feature's index file only. No direct cross-feature imports.
2. State scope is determined before writing any code. Local state stays in the component or a dedicated local hook. Shared state only moves to a global store when two independent features genuinely require it. Auth state is local to the auth feature unless another feature explicitly needs it.
3. Component names reflect what they render, not where they are used. UserCard, not ProfileUserCard. ProductList, not ShopPageProductList. The name travels with the component, not with the page.
4. All API responses are transformed in the service layer before they reach a hook or component. UI components receive domain objects, not API shapes. If the API changes, only the service layer changes.
5. Loading, error, and empty states are defined before building the happy path. No component ships without explicit handling for all three. The pattern for each is consistent across the codebase.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;These five rules are not derivable from React knowledge. They are specific to how your project has decided to apply React. Written down and given to the AI before a session starts, they close the gap between what the AI knows about React and what it needs to know about your project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes when the gap is closed
&lt;/h2&gt;

&lt;p&gt;The most immediate change is in the corrections.&lt;/p&gt;

&lt;p&gt;The category of correction that accounts for most of the time spent steering AI output — the project mismatch corrections — disappears or shrinks dramatically. The AI is no longer making decisions based on general React knowledge in the absence of specific rules. It is making decisions based on your project's specific application of React.&lt;/p&gt;

&lt;p&gt;The components look like they belong. The naming matches what is already there. The structure follows the pattern. The state ends up where you would have put it. The imports follow the module rules.&lt;/p&gt;

&lt;p&gt;This is not the AI getting better at React. It is the AI finally having the project knowledge it needed to apply its React knowledge correctly.&lt;/p&gt;

&lt;p&gt;Beyond the immediate sessions, something more significant changes over time. The codebase starts to accumulate consistent decisions instead of varied ones. New features look like existing features because the same rules that governed the existing ones governed the new ones. The project develops a coherence that is hard to achieve when every session is working from general knowledge alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The session is not the problem. The missing project context is.
&lt;/h2&gt;

&lt;p&gt;Most attempts to improve AI output focus on the prompt. Better descriptions. More detailed instructions. More context included in each request.&lt;/p&gt;

&lt;p&gt;These help at the margins. A better prompt produces better output for that specific request. But it does not solve the underlying problem, which is that the AI does not know your project and has to guess at every session-specific decision it makes.&lt;/p&gt;

&lt;p&gt;Rules solve the underlying problem. They give the AI the project knowledge it cannot derive from its React training. They close the gap between knowing React and knowing your React project.&lt;/p&gt;

&lt;p&gt;Write them before the session. Not in the prompt. In a system that applies them to every session, every developer, every request. And stop spending session after session teaching the AI things it should have known before it started.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Your AI knows React. That knowledge is real and valuable and it makes your sessions faster than building without AI would be.&lt;/p&gt;

&lt;p&gt;What your AI does not know is your project. And without rules that transfer that project knowledge, every session is working from general knowledge in a specific context. The output reflects that. Every time.&lt;/p&gt;

&lt;p&gt;Write the rules. Give the AI the project knowledge it needs. And close the gap between knowing React and knowing your React project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React project knowledge is missing from your AI setup?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The specific project decisions that your AI is currently guessing at because nobody wrote them down as rules.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The prompt doesn't matter. The rules do.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;© Avery Labs — Avery Code&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>react</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Every New Developer Gets an Onboarding Process. The AI They Use Every Day Never Does.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Mon, 29 Jun 2026 14:17:25 +0000</pubDate>
      <link>https://dev.to/avery_code/every-new-developer-gets-an-onboarding-process-the-ai-they-use-every-day-never-does-3h4k</link>
      <guid>https://dev.to/avery_code/every-new-developer-gets-an-onboarding-process-the-ai-they-use-every-day-never-does-3h4k</guid>
      <description>&lt;p&gt;Onboarding a new developer is a process most teams take seriously.&lt;/p&gt;

&lt;p&gt;There are docs. There is a walkthrough of the codebase. Someone explains the architecture, the conventions, the patterns the team has settled on over time. There are code reviews in the first weeks that are more educational than critical. There is an intentional effort to transfer the knowledge that exists in the team's heads into the new developer's understanding.&lt;/p&gt;

&lt;p&gt;It takes time. It takes attention. But teams invest in it because they know that a developer who understands the standard produces better work faster than one who has to figure it out alone.&lt;/p&gt;

&lt;p&gt;And then that developer opens their AI tool and starts a session. And the AI generates code with no knowledge of any of it.&lt;/p&gt;

&lt;p&gt;No architecture walkthrough. No explanation of conventions. No code reviews that transfer the standard. The AI that is about to generate large portions of the new developer's output has received none of the onboarding the developer just went through. It starts from zero. Every session.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the first week actually looks like without AI onboarding
&lt;/h2&gt;

&lt;p&gt;A new developer joins a React team that has been building for eighteen months.&lt;/p&gt;

&lt;p&gt;They spend the first week getting oriented. They read the docs. They look through the codebase. They start to understand how the team structures features, where state belongs, how components are named, what the import conventions are. They ask questions. They get answers. By the end of the week they have a rough mental model of how this team codes.&lt;/p&gt;

&lt;p&gt;On day three they use the AI to build something small. The AI generates a component. It is structured differently from everything around it. The naming does not follow the pattern the new developer just spent three days learning. The state management approach is different from what they were told to use.&lt;/p&gt;

&lt;p&gt;They are not sure whether to follow the AI's output or the team's standard. The AI generated something. It looks reasonable. But it does not look like the codebase they just spent a week studying.&lt;/p&gt;

&lt;p&gt;So they ask a senior developer. The senior developer looks at it and says "yeah, just fix it to match our pattern." The new developer fixes it. The next session starts exactly the same way.&lt;/p&gt;

&lt;p&gt;This happens every day for weeks. The new developer is learning the standard. The AI is not. And the new developer is spending a significant portion of their time reconciling the AI's output with the standard they are trying to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is an invisible cost most teams never measure
&lt;/h2&gt;

&lt;p&gt;Teams measure onboarding success by how quickly a new developer becomes productive.&lt;/p&gt;

&lt;p&gt;They do not measure how much of that developer's time in the first months is spent correcting AI output that does not match the standard. They do not measure how many pull request comments in the first weeks are about AI-generated inconsistencies rather than logic errors. They do not measure how much cognitive overhead the new developer carries from having to simultaneously learn the standard and correct the AI that does not know it.&lt;/p&gt;

&lt;p&gt;Those costs are real. They are just distributed across enough small moments that they never aggregate into something visible.&lt;/p&gt;

&lt;p&gt;A new developer who spends twenty minutes a day reconciling AI output with team standards spends over eighty hours in their first year doing something that rules would have eliminated. That is two full weeks of productive time. Gone.&lt;/p&gt;

&lt;p&gt;And that is just one developer. Every new developer who joins faces the same invisible tax because the AI was never onboarded.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the AI actually needs to know
&lt;/h2&gt;

&lt;p&gt;The onboarding that matters for the AI is not the same as the onboarding that matters for the developer.&lt;/p&gt;

&lt;p&gt;A developer needs context, history, relationships, judgment. They need to understand why certain decisions were made. They need to know who to ask when something is unclear. They need to develop an intuition for how this particular team thinks.&lt;/p&gt;

&lt;p&gt;The AI needs rules. Specific, explicit constraints that define what the output must look like. Not history. Not context. Not judgment. Rules.&lt;/p&gt;

&lt;p&gt;The good news is that the rules the AI needs are almost entirely derivable from the things teams explain during developer onboarding. The architecture walkthrough is a set of rules. The explanation of naming conventions is a set of rules. The code review comments that say "we do it this way here" are rules. They just exist in conversations and documents and people's heads instead of in a form the AI can follow.&lt;/p&gt;

&lt;p&gt;Translating them takes less time than the onboarding itself. Here is what that looks like for a typical React team:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI onboarding rules derived from developer onboarding:
1. Feature structure is self-contained. Components, hooks, services, and types live inside the feature folder. Nothing imports directly across feature boundaries.
2. State that belongs to a feature lives in a dedicated hook inside that feature. No state logic in UI components. No shared state unless it is used by at least two independent features.
3. Components are named after what they render, not the page they live on. UserCard, not ProfilePageCard. ProductList, not ShopPageList.
4. Event handlers use the handle prefix. handleSubmit, handleChange, handleClick. Not on, not process, not manage.
5. API contracts live in the service layer. UI components receive already-transformed data. They have no knowledge of API structure.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Five rules. Derived from the same knowledge that gets transferred during developer onboarding. Written down once. Given to the AI before every session. The new developer stops spending their first months reconciling AI output with team standards. The AI follows the standard from session one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes when the AI is onboarded
&lt;/h2&gt;

&lt;p&gt;The new developer's experience changes immediately.&lt;/p&gt;

&lt;p&gt;The AI generates components that look like the codebase they are learning. The naming matches what they are being told to use. The structure follows the pattern they are reading in the existing code. Instead of constantly reconciling two different versions of the standard, they see one consistent version in both the existing codebase and the AI's output.&lt;/p&gt;

&lt;p&gt;The learning accelerates. Not because the AI is teaching them. Because the AI is reinforcing what the team is already teaching them. Every session produces output that looks like the standard, which means every session is another data point for the new developer about what the standard looks like in practice.&lt;/p&gt;

&lt;p&gt;The pull request reviews change too. Instead of comments about AI-generated inconsistencies, the feedback is about logic, product decisions, edge cases. The things that actually require the senior developer's attention and the new developer's growth.&lt;/p&gt;

&lt;p&gt;The invisible tax disappears. Not because onboarding got better. Because the AI was finally included in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The onboarding that scales
&lt;/h2&gt;

&lt;p&gt;Developer onboarding does not scale easily. Each new developer needs dedicated time, attention, and patience from senior team members. The knowledge transfer is personal and takes weeks.&lt;/p&gt;

&lt;p&gt;AI onboarding scales perfectly. Write the rules once. Every new developer who joins uses the same rules. Every session from day one follows the same standard. The knowledge that took weeks to transfer to the developer takes minutes to give to the AI.&lt;/p&gt;

&lt;p&gt;Teams that do this find that new developers become productive faster. Not because the onboarding documentation improved. Because the AI that generates large portions of their output is finally working from the same playbook as everyone else on the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Your team spends real time and energy onboarding new developers. That investment is worthwhile.&lt;/p&gt;

&lt;p&gt;The AI those developers use every day has never been onboarded. It starts each session without any of the knowledge your team just transferred. And it generates code that undermines the standard your new developers are trying to learn.&lt;/p&gt;

&lt;p&gt;Write the rules. Give them to the AI before the first session. And stop expecting new developers to bridge the gap between what you taught them and what the AI generates.&lt;/p&gt;

&lt;p&gt;The AI can follow the standard. It just needs to be told what it is.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React team is missing the rules that new developers need from day one?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps that make every onboarding harder than it needs to be and every AI session a source of inconsistency instead of consistency.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>react</category>
    </item>
    <item>
      <title>The Most Expensive AI Standard Problem Is the One You Cannot See Yet.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Fri, 26 Jun 2026 09:32:27 +0000</pubDate>
      <link>https://dev.to/avery_code/the-most-expensive-ai-standard-problem-is-the-one-you-cannot-see-yet-3ah2</link>
      <guid>https://dev.to/avery_code/the-most-expensive-ai-standard-problem-is-the-one-you-cannot-see-yet-3ah2</guid>
      <description>&lt;p&gt;The projects that cause the most damage are rarely the ones that look broken.&lt;/p&gt;

&lt;p&gt;Broken projects are obvious. The bugs are visible. The team knows something is wrong. The conversation about fixing it has already started.&lt;/p&gt;

&lt;p&gt;The expensive projects are the ones that feel fine. The features ship. The reviews pass. The team is productive. Nobody is worried because there is nothing visible to worry about.&lt;/p&gt;

&lt;p&gt;Underneath that calm surface the AI has been making decisions without rules for months. And every decision without a rule is a small divergence that compounds quietly until it is not small anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the invisible problem is the most expensive one
&lt;/h2&gt;

&lt;p&gt;Visible problems get solved.&lt;/p&gt;

&lt;p&gt;A bug gets fixed. A performance issue gets addressed. An architectural problem that is causing pain gets refactored. The pain creates urgency and the urgency creates action.&lt;/p&gt;

&lt;p&gt;Invisible problems accumulate.&lt;/p&gt;

&lt;p&gt;When the AI is making decisions without rules and the output still works, there is no signal that anything needs attention. The inconsistency grows. The technical debt builds. The codebase slowly becomes harder to work with. But because nothing is broken, nothing triggers a response.&lt;/p&gt;

&lt;p&gt;By the time the problem becomes visible it is no longer small. It is distributed across the entire codebase. It is embedded in every feature the AI built without constraints. And fixing it is no longer a one-session refactor. It is a project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the calm before looks like
&lt;/h2&gt;

&lt;p&gt;It looks like a productive team.&lt;/p&gt;

&lt;p&gt;Features getting shipped. Pull requests getting approved. Velocity feeling good. Nobody is complaining about the codebase because the codebase is working.&lt;/p&gt;

&lt;p&gt;What nobody is noticing is that each feature the AI built made slightly different decisions about structure. Each session invented a slightly different approach to state. Each developer who used the AI got slightly different output because the rules that would have made the output consistent were never written.&lt;/p&gt;

&lt;p&gt;The divergence is real. It is happening. It is just not visible yet because the codebase has not grown large enough or old enough for the inconsistency to become painful.&lt;/p&gt;

&lt;p&gt;That moment is coming. The question is whether the rules exist before it arrives or after.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
The best time to define your AI standard is when everything feels fine. Not because something is wrong. Because nothing is wrong yet and the cost of defining it now is a fraction of the cost of fixing what it prevents later.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  The compounding problem nobody measures
&lt;/h2&gt;

&lt;p&gt;Technical debt from missing AI standards does not grow linearly. It compounds.&lt;/p&gt;

&lt;p&gt;Each session without rules adds inconsistency. Each inconsistency becomes a reference point for the next session. The AI sees what exists and extends it. So the inconsistency that started in one feature slowly influences the features built around it.&lt;/p&gt;

&lt;p&gt;A codebase that felt fine at thirty components starts feeling like a problem at a hundred. Not because something changed. Because the accumulated decisions of thirty components without rules are now the foundation that the next seventy are built on.&lt;/p&gt;

&lt;p&gt;By a hundred components the refactor is significant. By two hundred it is a project nobody wants to take on.&lt;/p&gt;

&lt;p&gt;The teams that define their AI standard when the project is small and healthy are the ones that never have this conversation. Not because they got lucky. Because they solved the problem before it became one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What defining the standard looks like when nothing is wrong
&lt;/h2&gt;

&lt;p&gt;When nothing is broken, defining the standard feels optional.&lt;/p&gt;

&lt;p&gt;There is no pain driving it. No urgent problem to solve. No visible reason to stop and write rules when the features are shipping and the team is productive.&lt;/p&gt;

&lt;p&gt;That is exactly why most teams never do it. The window where it is easiest and cheapest to define the standard is the window where it feels least necessary.&lt;/p&gt;

&lt;p&gt;Here is what it takes to do it anyway:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rules worth defining before the problem appears:
1. Where does state live? Define it before the AI decides for you across a hundred components.
2. What is the component boundary rule? Define it before three different answers accumulate across the codebase.
3. What does the naming convention look like? Define it before six variations of the same pattern become the norm.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Three questions. Answered once. Applied to every session from that point forward. The calm that exists now stays calm because the rules prevent the divergence that would have ended it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;The most expensive AI standard problem is not the one you are dealing with today.&lt;/p&gt;

&lt;p&gt;It is the one building quietly underneath a codebase that feels fine. The one that will surface in six months or a year as a refactor nobody planned for and a codebase nobody fully understands anymore.&lt;/p&gt;

&lt;p&gt;Define the standard now. While the project is healthy. While the cost is low. While the rules can prevent the problem instead of repair it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React project is accumulating invisible AI standard problems?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps that are building quietly underneath a codebase that currently feels fine.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>Your Code Review Is Working Perfectly. It Just Cannot Catch What Was Never Defined.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Mon, 22 Jun 2026 10:35:39 +0000</pubDate>
      <link>https://dev.to/avery_code/your-code-review-is-working-perfectly-it-just-cannot-catch-what-was-never-defined-dap</link>
      <guid>https://dev.to/avery_code/your-code-review-is-working-perfectly-it-just-cannot-catch-what-was-never-defined-dap</guid>
      <description>&lt;p&gt;The review process did everything right.&lt;/p&gt;

&lt;p&gt;Someone opened the pull request. Someone else read through it carefully. The logic was sound. The tests passed. The naming was reasonable. Nothing obviously wrong. Approved.&lt;/p&gt;

&lt;p&gt;Three months later that feature is the one nobody wants to touch. The patterns it introduced do not match anything around it. The state management approach it used became a local convention that contradicts the one two features over. The component boundaries made sense in isolation and make no sense in context.&lt;/p&gt;

&lt;p&gt;The review did not fail. It caught what it was designed to catch. The problem is that what it was designed to catch does not include missing AI standards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What code review is actually for
&lt;/h2&gt;

&lt;p&gt;Code review is a human process designed to catch human mistakes.&lt;/p&gt;

&lt;p&gt;Logic errors. Security vulnerabilities. Missing edge cases. Unclear naming that a second pair of eyes catches. Architecture decisions that need discussion. These are the things code review is built to find.&lt;/p&gt;

&lt;p&gt;What it is not built to find is the absence of a standard that should have existed before the AI generated anything. A reviewer can see that a component is structured a certain way. They cannot see that the AI made that structural decision because no rule existed to make it differently.&lt;/p&gt;

&lt;p&gt;The missing standard is invisible in the code. It only becomes visible over time, when enough sessions have made enough slightly different decisions that the inconsistency becomes impossible to ignore.&lt;/p&gt;

&lt;p&gt;By then the review that approved all of it is long forgotten.&lt;/p&gt;

&lt;h2&gt;
  
  
  The confidence that code review creates
&lt;/h2&gt;

&lt;p&gt;This is the part that makes missing AI standards expensive in a specific way.&lt;/p&gt;

&lt;p&gt;When a pull request gets approved, it signals that the code meets the standard. The team has looked at it. The team is satisfied. Everyone moves on with confidence that what was built is correct.&lt;/p&gt;

&lt;p&gt;That confidence is not wrong about what was reviewed. It is wrong about what was not reviewed. The review confirmed the logic. It did not confirm that the AI had rules to follow. It did not confirm that the structural decisions the AI made match the ones three features over. It could not confirm those things because they were never defined.&lt;/p&gt;

&lt;p&gt;The approval creates confidence in code that has a silent gap underneath it. And silent gaps do not stay silent forever.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
A code review tells you the code is correct. It cannot tell you that the standard behind the code exists. Those are two different questions and only one of them gets asked in most review processes.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What happens when the gap surfaces
&lt;/h2&gt;

&lt;p&gt;It usually surfaces during a refactor or a handover.&lt;/p&gt;

&lt;p&gt;Someone opens the codebase to extend a feature and realizes the pattern used in that approved pull request from three months ago does not match anything else. They have to decide whether to follow the local pattern or the global one. Either way something is now inconsistent.&lt;/p&gt;

&lt;p&gt;Or a new developer joins and tries to understand the codebase by reading through it. They find three different ways of doing the same thing and no indication of which one is correct. All three were approved. None of them was wrong. None of them was the result of a defined standard.&lt;/p&gt;

&lt;p&gt;The review worked. The standard was missing before the review ever happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the gap actually gets closed
&lt;/h2&gt;

&lt;p&gt;Not in the review. Before the session.&lt;/p&gt;

&lt;p&gt;The review cannot close a gap that existed before the AI generated anything. It can only catch the symptoms of that gap, and only if the reviewer knows to look for them, which they usually do not because the symptoms look like reasonable code.&lt;/p&gt;

&lt;p&gt;The gap closes when the AI has rules that define what the output must look like before any generation happens. When those rules exist the review confirms something different. Not just that the code is correct but that the code follows a standard that was defined before the first line was written.&lt;/p&gt;

&lt;p&gt;Here is what that looks like in practice:&lt;/p&gt;

&lt;p&gt;Rules that exist before the review:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Component structure follows the presentational or container pattern. Reviewers can verify this against a defined standard.&lt;/li&gt;
&lt;li&gt;State placement follows a defined rule. The review confirms compliance, not just correctness.&lt;/li&gt;
&lt;li&gt;Naming follows documented conventions. The review catches deviations from something explicit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The review becomes a compliance check against a known standard instead of a judgment call about whether something reasonable was done.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Your code review process is not the problem. It is doing exactly what it was designed to do.&lt;/p&gt;

&lt;p&gt;The problem is that what it was designed to do does not include catching the absence of AI standards. That is not the review's job. That is the rules' job.&lt;/p&gt;

&lt;p&gt;Define the standard before the AI generates anything. Let the review confirm what was already defined. And stop expecting the review to catch something that was never defined to begin with.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React project is missing the standards your reviews cannot catch?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps that pass every review because they were never defined in the first place.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>My Own Codebase Stopped Feeling Like Mine. Here Is What I Found When I Looked Closer.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Fri, 19 Jun 2026 07:58:51 +0000</pubDate>
      <link>https://dev.to/avery_code/my-own-codebase-stopped-feeling-like-mine-here-is-what-i-found-when-i-looked-closer-1l90</link>
      <guid>https://dev.to/avery_code/my-own-codebase-stopped-feeling-like-mine-here-is-what-i-found-when-i-looked-closer-1l90</guid>
      <description>&lt;p&gt;I opened a component I had built with AI a few months earlier.&lt;/p&gt;

&lt;p&gt;The logic was right. The feature still worked. But something about it felt unfamiliar. The naming was not how I would have named it. The structure was not how I would have structured it. It worked, and it was technically mine, but it did not feel like something I had built.&lt;/p&gt;

&lt;p&gt;I checked the git history just to be sure. I had written it. The AI had generated most of it, and I had reviewed and accepted it at the time. But looking at it now, it read like someone else's code wearing my project's file extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was actually happening
&lt;/h2&gt;

&lt;p&gt;I had been assuming that working with the AI consistently over time would naturally produce something that reflected how I work.&lt;/p&gt;

&lt;p&gt;It does not work that way. Each session is its own decision-making process. The AI does not carry forward a sense of "how this developer codes." It carries forward whatever is visible in the current context and generates based on that, plus its own defaults when the context runs out.&lt;/p&gt;

&lt;p&gt;So the component I built three months ago reflected whatever made sense to the AI in that specific session, with whatever I had described at the time. The component I built last week reflected a different session, a different prompt, a different set of assumptions about what good output looks like.&lt;/p&gt;

&lt;p&gt;Neither was wrong. They were just not the same. And across enough sessions, "not the same" stops feeling like minor variation and starts feeling like the codebase does not have an author anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is different from inconsistency between developers
&lt;/h2&gt;

&lt;p&gt;When a team has inconsistency, you can usually trace it. This part was Sarah's. This part was Alex's. The styles differ because the people differ.&lt;/p&gt;

&lt;p&gt;When it is just you and the AI, there is no second person to blame the inconsistency on. It is still your project, still your name on every commit, but the actual decisions about structure and naming and pattern were made by something that has no concept of you specifically.&lt;/p&gt;

&lt;p&gt;That is a strange thing to sit with. The codebase is yours in every way that matters legally and professionally. But large parts of how it actually reads were never decided by you. They were decided session by session by a tool that does not retain a sense of your preferences unless you give it one.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
Your codebase does not stop feeling like yours because you forgot how you code. It stops feeling like yours because nobody ever told the AI how you code in a way that persisted past a single session.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What it actually took to fix
&lt;/h2&gt;

&lt;p&gt;I did not rewrite the codebase. That was not the point, and it would have taken too long to be worth it.&lt;/p&gt;

&lt;p&gt;What I did was sit down and write out the patterns I actually wanted to see. Not abstract principles, but specific decisions:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Components are named after what they render, not after the page they live on.
State that only affects rendering stays local. Anything shared moves to a dedicated hook.
Every exported function has an explicit return type, even when inference would work.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Three rules, in this case, though the list grew over time. Each one was something I already believed about how my code should look. I had just never written it down anywhere the AI could see it before generating something new.&lt;/p&gt;

&lt;p&gt;The next few components I built were noticeably closer to what I would have written by hand. Not because the AI got smarter. Because for the first time it had something concrete to follow instead of guessing at what I might want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that surprised me
&lt;/h2&gt;

&lt;p&gt;I expected the rules to make the output more consistent. They did.&lt;/p&gt;

&lt;p&gt;What I did not expect was how much it changed the experience of opening old files. Once the rules were in place, new components started to actually look like they belonged next to the ones I wrote without much AI involvement. The project started to read as one thing again, instead of a series of disconnected decisions stitched together by working code.&lt;/p&gt;

&lt;p&gt;That is the part that mattered more than I initially gave it credit for. Consistency is not just about avoiding bugs or making code reviews faster. It is about being able to open your own project and recognize it.&lt;/p&gt;




&lt;p&gt;If you have noticed your own codebase drifting away from how you actually think, the first place to look is not the code. It is whether you have ever written down, in a form the AI can actually use, what "how you code" means in the first place.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>You Already Know What Your First AI Rule Should Be. You Just Have Not Written It Down Yet.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Wed, 17 Jun 2026 07:33:00 +0000</pubDate>
      <link>https://dev.to/avery_code/you-already-know-what-your-first-ai-rule-should-be-you-just-have-not-written-it-down-yet-i9</link>
      <guid>https://dev.to/avery_code/you-already-know-what-your-first-ai-rule-should-be-you-just-have-not-written-it-down-yet-i9</guid>
      <description>&lt;p&gt;Every developer who works with AI regularly has a list of corrections they make.&lt;/p&gt;

&lt;p&gt;Not a written list. A mental one. The things they fix after every session. The patterns the AI gets wrong consistently. The naming that never quite matches. The component that always ends up doing too much. The state that keeps ending up in the wrong place.&lt;/p&gt;

&lt;p&gt;Those corrections are not random. They are consistent. And consistent corrections are rules that have not been written down yet.&lt;/p&gt;

&lt;p&gt;You already know what your first rule should be. You have been communicating it to the AI through corrections for months. You just have not written it down where the AI can follow it before it makes the mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the first rule is the hardest
&lt;/h2&gt;

&lt;p&gt;Starting a rule system feels like a big decision.&lt;/p&gt;

&lt;p&gt;Where do the rules live? How many do you need? What format should they be in? Do you need a whole system before you start? Do you need to cover every case before the rules are useful?&lt;/p&gt;

&lt;p&gt;The answer to all of those questions is the same. You do not need to answer them before you write the first rule.&lt;/p&gt;

&lt;p&gt;The first rule does not need to be part of a system. It does not need a format. It does not need to be comprehensive. It just needs to exist somewhere the AI can see it before the session starts.&lt;/p&gt;

&lt;p&gt;One rule. The thing you correct most often. Written down. Given to the AI before the next session.&lt;/p&gt;

&lt;p&gt;That is the entire starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the first rule usually is
&lt;/h2&gt;

&lt;p&gt;The first rule is almost always the same category of thing across different developers.&lt;/p&gt;

&lt;p&gt;It is the correction that happens in nearly every session. The one that takes two minutes to fix but has been taking two minutes every session for six months. The one that feels too obvious to write down because surely the AI should just know.&lt;/p&gt;

&lt;p&gt;It does not just know. It cannot. It has no memory of the last correction. It has no definition of what the standard is. It generates based on what it receives and then you correct what it got wrong.&lt;/p&gt;

&lt;p&gt;For most React developers the first rule falls into one of three categories. Component boundaries. State placement. Naming conventions. Not because those are the most important rules. Because those are the decisions the AI gets wrong most consistently when no constraints exist.&lt;/p&gt;

&lt;p&gt;Here is what writing that first rule actually looks like:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The first rule for most React developers:
Every component has exactly one responsibility.
If it renders UI and manages state and handles data fetching,
it is three components pretending to be one.
Split before continuing.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;One rule. Specific enough to follow. The AI stops making that particular decision on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens after the first rule
&lt;/h2&gt;

&lt;p&gt;The first rule does two things.&lt;/p&gt;

&lt;p&gt;It reduces the correction it covers. That session, the component is already the right size, or the state is already in the right place, or the naming already follows the convention. The specific correction the rule addressed does not appear.&lt;/p&gt;

&lt;p&gt;And it shows you that the system works. That writing a rule down and giving it to the AI actually changes the output. That the problem was never the AI. It was the missing constraint.&lt;/p&gt;

&lt;p&gt;That realization is what leads to the second rule. And the third. Not because you planned a system. Because you experienced the result of one rule and wanted more of it.&lt;/p&gt;

&lt;p&gt;The system grows from evidence, not from planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule you keep not writing
&lt;/h2&gt;

&lt;p&gt;Most developers who work with AI regularly have a correction they make so often it has become automatic.&lt;/p&gt;

&lt;p&gt;They do it without thinking. They barely notice anymore. It is just part of the workflow.&lt;/p&gt;

&lt;p&gt;That correction is a rule. A rule the AI has never been given. A rule that has been communicated through corrections hundreds of times and has never transferred because corrections do not transfer between sessions.&lt;/p&gt;

&lt;p&gt;Writing it down takes less time than making the correction one more time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;You do not need a complete system to start. You do not need a format. You do not need to know where this is going.&lt;/p&gt;

&lt;p&gt;You need one rule. The one you already know. The one you have been communicating through corrections for months.&lt;/p&gt;

&lt;p&gt;Write it down. Give it to the AI before the next session. See what happens.&lt;/p&gt;

&lt;p&gt;Everything after that is just doing it again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want help identifying what your first rule should be?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The corrections you keep making that are waiting to become rules.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Your AI Does Not Have a Naming Convention. It Has a New One Every Time You Start a Session.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Mon, 15 Jun 2026 08:00:21 +0000</pubDate>
      <link>https://dev.to/avery_code/your-ai-does-not-have-a-naming-convention-it-has-a-new-one-every-time-you-start-a-session-kj9</link>
      <guid>https://dev.to/avery_code/your-ai-does-not-have-a-naming-convention-it-has-a-new-one-every-time-you-start-a-session-kj9</guid>
      <description>&lt;p&gt;Open any React project where the AI has been generating code for a few months.&lt;/p&gt;

&lt;p&gt;Search for how buttons are named. How handlers are named. How hooks are named. How the same concept appears across different features.&lt;/p&gt;

&lt;p&gt;Chances are you will find three or four variations of the same thing. Not because different developers made different choices. Because the AI made a different choice every session and nobody defined what the convention was supposed to be.&lt;/p&gt;

&lt;p&gt;Naming looks consistent until you look closely. Then it looks like a project with no memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI naming drifts
&lt;/h2&gt;

&lt;p&gt;Naming is one of the most context-dependent decisions in code.&lt;/p&gt;

&lt;p&gt;What something is called depends on the domain, the existing conventions, the patterns already established in the project, and a shared understanding of what words mean in this specific codebase.&lt;/p&gt;

&lt;p&gt;The AI has access to some of that context in each session. It can see the files around the current work. It can infer patterns from what it reads. But it cannot see the entire codebase at once. It cannot remember what it called something three sessions ago. And it has no definition of what the naming convention actually is unless someone wrote it down.&lt;/p&gt;

&lt;p&gt;So it invents. Each session produces names that make sense in isolation. Button handler today. Handle button click tomorrow. On button press the session after that.&lt;/p&gt;

&lt;p&gt;All reasonable. All different. All adding to a codebase where the same concept has accumulated three names and nobody remembers which one was intentional.&lt;/p&gt;

&lt;h2&gt;
  
  
  What inconsistent naming actually costs
&lt;/h2&gt;

&lt;p&gt;Naming inconsistency is not a cosmetic problem.&lt;/p&gt;

&lt;p&gt;When the same concept has different names in different parts of the codebase, developers spend time figuring out whether they are the same thing or different things. New developers spend longer onboarding because the vocabulary is not consistent. Search becomes unreliable because you have to know which variation to look for.&lt;/p&gt;

&lt;p&gt;More subtly, inconsistent naming signals that no standard exists. And a codebase that signals no standard invites more inconsistency. The next developer sees the variation and adds a fourth version because there was no single correct answer to follow.&lt;/p&gt;

&lt;p&gt;The AI did not create this problem maliciously. It created it because naming decisions were never defined as rules.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
Inconsistent naming is not a sign that the AI is bad at naming. It is a sign that the naming convention was never written down where the AI could find it. The AI names things perfectly consistently within a session. The problem is that sessions do not share memory.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What a naming rule actually looks like
&lt;/h2&gt;

&lt;p&gt;A naming rule does not have to cover every possible case. It has to cover the decisions that keep coming out differently.&lt;/p&gt;

&lt;p&gt;The most common variations are usually handlers, hooks, and component props. Those are worth defining explicitly:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Naming rules that eliminate drift:
1. Event handlers are always named handle followed by the action. handleSubmit, handleClick, handleChange. Never on, never process, never manage.
2. Custom hooks are always named use followed by the feature they serve. useUserProfile, useCartItems. Never get, never fetch, never load.
3. Boolean props are always named with is or has as a prefix. isLoading, hasError, isVisible. Never loading, never error, never visible alone.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Three rules. Written once. The AI stops inventing variations because the convention exists before the session starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The naming that becomes the codebase vocabulary
&lt;/h2&gt;

&lt;p&gt;When naming rules exist, something interesting happens over time.&lt;/p&gt;

&lt;p&gt;The codebase develops a vocabulary. The same words appear in the same patterns across every feature. A new developer joins and learns the vocabulary once. From that point they can navigate any part of the project because the language is consistent.&lt;/p&gt;

&lt;p&gt;That vocabulary is not created by the AI. It is created by the rules that define what the AI names things. The AI then applies those rules consistently across every session, every feature, every developer who uses it.&lt;/p&gt;

&lt;p&gt;The codebase starts to feel like it has a voice. Like it was written by someone with a clear point of view about what things should be called.&lt;/p&gt;

&lt;p&gt;It was. You just had to write that point of view down as rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Your AI will name things every session. That is unavoidable.&lt;/p&gt;

&lt;p&gt;What is avoidable is letting it invent a new convention every time. Write the naming rules once. Give them to the AI before every session. And stop spending time renaming things that should have been named right the first time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React project has accumulated naming inconsistency?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps where your AI has been inventing conventions instead of following one.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>A Code Review Catches Mistakes. An AI Audit Catches the Missing Rules That Caused Them.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Fri, 12 Jun 2026 08:23:32 +0000</pubDate>
      <link>https://dev.to/avery_code/a-code-review-catches-mistakes-an-ai-audit-catches-the-missing-rules-that-caused-them-47ln</link>
      <guid>https://dev.to/avery_code/a-code-review-catches-mistakes-an-ai-audit-catches-the-missing-rules-that-caused-them-47ln</guid>
      <description>&lt;p&gt;Code review is good practice.&lt;/p&gt;

&lt;p&gt;You look at what was built. You check the logic. You catch the obvious problems. You leave comments about the things that should have been done differently.&lt;/p&gt;

&lt;p&gt;And next week the same categories of problems appear in the next pull request.&lt;/p&gt;

&lt;p&gt;Not because the developer did not read the comments. Because the AI that generated the code never saw them. And the missing rules that caused the problems in the first place are still missing.&lt;/p&gt;

&lt;p&gt;A code review fixes the output. An AI audit fixes the system that produced it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a code review cannot do
&lt;/h2&gt;

&lt;p&gt;A code review operates on what already exists.&lt;/p&gt;

&lt;p&gt;By the time the review happens the AI has already made its decisions. The component is already too large or the right size. The state is already in the right place or the wrong one. The naming already follows the convention or it does not.&lt;/p&gt;

&lt;p&gt;The reviewer can catch these things. They can leave comments. The developer can fix them. But none of that changes what the AI will generate in the next session. Because the review happens after the output. The rules need to happen before it.&lt;/p&gt;

&lt;p&gt;A code review is the most expensive place to catch an AI standard problem. The code is already written. The developer already spent time on it. Now both the developer and the reviewer spend more time on something that rules would have prevented.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an AI audit actually is
&lt;/h2&gt;

&lt;p&gt;An AI audit is not a review of the code. It is a review of the system that generates the code.&lt;/p&gt;

&lt;p&gt;It asks different questions. Not "is this component correct?" but "does the AI have a rule that prevents incorrect components?" Not "is this state in the right place?" but "does the AI have a rule that defines where state belongs?"&lt;/p&gt;

&lt;p&gt;The audit looks at the gaps. The areas where the AI is making decisions without constraints. The places where every session produces something slightly different because no rule defines what consistent looks like.&lt;/p&gt;

&lt;p&gt;Those gaps are the source of the problems that keep appearing in code reviews. Fix the gap and the problem stops appearing. Leave the gap and the code review keeps catching the same thing week after week.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
A code review is a symptom report. An AI audit is a root cause analysis. One tells you what went wrong. The other tells you why it keeps going wrong and what to change so it stops.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What an AI audit looks like in practice
&lt;/h2&gt;

&lt;p&gt;It starts with the repeated code review comments.&lt;/p&gt;

&lt;p&gt;If you look at the last ten pull requests and certain categories of feedback keep appearing, those categories are your audit starting point. Each repeated comment is a missing rule waiting to be written.&lt;/p&gt;

&lt;p&gt;"This component is doing too much" — missing rule about component responsibility.&lt;br&gt;
"State should be in a hook" — missing rule about state placement.&lt;br&gt;
"This naming does not match the convention" — missing rule about naming standards.&lt;/p&gt;

&lt;p&gt;The audit turns those comments into rules. Not documentation. Not style guide entries. Rules that exist before the session starts and define what the output must look like.&lt;/p&gt;

&lt;p&gt;Here is what that process looks like:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI audit findings turned into rules:
1. Components have one responsibility. If the review keeps catching this, the rule was missing.
2. State lives in dedicated hooks. If the review keeps moving state, the rule was missing.
3. Names follow domain language. If the review keeps renaming things, the rule was missing.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The audit finds the gaps. The rules close them. The code review stops catching the same things.&lt;/p&gt;

&lt;h2&gt;
  
  
  The audit that pays for itself immediately
&lt;/h2&gt;

&lt;p&gt;Most developers spend more time in code review than they realize enforcing standards the AI never had.&lt;/p&gt;

&lt;p&gt;An AI audit takes a fraction of that time. You look at what keeps going wrong. You write the rules that prevent it. You give them to the AI before the next session.&lt;/p&gt;

&lt;p&gt;The payoff is immediate. The next pull request does not have the comments the audit addressed. The review gets shorter. The developer spends less time on corrections. The reviewer spends less time on the same feedback.&lt;/p&gt;

&lt;p&gt;One audit. Compounding returns across every session that follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Code review will always exist. It is the right place to catch logic errors, discuss product decisions, and share knowledge.&lt;/p&gt;

&lt;p&gt;It is the wrong place to enforce AI standards. That is what the audit is for.&lt;/p&gt;

&lt;p&gt;Audit the system. Find the missing rules. Write them down. And let the code review be about the work that actually requires human judgment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to run an AI audit on your React project right now?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that covers exactly that. The structural gaps where your AI has been making decisions without rules and your code reviews have been paying the price.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>The Day I Stopped Thinking About My AI Was the Day the System Finally Worked.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Wed, 10 Jun 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/avery_code/the-day-i-stopped-thinking-about-my-ai-was-the-day-the-system-finally-worked-43a3</link>
      <guid>https://dev.to/avery_code/the-day-i-stopped-thinking-about-my-ai-was-the-day-the-system-finally-worked-43a3</guid>
      <description>&lt;p&gt;There was a period where working with AI felt like a second job.&lt;/p&gt;

&lt;p&gt;Every session required active management. What context does it need? What patterns should I describe? What will it get wrong this time? How do I phrase this so it does not drift?&lt;/p&gt;

&lt;p&gt;The thinking was constant. Not about the feature I was building. About the AI building it. About how to get the output close enough to acceptable that the corrections would not take too long.&lt;/p&gt;

&lt;p&gt;Then one day I opened a session, wrote a short prompt, and the output was exactly what it should have been.&lt;/p&gt;

&lt;p&gt;I did not think about it. I just moved on.&lt;/p&gt;

&lt;p&gt;That was the day I realized the system was finally working.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it means to stop thinking about your AI
&lt;/h2&gt;

&lt;p&gt;Stopping thinking about your AI does not mean ignoring it.&lt;/p&gt;

&lt;p&gt;It means the standard is so consistently applied that you no longer have to hold it in your head during every session. The rules handle it. The output reflects them. Your attention is free for the actual problem.&lt;/p&gt;

&lt;p&gt;Before that point every session cost cognitive overhead. Is this component structured right? Is the state in the right place? Does this naming follow the convention? Those are not hard questions. But they are questions that take attention. And attention spent on standards is attention not spent on building.&lt;/p&gt;

&lt;p&gt;When the rules exist and the AI follows them, those questions stop being your job. They become the system's job. And you get your attention back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters more than better output
&lt;/h2&gt;

&lt;p&gt;Most conversations about AI rules focus on output quality. Cleaner code. More consistent structure. Fewer corrections.&lt;/p&gt;

&lt;p&gt;Those things are real and they matter. But the deeper gain is cognitive.&lt;/p&gt;

&lt;p&gt;A developer who does not have to think about whether the AI will follow the standard has more mental space for everything else. For the architecture decision that actually requires judgment. For the edge case that needs careful thinking. For the product question that no rule can answer.&lt;/p&gt;

&lt;p&gt;The rules do not just improve the code. They change where your attention goes. And attention is the most limited resource in any development workflow.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
The goal of an AI rule system is not just consistent output. It is consistent output that requires no active management. When you reach that point the AI stops being something you work with and starts being something that works for you.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What the transition actually felt like
&lt;/h2&gt;

&lt;p&gt;It did not happen all at once.&lt;/p&gt;

&lt;p&gt;The first rules reduced the most common corrections. The second set of rules reduced the next most common ones. Each rule added was one less thing to think about during a session.&lt;/p&gt;

&lt;p&gt;At some point there was a threshold. The rules covered enough of the standard that the remaining decisions were genuinely interesting ones. The kind that required judgment, not just convention enforcement.&lt;/p&gt;

&lt;p&gt;That is when the sessions changed. Not faster exactly. But lighter. The mental load of each session dropped because the AI was handling the standard and I was handling everything else.&lt;/p&gt;

&lt;p&gt;Here is what that looked like in terms of rules:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rules that gave me my attention back:
1. Structure is always feature-based. I stopped thinking about where things go.
2. State always lives in hooks. I stopped thinking about whether it was in the right place.
3. Naming always follows domain language. I stopped thinking about whether names were clear enough.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Three rules. Three categories of thinking I no longer do during sessions. The attention they freed went to better places.&lt;/p&gt;

&lt;h2&gt;
  
  
  The system working for you instead of with you
&lt;/h2&gt;

&lt;p&gt;There is a difference between working with an AI and having an AI that works for you.&lt;/p&gt;

&lt;p&gt;Working with an AI means active management. Constant steering. Corrections after every generation. The AI as a capable but undirected tool that needs guidance every session.&lt;/p&gt;

&lt;p&gt;Having an AI that works for you means the direction is already defined. The rules exist. The standard is applied automatically. You show up, describe the problem, and the output fits the project.&lt;/p&gt;

&lt;p&gt;That transition does not happen by accident. It happens when the rules are comprehensive enough that the AI stops needing to guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;The cognitive overhead of working with AI without rules is real and it compounds.&lt;/p&gt;

&lt;p&gt;Every session you spend thinking about whether the AI will follow the standard is a session where the standard was not given to the AI before it started.&lt;/p&gt;

&lt;p&gt;Write the rules. Build the system. And get to the point where the AI handles the standard so completely that you stop having to think about it.&lt;/p&gt;

&lt;p&gt;That is when the work gets interesting again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find which standards you are still thinking about that should already be rules?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The areas where your attention is still doing work that rules could handle automatically.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Your AI Produces Its Worst React Code Exactly When You Need Its Best.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Mon, 08 Jun 2026 11:50:24 +0000</pubDate>
      <link>https://dev.to/avery_code/your-ai-produces-its-worst-react-code-exactly-when-you-need-its-best-1g8g</link>
      <guid>https://dev.to/avery_code/your-ai-produces-its-worst-react-code-exactly-when-you-need-its-best-1g8g</guid>
      <description>&lt;p&gt;Deadline pressure changes how you work with AI.&lt;/p&gt;

&lt;p&gt;The prompts get shorter. The reviews get faster. The corrections get skipped. There is no time to steer the AI toward the standard. There is barely time to check if the output works.&lt;/p&gt;

&lt;p&gt;And the AI, sensing none of this pressure, generates exactly what it always generates without rules. Which on a normal day is inconsistent. Under deadline pressure, with shorter prompts and less context, is worse.&lt;/p&gt;

&lt;p&gt;The code ships. The deadline is met. And somewhere in the codebase there is now a feature that looks nothing like everything around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why deadline pressure makes AI output worse
&lt;/h2&gt;

&lt;p&gt;On a normal day you give the AI context. You describe the existing patterns. You correct when it drifts. You spend the time it takes to get output that fits the project.&lt;/p&gt;

&lt;p&gt;Under pressure none of that happens.&lt;/p&gt;

&lt;p&gt;The prompt is three words instead of three paragraphs. The context is minimal. The review is a quick scan for obvious errors. The corrections that would have brought the output in line with the standard get skipped because there is no time.&lt;/p&gt;

&lt;p&gt;The AI has no way of knowing the difference. It generates based on what it receives. Less context, shorter prompt, no corrections means more improvisation. And improvisation under pressure produces the AI's best guess at what working code looks like, not what your project's standard looks like.&lt;/p&gt;

&lt;p&gt;The deadline does not change what the AI does. It changes what you give it to work with. And what you give it under pressure is almost always less than what you give it on a normal day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern most developers recognize but never solve
&lt;/h2&gt;

&lt;p&gt;Deadline code looks different. Every developer who has shipped under pressure knows this.&lt;/p&gt;

&lt;p&gt;It is not that the code is wrong. It is that it feels rushed. The naming is less careful. The structure is less deliberate. The patterns are less consistent with everything around them.&lt;/p&gt;

&lt;p&gt;With AI in the workflow that feeling is amplified. Because the AI's output reflects the quality of the input it received. And the input it received under pressure was minimal.&lt;/p&gt;

&lt;p&gt;The result is features that work but stand out. Code that passes review because everyone is moving fast but that the next developer to touch it will immediately recognize as deadline code.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
Deadline pressure does not reveal a weakness in your AI. It reveals the absence of rules. Rules do not care about deadlines. They apply the same standard to a three word prompt as they do to a three paragraph one.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What rules do under pressure
&lt;/h2&gt;

&lt;p&gt;When rules exist before the session starts, the length of the prompt stops mattering as much.&lt;/p&gt;

&lt;p&gt;A three word prompt under deadline pressure produces the same structured output as a three paragraph prompt on a normal day. Not because the AI understood more. Because the rules defined what the output must look like regardless of how much context the prompt provided.&lt;/p&gt;

&lt;p&gt;The component still has one responsibility. The state still lives in a hook. The naming still follows the convention. Not because you had time to enforce it. Because the rules enforce it automatically.&lt;/p&gt;

&lt;p&gt;Here is what that looks like in practice:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rules that hold up under deadline pressure:
1. Every component has one responsibility regardless of how the prompt is phrased.
2. State logic goes into a hook before any UI is written. No exceptions under time pressure.
3. Names follow the existing convention. No placeholder names that will need renaming later.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Three rules. They do not know it is a deadline. They apply the same standard they always do.&lt;/p&gt;

&lt;h2&gt;
  
  
  The code that survives the deadline
&lt;/h2&gt;

&lt;p&gt;Deadline code without rules becomes the feature nobody wants to touch later.&lt;/p&gt;

&lt;p&gt;Deadline code with rules becomes just another feature. One that happens to have been built under pressure but does not look like it. One that the next developer can extend without having to first understand what shortcuts were taken.&lt;/p&gt;

&lt;p&gt;That is what rules give you under pressure. Not better AI output in the sense of more creative or more sophisticated. Just consistent AI output. The same standard. Every session. Including the ones where everything is on fire.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Pressure will come. Deadlines will compress your workflow. The time you have to work with your AI will shrink.&lt;/p&gt;

&lt;p&gt;The rules do not compress with it.&lt;/p&gt;

&lt;p&gt;Write them before the pressure arrives. Apply them before every session. And stop shipping deadline code that looks different from everything else because the AI had less to work with when it mattered most.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React project is most vulnerable when deadline pressure hits?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps that become expensive exactly when you have the least time to deal with them.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Your React App Has an Architecture. Nobody on Your Team Chose It. The AI Did.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Fri, 05 Jun 2026 07:59:40 +0000</pubDate>
      <link>https://dev.to/avery_code/your-react-app-has-an-architecture-nobody-on-your-team-chose-it-the-ai-did-19p7</link>
      <guid>https://dev.to/avery_code/your-react-app-has-an-architecture-nobody-on-your-team-chose-it-the-ai-did-19p7</guid>
      <description>&lt;p&gt;At some point in every React project someone asks: why is it structured this way?&lt;/p&gt;

&lt;p&gt;And nobody has a good answer.&lt;/p&gt;

&lt;p&gt;Not because the decision was wrong. But because there was no decision. The structure grew. One session at a time. Each AI generation adding something that made sense in that moment but was never part of a deliberate architectural choice.&lt;/p&gt;

&lt;p&gt;The architecture exists. It just was not designed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an undesigned architecture gets built
&lt;/h2&gt;

&lt;p&gt;It starts with the first session.&lt;/p&gt;

&lt;p&gt;The AI generates a component. It puts it somewhere. It creates a file structure that made sense for that specific request. Nobody stops to ask whether this is where things should live long term. The feature works. The session ends.&lt;/p&gt;

&lt;p&gt;The next session builds on top of it. Not because the structure was right. Because it was there. The AI sees what exists and extends it. A new feature gets a folder. A new hook gets placed next to the last one. A new service gets added wherever there was space.&lt;/p&gt;

&lt;p&gt;Over enough sessions the codebase has a structure. A folder hierarchy. A pattern for where things live. An implicit architecture that every new session reinforces because it already exists.&lt;/p&gt;

&lt;p&gt;Nobody designed it. The AI assembled it from the accumulated decisions of every session that came before.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters more than most developers realize
&lt;/h2&gt;

&lt;p&gt;An undesigned architecture is not necessarily broken. It might even work well for a while.&lt;/p&gt;

&lt;p&gt;The problem is that it was optimized for nothing. Not for scalability. Not for team navigation. Not for the domain it represents. It was optimized for whatever was easiest to generate in each individual session.&lt;/p&gt;

&lt;p&gt;That means every decision the architecture reflects was the AI's path of least resistance, not your team's deliberate choice. And path of least resistance architectures do not age well.&lt;/p&gt;

&lt;p&gt;New developers struggle to navigate them because there is no logic to learn, only history to trace. Features become harder to add because the structure was never designed to accommodate growth. Refactors become expensive because the architecture is everywhere and nowhere at the same time.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
An architecture the AI invented is not wrong because it is bad. It is wrong because it was never yours. And a codebase that nobody deliberately designed is a codebase that nobody fully understands.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What a deliberate architecture looks like
&lt;/h2&gt;

&lt;p&gt;A deliberate architecture starts with rules that define where things live before the AI generates anything.&lt;/p&gt;

&lt;p&gt;Not a full architectural document. Not weeks of planning. Just enough rules to answer the questions the AI will otherwise answer on its own.&lt;/p&gt;

&lt;p&gt;Where do components live? How are features organized? What is the boundary between UI and business logic? How do different parts of the app communicate?&lt;/p&gt;

&lt;p&gt;Rules like these turn architectural decisions into constraints the AI follows:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Architecture rules that replace AI decisions:
1. Features are self-contained folders with components, hooks, services, and types inside.
2. Shared code lives in a dedicated shared folder. Nothing cross-imports between features directly.
3. UI components never know about API structure. Data transformation happens in services.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Three rules. Applied before the first session. The AI stops inventing the architecture and starts building inside one you chose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking back the architecture
&lt;/h2&gt;

&lt;p&gt;Most projects reach a point where the undesigned architecture becomes a problem. The refactor is considered. The conversation about structure finally happens.&lt;/p&gt;

&lt;p&gt;That conversation is valuable. But it is expensive when it happens after the architecture already exists everywhere.&lt;/p&gt;

&lt;p&gt;The same conversation before the first session takes twenty minutes and costs nothing. The AI follows the outcome of that conversation in every session after it.&lt;/p&gt;

&lt;p&gt;That is the difference between an architecture you chose and an architecture the AI assembled without anyone asking it to.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Your React project has an architecture whether you designed it or not.&lt;/p&gt;

&lt;p&gt;The question is whether it reflects deliberate decisions about how your application should be structured or accumulated AI decisions about what was easiest to generate.&lt;/p&gt;

&lt;p&gt;Design it first. Write it as rules. Give it to the AI before it builds anything. And stop inheriting an architecture nobody chose.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find where your React architecture was invented by the AI instead of designed by you?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps where the AI has been making architectural decisions on your behalf.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>The Refactor Took Three Days. The AI Undid It in One Session.</title>
      <dc:creator>Avery</dc:creator>
      <pubDate>Wed, 03 Jun 2026 08:28:40 +0000</pubDate>
      <link>https://dev.to/avery_code/the-refactor-took-three-days-the-ai-undid-it-in-one-session-16dd</link>
      <guid>https://dev.to/avery_code/the-refactor-took-three-days-the-ai-undid-it-in-one-session-16dd</guid>
      <description>&lt;p&gt;You know the feeling.&lt;/p&gt;

&lt;p&gt;Three days of careful work. Moving logic to the right place. Splitting components that had grown too large. Establishing naming that actually made sense. Cleaning up the state management that had accumulated across too many sessions.&lt;/p&gt;

&lt;p&gt;The codebase finally looked the way it should have looked from the start.&lt;/p&gt;

&lt;p&gt;Then a new feature request came in. You opened a session. The AI generated the first component.&lt;/p&gt;

&lt;p&gt;And it looked exactly like the codebase before the refactor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why refactoring without rules does not hold
&lt;/h2&gt;

&lt;p&gt;A refactor changes what exists. It does not change how new things get built.&lt;/p&gt;

&lt;p&gt;When you refactor a React project you are correcting the accumulated decisions of every session that came before. You are imposing a standard on a codebase that never had one.&lt;/p&gt;

&lt;p&gt;But the AI that builds the next feature does not know about the refactor. It does not know that you spent three days establishing a pattern. It does not know that components should now be split differently, that state should now live somewhere specific, that imports should now follow a particular convention.&lt;/p&gt;

&lt;p&gt;It generates based on what it can see and what constraints exist. If the constraints are the same as before the refactor, the output will be the same as before the refactor.&lt;/p&gt;

&lt;p&gt;The refactor cleaned the past. The rules were never written down to protect the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cycle most developers do not realize they are in
&lt;/h2&gt;

&lt;p&gt;Refactor. Build with AI. Watch the standard erode. Refactor again.&lt;/p&gt;

&lt;p&gt;It feels like progress because each refactor genuinely improves things. But the improvement does not compound. It resets. Because the underlying cause — the AI making its own decisions without rules — never changed.&lt;/p&gt;

&lt;p&gt;The three days you spent refactoring were not wasted. But they were not invested either. They were spent. And the next session spent them again on the other side.&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
A refactor without rules is a correction that expires. The AI will rebuild what you cleaned up the moment it generates something new without constraints to follow.&lt;br&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  What makes a refactor permanent
&lt;/h2&gt;

&lt;p&gt;The refactor becomes permanent when the standard it establishes gets written down as rules the AI follows going forward.&lt;/p&gt;

&lt;p&gt;Not documentation. Not comments in the code. Rules that exist before the session starts and define what every new piece of output must look like.&lt;/p&gt;

&lt;p&gt;When you finish a refactor, the question is not just "does the codebase look better?" It is "have I given the AI the rules it needs to not undo this?"&lt;/p&gt;

&lt;p&gt;Here is what that looks like in practice:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rules written after the last refactor:
1. Components above 200 lines get split before the session continues. No exceptions.
2. Every new feature gets a dedicated hook before the UI component is built.
3. Imports always go through the feature index file. No direct cross-feature imports.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;These were the patterns the refactor established. Writing them down took twenty minutes. They have held up across every session since.&lt;/p&gt;

&lt;h2&gt;
  
  
  The refactor you will not have to do again
&lt;/h2&gt;

&lt;p&gt;Most developers refactor reactively. The codebase drifts, the pain becomes too great, the refactor happens.&lt;/p&gt;

&lt;p&gt;With rules in place the drift stops. Not because the AI became better at guessing. Because the AI stopped guessing and started following.&lt;/p&gt;

&lt;p&gt;The next feature looks like the refactored codebase because the rules define that it must. Not approximately. Exactly.&lt;/p&gt;

&lt;p&gt;That is the refactor you do not have to do again. Not because the codebase never changes. Because the standard that the refactor established now travels with every session that comes after it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt does not matter. The rules do.
&lt;/h2&gt;

&lt;p&gt;Three days of refactoring deserve more than one session to undo them.&lt;/p&gt;

&lt;p&gt;Write the standard down. Give it to the AI before the next session starts. And stop refactoring the same codebase over and over because the rules that would protect it were never written down.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to find which parts of your React project are one AI session away from needing another refactor?
&lt;/h2&gt;

&lt;p&gt;I built a free 24 point checklist that helps you find exactly that. The structural gaps the AI will fill with its own decisions the moment you give it something new to build.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-clean-code-checklist?utm_source=devto" rel="noopener noreferrer"&gt;Get the React AI Clean Code Checklist — free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://averylabs.gumroad.com/l/avery-code-react-ai-coding-system-pro?utm_source=devto" rel="noopener noreferrer"&gt;Avery Code React AI Engineering System&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>react</category>
      <category>cleancode</category>
    </item>
  </channel>
</rss>
