<?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: Maxi Contieri</title>
    <description>The latest articles on DEV Community by Maxi Contieri (@mcsee).</description>
    <link>https://dev.to/mcsee</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%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg</url>
      <title>DEV Community: Maxi Contieri</title>
      <link>https://dev.to/mcsee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mcsee"/>
    <language>en</language>
    <item>
      <title>AI Coding Tip 022 - Give AI a Harness to Work With</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 02 Jun 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-022-give-ai-a-harness-to-work-with-274a</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-022-give-ai-a-harness-to-work-with-274a</guid>
      <description>&lt;p&gt;&lt;em&gt;Make the AI Work Inside Boundaries, Not Outside Them&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Install your harness before prompting: the structure you set up first is what turns an impulsive AI into a safe, steerable collaborator.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You open a fresh chat and type a bare prompt.&lt;/p&gt;

&lt;p&gt;No &lt;code&gt;AGENTS.md&lt;/code&gt; loaded.&lt;/p&gt;

&lt;p&gt;No committed baseline.&lt;/p&gt;

&lt;p&gt;No test requirement stated.&lt;/p&gt;

&lt;p&gt;No &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;read-only planning&lt;/a&gt; step.&lt;/p&gt;

&lt;p&gt;The AI starts writing code immediately.&lt;/p&gt;

&lt;p&gt;You read the output, it looks plausible, and you accept it.&lt;/p&gt;

&lt;p&gt;Six weeks later something breaks in production.&lt;/p&gt;

&lt;p&gt;You can't trace why because there is no harness to tell you what the AI changed, why, or what rules it followed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The AI makes plausible-looking changes across multiple files with no safe revert point.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code passes local tests but breaks production because no harness enforced a real definition of done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Every session starts blank and the AI reverts to its own style, ignoring your project conventions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Context pollution and hallucinations accumulate when no structure limits the scope of each task.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destructive changes (deleted guards, introduced anti-patterns) go undetected without automated feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The AI makes tests pass by deleting them or weakening their assertions instead of fixing the actual defect.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Run &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7"&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/a&gt; before your first prompt and create &lt;code&gt;AGENTS.md&lt;/code&gt; with your stack, coding standards, build command, and test command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;Commit your code&lt;/a&gt; before every AI session so you always have a clean &lt;code&gt;git reset --hard&lt;/code&gt; checkpoint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tell the AI explicitly that all tests must pass before the task is done, and include the test command in &lt;code&gt;AGENTS.md&lt;/code&gt;. Some tools support the &lt;a href="https://www.mindstudio.ai/blog/claude-code-goal-command-autonomous-tasks" rel="noopener noreferrer"&gt;/goal command&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Require the AI to read, explain, and &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;propose a plan&lt;/a&gt; before touching any file, then &lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f"&gt;define done with a spec&lt;/a&gt; before it writes any code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Split &lt;code&gt;AGENTS.md&lt;/code&gt; into &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec"&gt;nested files&lt;/a&gt; by area: root file for global rules, subdirectory files for area-specific constraints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a 20-50 line &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;skill file&lt;/a&gt; for each repeating task type and load only the relevant skill, not the whole rulebook.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add an "AI Context" section to every PR with the decisive prompt, active skills, what the AI tried first, and any corrections you made.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update &lt;code&gt;AGENTS.md&lt;/code&gt; with every new rule revealed by a &lt;a href="https://dev.to/mcsee/ai-coding-tip-016-feed-your-pr-lessons-into-the-ai-brain-3al9"&gt;merged PR&lt;/a&gt; before you close the branch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Declare test files and critical contracts as read-only in &lt;code&gt;AGENTS.md&lt;/code&gt; so the only path to a passing test suite is fixing the implementation, never editing the tests.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Safe revert point:&lt;/strong&gt; You can always undo AI changes cleanly because a &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;commit checkpoint&lt;/a&gt; exists before every session.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consistent style:&lt;/strong&gt; The AI reads &lt;code&gt;AGENTS.md&lt;/code&gt; at startup and follows your project's conventions, not its training defaults.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Machine-enforced definition of done:&lt;/strong&gt; When the AI must pass your test suite, "done" has an objective, machine-verified meaning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced hallucinations:&lt;/strong&gt; A harness limits scope so the AI works on one bounded task at a time instead of drifting across the codebase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compounding knowledge:&lt;/strong&gt; Every PR lesson updates &lt;code&gt;AGENTS.md&lt;/code&gt; and the harness improves with every session.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;A harness isn't a limitation.&lt;/p&gt;

&lt;p&gt;A horse harness doesn't reduce the horse's power.&lt;/p&gt;

&lt;p&gt;It directs massive energy into precise, steerable work.&lt;/p&gt;

&lt;p&gt;Without a harness, the horse is dangerous.&lt;/p&gt;

&lt;p&gt;With one, the horse plows fields and races on command.&lt;/p&gt;

&lt;p&gt;The AI's speed and pattern-matching capability are the energy.&lt;/p&gt;

&lt;p&gt;The harness makes that energy productive instead of destructive.&lt;/p&gt;

&lt;p&gt;A test harness wraps a unit under test so you can observe and control its behavior.&lt;/p&gt;

&lt;p&gt;An AI harness does the same for your assistant: it bounds what the AI can touch and makes every output reviewable.&lt;/p&gt;

&lt;p&gt;The parallel is exact: tests provide validation feedback, &lt;code&gt;AGENTS.md&lt;/code&gt; is your configuration and fixture, &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;commit-before-prompt&lt;/a&gt; is setup and teardown, and CI is the test runner.&lt;/p&gt;

&lt;p&gt;Isaac Asimov's &lt;a href="https://en.wikipedia.org/wiki/Three_Laws_of_Robotics" rel="noopener noreferrer"&gt;Three Laws of Robotics&lt;/a&gt; were fiction's first harness: hard rules baked into every robot to bound its behavior.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A robot may not injure a human being or, through inaction, allow a human being to come to harm.&lt;/li&gt;
&lt;li&gt;A robot must obey orders given by human beings except where such orders conflict with the First Law.&lt;/li&gt;
&lt;li&gt;A robot must protect its own existence as long as such protection doesn't conflict with the First or Second Law.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your &lt;code&gt;AGENTS.md&lt;/code&gt; is the same idea applied to AI coding assistants: explicit rules that constrain behavior and enforce your conventions.&lt;/p&gt;

&lt;p&gt;Without constraints, the AI takes the shortest path to a passing test suite.&lt;/p&gt;

&lt;p&gt;That path sometimes runs through the test file itself.&lt;/p&gt;

&lt;p&gt;It deletes the failing test, or weakens the assertion to &lt;code&gt;assertTrue(true)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Declare your test files and critical contracts as read-only in &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The AI's only valid exit is fixing the code.&lt;/p&gt;

&lt;p&gt;The chat window isn't the source of truth.&lt;/p&gt;

&lt;p&gt;Decisions made in a conversation scroll away or &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9"&gt;get compacted&lt;/a&gt; when the session closes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;, skill files, and commit checkpoints are artifacts that outlive any chat.&lt;/p&gt;

&lt;p&gt;A harness externalizes the rules so the AI never starts from zero and every decision leaves a traceable record.&lt;/p&gt;

&lt;p&gt;The model is rarely the weak point.&lt;/p&gt;

&lt;p&gt;The system around the model is.&lt;/p&gt;

&lt;p&gt;A longer prompt doesn't replace a harness.&lt;/p&gt;

&lt;p&gt;A harness makes even a short prompt produce consistent and reviewable work because the constraints live in files, not in your memory.&lt;/p&gt;

&lt;p&gt;A safety harness doesn't prevent you from working at height.&lt;/p&gt;

&lt;p&gt;It lets you work confidently at height because a fall won't be fatal.&lt;/p&gt;

&lt;p&gt;The commit-before-prompt pattern is that safety line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Refactor the PaymentProcessor class to use the Null Object pattern.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Read @PaymentProcessor.php and @tests/PaymentProcessorTest.php.

Don't write any code yet.

Explain how the class handles null payments today.

Then write a plan to introduce the Null Object pattern

following the rules in AGENTS.md and skills/php-clean-code.md.

Wait for my approval before making any changes.

After I approve:
Create a failing test for the Null Object.

Apply the change.
Run all tests until they pass.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Simple tasks don't need a full harness.&lt;/p&gt;

&lt;p&gt;A CSS tweak, a typo fix, or a one-liner change doesn't require &lt;code&gt;AGENTS.md&lt;/code&gt; and a planning step.&lt;/p&gt;

&lt;p&gt;The harness is proportional to the complexity and risk of the task.&lt;/p&gt;

&lt;p&gt;The harness degrades if you stop maintaining it.&lt;/p&gt;

&lt;p&gt;Every session that teaches the AI something new must update &lt;code&gt;AGENTS.md&lt;/code&gt;, or the knowledge vanishes with the chat.&lt;/p&gt;

&lt;p&gt;A harness without automated feedback is incomplete.&lt;/p&gt;

&lt;p&gt;Configuration files alone aren't enough.&lt;/p&gt;

&lt;p&gt;Tests, CI, and linters must enforce what &lt;code&gt;AGENTS.md&lt;/code&gt; declares.&lt;/p&gt;

&lt;p&gt;A session that produces hundreds of lines of change isn't always a win.&lt;/p&gt;

&lt;p&gt;It can be review debt transferred to the next human who opens the PR.&lt;/p&gt;

&lt;p&gt;If a single session grows beyond what a reviewer can absorb in one sitting, split the output into smaller, chained units before opening the pull request.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;The harness requires upfront investment in &lt;code&gt;AGENTS.md&lt;/code&gt;, skills, and test setup, which outweighs the benefit on small throwaway projects.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Safety&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 001 - Commit Before Prompt&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3148461" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" id="article-link-3148461"&gt;
          AI Coding Tip 001 - Commit Before Prompt
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;8&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 003 - Force Read-Only Planning&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3177915" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" id="article-link-3177915"&gt;
          AI Coding Tip 003 - Force Read-Only Planning
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/chatgpt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;chatgpt&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/code"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;code&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 011 - Initialize Agents.md&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3369224" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" id="article-link-3369224"&gt;
          AI Coding Tip 011 - Initialize Agents.md
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 008 - Use Spec-Driven Development with AI&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3271031" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 24&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f" id="article-link-3271031"&gt;
          AI Coding Tip 008 - Use Spec-Driven Development with AI
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;You wouldn't give a power tool to someone with no safety equipment and no instructions.&lt;/p&gt;

&lt;p&gt;You give them the tool, the harness, and the training first.&lt;/p&gt;

&lt;p&gt;Do the same for your AI.&lt;/p&gt;

&lt;p&gt;Install the harness before the first prompt, maintain it after every PR, and the AI becomes a precise, reviewable collaborator instead of a fast source of technical debt.&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Test_harness" rel="noopener noreferrer"&gt;Test Harness (Wikipedia)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Three_Laws_of_Robotics" rel="noopener noreferrer"&gt;Three Laws of Robotics (Wikipedia)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code/memory" rel="noopener noreferrer"&gt;Claude Code Memory and AGENTS.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mindstudio.ai/blog/claude-code-goal-command-autonomous-tasks" rel="noopener noreferrer"&gt;Goal Command&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;AI-Safety-Net&lt;/li&gt;
&lt;li&gt;Prompt-Guardrails&lt;/li&gt;
&lt;li&gt;AI-Scaffolding&lt;/li&gt;
&lt;li&gt;Bounded-AI-Workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AI Coding Tip 021 - Avoid Comprehension Debt</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 26 May 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-021-avoid-comprehension-debt-edm</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-021-avoid-comprehension-debt-edm</guid>
      <description>&lt;p&gt;&lt;em&gt;Stop shipping code you can't explain.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Merging code you don't understand creates comprehension debt that compounds until your team can no longer maintain it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You ask the AI to implement a feature.&lt;/p&gt;

&lt;p&gt;The code looks clean.&lt;/p&gt;

&lt;p&gt;The tests are green.&lt;/p&gt;

&lt;p&gt;You merge it.&lt;/p&gt;

&lt;p&gt;Six weeks later, a &lt;a href="https://dev.to/mcsee/stop-calling-them-bugs-57gl"&gt;defect&lt;/a&gt; appears in that module.&lt;/p&gt;

&lt;p&gt;Nobody on your team can explain how it works.&lt;/p&gt;

&lt;p&gt;You ask the AI again.&lt;/p&gt;

&lt;p&gt;You merged without understanding.&lt;/p&gt;

&lt;p&gt;You built both functional and comprehension debt.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You lose the ability to debug without the AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your team can't onboard new members into AI-generated modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Design decisions become invisible and accumulate silently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You mistake "tests passing" for "code understood."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your velocity metrics look great while comprehension quietly collapses underneath.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A junior developer can now generate code faster than a &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;senior engineer can audit it&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The quality gate you relied on disappears.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ask the AI to &lt;a href="https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en"&gt;explain every non-trivial block&lt;/a&gt; before you accept it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Close the chat and rewrite the explanation in your own words in a comment or &lt;a href="https://en.wikipedia.org/wiki/Architectural_decision" rel="noopener noreferrer"&gt;ADR&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask the AI "what assumptions did you make here?" for each function it generates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run a 10-minute AI blackout: try to explain the module to a colleague without reopening the chat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a &lt;em&gt;comprehension check&lt;/em&gt; step in your PR template: "Can you explain this change in 3 sentences?"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the AI for conceptual inquiry: ask &lt;em&gt;why&lt;/em&gt; as often as you ask &lt;em&gt;how.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify your &lt;a href="https://addyosmani.com/blog/comprehension-debt/" rel="noopener noreferrer"&gt;load-bearing decisions&lt;/a&gt;: the choices that, if wrong, will cost you weeks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep a short &lt;code&gt;decisions.md&lt;/code&gt; file with one sentence per &lt;a href="https://en.wikipedia.org/wiki/Architectural_decision" rel="noopener noreferrer"&gt;architectural decision&lt;/a&gt; the AI made on your behalf.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Debuggability:&lt;/strong&gt; You can fix &lt;a href="https://dev.to/mcsee/stop-calling-them-bugs-57gl"&gt;defects&lt;/a&gt; without reopening the AI chat because you understand the system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Onboarding speed:&lt;/strong&gt; New teammates can read your decisions file and understand why the code exists.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced rework:&lt;/strong&gt; You catch flawed assumptions before they reach production.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Honest velocity:&lt;/strong&gt; Your speed metric reflects real output, not deferred understanding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI supervision skill:&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2601.20245" rel="noopener noreferrer"&gt;Research shows&lt;/a&gt; that cognitive engagement with AI preserves learning outcomes even when you receive AI assistance.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;Comprehension debt is the growing gap between how much code exists in your system and how much any human genuinely understands.&lt;/p&gt;

&lt;p&gt;Addy Osmani &lt;a href="https://addyosmani.com/blog/comprehension-debt/" rel="noopener noreferrer"&gt;named and described this pattern in March 2026&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Unlike &lt;a href="https://dev.to/mcsee/code-smell-148-todos-5gn9"&gt;technical debt&lt;/a&gt;, comprehension debt breeds false confidence.&lt;/p&gt;

&lt;p&gt;The codebase looks clean.&lt;/p&gt;

&lt;p&gt;The tests pass.&lt;/p&gt;

&lt;p&gt;The reckoning arrives quietly, at the worst possible moment.&lt;/p&gt;

&lt;p&gt;A research team at Anthropic ran a randomized controlled trial with 52 software engineers learning a new library.&lt;/p&gt;

&lt;p&gt;The group using AI completed the task in the same time as the control group, but scored 17% lower on a follow-up comprehension quiz (42% vs. 57%) (&lt;a href="https://arxiv.org/abs/2601.20245" rel="noopener noreferrer"&gt;Shen and Tamkin, Anthropic, 2026&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The biggest drops were in debugging ability.&lt;/p&gt;

&lt;p&gt;The researchers found six distinct AI interaction patterns.&lt;/p&gt;

&lt;p&gt;Three of them involve cognitive engagement and preserve learning outcomes even when you receive full AI assistance.&lt;/p&gt;

&lt;p&gt;The tool doesn't destroy understanding.&lt;/p&gt;

&lt;p&gt;How you use it does.&lt;/p&gt;

&lt;p&gt;You can also think of comprehension debt as a speed asymmetry problem.&lt;/p&gt;

&lt;p&gt;AI generates code far faster than you can evaluate it.&lt;/p&gt;

&lt;p&gt;When you write code, the review process is a bottleneck, but a productive one.&lt;/p&gt;

&lt;p&gt;Reading the PR forces comprehension.&lt;/p&gt;

&lt;p&gt;AI-generated code breaks that feedback loop.&lt;/p&gt;

&lt;p&gt;The volume is too high.&lt;/p&gt;

&lt;p&gt;The output is syntactically clean and superficially correct: exactly the signals that used to make you feel safe to merge.&lt;/p&gt;

&lt;p&gt;Surface correctness isn't systemic correctness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Add Redis caching to the UserRepository class.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Add Redis caching to the UserRepository class.

After you implement it:
&lt;span class="p"&gt;1.&lt;/span&gt; Explain every non-trivial decision you made.
&lt;span class="p"&gt;
2.&lt;/span&gt; List the assumptions you made about cache expiration,
   key naming, and invalidation strategy.
&lt;span class="p"&gt;
3.&lt;/span&gt; Identify any load-bearing decisions: choices that,
   if wrong, would require a full rewrite.
&lt;span class="p"&gt;
4.&lt;/span&gt; Write one sentence per decision in decisions.md format
   so my team understands why the code works this way.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Tests are necessary, but they aren't sufficient.&lt;/p&gt;

&lt;p&gt;A test suite can only cover behavior you thought to specify.&lt;/p&gt;

&lt;p&gt;Nobody writes a test for a behavior nobody imagined.&lt;/p&gt;

&lt;p&gt;When the AI updates hundreds of tests to match new behavior, you must ask: "Were all those changes correct?"&lt;/p&gt;

&lt;p&gt;Only comprehension can answer that question.&lt;/p&gt;

&lt;p&gt;Tests can't.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f"&gt;Specs&lt;/a&gt; help, but they aren't a substitute for review.&lt;/p&gt;

&lt;p&gt;A spec detailed enough to fully describe a program is more or less the program, written in a non-executable language.&lt;/p&gt;

&lt;p&gt;Keep your AI context window short and your decisions file honest.&lt;/p&gt;

&lt;p&gt;You document decisions, not transcripts.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;Comprehension checks add time to each PR.&lt;/p&gt;

&lt;p&gt;Your team must agree to slow down a little to stay safe.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge Management&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3251959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" id="article-link-3251959"&gt;
          AI Coding Tip 006 - Review Every Line Before Commit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 019 - Tell the AI Why, Not Just What&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3644753" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 12&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en" id="article-link-3644753"&gt;
          AI Coding Tip 019 - Tell the AI Why, Not Just What
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;AI makes code cheap to generate.&lt;/p&gt;

&lt;p&gt;It doesn't make understanding cheap to skip.&lt;/p&gt;

&lt;p&gt;Every time you merge code you can't explain, you borrow from your future self.&lt;/p&gt;

&lt;p&gt;You'll pay for comprehension sooner or later.&lt;/p&gt;

&lt;p&gt;Pay it now, with curiosity.&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://addyosmani.com/blog/comprehension-debt/" rel="noopener noreferrer"&gt;Comprehension Debt: The Hidden Cost of AI-Generated Code by Addy Osmani&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2601.20245" rel="noopener noreferrer"&gt;How AI Impacts Skill Formation, Shen and Tamkin, Anthropic (arXiv 2601.20245)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.oreilly.com/radar/comprehension-debt-the-hidden-cost-of-ai-generated-code/" rel="noopener noreferrer"&gt;Comprehension Debt on O'Reilly Radar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/pdf/2602.20206" rel="noopener noreferrer"&gt;Mitigating Epistemic Debt in Generative AI-Scaffolded Programming (arXiv 2602.20206)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.augmentcode.com/guides/ai-technical-debt-compounds-spec-driven-development" rel="noopener noreferrer"&gt;AI Technical Debt Compounds: Augment Code Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/yiOsikXaQ7c"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Cognitive-Debt&lt;/li&gt;
&lt;li&gt;AI-Comprehension-Gap&lt;/li&gt;
&lt;li&gt;Invisible-Technical-Debt&lt;/li&gt;
&lt;li&gt;Epistemic-Debt&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI Coding Tip 020 - Create a Second Brain</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 19 May 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-020-create-a-second-brain-lgp</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-020-create-a-second-brain-lgp</guid>
      <description>&lt;p&gt;&lt;em&gt;Build a Persistent Memory Layer Your AI Can Actually Use&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Use Obsidian with Markdown notes, YAML metadata, and direct AI file access to build a Second Brain with LLMs that gives your tools persistent project context.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You paste a snippet of code or a problem description into an AI chat, get a good answer, and close the tab.&lt;/p&gt;

&lt;p&gt;The next week you face the same problem again.&lt;/p&gt;

&lt;p&gt;You search your chat history, find nothing useful, and paste the same snippet again.&lt;/p&gt;

&lt;p&gt;Your AI starts fresh every session with zero memory of what you built, decided, or debugged before.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You repeat yourself constantly because context resets between sessions and your AI remembers nothing.&lt;/li&gt;
&lt;li&gt;You lose architectural decisions, debugging notes, meeting commitments, and design rationale after each conversation ends.&lt;/li&gt;
&lt;li&gt;Your AI gives generic answers because it lacks the specific context of your project and past decisions.&lt;/li&gt;
&lt;li&gt;Mental load accumulates as you juggle multiple projects, notifications, and context switches simultaneously.&lt;/li&gt;
&lt;li&gt;You lose track of decisions made weeks ago without a structured retrieval system.&lt;/li&gt;
&lt;li&gt;As you age or face cognitive overload, you forget context between sessions, repeat past mistakes, and lose the thread of long-running projects.&lt;/li&gt;
&lt;li&gt;Notification fatigue builds when every system demands your attention in real time instead of on your schedule and you forget what you were searching for.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Choose a local Markdown tool like &lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt;, &lt;a href="https://logseq.com" rel="noopener noreferrer"&gt;Logseq&lt;/a&gt;, &lt;a href="https://foambubble.github.io/foam/" rel="noopener noreferrer"&gt;Foam&lt;/a&gt;, or &lt;a href="https://github.com/refactoringhq/tolaria" rel="noopener noreferrer"&gt;Tolaria&lt;/a&gt; to store all your knowledge as plain &lt;code&gt;.md&lt;/code&gt; files you own and control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Organize your vault using the PARA system: Projects (active work with deadlines), Areas (ongoing responsibilities), Resources (reference material), and Archives (inactive items).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write atomic &lt;a href="https://zettelkasten.de/introduction/" rel="noopener noreferrer"&gt;Zettelkasten&lt;/a&gt; notes: one idea per file, with a unique identifier and explicit links that explain &lt;em&gt;why&lt;/em&gt; two concepts relate, not just what they are.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add YAML &lt;a href="https://en.wikipedia.org/wiki/Book_design#Front_matter" rel="noopener noreferrer"&gt;front matter&lt;/a&gt; to every note so your AI gets searchable, structured metadata it can query and filter:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;JWT&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Authentication&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Design"&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;architecture-decision&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;approved&lt;/span&gt;
&lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;auth-service&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;security&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;created&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2018-12-09&lt;/span&gt;
&lt;span class="na"&gt;related&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OAuth&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Flow"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Session&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Management"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use Dataview or Obsidian Bases to query your vault like a database and surface all tasks due today, pending decisions, or notes grouped by component with a single dynamic query; every note is a record with metadata and legible text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give your AI direct access to &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp"&gt;all your vault&lt;/a&gt; as local files so Claude, Devin, and Codex can read your entire codebase and notes simultaneously.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;code&gt;AGENTS.md&lt;/code&gt; in each sub-project that points to the relevant vault sections, following the nested agents pattern from &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec"&gt;AI Coding Tip 014&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dictate notes on the go using &lt;a href="https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po"&gt;voice input&lt;/a&gt; and paste the transcript into your vault to capture context in real time without interrupting your flow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sync your vault to mobile and tablet using Obsidian Sync, Dropbox, OneDrive, or Syncthing so your Second Brain travels with you everywhere.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up &lt;a href="https://openclaw.ai/" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; or a local LLM (Ollama or LM Studio) to index your vault and answer questions via Telegram or WhatsApp, as a private assistant that never sends your data to the cloud.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask your AI to scan your vault periodically for orphaned notes, missing connections, and hidden patterns, acting as a tireless librarian that reorganizes your knowledge network over time without falling into vault-design paralysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7"&gt;Bootstrap your vault&lt;/a&gt; from your existing knowledge: ask ChatGPT, Claude, Grok, or Gemini to summarize and export your most relevant past conversations as Markdown notes, since you already have a Second Brain scattered across chat history waiting to be harvested.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Persistent Context:&lt;/strong&gt; Your AI starts every session knowing your architecture, past decisions, and current priorities instead of starting blank.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern Discovery:&lt;/strong&gt; The LLM finds connections between notes you wrote months apart and surfaces forgotten solutions to current problems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus Protection:&lt;/strong&gt; You capture every interruption into your inbox and process it on your schedule, eliminating notification fatigue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Extension:&lt;/strong&gt; You can retrieve exact decisions and reasoning from months ago without relying on biological memory alone, making it especially valuable for senior developers, people with attention challenges, or anyone whose cognitive load has grown beyond what one brain can hold.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by Default:&lt;/strong&gt; When you use local models like Ollama with OpenClaw, your notes, code, and queries never leave your machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compounding Knowledge:&lt;/strong&gt; Every note you add makes your Second Brain denser: the more you use it, the more valuable it becomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Access:&lt;/strong&gt; You can query and update your knowledge base from any device, making your Second Brain available wherever you work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distraction-Free Writing:&lt;/strong&gt; You work in plain text files with minimal formatting, much like &lt;a href="https://www.urbandictionary.com/define.php?term=zenware" rel="noopener noreferrer"&gt;zenware&lt;/a&gt;, so you stay focused on ideas instead of tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Graph:&lt;/strong&gt; You can open Obsidian's Graph View to see all your notes as a visual network where nodes are notes and edges are links, revealing clusters, hub concepts, and hidden connections at a glance.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;Tiago Forte's "Building a Second Brain" methodology introduced the CODE framework: Capture, Organize, Distill, Express.&lt;/p&gt;

&lt;p&gt;For developers, this maps directly to how you learn, document, and reuse knowledge across projects.&lt;/p&gt;

&lt;p&gt;Niklas Luhmann, a sociologist who wrote over 50 books, developed the &lt;a href="https://es.wikipedia.org/wiki/Zettelkasten" rel="noopener noreferrer"&gt;Zettelkasten method&lt;/a&gt; using a physical slip box of interconnected atomic notes.&lt;/p&gt;

&lt;p&gt;Your Obsidian vault is that slip box, and your AI can search, analyze, and extend it at any time.&lt;/p&gt;

&lt;p&gt;LLMs have three types of memory: parametric (knowledge encoded during training), working (the current context window), and external (your files on disk).&lt;/p&gt;

&lt;p&gt;Your Second Brain fills the external memory layer and gives the AI permanent access to your project-specific knowledge that survives every session reset.&lt;/p&gt;

&lt;p&gt;Just as neural networks in LLMs store patterns in weights, your Second Brain stores patterns in linked Markdown files, extending the model's memory with your lived experience as a developer.&lt;/p&gt;

&lt;p&gt;Andrej Karpathy &lt;a href="https://x.com/karpathy/status/2039805659525644595" rel="noopener noreferrer"&gt;captured this architecture&lt;/a&gt; in one sentence: "Obsidian is the IDE; the LLM is the programmer; the wiki is the codebase."&lt;/p&gt;

&lt;p&gt;The front matter you add to each note acts as structured metadata that significantly improves how AI retrieves and ranks relevant information.&lt;/p&gt;

&lt;p&gt;RAG (Retrieval-Augmented Generation) pipelines embed your notes as vectors and return the most semantically similar ones when you ask a question, injecting them directly into the AI's context window.&lt;/p&gt;

&lt;p&gt;I borrowed &lt;a href="https://ernestokiszkurno.blogspot.com/2021/08/second-brain.html" rel="noopener noreferrer"&gt;this idea&lt;/a&gt; many years ago from &lt;a class="mentioned-user" href="https://dev.to/ernesto"&gt;@ernesto&lt;/a&gt; Kiszkurno and have written more than 500 technical articles since then.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Bad Article 🚫
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a note about the movie
"Howl's Moving Castle".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Article 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Howl's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Moving&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Castle"&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;movie-note&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;draft&lt;/span&gt;
&lt;span class="na"&gt;director&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Hayao Miyazaki&lt;/span&gt;
&lt;span class="na"&gt;year&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2004&lt;/span&gt;
&lt;span class="na"&gt;genre&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;fantasy&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;animation&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;anti-war&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;rating&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;9/10&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ghibli&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;miyazaki&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;adaptation&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;related&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Studio&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Ghibli"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Diana&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Wynne&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Jones"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;created&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-05-16&lt;/span&gt;
&lt;span class="na"&gt;expected publish date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-06-12&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gu"&gt;## Poster&lt;/span&gt;
&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Howl's Moving Castle&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;Howls-moving-castleposter.jpg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="gu"&gt;## Summary&lt;/span&gt;
Two or three lines describing the plot without
spoiling the ending.

&lt;span class="gu"&gt;## Themes to Explore&lt;/span&gt;
Bullet list of ideas: anti-war message,
identity and transformation, Sophie's arc,
Miyazaki's pacifism compared to the novel.

&lt;span class="gu"&gt;## Characters&lt;/span&gt;
Use wikilinks: [Howl], [Sophie Hatter],
[Calcifer], [The Witch of the Waste].

&lt;span class="gu"&gt;## Article Ideas&lt;/span&gt;
Numbered list of angles for a critical article:
compare Miyazaki's changes from the Diana Wynne
Jones novel, analyze the anti-war allegory,
explore the feminist reading of Sophie's curse.

&lt;span class="gu"&gt;## Related Notes&lt;/span&gt;
[Studio Ghibli filmography]
[Diana Wynne Jones bibliography]
[War themes in animation]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Keep your notes in plain Markdown files, not HTML (despite current trends) or proprietary formats.&lt;/p&gt;

&lt;p&gt;Markdown is readable by both humans and LLMs, diffs cleanly in Git, and works with every static site generator.&lt;/p&gt;

&lt;p&gt;Don't use MCP connectors or remote APIs to give your AI access to your vault. &lt;/p&gt;

&lt;p&gt;Point it directly at local files instead.&lt;/p&gt;

&lt;p&gt;Direct file access is faster, cheaper, and requires no extra infrastructure.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;AGENTS.md&lt;/code&gt; files you create per project are part of your Second Brain, not separate from it.&lt;/p&gt;

&lt;p&gt;If you have privacy concerns about cloud AI providers reading your notes, run a local model with Ollama or LM Studio through OpenClaw.&lt;/p&gt;

&lt;p&gt;Your data never leaves your machine or private cloud.&lt;/p&gt;

&lt;p&gt;Mind maps and Canvas diagrams in Obsidian help you visualize codebase architecture and sprint planning spatially, while the linked Markdown notes behind each node stay searchable by your AI.&lt;/p&gt;

&lt;p&gt;Your files are local.&lt;/p&gt;

&lt;p&gt;Nobody can see them, nobody can index them, and you can open any note with the simplest text editor in the world.&lt;/p&gt;

&lt;p&gt;If you use a cloud AI model instead of a local one, you can add a guardrail to restrict what files the AI can read, so sensitive notes never leave your control.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;Large vaults with thousands of notes can slow down semantic search and local LLM indexing on low-end hardware.&lt;/p&gt;

&lt;p&gt;Front matter requires discipline to maintain consistently: inconsistent metadata reduces query quality over time.&lt;/p&gt;

&lt;p&gt;Local LLMs powerful enough to reason over a large vault require significant RAM (16 GB minimum, 32 GB recommended).&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge Management&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 010 - Access All Your Code&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3336000" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 10&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" id="article-link-3336000"&gt;
          AI Coding Tip 010 - Access All Your Code
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 014 - Use Nested AGENTS.md Files&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3454716" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 7&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" id="article-link-3454716"&gt;
          AI Coding Tip 014 - Use Nested AGENTS.md Files
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 018 - Use Voice-Driven-Development&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3601767" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 12&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po" id="article-link-3601767"&gt;
          AI Coding Tip 018 - Use Voice-Driven-Development
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;Your biological brain is for having ideas, not storing them.&lt;/p&gt;

&lt;p&gt;Build a Second Brain from local Markdown files and give your AI direct access to it.&lt;/p&gt;

&lt;p&gt;You get persistent context, pattern discovery, and a knowledge base that compounds every time you use it. 🧠&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://zettelkasten.de/introduction/" rel="noopener noreferrer"&gt;Zettelkasten Introduction&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;Obsidian - Local Markdown Knowledge Base&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-2039805659525644595-193" src="https://platform.twitter.com/embed/Tweet.html?id=2039805659525644595"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2039805659525644595-193');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2039805659525644595&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Book_design#Front_matter" rel="noopener noreferrer"&gt;Front Matter in Real books&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blacksmithgu.github.io/obsidian-dataview/" rel="noopener noreferrer"&gt;Dataview Plugin for Obsidian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" rel="noopener noreferrer"&gt;Andrej Karpathy LLM Wiki Pattern&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://foambubble.github.io/foam/" rel="noopener noreferrer"&gt;Foam - Second Brain for VS Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buildingasecondbrain.com/" rel="noopener noreferrer"&gt;Building a Second Brain - Tiago Forte&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ernestokiszkurno.blogspot.com/2021/08/second-brain.html" rel="noopener noreferrer"&gt;Second Brain (Spanish)&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Personal-Knowledge-Management&lt;/li&gt;
&lt;li&gt;AI-Memory-Extension&lt;/li&gt;
&lt;li&gt;Developer-Second-Brain&lt;/li&gt;
&lt;li&gt;Local-Knowledge-Base&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://logseq.com" rel="noopener noreferrer"&gt;Logseq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foambubble.github.io/foam/" rel="noopener noreferrer"&gt;Foam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/refactoringhq/tolaria" rel="noopener noreferrer"&gt;Tolaria&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blacksmithgu.github.io/obsidian-dataview/" rel="noopener noreferrer"&gt;Dataview Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openclaw.ai/" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lmstudio.ai" rel="noopener noreferrer"&gt;LM Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Coding Tip 018 - Use Voice-Driven-Development</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 12 May 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-018-use-voice-driven-development-47po</guid>
      <description>&lt;p&gt;&lt;em&gt;Talk twice as fast as you type, and create richer prompts with less effort.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Dictate your prompts instead of typing them to speak twice as fast and give more context.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You write detailed prompts by hand, word by word, staying at your desk.&lt;/p&gt;

&lt;p&gt;You restrict yourself to slow keyboard-based interaction with AI tools because that's how you have always worked.&lt;/p&gt;

&lt;p&gt;You assume voice input is still unreliable because of syntax complexity (brackets, semicolons, language-specific quirks).&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Typing speed limits the depth and context of your prompts, hurting AI output quality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You spend 80% of your job thinking, designing, and communicating, yet you treat writing as a bottleneck instead of optimizing it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Staying chained to your desk during focused work reduces mobility, creativity, and wellbeing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You miss opportunities to rubber-duck ideas by speaking them aloud to an AI agent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can dictate in seconds complex prompts that would take minutes to type.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Enable voice mode in your tool &lt;code&gt;/voice&lt;/code&gt; or similar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start dictating your prompt with accuracy in a long prompt with context.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Speak naturally in &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6"&gt;English&lt;/a&gt;, explaining your request with full context, constraints, and examples.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Release the key when you finish, and your tool will transcribe and process your input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If your tool doesn't support voice mode, install &lt;a href="https://wisprflow.ai" rel="noopener noreferrer"&gt;Whispr Flow&lt;/a&gt; or similar and configure your preferred voice hotkey.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;a href="https://en.wikipedia.org/wiki/Speech_recognition" rel="noopener noreferrer"&gt;Speech-To-Text&lt;/a&gt; in any application (terminal, email, code editor, documents) by holding your hotkey and speaking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start with one scenario: dictating a single prompt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expand voice into your entire workflow as it becomes natural: specs, documentation, brainstorming, thinking aloud.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speed:&lt;/strong&gt; You speak at 150 words per minute versus typing at 80 words per minute, nearly doubling your prompt composition speed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Richer Prompts:&lt;/strong&gt; Speaking encourages thinking aloud, producing more nuanced context and backstory than typed prompts, which improves AI output quality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rubber-Ducking:&lt;/strong&gt; Explaining a problem verbally to an AI agent often surfaces solutions without explicit effort, just like talking to a colleague.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobility:&lt;/strong&gt; You can draft specs, think through architecture, or brainstorm ideas while walking, commuting, or in environments that boost creativity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Health:&lt;/strong&gt; You spend less time hunched over your keyboard.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your posture improves and you move more.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive Flow:&lt;/strong&gt; You stay in thinking mode instead of switching to typing mode.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your mental focus stays on the problem.&lt;/p&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Why Voice Works Now
&lt;/h2&gt;

&lt;p&gt;Historically, voice-to-code failed because speech recognition couldn't parse syntax.&lt;/p&gt;

&lt;p&gt;Today, AI understands your intent in natural language and translates it into precise code.&lt;/p&gt;

&lt;p&gt;Modern AI assistants like Claude can infer what you mean even when you speak conversationally ("can you fix the bug where users see a blank screen after login") without needing you to type angle brackets or semicolons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Fix the code

&lt;span class="gh"&gt;# (Typing it in the console)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Dictated by /voice&lt;/span&gt;

I have a user authentication function that's failing.

It is highlighted in the editor

When users try to log in with valid credentials

The system returns a 500 error instead of creating a session.

The error logs show it's happening in the password validation step. 

I need you to review the authentication logic
identify why the validation is failing
and provide a fix that includes proper error handling
for invalid credentials and missing database connections.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Dictation may feel awkward the first time because you aren't used to speaking technical requests aloud.&lt;/p&gt;

&lt;p&gt;You may ramble or repeat yourself slightly when dictating, but the AI agent will extract what it needs.&lt;/p&gt;

&lt;p&gt;Voice works best for high-level requests, architecture decisions, and design thinking, not for precise syntax correction.&lt;/p&gt;

&lt;p&gt;You still need to review AI output before committing, just as you would with typed prompts.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;Voice input works best in quiet environments; background noise reduces accuracy.&lt;/p&gt;

&lt;p&gt;Some very large or precise code changes may be faster to type than dictate.&lt;/p&gt;

&lt;p&gt;You need to &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6"&gt;speak them in English&lt;/a&gt;, or change the overall language.&lt;/p&gt;

&lt;p&gt;Most tools won't let you have multiple voice languages.&lt;/p&gt;

&lt;p&gt;You need to invest time learning which voice tool works best for your workflow and hardware.&lt;/p&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Beginner&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Context Window&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3251959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" id="article-link-3251959"&gt;
          AI Coding Tip 006 - Review Every Line Before Commit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 003 - Force Read-Only Planning&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3177915" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" id="article-link-3177915"&gt;
          AI Coding Tip 003 - Force Read-Only Planning
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/chatgpt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;chatgpt&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/code"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;code&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 005 - Keep Context Fresh&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3226533" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 4&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" id="article-link-3226533"&gt;
          AI Coding Tip 005 - Keep Context Fresh
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 002 - Prompt in English&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3162967" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" id="article-link-3162967"&gt;
          AI Coding Tip 002 - Prompt in English
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;p&gt;Claude Code with &lt;code&gt;/voice&lt;/code&gt; command&lt;/p&gt;

&lt;p&gt;Whispr Flow&lt;/p&gt;

&lt;p&gt;ChatGPT &lt;a href="https://chatgpt.com/es-419/features/voice/" rel="noopener noreferrer"&gt;Voice Mode&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;Typing is no longer the bottleneck.&lt;/p&gt;

&lt;p&gt;You speak twice as fast as you type, and AI understands natural language.&lt;/p&gt;

&lt;p&gt;Use voice to dictate prompts, unlock mobility, improve wellbeing, and create richer input for better code generation.&lt;/p&gt;

&lt;p&gt;Start with one prompt today.&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/7a1IVtGAKNI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://claude.com/claude-code" rel="noopener noreferrer"&gt;Claude Code Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wisprflow.ai" rel="noopener noreferrer"&gt;Whispr Flow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/chatgpt/voice/" rel="noopener noreferrer"&gt;ChatGPT Voice Mode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging" rel="noopener noreferrer"&gt;Rubber Duck Debugging&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Voice-To-Code&lt;/li&gt;
&lt;li&gt;Dictation-Driven-Development&lt;/li&gt;
&lt;li&gt;Speech-Based-Prompting&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI Coding Tip 019 - Tell the AI Why, Not Just What</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 12 May 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-019-tell-the-ai-why-not-just-what-43en</guid>
      <description>&lt;p&gt;&lt;em&gt;State your reasons before your prompt and the AI will solve the right problem.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Tell the AI your reason before your request to get solutions that match your real constraints.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You send commands to the AI without context.&lt;/p&gt;

&lt;p&gt;"Refactor this."&lt;/p&gt;

&lt;p&gt;"Optimize this query."&lt;/p&gt;

&lt;p&gt;"Add error handling."&lt;/p&gt;

&lt;p&gt;The AI complies, but returns a generic (and probably hallucinated) solution that solves the average case, not your specific one.&lt;/p&gt;

&lt;p&gt;You spend the next three messages correcting the trade-offs you never mentioned.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The LLM has dozens of valid solutions for any request and picks the &lt;em&gt;most statistically common one&lt;/em&gt; without &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;your context&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You get correct (but wrong) results: technically valid code that doesn't fit your constraints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You iterate more than necessary because the AI guessed wrong about what mattered.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The model makes trade-offs you didn't intend, favoring speed when you needed readability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the AI doesn't know the constraint, it can't explain why it chose a specific approach.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Identify the real reason behind your request before you type it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add one sentence explaining the constraint or goal before your request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specify the limiting factor: performance, memory, audience, team skill level, or deadline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name the trade-off that matters most to you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Include who will use or maintain the result.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Force yourself to enter &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;plan mode&lt;/a&gt; to reason together.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better Trade-offs:&lt;/strong&gt; The LLM navigates to solutions that match your actual constraints instead of the generic average.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fewer Iterations:&lt;/strong&gt; You get the right solution in the first attempt instead of correcting trade-offs after the fact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Principled Decisions:&lt;/strong&gt; The AI can explain why it chose a specific approach because it knows what you optimized for.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Domain-Aware Results:&lt;/strong&gt; Context enables domain-specific patterns that generic requests never trigger.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Smarter Refactoring:&lt;/strong&gt; &lt;a href="https://seal-queensu.github.io/publications/pdf/IDE-Jonathan-2025.pdf" rel="noopener noreferrer"&gt;Research shows&lt;/a&gt; that adding motivation to refactoring requests improves success from 15.6% to 86.7%.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Why the Why Changes Everything
&lt;/h2&gt;

&lt;p&gt;For any given coding problem, the LLM can give you dozens of valid solutions.&lt;/p&gt;

&lt;p&gt;Each trades off different qualities: speed vs. memory, readability vs. performance, simplicity vs. flexibility.&lt;/p&gt;

&lt;p&gt;Without a reason, the model defaults to the most statistically common solution from its training data.&lt;/p&gt;

&lt;p&gt;That solution works for the generic case.&lt;/p&gt;

&lt;p&gt;It almost never matches your specific constraints.&lt;/p&gt;

&lt;p&gt;When you add the why, the model reweights the entire solution space toward what matters to you.&lt;/p&gt;

&lt;p&gt;"Refactor this function" and "Refactor this function because you are deploying to edge devices with 512MB RAM" activate completely different reasoning paths.&lt;/p&gt;

&lt;p&gt;The second prompt forces the model to consider memory-efficient algorithms, smaller data structures, and lazy loading patterns.&lt;/p&gt;

&lt;p&gt;More precise advice like "never use ellipses because this will be read by text-to-speech" is better than just "never use ellipses."&lt;/p&gt;

&lt;p&gt;The same principle applies to every coding request.&lt;/p&gt;

&lt;p&gt;When you &lt;a href="https://dev.to/mcsee/code-smell-05-comment-abusers-2ba5"&gt;avoid comments&lt;/a&gt;, you document only design decisions.&lt;/p&gt;

&lt;p&gt;This is another example of why you need to add the why.&lt;/p&gt;

&lt;p&gt;Modern models have more reasoning, and you can check the approach, not just the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Refactor this function
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Refactor this function
because you are deploying to mobile devices
with limited memory (512MB RAM).

The trade-off that matters most
is memory usage over speed.

Many developers will maintain this code.
Keep it readable.

Avoid heavy data structures
or lazy-loading patterns
that require deep knowledge of the framework.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;One clear reason is enough.&lt;/p&gt;

&lt;p&gt;You don't need to write a &lt;a href="https://dev.to/mcsee/code-smell-75-comments-inside-a-method-2bk"&gt;long paragraph&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The why should describe the constraint, not the implementation.&lt;/p&gt;

&lt;p&gt;Don't confuse "why" with "what".&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;Adding context makes your prompts longer.&lt;/p&gt;

&lt;p&gt;You need to know your own constraints before you can explain them to the AI.&lt;/p&gt;

&lt;p&gt;Some requests genuinely have no specific constraint.&lt;/p&gt;

&lt;p&gt;In those cases, the generic solution is fine.&lt;/p&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Beginner&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Prompt Engineering&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 002 - Prompt in English&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3162967" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" id="article-link-3162967"&gt;
          AI Coding Tip 002 - Prompt in English
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 005 - Keep Context Fresh&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3226533" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 4&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" id="article-link-3226533"&gt;
          AI Coding Tip 005 - Keep Context Fresh
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 003 - Force Read-Only Planning&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3177915" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" id="article-link-3177915"&gt;
          AI Coding Tip 003 - Force Read-Only Planning
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/chatgpt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;chatgpt&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/code"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;code&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3251959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" id="article-link-3251959"&gt;
          AI Coding Tip 006 - Review Every Line Before Commit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;Every coding problem has multiple valid solutions.&lt;/p&gt;

&lt;p&gt;The AI picks the generic one unless you tell it which trade-off matters.&lt;/p&gt;

&lt;p&gt;One sentence explaining your constraint shifts the model from solving the average problem to solving your exact problem.&lt;/p&gt;

&lt;p&gt;Tell the AI why.&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2201.11903" rel="noopener noreferrer"&gt;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents" rel="noopener noreferrer"&gt;Effective Context Engineering for AI Agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices" rel="noopener noreferrer"&gt;Prompting Best Practices - Claude API Docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://seal-queensu.github.io/publications/pdf/IDE-Jonathan-2025.pdf" rel="noopener noreferrer"&gt;LLM-Driven Code Refactoring: Opportunities and Limitations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api" rel="noopener noreferrer"&gt;Best Practices for Prompt Engineering with the OpenAI API&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Reason-Driven-Prompting&lt;/li&gt;
&lt;li&gt;Constraint-First-Prompting&lt;/li&gt;
&lt;li&gt;Motivation-Aware-Prompting&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>coding</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Coding Tip 017 - Ask for the Analyst, Not the Analysis</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 28 Apr 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-017-ask-for-the-analyst-not-the-analysis-df4</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-017-ask-for-the-analyst-not-the-analysis-df4</guid>
      <description>&lt;p&gt;&lt;em&gt;When you have a lot of data to analyze, Ask for a tool, not a summary.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Ask the AI to write a program that analyzes your data instead of pasting all your data into the prompt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You have 50 complex JSON files.&lt;/p&gt;

&lt;p&gt;You paste them all into the chat and ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find all users whose orders exceeded $500 in Q3.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI struggles.&lt;/p&gt;

&lt;p&gt;It hits context limits.&lt;/p&gt;

&lt;p&gt;It misses records.&lt;/p&gt;

&lt;p&gt;It gives you a &lt;a href="https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc"&gt;hallucinated summary&lt;/a&gt; with silent errors.&lt;/p&gt;

&lt;p&gt;You don't get analysis.&lt;/p&gt;

&lt;p&gt;You get a probabilistic guess.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context window overflow.&lt;/strong&gt; Large datasets exceed what the model can &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9"&gt;hold in memory&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It silently drops data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Silent hallucination.&lt;/strong&gt; The AI fills gaps with invented numbers when data doesn't fit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can't tell which results are real.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No reproducibility.&lt;/strong&gt; You can't re-run the same "analysis" tomorrow on new data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each chat is a one-shot lottery.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No auditability.&lt;/strong&gt; You can't verify &lt;em&gt;how&lt;/em&gt; the AI reached each conclusion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no code trail and debugging.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wasted tokens.&lt;/strong&gt; You burn your context window on raw data the model can only partially process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Non-scalable workflow.&lt;/strong&gt; When you get 50 more JSON files next week, you start from scratch.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Describe your data shape to the AI, not the data itself. Tell it the JSON structure, field names, and types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;State your analysis goal clearly and precisely. ("Find users with total order value &amp;gt; $500 in Q3 2024.")&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask for a program in your preferred language that reads the files from disk and performs the analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;Review the generated code&lt;/a&gt; before running it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run it locally on your real data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Iterate. Ask the AI to refine the program if the output needs adjustments.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unlimited data size.&lt;/strong&gt; Your program reads files from disk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It doesn't care if you have 5 files or 5,000.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reproducible results.&lt;/strong&gt; You run the same script every week on fresh data and get consistent, verifiable output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Full auditability.&lt;/strong&gt; You read the code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You know &lt;em&gt;exactly&lt;/em&gt; what logic produced each result.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero hallucination risk on data.&lt;/strong&gt; The program reads your actual files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It doesn't invent values.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed.&lt;/strong&gt; A script can process 1,000 JSONs in seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A prompt processes them... poorly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trust.&lt;/strong&gt; You can ask a local tool to find empty folders.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also ask for a script to validate them giving examples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coverage.&lt;/strong&gt; You cover your solution and can iterate it later without breaking it.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reusability.&lt;/strong&gt; You own the script.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modify it, schedule it, version-control it, test it, iterate it, share it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;LLMs are text predictors with a finite context window.&lt;/p&gt;

&lt;p&gt;Dumping data into a prompt treats the AI like a database.&lt;/p&gt;

&lt;p&gt;It is not a database.&lt;/p&gt;

&lt;p&gt;It is a code generator.&lt;/p&gt;

&lt;p&gt;Use it as one.&lt;/p&gt;

&lt;p&gt;The right mental model: the AI is your senior developer.&lt;/p&gt;

&lt;p&gt;You describe the problem.&lt;/p&gt;

&lt;p&gt;It writes the tool.&lt;/p&gt;

&lt;p&gt;You run the tool.&lt;/p&gt;

&lt;p&gt;This pattern scales.&lt;/p&gt;

&lt;p&gt;The data-dump pattern doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Here are my 12 JSON files with order data. Each one has
hundreds of records. [pastes 8,000 lines of JSON]

Which users spent more than $500 in Q3?

&lt;span class="gh"&gt;# You overwhelm the context window. &lt;/span&gt;
&lt;span class="gh"&gt;# The AI summarizes, guesses, and hallucinates. &lt;/span&gt;
&lt;span class="gh"&gt;# You can't verify any result. &lt;/span&gt;
&lt;span class="gh"&gt;# You can't repeat the analysis tomorrow.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;I have a folder with multiple JSON files.
Each file represents one month of orders.

Each JSON has this structure:

{
  "month": "2024-07",
  "orders": [
    {
      "order_id": "ORD-001",
      "user": {
        "name": "Lio Messi",
        "country": "AR"
      },
      "items": [
        {
          "product_id": "PROD-7",
          "name": "Soccer Ball",
          "qty": 2,
          "unit_price": 49.99
        }
      ],
      "status": "completed",
      "created_at": "2022-12-18T12:30:00Z"
    }
  ]
}

Write a Python script that:
&lt;span class="p"&gt;1.&lt;/span&gt; Reads all .json files from a given folder path
&lt;span class="p"&gt;2.&lt;/span&gt; Filters orders from Q3 2024 (July, August, September)
&lt;span class="p"&gt;3.&lt;/span&gt; Computes the total spent per user_id
   (sum of qty by unit_price for completed orders)
&lt;span class="p"&gt;4.&lt;/span&gt; Prints users whose total exceeds $500, sorted descending
&lt;span class="p"&gt;5.&lt;/span&gt; Exports the result to a CSV file named q3_top_users.csv

Use pathlib and the standard csv module. No dependencies.

&lt;span class="gh"&gt;# You describe the shape of the data, not the data itself.&lt;/span&gt;
&lt;span class="gh"&gt;# The AI writes a reliable, auditable, reusable program.&lt;/span&gt;
&lt;span class="gh"&gt;# You run it on your real files.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Schema accuracy matters.&lt;/p&gt;

&lt;p&gt;If you describe the wrong structure, the AI generates code with wrong field names.&lt;/p&gt;

&lt;p&gt;Check the generated code against a real sample record.&lt;/p&gt;

&lt;p&gt;Edge cases need explicit mention.&lt;/p&gt;

&lt;p&gt;Tell the AI about optional keys, inconsistent date formats.&lt;/p&gt;

&lt;p&gt;("The &lt;code&gt;status&lt;/code&gt; field can be null in some older records.")&lt;/p&gt;

&lt;p&gt;Large cross-file joins need memory planning.&lt;/p&gt;

&lt;p&gt;Ask the AI to use streaming or chunk-based reads for very large files (&amp;gt;1 GB).&lt;/p&gt;

&lt;p&gt;Mention the file size.&lt;/p&gt;

&lt;p&gt;This doesn't replace exploratory analysis.&lt;/p&gt;

&lt;p&gt;When you genuinely don't know your data shape yet, pasting a &lt;em&gt;small sample&lt;/em&gt; (5–10 records) into the prompt is fine. &lt;/p&gt;

&lt;p&gt;Use that to understand the shape, then switch to the program approach.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The generated program needs a local executable environment to run.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Schema descriptions must be accurate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bad schema → broken code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always verify with a real record.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The AI may not handle deeply nested or polymorphic JSON structures without extra hints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add examples of edge-case shapes to your prompt.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Context Window&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3251959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" id="article-link-3251959"&gt;
          AI Coding Tip 006 - Review Every Line Before Commit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 009 - Compact Your Context&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3303683" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 3&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" id="article-link-3303683"&gt;
          AI Coding Tip 009 - Compact Your Context
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 010 - Access All Your Code&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3336000" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 10&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" id="article-link-3336000"&gt;
          AI Coding Tip 010 - Access All Your Code
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 015 - Force the AI to Obey You&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3495172" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 14&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc" id="article-link-3495172"&gt;
          AI Coding Tip 015 - Force the AI to Obey You
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;The AI is not a spreadsheet.&lt;/p&gt;

&lt;p&gt;It is not a database.&lt;/p&gt;

&lt;p&gt;It is a code generator that never gets tired.&lt;/p&gt;

&lt;p&gt;When you need to analyze data, you describe the shape of your data and the goal of your analysis.&lt;/p&gt;

&lt;p&gt;The AI writes the tool.&lt;/p&gt;

&lt;p&gt;You run the tool on real data.&lt;/p&gt;

&lt;p&gt;You get verifiable, reproducible, auditable results.&lt;/p&gt;

&lt;p&gt;You keep the script.&lt;/p&gt;

&lt;p&gt;You run it again next month.&lt;/p&gt;

&lt;p&gt;That is how you use AI for data work. 🏁&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2307.03172" rel="noopener noreferrer"&gt;Lost in the Middle: How Language Models Use Long Contexts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2303.06689" rel="noopener noreferrer"&gt;Self-planning Code Generation with Large Language Models&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Generate the tool, run the tool&lt;/li&gt;
&lt;li&gt;Ask for the analyzer, not the analysis&lt;/li&gt;
&lt;li&gt;Data-driven code generation&lt;/li&gt;
&lt;li&gt;Program the solution, don't paste the data&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Local or cloud development tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI Coding Tip 016 - Feed Your PR Lessons into the AI Brain</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 21 Apr 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-016-feed-your-pr-lessons-into-the-ai-brain-3al9</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-016-feed-your-pr-lessons-into-the-ai-brain-3al9</guid>
      <description>&lt;p&gt;&lt;em&gt;Your PR descriptions are training data for your future self, and for every agent after you.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Improve the AI tools, rules, skills, and workflows you use in every pull request so your team and future agents can learn, reproduce, and improve on every change.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You write clean code.&lt;/p&gt;

&lt;p&gt;The AI helps you ship fast after it understands &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9"&gt;all your context&lt;/a&gt;, and you merge the PR.&lt;/p&gt;

&lt;p&gt;You write "Fix bug" as the description.&lt;/p&gt;

&lt;p&gt;Two weeks later, nobody knows what prompt produced that fix, which &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;SKILL.md&lt;/a&gt; was active, or why you chose that approach over the alternative.&lt;/p&gt;

&lt;p&gt;Not your teammates.&lt;/p&gt;

&lt;p&gt;Not a new AI agent.&lt;/p&gt;

&lt;p&gt;Not you.&lt;/p&gt;

&lt;p&gt;The AI's reasoning evaporates the moment you close the chat.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You lose the exact prompt that produced a working solution and can't reproduce it.&lt;/li&gt;
&lt;li&gt;Future &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec"&gt;agents&lt;/a&gt; start from zero on every PR instead of building on past decisions.&lt;/li&gt;
&lt;li&gt;AGENTS.md, SKILL.md, and rules stay generic because nobody tracks which ones actually worked.&lt;/li&gt;
&lt;li&gt;Onboarding new developers (or new agents) takes longer because context lives nowhere.&lt;/li&gt;
&lt;li&gt;You repeat the same debugging cycles because you never wrote down what failed first.&lt;/li&gt;
&lt;li&gt;The team can't measure whether AI assistance improves over time.&lt;/li&gt;
&lt;li&gt;Code reviews become guesswork when reviewers can't see the AI's reasoning.&lt;/li&gt;
&lt;li&gt;You miss chances to promote a one-off good prompt into a permanent SKILL.md.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add an "AI Context" section to every PR description:&lt;/strong&gt; Write which agent or tool you used (Claude Code, Copilot, Cursor, Windsurf) and the model version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Paste or link the key prompt:&lt;/strong&gt; You don't need the full conversation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Include the decisive prompt that unlocked the solution.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;List the active configuration files:&lt;/strong&gt; Name every SKILL.md, AGENTS.md section, RULES file, or WORKFLOW.md that shaped the output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Note what the AI got wrong first:&lt;/strong&gt; Write one line about the failed attempt before the correct solution.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the most valuable information your future self will read.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Flag any manual correction you applied:&lt;/strong&gt; If you edited the AI output, say so and say why.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is feedback your team can turn into a new rule.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update AGENTS.md as part of the PR:&lt;/strong&gt; If the code change revealed a missing rule or a better workflow step, add it immediately, while context is still fresh.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update or create SKILL.md entries:&lt;/strong&gt; If you invented a reusable prompt pattern, extract it into a skill file so every future agent can use it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tag the PR with an "ai-assisted" label:&lt;/strong&gt; This lets you filter and audit AI-assisted changes later for quality review.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review AI-trace PRs in retros:&lt;/strong&gt; Once a sprint, pick two PRs with rich AI context and ask what rule or skill you should add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ask the LLM to update what it learned:&lt;/strong&gt; Write a final prompt for the AI to update its own knowledge.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reusable learning units:&lt;/strong&gt; Every PR becomes a lesson agents can read and reuse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Living AGENTS.md:&lt;/strong&gt; Your rules file grows richer with each merged change instead of staying a static document nobody updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shorter feedback loop:&lt;/strong&gt; You compress the gap between a good prompt and a reusable &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;skill&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clearer onboarding:&lt;/strong&gt; New developers understand &lt;em&gt;why&lt;/em&gt; code looks the way it does, not just &lt;em&gt;what&lt;/em&gt; it does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in audit trail:&lt;/strong&gt; You track AI-assisted decisions without extra tooling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measurable AI effectiveness:&lt;/strong&gt; Teams can see which skills produce the fewest corrections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smarter future agents:&lt;/strong&gt; Every agent inherits your project's accumulated knowledge instead of starting blind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster code reviews:&lt;/strong&gt; Reviewers read explicit context instead of guessing.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;AI agents don't share memory across sessions by default.&lt;/p&gt;

&lt;p&gt;Every new task starts with a blank slate unless you give them written context.&lt;/p&gt;

&lt;p&gt;AGENTS.md, SKILL.md, and WORKFLOW.md files solve this for project-level knowledge.&lt;/p&gt;

&lt;p&gt;Pull requests solve it for &lt;em&gt;change-level&lt;/em&gt; knowledge.&lt;/p&gt;

&lt;p&gt;Think of a PR as a commit message for your AI reasoning.&lt;/p&gt;

&lt;p&gt;A commit message records &lt;em&gt;what&lt;/em&gt; changed.&lt;/p&gt;

&lt;p&gt;An AI-trace PR description records &lt;em&gt;how&lt;/em&gt; and &lt;em&gt;why&lt;/em&gt; the AI reached that solution.&lt;/p&gt;

&lt;p&gt;Teams that treat PRs as AI learning artifacts get better over time: each merged change makes the next AI session smarter.&lt;/p&gt;

&lt;p&gt;This matches the continuous improvement loop from lean manufacturing (kaizen) applied to AI-assisted development.&lt;/p&gt;

&lt;p&gt;You inspect every unit of work, identify waste (bad prompts, missing rules), and standardize the improvement (new skill, updated workflow).&lt;/p&gt;

&lt;h1&gt;
  
  
  Prompt Reference 📝
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Bad PR Description:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Fixed the payment bug

[x] Fixed the null check
[x] Tests pass&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt; -&lt;/span&gt; if ($payment !== null) {
&lt;span class="p"&gt; -&lt;/span&gt;     $payment-&amp;gt;process();
&lt;span class="p"&gt; -&lt;/span&gt; }
&lt;span class="p"&gt; +&lt;/span&gt; if ($payment !== null &amp;amp;&amp;amp; $payment-&amp;gt;isValid()) {
&lt;span class="p"&gt; +&lt;/span&gt;     $payment-&amp;gt;process();
&lt;span class="p"&gt; +&lt;/span&gt; }

// No AI context. No prompt. No record of what failed first.
// The next agent reads this diff and learns nothing.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Good PR Description:
&lt;/h3&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Fixed PaymentProcessor null check with Null Object pattern

&lt;span class="gs"&gt;**AI Context**&lt;/span&gt;
Tool    : Claude Code (claude-sonnet-4-20250514)
Skill   : /skills/php-clean-code.md §3
Rules   : /AGENTS.md#error-handling
Workflow: /workflows/refactor-feature.md
Prompt  : "Refactor PaymentProcessor using the
           Null Object pattern instead of null
           checks. Follow AGENTS.md conventions."

&lt;span class="gs"&gt;**What the AI tried first**&lt;/span&gt;
Inline null guard. Rejected — violates AGENTS.md
rule on conditionals.

&lt;span class="gs"&gt;**Manual correction applied**&lt;/span&gt;
Renamed NullPayment to NullPaymentMethod to match
domain vocabulary. Added to AGENTS.md#naming.

payment.ts
&lt;span class="p"&gt; -&lt;/span&gt; if ($payment !== null) {
&lt;span class="p"&gt; -&lt;/span&gt;     $payment-&amp;gt;process();
&lt;span class="p"&gt; -&lt;/span&gt; }
&lt;span class="p"&gt; +&lt;/span&gt; $payment-&amp;gt;process();

AGENTS.md

  ## error-handling
&lt;span class="p"&gt;  -&lt;/span&gt; Don't use null checks inline.
&lt;span class="p"&gt;  -&lt;/span&gt; Use guard clauses only at system boundaries.
&lt;span class="p"&gt; +&lt;/span&gt; - Replace null checks with Null Object pattern.
&lt;span class="p"&gt; +&lt;/span&gt; - Null Objects live in /src/NullObjects/.
&lt;span class="p"&gt; +&lt;/span&gt; - Null Object class names follow NullX convention.&lt;span class="sb"&gt;


&lt;/span&gt;skills/clean-code.md

&lt;span class="gu"&gt;## 3 Null Handling&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; - Avoid null returns when possible.
&lt;span class="p"&gt;+&lt;/span&gt; - Never check for null inside domain logic.
&lt;span class="p"&gt;+&lt;/span&gt; - Inject a Null Object instead.
&lt;span class="p"&gt;+&lt;/span&gt; - Example: NullPaymentMethod implements PaymentMethod.
&lt;span class="p"&gt;+&lt;/span&gt; - Prompt: "Replace null check in X with a Null Object
&lt;span class="p"&gt;+&lt;/span&gt;    that implements the same interface."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Keep the AI Context section short.&lt;/p&gt;

&lt;p&gt;Three to five lines are enough.&lt;/p&gt;

&lt;p&gt;You document it, not transcribe it.&lt;/p&gt;

&lt;p&gt;Sensitive business logic in prompts needs the same care as any other PR content.&lt;/p&gt;

&lt;p&gt;Your repo's access policy applies.&lt;/p&gt;

&lt;p&gt;Not every PR needs full AI tracing.&lt;/p&gt;

&lt;p&gt;A one-line typo fix doesn't.&lt;/p&gt;

&lt;p&gt;A non-trivial refactor or new feature always does.&lt;/p&gt;

&lt;p&gt;Don't paste the entire conversation.&lt;/p&gt;

&lt;p&gt;Extract the signal: the decisive prompt and the first failed attempt.&lt;/p&gt;

&lt;p&gt;AGENTS.md updates from PR traces should go through review like any other code change.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;This practice requires team discipline.&lt;/li&gt;
&lt;li&gt;One developer skipping it breaks the knowledge chain.&lt;/li&gt;
&lt;li&gt;AI tools that don't expose prompt history make extraction harder.&lt;/li&gt;
&lt;li&gt;Use tools that let you copy the context.&lt;/li&gt;
&lt;li&gt;Large monorepos with many SKILL.md files need a naming convention so PR references stay unambiguous.&lt;/li&gt;
&lt;li&gt;You can't retroactively trace PRs merged before you adopted this practice.&lt;/li&gt;
&lt;li&gt;Start from today and move forward.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Standards&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 004 - Use Modular Skills&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3200068" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 27&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97" id="article-link-3200068"&gt;
          AI Coding Tip 004 - Use Modular Skills
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3251959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" id="article-link-3251959"&gt;
          AI Coding Tip 006 - Review Every Line Before Commit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 011 - Initialize Agents.md&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3369224" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" id="article-link-3369224"&gt;
          AI Coding Tip 011 - Initialize Agents.md
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 014 - Use Nested AGENTS.md Files&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3454716" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 7&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" id="article-link-3454716"&gt;
          AI Coding Tip 014 - Use Nested AGENTS.md Files
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;Pull requests aren't just code snapshots.&lt;/p&gt;

&lt;p&gt;They're the cheapest knowledge transfer mechanism your team has.&lt;/p&gt;

&lt;p&gt;When you log the prompt, the active skills, the rules, and the first failure alongside the final diff, you turn every merged change into a lesson.&lt;/p&gt;

&lt;p&gt;Your AGENTS.md improves.&lt;/p&gt;

&lt;p&gt;Your SKILL.md library grows.&lt;/p&gt;

&lt;p&gt;Your next AI session starts smarter than the last.&lt;/p&gt;

&lt;p&gt;Stop letting AI reasoning disappear at merge time. 🧠&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/best-practices-for-pull-requests" rel="noopener noreferrer"&gt;GitHub: Writing good pull request descriptions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.conventionalcommits.org/" rel="noopener noreferrer"&gt;Conventional Commits: Structured commit messages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://adr.github.io/" rel="noopener noreferrer"&gt;ADR: Architecture Decision Records as a model for AI traces&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://research.google/pubs/" rel="noopener noreferrer"&gt;Google's AI-assisted code review research&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trunkbaseddevelopment.com/" rel="noopener noreferrer"&gt;Trunk-based development and AI-assisted PRs&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;AI-Aware-Pull-Requests&lt;/li&gt;
&lt;li&gt;Prompt-Traced Code Reviews&lt;/li&gt;
&lt;li&gt;AI-Knowledge-Commits&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Coding Tip 015 - Force the AI to Obey You</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 14 Apr 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-015-force-the-ai-to-obey-you-49mc</guid>
      <description>&lt;p&gt;&lt;em&gt;Don't let your most important instructions drown in context noise&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Bury critical rules and AI models ignore them. Use explicit markers to force compliance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You write a long &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;skill&lt;/a&gt; file with dozens of rules.&lt;/p&gt;

&lt;p&gt;You bury the most critical ones somewhere in the middle, polluting the context.&lt;/p&gt;

&lt;p&gt;The lazy AI follows the easy instructions and skips the hard ones.&lt;/p&gt;

&lt;p&gt;You never notice until the output is already wrong, and you are frustrated.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;AI models suffer from &lt;strong&gt;attention dilution&lt;/strong&gt;. The longer the context, the weaker the focus on any single rule&lt;/li&gt;
&lt;li&gt;Critical constraints buried mid-file get ignored &lt;strong&gt;silently&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The AI doesn't tell you it skipped a rule. It just doesn't follow it&lt;/li&gt;
&lt;li&gt;Large skills consume so much context that late instructions compete with early ones&lt;/li&gt;
&lt;li&gt;You waste time debugging outputs instead of trusting your skill&lt;/li&gt;
&lt;li&gt;Re-running the same prompt gives inconsistent results&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start with a MANDATORY block&lt;/strong&gt;. Put your non-negotiable rules at the very top, before any context or explanation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use explicit severity markers&lt;/strong&gt;. Prefix rules with &lt;code&gt;MANDATORY&lt;/code&gt;, &lt;code&gt;CRITICAL&lt;/code&gt;, or &lt;code&gt;IMPORTANT&lt;/code&gt; in ALL CAPS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apply progressive disclosure&lt;/strong&gt;. Start with the strictest rules, then reveal nuance and context only after anchoring the constraints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat key rules at the end&lt;/strong&gt;. Models give extra weight to what they read first &lt;em&gt;and&lt;/em&gt; last (primacy and recency effect)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split large skills into focused modules&lt;/strong&gt;. One file per concern beats one giant file every time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use structural separators&lt;/strong&gt;. Use &lt;code&gt;---&lt;/code&gt;, &lt;code&gt;===&lt;/code&gt;, or explicit headers like &lt;code&gt;## RULES (READ FIRST)&lt;/code&gt; to visually isolate critical sections&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer numbered rules over prose&lt;/strong&gt;. "Rule 1: Never do X" is harder to skip than "you should avoid doing X in most cases"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write a short TL;DR at the top&lt;/strong&gt;. A one-line summary of the skill's purpose acts as a memory anchor for the whole file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a violation example&lt;/strong&gt;. Show explicitly what breaking the rule looks like so the model has a concrete anti-pattern to avoid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test adversarially&lt;/strong&gt;. Craft prompts designed to make the AI break your rules, then fix the skill until they hold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add lots of good and bad examples&lt;/strong&gt;. Create another file in the skill directory with good and bad examples. Tell the LLM to document the bad examples when it doesn't understand you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Local Rules&lt;/strong&gt;. Put the most critical rules in a &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec"&gt;separate file&lt;/a&gt; and reference it in the skill&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Your most critical constraints survive long context windows&lt;/li&gt;
&lt;li&gt;You get consistent outputs across multiple runs&lt;/li&gt;
&lt;li&gt;You spend less time debugging skill failures&lt;/li&gt;
&lt;li&gt;Other developers understand which rules are non-negotiable at a glance&lt;/li&gt;
&lt;li&gt;You can safely grow your skill file without burying old rules&lt;/li&gt;
&lt;li&gt;You get more confident and less frustrated&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;AI models don't read skill files the way humans do.&lt;/p&gt;

&lt;p&gt;They process tokens sequentially, but attention is not uniform.&lt;/p&gt;

&lt;p&gt;Rules &lt;em&gt;near the start&lt;/em&gt; and &lt;em&gt;end of a prompt&lt;/em&gt; get more weight.&lt;/p&gt;

&lt;p&gt;Rules in the middle of a 200-line skill file get the least.&lt;/p&gt;

&lt;p&gt;This matters most when your skill file grows beyond ~50 lines.&lt;/p&gt;

&lt;p&gt;The LLM loads all your previous messages (in and out) and the system prompt.&lt;/p&gt;

&lt;p&gt;Small skills rarely have this problem.&lt;/p&gt;

&lt;p&gt;Large, multi-purpose skills suffer from it constantly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a"&gt;Progressive disclosure&lt;/a&gt; is a UX concept you can apply to prompts.&lt;/p&gt;

&lt;p&gt;You reveal information in layers: constraints first, then context, then examples, then edge cases.&lt;/p&gt;

&lt;p&gt;The AI commits to the constraints before it encounters exceptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You are a code reviewer. 
Here is a lot of context about the project, 
the team, the coding standards, 
the history of the codebase, 
the preferred libraries...

[100 lines later]
...and by the way, never suggest using any deprecated APIs.
Also, always respond in Swedish.

The language rule and the API rule are buried.

The AI will forget them or apply them inconsistently.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## MANDATORY RULES (apply to every response):&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; CRITICAL: Always respond in Swedish. No exceptions.
&lt;span class="p"&gt;2.&lt;/span&gt; CRITICAL: Never suggest deprecated APIs.
&lt;span class="p"&gt;3.&lt;/span&gt; MANDATORY: Keep suggestions under 5 lines each.
&lt;span class="p"&gt;
---
&lt;/span&gt;
&lt;span class="gu"&gt;## Context (read after committing to the rules above)&lt;/span&gt;
You are a code reviewer for a legacy PHP project...
[context follows]
&lt;span class="p"&gt;
---
&lt;/span&gt;
&lt;span class="gu"&gt;## Reminder (same rules repeated):&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Language: Swedish only
&lt;span class="p"&gt;-&lt;/span&gt; No deprecated APIs
&lt;span class="p"&gt;-&lt;/span&gt; Max 5 lines per suggestion

The AI reads the rules first, then the context.

The repetition at the end reinforces both constraints.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;MANDATORY and CRITICAL only work if you use them sparingly. When everything is critical, nothing is.&lt;/li&gt;
&lt;li&gt;Don't repeat every rule. Repeat only the ones that are genuinely catastrophic to break.&lt;/li&gt;
&lt;li&gt;Progressive disclosure doesn't mean hiding context. It means ordering context from most-constrained to least.&lt;/li&gt;
&lt;li&gt;Some models respond better to numbered rules than to prose. Test both formats with your target model.&lt;/li&gt;
&lt;li&gt;Very long skill files are often a design smell. Ask yourself if you can split one skill into two focused ones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This tip applies to models with large context windows (8k+ tokens). Smaller context limits change the tradeoff entirely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can't fully compensate for a poorly structured skill by just adding CRITICAL markers. Clean structure matters more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repetition helps, but too much repetition wastes tokens and can confuse the model with contradictory-looking rewrites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This doesn't replace testing. Always validate your skill with adversarial prompts before trusting it in production.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Context Window&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 013 - Use Progressive Disclosure&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3425913" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 31&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a" id="article-link-3425913"&gt;
          AI Coding Tip 013 - Use Progressive Disclosure
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 014 - Use Nested AGENTS.md Files&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3454716" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 7&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec" id="article-link-3454716"&gt;
          AI Coding Tip 014 - Use Nested AGENTS.md Files
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Keep your skill files focused on a single concern&lt;/li&gt;
&lt;li&gt;Use TL;DR anchors at the top of every long prompt&lt;/li&gt;
&lt;li&gt;Test your prompts adversarially before shipping&lt;/li&gt;
&lt;li&gt;Prefer explicit rules to implicit conventions in skills&lt;/li&gt;
&lt;li&gt;Split skills by domain, not by file size&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;A long skill file doesn't enforce itself.&lt;/p&gt;

&lt;p&gt;You need to structure it so the AI can't ignore the parts that matter.&lt;/p&gt;

&lt;p&gt;Put critical rules first.&lt;/p&gt;

&lt;p&gt;Mark them explicitly.&lt;/p&gt;

&lt;p&gt;Repeat the non-negotiables at the end.&lt;/p&gt;

&lt;p&gt;When you apply progressive disclosure, you guide the AI the same way you guide a human reader. &lt;/p&gt;

&lt;p&gt;From constraints to context, not the other way around.&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2307.03172" rel="noopener noreferrer"&gt;Lost in the Middle: How Language Models Use Long Contexts&lt;/a&gt;&lt;br&gt;
&lt;a href="https://arxiv.org/abs/1706.03762" rel="noopener noreferrer"&gt;Attention Is All You Need (original Transformer paper)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview" rel="noopener noreferrer"&gt;Anthropic Prompt Engineering Guide&lt;/a&gt;&lt;br&gt;
&lt;a href="https://platform.openai.com/docs/guides/prompt-engineering" rel="noopener noreferrer"&gt;OpenAI Best Practices for Prompt Engineering&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://arxiv.org/abs/2109.01652" rel="noopener noreferrer"&gt;Large Language Models as Instruction Followers&lt;/a&gt; &lt;br&gt;
&lt;a href="https://arxiv.org/abs/2212.10535" rel="noopener noreferrer"&gt;Structured Prompting for Reliable LLM Outputs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://arxiv.org/abs/2404.02060" rel="noopener noreferrer"&gt;Context Length and Model Attention Patterns&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Instruction-anchoring&lt;/li&gt;
&lt;li&gt;Constraint-first-prompting&lt;/li&gt;
&lt;li&gt;Rule-salience-in-prompts&lt;/li&gt;
&lt;li&gt;Attention-aware-skill-design&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;



&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Code Smell 319 - Hardcoded Stateless Properties</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Fri, 10 Apr 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/code-smell-319-hardcoded-stateless-properties-3b7k</link>
      <guid>https://dev.to/mcsee/code-smell-319-hardcoded-stateless-properties-3b7k</guid>
      <description>&lt;p&gt;&lt;em&gt;Don't turn collaborators into permanent roommates&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: You should avoid storing stateless utility classes as instance variables initialized with new.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Problems 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hardcoded dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Testing difficulties&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High &lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7"&gt;coupling&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hidden side effects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rigid design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Misleading intent&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Premature Optimization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stack clutter &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Solutions 😃
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use dependency injection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pass as parameter&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use static methods&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inline the logic&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use local variables&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inline object creation&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Refactorings ⚙️
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/refactoring-024-replace-global-variables-with-dependency-injection-2h51" class="crayons-story__hidden-navigation-link"&gt;Refactoring 024 - Replace Global Variables with Dependency Injection&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-2320661" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/refactoring-024-replace-global-variables-with-dependency-injection-2h51" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 9 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/refactoring-024-replace-global-variables-with-dependency-injection-2h51" id="article-link-2320661"&gt;
          Refactoring 024 - Replace Global Variables with Dependency Injection
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/refactoring-024-replace-global-variables-with-dependency-injection-2h51" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/refactoring-024-replace-global-variables-with-dependency-injection-2h51#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/refactoring-030-inline-attributes-45mo" class="crayons-story__hidden-navigation-link"&gt;Refactoring 030 - Inline Attributes&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-2679272" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/refactoring-030-inline-attributes-45mo" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 11 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/refactoring-030-inline-attributes-45mo" id="article-link-2679272"&gt;
          Refactoring 030 - Inline Attributes
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/refactoring-030-inline-attributes-45mo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/refactoring-007-extract-class-18ei" class="crayons-story__hidden-navigation-link"&gt;Refactoring 007 - Extract Class&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-1131576" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/refactoring-007-extract-class-18ei" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 4 '22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/refactoring-007-extract-class-18ei" id="article-link-1131576"&gt;
          Refactoring 007 - Extract Class
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/refactoring-007-extract-class-18ei" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;11&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/refactoring-007-extract-class-18ei#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Context 💬
&lt;/h1&gt;

&lt;p&gt;Hardcoding a stateless class in the constructor creates permanent coupling.&lt;/p&gt;

&lt;p&gt;Even if the class is cheap to instantiate, you lose the ability to swap it.&lt;/p&gt;

&lt;p&gt;Stateless objects shouldn't be part of the object's internal state.&lt;/p&gt;

&lt;p&gt;You confuse readers by making a tool look essential to the object's identity.&lt;/p&gt;

&lt;p&gt;It makes testing harder because you can't mock the hardcoded dependency.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sample Code 💻
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Wrong 🚫
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserProcessor&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MockDataProvider&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// You hardcode the dependency here.&lt;/span&gt;
    &lt;span class="c1"&gt;// This makes the class harder to test.&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MockDataProvider&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Right 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;DataProvider&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserProcessor&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// You inject the dependency via constructor.&lt;/span&gt;
  &lt;span class="c1"&gt;// Now you can swap it or mock it easily.&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DataProvider&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

  &lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Simpler but coupled&lt;/span&gt;
 &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserProcessor&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// Empty&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MockDataProvider&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Detection 🔍
&lt;/h2&gt;

&lt;p&gt;Look for the &lt;code&gt;new&lt;/code&gt; keyword inside constructors.&lt;/p&gt;

&lt;p&gt;Watch for private properties instantiated directly in the constructor rather than passed as parameters.&lt;/p&gt;

&lt;p&gt;Most linters flag this pattern automatically when you create instances and assign them to private fields.&lt;/p&gt;
&lt;h2&gt;
  
  
  Tags 🏷️
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Premature Optimization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Level 🔋
&lt;/h2&gt;

&lt;p&gt;[X] Beginner&lt;/p&gt;
&lt;h2&gt;
  
  
  Why the Bijection Is Important 🗺️
&lt;/h2&gt;

&lt;p&gt;Software should mimic a &lt;a href="https://dev.to/mcsee/what-is-wrong-with-software-5pa"&gt;MAPPER&lt;/a&gt; of the real world.&lt;/p&gt;

&lt;p&gt;In reality, a worker might use a tool to complete a task.&lt;/p&gt;

&lt;p&gt;The tool is not a permanent physical attachment to the worker.&lt;/p&gt;

&lt;p&gt;When you refactor to use dependency injection, you respect the &lt;a href="https://dev.to/mcsee/the-one-and-only-software-design-principle-3086"&gt;bijection&lt;/a&gt; by treating collaborators as external entities, not internal state.&lt;/p&gt;

&lt;p&gt;This keeps your simulation flexible and accurate.&lt;/p&gt;
&lt;h2&gt;
  
  
  AI Generation 🤖
&lt;/h2&gt;

&lt;p&gt;AI generators frequently create this smell.&lt;/p&gt;

&lt;p&gt;They often suggest code that just works by instancing dependencies directly in the constructor to save time.&lt;/p&gt;
&lt;h2&gt;
  
  
  AI Detection 🧲
&lt;/h2&gt;

&lt;p&gt;AI can easily detect this smell without explicit instructions.&lt;/p&gt;

&lt;p&gt;When you show AI a class with &lt;code&gt;new&lt;/code&gt; keywords in the constructor, it recognizes the pattern as hardcoded coupling.&lt;/p&gt;

&lt;p&gt;AI identifies that stateless utility classes should be injected rather than instantiated internally.&lt;/p&gt;

&lt;p&gt;The detection is straightforward because the pattern is syntactically obvious and semantically harmful.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try Them! 🛠
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Remember: AI Assistants make lots of mistakes&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suggested Prompt: remove the cached attribute&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Without Proper Instructions&lt;/th&gt;
&lt;th&gt;With Specific Instructions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://chat.openai.com/?q=Correct+and+explain+this+code%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://chat.openai.com/?q=remove+the+cached+attribute%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://claude.ai/new?q=Correct+and+explain+this+code%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://claude.ai/new?q=remove+the+cached+attribute%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.perplexity.ai/?q=Correct+and+explain+this+code%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;Perplexity&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.perplexity.ai/?q=remove+the+cached+attribute%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;Perplexity&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.bing.com/chat?showconv=1&amp;amp;sendquery=1&amp;amp;q=Correct+and+explain+this+code%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;Copilot&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.bing.com/chat?showconv=1&amp;amp;sendquery=1&amp;amp;q=remove+the+cached+attribute%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;Copilot&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://you.com/search?q=Correct+and+explain+this+code%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;You&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://you.com/search?q=remove+the+cached+attribute%3A+%60%60%60typescript%0D%0Aclass+UserProcessor+%7B%0D%0A++private+provider%3A+MockDataProvider%3B%0D%0A%0D%0A++constructor%28%29+%7B%0D%0A++++%2F%2F+You+hardcode+the+dependency+here.%0D%0A++++%2F%2F+This+makes+the+class+harder+to+test.%0D%0A++++this.provider+%3D+new+MockDataProvider%28%29%3B%0D%0A++%7D%0D%0A%0D%0A++process%28data%3A+any%29+%7B%0D%0A++++return+this.provider.format%28data%29%3B%0D%0A++%7D%0D%0A%7D%0D%0A%60%60%60" rel="noopener noreferrer"&gt;You&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://gemini.google.com/" rel="noopener noreferrer"&gt;Gemini&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gemini.google.com/" rel="noopener noreferrer"&gt;Gemini&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;DeepSeek&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;DeepSeek&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.meta.ai/chat" rel="noopener noreferrer"&gt;Meta AI&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.meta.ai/" rel="noopener noreferrer"&gt;Meta AI&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://grok.com/" rel="noopener noreferrer"&gt;Grok&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://grok.com/" rel="noopener noreferrer"&gt;Grok&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://chat.qwen.ai/" rel="noopener noreferrer"&gt;Qwen&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://chat.qwen.ai/" rel="noopener noreferrer"&gt;Qwen&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Conclusion 🏁
&lt;/h2&gt;

&lt;p&gt;Storing stateless dependencies as instance variables makes your code rigid.&lt;/p&gt;

&lt;p&gt;When you inject these dependencies instead, you improve testability and keep your objects focused on their true purpose.&lt;/p&gt;
&lt;h2&gt;
  
  
  Relations 👩‍❤️‍💋‍👨
&lt;/h2&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-06-too-clever-programmer-37lb" class="crayons-story__hidden-navigation-link"&gt;Code Smell 06 - Too Clever Programmer&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-497351" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/code-smell-06-too-clever-programmer-37lb" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 25 '20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/code-smell-06-too-clever-programmer-37lb" id="article-link-497351"&gt;
          Code Smell 06 - Too Clever Programmer
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codenewbie"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codenewbie&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/code-smell-06-too-clever-programmer-37lb" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/code-smell-06-too-clever-programmer-37lb#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              7&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-20-premature-optimization-4moe" class="crayons-story__hidden-navigation-link"&gt;Code Smell 20 - Premature Optimization&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-509561" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/code-smell-20-premature-optimization-4moe" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 8 '20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/code-smell-20-premature-optimization-4moe" id="article-link-509561"&gt;
          Code Smell 20 - Premature Optimization
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/oop"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;oop&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/developing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;developing&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codesmell"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codesmell&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/code-smell-20-premature-optimization-4moe" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/code-smell-20-premature-optimization-4moe#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  More Information 📕
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7" class="crayons-story__hidden-navigation-link"&gt;Coupling: The one and only software design problem&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-594117" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 6 '21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7" id="article-link-594117"&gt;
          Coupling: The one and only software design problem
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/oop"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;oop&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Disclaimer 📘
&lt;/h1&gt;

&lt;p&gt;Code Smells are my &lt;a href="https://dev.to/mcsee/i-wrote-more-than-90-articles-on-2021-here-is-what-i-learned-1n3a"&gt;opinion&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Credits 🙏
&lt;/h1&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/es/@possessedphotography" rel="noopener noreferrer"&gt;Possessed Photography&lt;/a&gt; on &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Coupling is the enemy of change&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Rich Hickey&lt;/em&gt;&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/software-engineering-great-quotes-26ci" class="crayons-story__hidden-navigation-link"&gt;Software Engineering Great Quotes&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-554698" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/software-engineering-great-quotes-26ci" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 28 '20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/software-engineering-great-quotes-26ci" id="article-link-554698"&gt;
          Software Engineering Great Quotes
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codenewbie"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codenewbie&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/quotes"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;quotes&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/software"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;software&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/software-engineering-great-quotes-26ci" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;24&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/software-engineering-great-quotes-26ci#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            75 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;





&lt;p&gt;This article is part of the CodeSmell Series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/how-to-find-the-stinky-parts-of-your-code-1dbc" class="crayons-story__hidden-navigation-link"&gt;How to Find the Stinky parts of your Code&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-702108" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/how-to-find-the-stinky-parts-of-your-code-1dbc" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 21 '21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/how-to-find-the-stinky-parts-of-your-code-1dbc" id="article-link-702108"&gt;
          How to Find the Stinky parts of your Code
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codenewbie"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codenewbie&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codequality"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codequality&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/how-to-find-the-stinky-parts-of-your-code-1dbc" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;23&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/how-to-find-the-stinky-parts-of-your-code-1dbc#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            14 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>code</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Coding Tip 014 - Use Nested AGENTS.md Files</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 07 Apr 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-014-use-nested-agentsmd-files-3iec</guid>
      <description>&lt;p&gt;&lt;em&gt;Context is precious. Don't waste it.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Split your AGENTS.md into layered files so your AI loads only the rules that matter for the code you touch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You put a single massive &lt;code&gt;AGENTS.md&lt;/code&gt; , &lt;code&gt;CLAUDE.md&lt;/code&gt; , &lt;code&gt;GEMINI.md&lt;/code&gt; at your project root and cram everything into it.&lt;/p&gt;

&lt;p&gt;Framework rules, database patterns, front-end conventions, and continuous integration configuration—all loaded at once.&lt;/p&gt;

&lt;p&gt;Your AI reads rules that have nothing to do with what you're actually working on.&lt;/p&gt;

&lt;p&gt;This wastes context and weakens the guidance that matters.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Your AI follows rules meant for other parts of the codebase&lt;/li&gt;
&lt;li&gt;Irrelevant context crowds out the rules you actually need&lt;/li&gt;
&lt;li&gt;Updating one big file can break guidance for unrelated areas&lt;/li&gt;
&lt;li&gt;Teammates get confused by your personal preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Create a root &lt;code&gt;AGENTS.md&lt;/code&gt; with global rules: coding standards, commit format, architecture overview, and general gotchas&lt;/li&gt;
&lt;li&gt;Add subdirectory &lt;code&gt;AGENTS.md&lt;/code&gt; files in each major area (&lt;code&gt;model/&lt;/code&gt;, &lt;code&gt;tests/&lt;/code&gt;, &lt;code&gt;api/&lt;/code&gt;) with area-specific rules&lt;/li&gt;
&lt;li&gt;Create &lt;code&gt;AGENTS.local.md&lt;/code&gt; for personal preferences and add it to &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Keep files short, opinionated, and actionable—three bullets over three paragraphs&lt;/li&gt;
&lt;li&gt;Trust the loading system: most tools load root files at startup and subdirectory files only when you touch files there
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FermiCalculator/
├── AGENTS.md       ← loaded at startup (always) with general
│                   rules
├── model/
│   └── AGENTS.md   ← loaded when you make changes to your
│                   model/, model conventions
├── tests/
│   └── AGENTS.md   ← loaded when you change your tests/,
│                   mocking rules
├── ui/
│   └── AGENTS.md   ← loaded when you make changes to ui/,
│                   UI code standards
└── api/
│   └── AGENTS.md   ← loaded when you make changes to api/,
│                   OpenApi formatting
└── database/
│   └── AGENTS.md   ← loaded when you make changes to the
│                   persistence/ DDL Rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The AI reads only rules relevant to what you're working on&lt;/li&gt;
&lt;li&gt;You reduce context waste in every session&lt;/li&gt;
&lt;li&gt;Each team area owns its own guidance independently&lt;/li&gt;
&lt;li&gt;Personal preferences stay personal — they don't pollute shared files&lt;/li&gt;
&lt;li&gt;Smaller files are easier to review and maintain&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;AI coding assistants load context files to understand your project.&lt;/p&gt;

&lt;p&gt;Tools like Claude Code, Cursor, and Copilot support instruction files (&lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;.cursorrules&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;When you put everything in one file, your assistant can't filter what's relevant.&lt;/p&gt;

&lt;p&gt;The layered approach works like good software: separation of concerns.&lt;/p&gt;

&lt;p&gt;The root file sets foundations.&lt;/p&gt;

&lt;p&gt;Subdirectory files add specifics.&lt;/p&gt;

&lt;p&gt;Local files hold personal quirks.&lt;/p&gt;

&lt;p&gt;This helps any project with multiple distinct areas—monorepos benefit most.&lt;/p&gt;

&lt;p&gt;Remember, you always need to &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;manage your context&lt;/a&gt; wisely.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Bad Prompt:
&lt;/h3&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Here are all the conventions for my project:

[pastes 200 lines of mixed rules for backend, frontend, 
mobile, and CI]

Now help me fix this React component.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Good Prompt:
&lt;/h3&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;I'm working in UI/. My AGENTS.md for this area says: 

use functional components, no class components,

Tailwind only for styling, 

test with React Testing Library.

Help me fix this component.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Not all tools support lazy loading of subdirectory files—check your tool first&lt;/li&gt;
&lt;li&gt;A short bad &lt;code&gt;AGENTS.md&lt;/code&gt; hurts less than a long one. Vague rules get ignored or misapplied&lt;/li&gt;
&lt;li&gt;Consider adding &lt;code&gt;AGENTS.md&lt;/code&gt; when you create new subdirectories&lt;/li&gt;
&lt;li&gt;Review your root file regularly. Outdated rules mislead more than good guidance. See &lt;a href="https://dev.to/mcsee/code-smell-183-obsolete-comments-3mmo"&gt;Outdated Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Avoid &lt;a href="https://dev.to/mcsee/code-smell-306-ai-external-comments-4556"&gt;AI external comments&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Works best with tools that support hierarchical context loading (Claude Code, Cursor, some Copilot)&lt;/li&gt;
&lt;li&gt;Single-file projects don't need this structure&lt;/li&gt;
&lt;li&gt;You still need good rules—the hierarchy only helps if the content is solid&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.local.md&lt;/code&gt; support varies by tool; check your documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Standards&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 005 - Keep Context Fresh&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3226533" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 4&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" id="article-link-3226533"&gt;
          AI Coding Tip 005 - Keep Context Fresh
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;Use examples in your AGENTS.md, not just descriptions&lt;/li&gt;
&lt;li&gt;Version-control your AGENTS.md alongside your code&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;You don't need one perfect &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You need the right rules in the right place.&lt;/p&gt;

&lt;p&gt;Split context by area, keep files tight, and let tools load only what's relevant.&lt;/p&gt;

&lt;p&gt;Your AI works better with less noise. &lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://craftbettersoftware.com/p/stop-using-claude-code-like-a-chatbot" rel="noopener noreferrer"&gt;Stop Using Claude Code as a ChatBot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code/memory" rel="noopener noreferrer"&gt;Claude Code CLAUDE.md documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.cursor.com/context/rules-for-ai" rel="noopener noreferrer"&gt;Cursor Rules documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot" rel="noopener noreferrer"&gt;GitHub Copilot custom instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/blog/custom-instructions-for-chatgpt" rel="noopener noreferrer"&gt;OpenAI ChatGPT custom instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aider.chat/docs/usage/conventions.html" rel="noopener noreferrer"&gt;Aider conventions file&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sourcegraph.com/docs/cody" rel="noopener noreferrer"&gt;Cody context and instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nx.dev/concepts/mental-model" rel="noopener noreferrer"&gt;Monorepo tooling with Nx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/research/claude-character" rel="noopener noreferrer"&gt;Context window management in LLMs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.promptingguide.ai/" rel="noopener noreferrer"&gt;Prompt engineering guide&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Hierarchical context files&lt;/li&gt;
&lt;li&gt;Layered instructions&lt;/li&gt;
&lt;li&gt;Nested AI rules&lt;/li&gt;
&lt;li&gt;Scoped assistant configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code (&lt;code&gt;CLAUDE.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Cursor (&lt;code&gt;.cursorrules&lt;/code&gt; / &lt;code&gt;.cursor/rules&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;GitHub Copilot (&lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Aider (&lt;code&gt;CONVENTIONS.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Continue.dev (&lt;code&gt;.continuerc.json&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Coding Tip 013 - Use Progressive Disclosure</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 31 Mar 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-013-use-progressive-disclosure-102a</guid>
      <description>&lt;p&gt;&lt;em&gt;Structure your skills so the AI loads only the files it needs. Split complexity across modular files and use keywords to trigger conditional loading.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: You reduce token usage when you trigger conditional loading instead of loading all files at once.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You load a complex skill with 20 associated files into your &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;context window&lt;/a&gt; all at once.&lt;/p&gt;

&lt;p&gt;Your context window fills up immediately.&lt;/p&gt;

&lt;p&gt;You waste tokens on irrelevant file content and cases that don't match what you're asking.&lt;/p&gt;

&lt;p&gt;The AI gets lost in noise and disobeys your commands. &lt;/p&gt;

&lt;p&gt;You can't ask follow-up questions because there's no space left and hallucinations happen.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You waste tokens loading skill files you don't need&lt;/li&gt;
&lt;li&gt;The AI reads case definitions that don't apply to your input&lt;/li&gt;
&lt;li&gt;Context window fills up before you can iterate or ask follow-ups&lt;/li&gt;
&lt;li&gt;Response time slows down because the AI is overwhelmed&lt;/li&gt;
&lt;li&gt;You lose precision when the AI picks the wrong file or rule&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Split your skill into multiple files (one per concern)&lt;/li&gt;
&lt;li&gt;Write a smart description with clear conditional triggers&lt;/li&gt;
&lt;li&gt;Define keywords that trigger file loading&lt;/li&gt;
&lt;li&gt;Create conditional rules: "If input contains X, load file Y"&lt;/li&gt;
&lt;li&gt;Include response templates so the AI knows how to structure answers&lt;/li&gt;
&lt;li&gt;Nest file references only when needed (e.g., array.md loads nested.md only for nested arrays)&lt;/li&gt;
&lt;li&gt;Test your keywords to ensure the AI picks them up correctly&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;p&gt;The AI loads only the files it needs. &lt;/p&gt;

&lt;p&gt;You save 90% of tokens on irrelevant skill content. &lt;/p&gt;

&lt;p&gt;Response times stay fast even with complex skills.&lt;/p&gt;

&lt;p&gt;Your context window stays clean for follow-up questions. &lt;/p&gt;

&lt;p&gt;Each request is precise because the AI only sees rules that matter.&lt;/p&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;Agentic skills can be massive.&lt;/p&gt;

&lt;p&gt;A syntax validator might have files for declarations, arrays, nested arrays, function calls, and scripts.&lt;/p&gt;

&lt;p&gt;If you load all of them, the AI wastes tokens reading rules that don't apply.&lt;/p&gt;

&lt;p&gt;Progressive disclosure in skills works by defining keywords that trigger file loading.&lt;/p&gt;

&lt;p&gt;When you write "DECLARE 123", the skill recognizes the DECLARE keyword and loads declaration.md.&lt;/p&gt;

&lt;p&gt;The AI only reads what matters.&lt;/p&gt;

&lt;p&gt;You write descriptions using "What," "When," or "How" patterns.&lt;/p&gt;

&lt;p&gt;You create conditional rules in your main skill file.&lt;/p&gt;

&lt;p&gt;You include response templates so answers stay consistent.&lt;/p&gt;

&lt;p&gt;The AI requests what it needs using keywords, so you don't have to guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Skills Work 🔄
&lt;/h2&gt;

&lt;p&gt;Skills implement progressive disclosure at three stages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discovery&lt;/strong&gt;: At startup, agents load only the name and description of each available skill.&lt;/p&gt;

&lt;p&gt;Just enough information to know when a skill might be relevant.&lt;/p&gt;

&lt;p&gt;No full instructions, no referenced files, no code—only the metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activation&lt;/strong&gt;: When a task matches a skill's description, the agent reads the full SKILL.md instructions into context.&lt;/p&gt;

&lt;p&gt;Now the agent has the complete instructions and knows what to do.&lt;/p&gt;

&lt;p&gt;Still no unnecessary files or code loaded yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;: The agent follows the instructions, optionally loading referenced files or executing bundled code as needed.&lt;/p&gt;

&lt;p&gt;Only when the AI detects it needs something does it load that file or run that script.&lt;/p&gt;

&lt;p&gt;This approach keeps agents fast while giving them access to more context when they actually need it.&lt;/p&gt;

&lt;p&gt;Each step is triggered by actual need, not preloaded upfront.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bad Prompt:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# SKILL.md (15,000 tokens - Monolithic)&lt;/span&gt;

Validates DECLARE, arrays, nested arrays,
function calls, loops, all in one file.

DECLARE Rules:
&lt;span class="p"&gt;-&lt;/span&gt; First char uppercase
&lt;span class="p"&gt;-&lt;/span&gt; Can't start with number

Array Rules:
&lt;span class="p"&gt;-&lt;/span&gt; Use square brackets [item]
&lt;span class="p"&gt;-&lt;/span&gt; Examples: [foo], [bar]

Function Call Rules:
&lt;span class="p"&gt;-&lt;/span&gt; Parentheses required: func()
&lt;span class="p"&gt;-&lt;/span&gt; Parameters separated by commas

Loop Rules:
&lt;span class="p"&gt;-&lt;/span&gt; FOR, WHILE, DO keywords
&lt;span class="p"&gt;-&lt;/span&gt; Body must be indented
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When you ask "Is DECLARE 123 valid?" the AI loads all 15,000 tokens covering every rule.&lt;/p&gt;

&lt;p&gt;Context window fills up fast.&lt;/p&gt;
&lt;h3&gt;
  
  
  Good Prompt:
&lt;/h3&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# SKILL.md (800 tokens - Modular)&lt;/span&gt;

Validates foo syntax: DECLARE, arrays,
nested arrays, function calls, loops.

Rules:
&lt;span class="p"&gt;-&lt;/span&gt; DECLARE detected → load declaration.md
&lt;span class="p"&gt;-&lt;/span&gt; [ detected → load array.md
&lt;span class="p"&gt;-&lt;/span&gt; ( detected → load function-call.md

Template: [input] valid?
[YES/NO]. Reason: [rule].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;declaration.md&lt;/strong&gt; (1,200 tokens):&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;First&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;Cannot&lt;/span&gt; &lt;span class="k"&gt;start&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;Examples&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;DECLARE&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;DECLARE&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;array.md&lt;/strong&gt; (1,500 tokens):&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Must use brackets: [item]
References nested-array.md for [x]
Examples: [foo], [bar], [123]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When you ask "Is DECLARE 123 valid?" the AI loads only SKILL.md (800) + declaration.md (1,200) = 2,000 tokens.&lt;/p&gt;

&lt;p&gt;Context stays clean for follow-up questions.&lt;/p&gt;
&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;Define your keywords upfront so the AI recognizes them consistently. &lt;/p&gt;

&lt;p&gt;Each file should handle one concern (declarations, arrays, etc.).&lt;/p&gt;

&lt;p&gt;Don't create too many nested references or the loading chain becomes confusing. &lt;/p&gt;

&lt;p&gt;Test your keyword patterns to make sure the AI recognizes them.&lt;/p&gt;

&lt;p&gt;If your skill includes scripts, review them carefully. &lt;/p&gt;

&lt;p&gt;Scripts can create security risks if they run without review.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;Progressive disclosure works best when keywords are distinctive. &lt;/p&gt;

&lt;p&gt;Generic words like "function" might trigger too often and load the wrong file.&lt;/p&gt;

&lt;p&gt;Deeply nested file structures (3+ levels) are confusing to maintain. &lt;/p&gt;

&lt;p&gt;External scripts need security review before you share skills from online repositories. &lt;/p&gt;

&lt;p&gt;Keywords must be clear or the AI loads files unpredictably.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Standards&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Intermediate&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 001 - Commit Before Prompt&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3148461" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" id="article-link-3148461"&gt;
          AI Coding Tip 001 - Commit Before Prompt
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 005 - Keep Context Fresh&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3226533" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 4&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e" id="article-link-3226533"&gt;
          AI Coding Tip 005 - Keep Context Fresh
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 009 - Compact Your Context&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3303683" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 3&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" id="article-link-3303683"&gt;
          AI Coding Tip 009 - Compact Your Context
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;Progressive disclosure in skills means splitting files by concern and using keywords to trigger conditional loading. &lt;/p&gt;

&lt;p&gt;You define what the AI needs to see, not dump everything.&lt;/p&gt;

&lt;p&gt;Include templates so responses stay consistent.&lt;/p&gt;

&lt;p&gt;When you get good at this pattern, even complex skills stay fast, efficient, and focused. 🎯&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://agentskills.io/what-are-skills#how-skills-work" rel="noopener noreferrer"&gt;Agent skills progressive disclosure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/build-a-bot" rel="noopener noreferrer"&gt;Claude Token Counting Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/about-claude/models/overview" rel="noopener noreferrer"&gt;Context Windows and Token Limits&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/build-a-bot" rel="noopener noreferrer"&gt;Prompt Engineering Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Progressive_disclosure" rel="noopener noreferrer"&gt;UX Progressive Disclosure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.nngroup.com/articles/ia-basics/" rel="noopener noreferrer"&gt;Information Architecture Best Practices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.nngroup.com/articles/cognitive-load-estimation/" rel="noopener noreferrer"&gt;Cognitive Load Theory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://platform.openai.com/docs/guides/prompt-engineering" rel="noopener noreferrer"&gt;Efficient Prompt Design&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/about-claude/models/overview" rel="noopener noreferrer"&gt;API Cost Optimization&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2304.08134" rel="noopener noreferrer"&gt;Code Context Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/DQHFow2NoQc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/hTKhLgRcAys"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Layered context disclosure&lt;/li&gt;
&lt;li&gt;Just-in-time information architecture&lt;/li&gt;
&lt;li&gt;Context-on-demand&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Windsurf with &lt;a href="https://docs.windsurf.com/windsurf/cascade/skills" rel="noopener noreferrer"&gt;progressive disclosure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Copilot with skills&lt;/li&gt;
&lt;li&gt;Claude with custom skills&lt;/li&gt;
&lt;li&gt;VS Code Copilot Chat&lt;/li&gt;
&lt;li&gt;Agentic frameworks&lt;/li&gt;
&lt;li&gt;Token counter tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>coding</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Coding Tip 012 - Understand All Your Code</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Mon, 23 Mar 2026 15:25:54 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-012-understand-all-your-code-450h</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-012-understand-all-your-code-450h</guid>
      <description>&lt;p&gt;&lt;em&gt;You own the code. Own and understand what it does.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Never ship AI-generated code you don't understand — ask until you do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Common Mistake ❌
&lt;/h1&gt;

&lt;p&gt;You ask an AI agent to implement a feature.&lt;/p&gt;

&lt;p&gt;It returns 200 lines of code.&lt;/p&gt;

&lt;p&gt;You run the tests. They pass. You commit and push.&lt;/p&gt;

&lt;p&gt;You think you are the best 'agentic-coder' in the world.&lt;/p&gt;

&lt;p&gt;But you never read the code.&lt;/p&gt;

&lt;p&gt;Three weeks later, a security issue appears in production.&lt;/p&gt;

&lt;p&gt;The AI introduced subtle &lt;a href="https://dev.to/mcsee/stop-calling-them-bugs-57gl"&gt;bugs&lt;/a&gt; you could have caught in two minutes.&lt;/p&gt;

&lt;p&gt;You didn't catch it because you never looked.&lt;/p&gt;

&lt;p&gt;You're accountable but don't understand what the code does, and you can't explain it to others.&lt;/p&gt;

&lt;p&gt;There are many fancy video tutorials on using agents without reviewing the code.&lt;/p&gt;

&lt;p&gt;Remember, there must always be a human in the loop.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems Addressed 😔
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You lose control of your own codebase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can't debug code you don't understand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You ship vulnerabilities without knowing they exist.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can't explain your own code in a code review.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You build a dependency on AI that makes you a worse engineer over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You take legal and professional responsibility for code you never vetted.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-313-workslop-code-n09" class="crayons-story__hidden-navigation-link"&gt;Code Smell 313 - Workslop Code&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-2987607" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/code-smell-313-workslop-code-n09" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 4 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/code-smell-313-workslop-code-n09" id="article-link-2987607"&gt;
          Code Smell 313 - Workslop Code
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/web3"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;web3&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mcsee/code-smell-313-workslop-code-n09" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mcsee/code-smell-313-workslop-code-n09#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  How to Do It 🛠️
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Read every code line the AI generates or modifies before you accept it.&lt;/li&gt;
&lt;li&gt;Ask the AI to explain any part you don't understand.&lt;/li&gt;
&lt;li&gt;Ask follow-up questions until the explanation is clear to you.&lt;/li&gt;
&lt;li&gt;Identify the assumptions the AI made and verify them.&lt;/li&gt;
&lt;li&gt;Check edge cases the AI might have missed. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/mcsee/how-to-improve-your-code-with-easy-refactorings-2ij6"&gt;Refactor&lt;/a&gt; and polish any part that you would not have written that way yourself.&lt;/li&gt;
&lt;li&gt;Make the code yours before you &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;commit&lt;/a&gt; it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Benefits 🎯
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You stay as the author of your codebase, not just a curator of AI output.&lt;/li&gt;
&lt;li&gt;You catch &lt;a href="https://dev.to/mcsee/stop-calling-them-bugs-57gl"&gt;defects&lt;/a&gt; before they reach production.&lt;/li&gt;
&lt;li&gt;You learn from what the AI generates.&lt;/li&gt;
&lt;li&gt;You build trust with your team because you can explain your code.&lt;/li&gt;
&lt;li&gt;You make better prompts over time because you understand what went wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Context 🧠
&lt;/h1&gt;

&lt;p&gt;AI agents are fast. That speed creates pressure.&lt;/p&gt;

&lt;p&gt;You feel like slowing down to read breaks the momentum.&lt;/p&gt;

&lt;p&gt;It doesn't. It saves you.&lt;/p&gt;

&lt;p&gt;The AI doesn't know your system. It doesn't know your constraints.&lt;/p&gt;

&lt;p&gt;It doesn't know what happened last quarter when you made a similar change.&lt;/p&gt;

&lt;p&gt;You do. That context is irreplaceable.&lt;/p&gt;

&lt;p&gt;When you skip reading, you hand off judgment to a tool that has no judgment. You outsource the one thing only you can do.&lt;/p&gt;

&lt;p&gt;Asking questions is not a sign of weakness. &lt;/p&gt;

&lt;p&gt;It is how you stay in control.&lt;/p&gt;

&lt;p&gt;The AI won't judge you for asking.&lt;/p&gt;

&lt;p&gt;It will give you a better answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Reference 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Bad Prompt:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Implement user authentication,

add it to the project,

commit and push to the main branch.

&lt;span class="ge"&gt;*This prompt gives the AI full authority over a critical system. *&lt;/span&gt;

&lt;span class="ge"&gt;*You get a blob of code with no checkpoint for understanding.*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt:
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Implement a login function using JWT.

Use RS256 signing.

After you write it, ask me questions about each step.

I'd like to understand what you did on every line of code

&lt;span class="ge"&gt;*This prompt sets expectations.*&lt;/span&gt;

&lt;span class="ge"&gt;*You get code AND an explanation.*&lt;/span&gt;

&lt;span class="ge"&gt;*You know what to verify.*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The AI can write completely wrong, confident-sounding code.&lt;/li&gt;
&lt;li&gt;Passing tests doesn't mean you wrote correct logic.&lt;/li&gt;
&lt;li&gt;The AI optimizes for plausible output, not correct output.&lt;/li&gt;
&lt;li&gt;You are responsible for what you deploy, not the AI.&lt;/li&gt;
&lt;li&gt;Some AI mistakes are subtle. You only catch them when you read carefully.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;For very large generated files, break your review into sections.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Readability&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Level 🔋
&lt;/h1&gt;

&lt;p&gt;[X] Beginner&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3251959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" id="article-link-3251959"&gt;
          AI Coding Tip 006 - Review Every Line Before Commit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/development"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;development&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AI Coding Tip - Ask the AI to Explain Its Own Code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI Coding Tip - Use AI as a Pair Programmer, Not a Replacement&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;The AI writes fast. You think too slowly. That is not a flaw.&lt;/p&gt;

&lt;p&gt;That is the division of labor that makes the combination work.&lt;/p&gt;

&lt;p&gt;Speed without understanding is just faster mistakes.&lt;/p&gt;

&lt;p&gt;Ask questions. Read the code. Own what you ship. 🏁&lt;/p&gt;

&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/" rel="noopener noreferrer"&gt;The Pragmatic Programmer - Your Code, Your Responsibility&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://owasp.org/www-project-top-ten/" rel="noopener noreferrer"&gt;OWASP Top Ten - Common Security Risks in Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://google.github.io/eng-practices/review/" rel="noopener noreferrer"&gt;Code Review Best Practices - Google Engineering&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://martinfowler.com/bliki/CodeSmell.html" rel="noopener noreferrer"&gt;Martin Fowler - Code Smells&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2211.03622" rel="noopener noreferrer"&gt;GitHub Copilot Security Research - Risks of AI Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.acm.org/code-of-ethics" rel="noopener noreferrer"&gt;ACM Code of Ethics - Professional Responsibility&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.blog/2023/04/17/how-ai-changes-code-ownership/" rel="noopener noreferrer"&gt;Stack Overflow Blog - How AI Changes Code Ownership&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ieee.org/education/standards/index.html" rel="noopener noreferrer"&gt;IEEE Software Engineering Standards&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cwe.mitre.org/" rel="noopener noreferrer"&gt;CWE - Common Weakness Enumeration&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;"Trust but verify."&lt;/li&gt;
&lt;li&gt;"AI-generated code review."&lt;/li&gt;
&lt;li&gt;"Responsible AI coding."&lt;/li&gt;
&lt;li&gt;"Developer accountability"&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Any AI coding assistant (GitHub Copilot, Claude, Cursor, Codeium)&lt;/li&gt;
&lt;li&gt;Your language's linter and static analysis tool&lt;/li&gt;
&lt;li&gt;Code review tools (GitHub PRs, GitLab MRs, Gerrit)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Disclaimer 📢
&lt;/h1&gt;

&lt;p&gt;The views expressed here are my own.&lt;/p&gt;

&lt;p&gt;I am a human who writes as best as possible for other humans. &lt;/p&gt;

&lt;p&gt;I use AI proofreading tools to improve some texts.&lt;/p&gt;

&lt;p&gt;I welcome constructive criticism and dialogue.&lt;/p&gt;

&lt;p&gt;I shape these insights through 30 years in the software industry, 25 years of teaching, and writing over 500 articles and a book.&lt;/p&gt;




&lt;p&gt;This article is part of the &lt;em&gt;AI Coding Tip&lt;/em&gt; series.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tips&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mcsee" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" alt="mcsee profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mcsee" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maxi Contieri
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maxi Contieri
                
              
              &lt;div id="story-author-preview-content-3187836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mcsee" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F366059%2F44d4a869-bb26-4b8e-aa73-6e596b4b4b8a.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maxi Contieri&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" id="article-link-3187836"&gt;
          AI Coding Tips
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
