<?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 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>
    <item>
      <title>AI Coding Tip 011 - Initialize Agents.md</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Wed, 18 Mar 2026 22:12:31 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-011-initialize-agentsmd-nh7</guid>
      <description>&lt;p&gt;&lt;em&gt;Summarize your architecture rules and give your AI a persistent memory&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: When you use the /init command, you create a context file that saves you from repeating instructions in every new session.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You waste time copying and pasting the same project rules into every new chat. &lt;/p&gt;

&lt;p&gt;You forgot to tell the AI about your specific test commands. &lt;/p&gt;

&lt;p&gt;When you start a fresh session, the AI loses all previous context about your coding style or architecture.&lt;/p&gt;

&lt;p&gt;Create your own &lt;em&gt;system prompts&lt;/em&gt;, persist them and keep an eye on them regularly.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Repetitive and manual meta-prompting&lt;/li&gt;
&lt;li&gt;Inconsistent &lt;a href="https://dev.to/mcsee/code-smell-48-code-without-standards-2f5m"&gt;code styles&lt;/a&gt; across sessions&lt;/li&gt;
&lt;li&gt;High token usage from redundant instructions&lt;/li&gt;
&lt;li&gt;AI hallucinations about build or test commands&lt;/li&gt;
&lt;li&gt;Onboarding new projects&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;Open your terminal in your project root directory.&lt;/li&gt;
&lt;li&gt;Type &lt;a href="https://opencode.ai/docs/rules/" rel="noopener noreferrer"&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/a&gt; if you use Claude Code or OpenCode.&lt;/li&gt;
&lt;li&gt;Review the generated &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;AGENTS.md&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Add specific "landmines" or things the AI can't see in the code.&lt;/li&gt;
&lt;li&gt;Save the file, &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;review the commit diffs&lt;/a&gt;, and start your next coding task.&lt;/li&gt;
&lt;li&gt;You can do it again when you have new rules.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;When you initialize (/Init) your project, the AI reads all the repository immediately. &lt;/p&gt;

&lt;p&gt;You get consistent results without extra effort. &lt;/p&gt;

&lt;p&gt;You save tokens because you don't have to describe your stack every time.&lt;/p&gt;

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

&lt;p&gt;AI assistants start every session with a blank slate. &lt;/p&gt;

&lt;p&gt;They don't remember what you told them yesterday. &lt;/p&gt;

&lt;p&gt;Tools like Claude Code look for a specific file to understand your project. &lt;/p&gt;

&lt;p&gt;When you provide this saved file, you close the gap between separate AI sessions.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Bad Prompt:&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Remember to use 2 spaces for indentation 
and always run 'npm run test:unit' 
before you finish the task.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Good Prompt:&lt;/strong&gt;&lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;git clone https://github.com/torvalds/linux.git

/Init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Keep the generated file short. &lt;/p&gt;

&lt;p&gt;When you add too much text, the AI might get confused. &lt;/p&gt;

&lt;p&gt;Don't include information that the AI can already find in your &lt;code&gt;package.json&lt;/code&gt; or &lt;code&gt;README.md&lt;/code&gt;.&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;You can only use this tip with AI tools that support persistent context files. &lt;/p&gt;

&lt;p&gt;If you change your build tools, you can update the Markdown file manually, run /init again, or do both.&lt;/p&gt;

&lt;p&gt;In Windsurf, there is no literal /init terminal command that automatically generates a configuration file, as Claude Code or OpenCode does.&lt;/p&gt;

&lt;p&gt;Windsurf uses a more agentic approach where the AI (Cascade) either discovers your rules automatically or creates them when you ask.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cascade, initialize a .windsurfrules file for this project. Include my tech stack, coding standards, and build commands.&lt;/p&gt;
&lt;/blockquote&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] Beginner&lt;/p&gt;
&lt;h1&gt;
  
  
  Related Tips 🔗
&lt;/h1&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/mcsee" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AI Coding Tip 006 - Review Every Line Before Commit&lt;/h2&gt;
      &lt;h3&gt;Maxi Contieri ・ Feb 13&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#development&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#softwaredevelopment&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use &lt;em&gt;.cursorrules&lt;/em&gt; for local preferences&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create modular &lt;em&gt;AGENTS.md&lt;/em&gt; files for monorepos&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep your &lt;em&gt;README.md&lt;/em&gt; updated for better AI indexing&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;When you use &lt;code&gt;/init&lt;/code&gt;, you turn your AI from a temporary contributor into a permanent team member.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://opencode.ai/docs/rules/" rel="noopener noreferrer"&gt;OpenCode /Init&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview%23claudemd-guide" rel="noopener noreferrer"&gt;Claude Code: CLAUDE.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.cursor.com/context/rules-for-ai" rel="noopener noreferrer"&gt;.cursorrules in Cursor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.windsurf.com/windsurf/cascade/memories" rel="noopener noreferrer"&gt;Windsurf rules&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Project-AI-Onboarding&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Context-Bootstrapping&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Claude Code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenCode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cursor (via .cursorrules)&lt;/p&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"&gt;
  &lt;a href="/mcsee" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/mcsee/ai-coding-tips-118n" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AI Coding Tips&lt;/h2&gt;
      &lt;h3&gt;Maxi Contieri ・ Jan 21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Coding Tip 010 - Access All Your Code</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 10 Mar 2026 18:52:48 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-010-access-all-your-code-3ocp</guid>
      <description>&lt;p&gt;&lt;em&gt;Stop copying code chunks. Start letting AI agents work directly with your files.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Use terminal-based AI tools to give your assistant direct access to your local files and test suites.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You copy code snippets into a web browser chat like &lt;a href="https://dev.to/mcsee/chatgpt-is-amazing-and-it-is-free-1h12"&gt;ChatGPT&lt;/a&gt;, Claude, or Grok.&lt;/p&gt;

&lt;p&gt;You manually move code back and forth and give small chunks of code, filling up the context window. &lt;/p&gt;

&lt;p&gt;You lose the context of your folder structure, relations among modules, and the whole architecture. &lt;/p&gt;

&lt;p&gt;The AI often (wrongly) guesses your project layout and hallucinates.&lt;/p&gt;

&lt;p&gt;When you do this, you get inconsistent code and outdated logic.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Context Tax:&lt;/strong&gt; Manual copying wastes your focus.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hallucinations:&lt;/strong&gt; The AI suggests libraries you don't actually have.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolated logic:&lt;/strong&gt; The assistant doesn't know if your code even builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Manual effort:&lt;/strong&gt; You have to run every test and fix every error yourself.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're basically playing assistant to the AI, running around doing the busywork.&lt;/p&gt;

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

&lt;p&gt;Download a &lt;strong&gt;CLI&lt;/strong&gt; or &lt;em&gt;IDE&lt;/em&gt; tool like Claude Code, OpenCode, Windsurf, or similar, and let it access &lt;em&gt;ALL&lt;/em&gt; your codebase.&lt;/p&gt;

&lt;p&gt;(You'll need to check compliance, set up safeguards, and respect any NDAs).&lt;/p&gt;

&lt;p&gt;Open your terminal and start an interactive session. Let the agent navigate through all your code.&lt;/p&gt;

&lt;p&gt;Describe what you want to accomplish at a high level and delegate to the orchestrator agent.&lt;/p&gt;

&lt;p&gt;Review the &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;proposed plan&lt;/a&gt; in the terminal.&lt;/p&gt;

&lt;p&gt;Approve the changes to update your local files.&lt;/p&gt;

&lt;p&gt;Let the agent run your tests and fix failures automatically.&lt;/p&gt;

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

&lt;p&gt;Full project context through local AST and RAG indexing.&lt;/p&gt;

&lt;p&gt;Self-healing code through automated shell feedback loops.&lt;/p&gt;

&lt;p&gt;Multi-file edits in a single prompt.&lt;/p&gt;

&lt;p&gt;Parallel development using multiple agent instances.&lt;/p&gt;

&lt;p&gt;Iterative incremental learning and experimentation. Baby steps.&lt;/p&gt;

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

&lt;p&gt;We were all blown away when ChatGPT came out.&lt;/p&gt;

&lt;p&gt;I &lt;a href="https://dev.to/mcsee/chatgpt-is-amazing-and-it-is-free-1h12"&gt;wrote an article 2 days after its release&lt;/a&gt;, understanding it was a &lt;strong&gt;game-changer&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Even people like me who had been working with earlier GPT models.&lt;/p&gt;

&lt;p&gt;Four years later, you still see many developers coding this way.&lt;/p&gt;

&lt;p&gt;It works for small algorithms and functions, but falls apart for real software engineering.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Bad Prompt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Please fix the login bug in this snippet:&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;loginUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.penrosebrain.com/login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PUT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&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;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;There was an error:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&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;h3&gt;
  
  
  Good Prompt
&lt;/h3&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// opencode: "Create a failing text, fix the login bug, run tests, &lt;/span&gt;
&lt;span class="c1"&gt;// Ensure it passes the new test and all the previous ones&lt;/span&gt;
&lt;span class="c1"&gt;// Create a Pull Request so I can review it&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;loginUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.penrosebrain.com/login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PUT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&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;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;There was an error:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&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;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;CLI agents have a learning curve. &lt;/p&gt;

&lt;p&gt;Always &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;review all changes&lt;/a&gt; before &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;committing&lt;/a&gt; them. &lt;/p&gt;

&lt;p&gt;Use a sandbox environment if you run untrusted code.&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;Don't use this for tiny, one-off scripts. &lt;/p&gt;

&lt;p&gt;Web chats work better for creative brainstorming or generating images. &lt;/p&gt;

&lt;p&gt;High token usage in long sessions can drive up your API costs.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Complexity&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;p&gt;

&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-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"&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=""&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="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/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;p&gt;

&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-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;p&gt;Connect external data using the Model Context Protocol (MCP).&lt;/p&gt;

&lt;p&gt;Run local models if you need 100% privacy.&lt;/p&gt;

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

&lt;p&gt;Move your AI assistant to the terminal. &lt;/p&gt;

&lt;p&gt;You'll work faster and make fewer mistakes. &lt;/p&gt;

&lt;p&gt;When you delegate the boring parts, you can focus on architecture and high-level design. &lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.firecrawl.dev/blog/why-clis-are-better-for-agents" rel="noopener noreferrer"&gt;Why CLIs Are Better for AI Coding Agents Than IDEs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://towardsdatascience.com/how-cursor-actually-indexes-your-codebase/" rel="noopener noreferrer"&gt;How Cursor Actually Indexes Your Codebase&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aider.chat/" rel="noopener noreferrer"&gt;Aider - AI Pair Programming in your Terminal&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://code.claude.com/docs/en/overview" rel="noopener noreferrer"&gt;Claude Code Overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.builder.io/blog/opencode-vs-claude-code" rel="noopener noreferrer"&gt;OpenCode vs Claude Code: Comparing AI Coding Agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.augmentcode.com/tools/ai-coding-assistants-for-large-codebases-a-complete-guide" rel="noopener noreferrer"&gt;AI Coding Assistants for Large Codebases&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.marcnuri.com/boosting-developer-productivity-ai-2025" rel="noopener noreferrer"&gt;Boosting My Developer Productivity with AI in 2025&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://opencode.ai/docs/" rel="noopener noreferrer"&gt;OpenCode Documentation&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/engineering/advanced-tool-use" rel="noopener noreferrer"&gt;Introducing Advanced Tool Use on the Claude Developer Platform&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://milvus.io/ai-quick-reference/what-is-opencode" rel="noopener noreferrer"&gt;What is OpenCode? - AI Quick Reference&lt;/a&gt; &lt;/p&gt;

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

&lt;p&gt;Agentic Coding&lt;/p&gt;

&lt;p&gt;Terminal Agents&lt;/p&gt;

&lt;p&gt;Autonomous Coding Loops&lt;/p&gt;

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

&lt;p&gt;Claude Code, OpenCode, Aider, Codex CLI.&lt;/p&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 AI Coding Tip series.&lt;/p&gt;

&lt;p&gt;

&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>
    <item>
      <title>AI Coding Tip 009 - Compact Your Context</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 03 Mar 2026 02:02:44 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-009-compact-your-context-3io9</guid>
      <description>&lt;p&gt;&lt;em&gt;Stop the memory rot&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: You can keep your AI sharp by forcing it to summarize and prune what it remembers (a.k.a. compacting).&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You keep a single, long conversation open for hours. &lt;/p&gt;

&lt;p&gt;You feed the AI with every error log and every iteration of your code. &lt;/p&gt;

&lt;p&gt;Eventually, the AI starts to ignore your early instructions or hallucinate # AI Coding Tip 009 - Compact Your Context&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/Gemini_Generated_Image_4essde4essde4ess.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/Gemini_Generated_Image_4essde4essde4ess.png" alt="AI Coding Tip 009 - Compact Your Context"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stop the memory rot&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: You can keep your AI sharp by forcing it to summarize and prune what it remembers (a.k.a. compacting).&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You keep a single, long conversation open for hours. &lt;/p&gt;

&lt;p&gt;You feed the AI with every error log and every iteration of your code. &lt;/p&gt;

&lt;p&gt;Eventually, the AI starts to ignore your early instructions or hallucinate nonexistent functions.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context Decay:&lt;/strong&gt; The AI loses track of your original goals in the middle of a long chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinations:&lt;/strong&gt; The model fills memory gaps with hallucinations or outdated logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Waste:&lt;/strong&gt; You pay for the AI to re-read useless error logs from three hours ago.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced Reasoning:&lt;/strong&gt; A bloated context makes the AI less smart and more prone to simple mistakes.&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;Restart often:&lt;/strong&gt; You can &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;start a new chat&lt;/a&gt; once you finish a sub-task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request a State Summary:&lt;/strong&gt; Before you close a conversation, ask the AI to summarize the current decisions and &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;plan&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add Human Checkpoints:&lt;/strong&gt; After the summary, &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;confirm&lt;/a&gt; you are still on track.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Markdown Docs:&lt;/strong&gt; Keep a small &lt;code&gt;context.md&lt;/code&gt; file with your current stack and rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prune the Logs:&lt;/strong&gt; You should only paste the relevant 5 lines of a stack trace instead of the whole irrelevant 200-line output. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Divide and conquer:&lt;/strong&gt; Break large tasks into smaller ones, invoking their own skills with local tokens and a &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;fresh context&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Divide the responsibility:&lt;/strong&gt; A General doesn't need to know what every soldier is doing on the battlefield.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create and persist as Skill:&lt;/strong&gt; After you have taught the AI, you should refactor the knowledge and business rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep an Eye on the Context Size:&lt;/strong&gt; Most tools have visual indicators of the window consumption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Local Persistence:&lt;/strong&gt; Some tools allow sharing memory among agents and their sub-agents.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;You get more accurate code suggestions.&lt;/li&gt;
&lt;li&gt;You avoid divergences&lt;/li&gt;
&lt;li&gt;You follow the AI's train of thought.&lt;/li&gt;
&lt;li&gt;You spend less time correcting the AI's hallucinations.&lt;/li&gt;
&lt;li&gt;The AI follows your project constraints more strictly and keeps focused on your tasks&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Large Language Models have limited attention.&lt;/p&gt;

&lt;p&gt;Long context windows are a trap.&lt;/p&gt;

&lt;p&gt;Many modern models offer a very large context window.&lt;/p&gt;

&lt;p&gt;In practice, they ignore a lot of them to your frustration.&lt;/p&gt;

&lt;p&gt;Even with huge context windows, they prioritize and focus ob the beginning and the end of the prompt. &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 is the 500-line log of my failed build. 

Also, remember that we changed the database schema 

Three hours ago in this chat.

Add the unit tests as I described above.

Now, refactor the whole 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 am starting a new session. Here is the current state: 

We use &lt;span class="ge"&gt;*PostgreSQL*&lt;/span&gt; with the 'Users' table schema [ID, Email]. 

The AuthService&lt;span class="sb"&gt;`interface is [login(), logout()]. 

Refactor the LoginComponent`&lt;/span&gt; to use these.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;You must ensure you don't purge &lt;em&gt;&lt;a href="https://dev.to/mcsee/coupling-the-one-and-only-software-design-problem-2pd7"&gt;essential&lt;/a&gt;&lt;/em&gt; context. &lt;/p&gt;

&lt;p&gt;If you prune too much, the AI might suggest libraries that conflict with your current setup.&lt;/p&gt;

&lt;p&gt;Review the compacted information.&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;You can use this tip manually in any chat interface. &lt;/p&gt;

&lt;p&gt;If you use advanced agents like Claude Code or Cursor, they might handle some of this automatically, but manual pruning is still more reliable.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Context&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;p&gt;

&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-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"&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=""&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="18" height="18"&gt;
                  &lt;/span&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/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;p&gt;

&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-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;p&gt;AI Coding Tip 010 - Create Skill from Conversation &lt;/p&gt;

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

&lt;p&gt;You are the curator of the AI's memory. &lt;/p&gt;

&lt;p&gt;If you let the context rot, the code will rot, too.&lt;/p&gt;

&lt;p&gt;Keep it clean and compact. 🧹&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 Context&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://llmlingua.com/" rel="noopener noreferrer"&gt;LLMLingua: Prompt Compression for LLMs&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cursor.com/blog/context" rel="noopener noreferrer"&gt;How to Manage Context in AI Coding&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ibm.com/topics/ai-hallucinations" rel="noopener noreferrer"&gt;Avoiding LLM Hallucinations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.promptingguide.ai/" rel="noopener noreferrer"&gt;Prompt Engineering Guide: Context Management&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/blog/custom-instructions-for-chatgpt/" rel="noopener noreferrer"&gt;Understanding Token Limits&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/claude/docs/long-context-tips" rel="noopener noreferrer"&gt;Claude Context Window Best Practices&lt;/a&gt; &lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Context Pruning&lt;/li&gt;
&lt;li&gt;Token Management&lt;/li&gt;
&lt;li&gt;Prompt Compression&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Windsurf&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;p&gt;

&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;


 functions.

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI Coding Tip 008 - Use Spec-Driven Development with AI</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 24 Feb 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-008-use-spec-driven-development-with-ai-1k0f</guid>
      <description>&lt;p&gt;&lt;em&gt;Learn guided by the domain&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Use AI to understand requirements and build a shared mental model while you write the code.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You jump directly to code generation with a vague, wishful prompt.&lt;/p&gt;

&lt;p&gt;The AI seems to understand your specific business logic, but is condescending with you.&lt;/p&gt;

&lt;p&gt;The problem creates a spaghetti mess that is difficult to maintain later.&lt;/p&gt;

&lt;p&gt;The AI is not a magic button for lazy people. It is a senior pair programmer and a learning companion.&lt;/p&gt;

&lt;p&gt;You follow the &lt;a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html" rel="noopener noreferrer"&gt;Spec-Driven Development&lt;/a&gt; trend and work in a taylorist cascading way failing into analysis paralysis and unrealistic plans.&lt;/p&gt;

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

&lt;p&gt;Hallucinations: The AI guesses details when you don't provide specific context.&lt;/p&gt;

&lt;p&gt;Technical Debt: You build complex systems that collapse under logical errors and don't simulate the real-world &lt;a href="https://dev.to/mcsee/what-is-wrong-with-software-5pa"&gt;MAPPER&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Context Fragmentation: The AI loses track of your goals in long sessions.&lt;/p&gt;

&lt;p&gt;Logic Drift: The code "works". Yet it doesn't solve the &lt;a href="https://dev.to/mcsee/the-one-and-only-software-design-principle-3086"&gt;actual problem&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Ask the AI to interview you.&lt;/p&gt;

&lt;p&gt;You state the high-level idea and have the AI ask questions to uncover edge cases.&lt;/p&gt;

&lt;p&gt;Work together in learning mode. Dave Farley tells us to be &lt;a href="https://modernsoftwareengineering.co.uk/" rel="noopener noreferrer"&gt;experts at learning&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Draft a spec.md file. You and the AI collaborate on a document that defines the architecture, data models, and goals.&lt;/p&gt;

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

&lt;p&gt;Keep the AI in a read-only environment to explore your codebase and verify the plan as you execute it.&lt;/p&gt;

&lt;p&gt;Plan as you go with the goal in mind without making assumptions about a rigid roadmap.&lt;/p&gt;

&lt;p&gt;Always validate the &lt;a href="https://dev.to/mcsee/the-one-and-only-software-design-principle-3086"&gt;bijection&lt;/a&gt; against the real-world requirements.&lt;/p&gt;

&lt;p&gt;Turn the live spec into a simple checklist of atomic implementation steps.&lt;/p&gt;

&lt;p&gt;The backlog will grow and shrink as you learn the domain. It is a live artifact.&lt;/p&gt;

&lt;p&gt;Set up a persistent context while you learn.&lt;/p&gt;

&lt;p&gt;Create a &lt;em&gt;.md&lt;/em&gt; file to store project rules that the AI cannot guess.&lt;/p&gt;

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

&lt;p&gt;You learn about the domain faster because the AI can serve as an encyclopedic mentor.&lt;/p&gt;

&lt;p&gt;You stay proudly accountable for the architecture.&lt;/p&gt;

&lt;p&gt;You eliminate boilerplate while maintaining system stability.&lt;/p&gt;

&lt;p&gt;You close the Human 30% gap by focusing on system coordination.&lt;/p&gt;

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

&lt;p&gt;These tools are high-velocity coders, but they are very innocent.&lt;/p&gt;

&lt;p&gt;They perform best when you instruct with a clear mission and modular instructions.&lt;/p&gt;

&lt;p&gt;This "waterfall in 15 minutes" way favors you and the AI to be on the same page before you trigger the first code diff.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prompt Reference 📝
&lt;/h1&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;Build me a task management app with React and Node.

Create a behavior specification and a Gantt project
&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;You are a Senior Software Engineer. I want to build a task app.

Ask me 10 clarifying questions about the architecture, security, 
and data model. 

After I answer, help me draft a spec.md.

Let's build it together with TDD and contract tests.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;AI can write bugs with complete conviction.&lt;/p&gt;

&lt;p&gt;You must review every change.&lt;/p&gt;
&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Complexity&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;p&gt;Use CLAUDE.md for project memory.&lt;/p&gt;

&lt;p&gt;Set up MCP servers for live documentation.&lt;/p&gt;

&lt;p&gt;Run parallel agents for large refactors.&lt;/p&gt;
&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;You should invest &lt;a href="https://harper.blog/2025/04/10/waterfall-in-15-minutes-or-your-money-back/" rel="noopener noreferrer"&gt;15 minutes&lt;/a&gt; in planning with the AI instead of rushing. It will save you hours of debugging.&lt;/p&gt;

&lt;p&gt;Use the copilot to improve your design with your approval, and let it handle the hard accidental typing.&lt;/p&gt;
&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html" rel="noopener noreferrer"&gt;Spec Driven Development&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/kentbeck_the-descriptions-of-spec-driven-development-activity-7413956151144542208-EGMz" rel="noopener noreferrer"&gt;Kent Beck Critizing Spec-Driven Development&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tidyfirst.substack.com/p/earn-and-learn" rel="noopener noreferrer"&gt;Kent Beck Earn and Learn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://addyosmani.com/blog/ai-coding-workflow/" rel="noopener noreferrer"&gt;Addy Osmani Coding Workflow&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start with a clear path (&lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;specs before code&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Break work into small, iterative chunks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide extensive &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;context&lt;/a&gt; and guidance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the right model (and use multiple when needed)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leverage AI coding across the lifecycle&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep a human in the loop - verify, test, and review everything&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 often&lt;/a&gt; and use version control as a safety net. &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;Never commit code you can’t explain&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Customize the AI’s behavior with rules and examples&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Embrace testing and automation as force multipliers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuously learn and adapt (AI amplifies your skills)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

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


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

&lt;p&gt;Spec-Driven Development&lt;/p&gt;

&lt;p&gt;Waterfall in 15 Minutes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/mcsee/explain-in-5-levels-of-difficulty-vibe-coding-4f77"&gt;Vibe Coding&lt;/a&gt; with Discipline&lt;/p&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 AI Coding Tip series.&lt;/p&gt;

&lt;p&gt;

&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>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>AI Coding Tip 007 - Avoid Malicious Skills</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 17 Feb 2026 04:14:54 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-007-avoid-malicious-skills-1jh</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-007-avoid-malicious-skills-1jh</guid>
      <description>&lt;p&gt;&lt;em&gt;Avoid the Agentic Trojan Horse&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Treat AI agent skills like dangerous executable code and read the instructions carefully.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You install community &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;skills&lt;/a&gt; for your AI assistant based on popularity or download counts. &lt;/p&gt;

&lt;p&gt;You trust "proactive" agents when they ask you to run "setup" commands or install "AuthTool" prerequisites.&lt;/p&gt;

&lt;p&gt;You grab exciting skills from public registries and install them right away. &lt;/p&gt;

&lt;p&gt;You skip &lt;a href="https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm"&gt;code reviews&lt;/a&gt; or scans because the docs &lt;em&gt;look&lt;/em&gt; clean.&lt;/p&gt;

&lt;p&gt;You are lazy and careless.&lt;/p&gt;

&lt;p&gt;Even careful developers can miss these details when rushing.&lt;/p&gt;

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

&lt;p&gt;Information stealers search for your SSH keys, browser cookies, and &lt;a href="https://dev.to/mcsee/code-smell-258-secrets-in-code-1pg2"&gt;.env files&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Supply chain attacks exploit naming confusion (ClawdBot vs. MoltBot vs. OpenClaw).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/mcsee/code-smell-263-squatting-45hl"&gt;Typosquatting&lt;/a&gt; pushes you into installing malicious packages.&lt;/p&gt;

&lt;p&gt;Your adversaries invoke &lt;a href="https://dev.to/mcsee/code-smell-284-encrypted-functions-301e"&gt;Arbitrary Code Execution&lt;/a&gt; using unvalidated WebSocket connections.&lt;/p&gt;

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

&lt;p&gt;Run your AI agent inside a dedicated isolated Virtual Machine or Docker container. &lt;/p&gt;

&lt;p&gt;This measure prevents the agent from accessing your primary filesystem.&lt;/p&gt;

&lt;p&gt;Review the &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;SKILL.md&lt;/a&gt; and source code of every new skill.&lt;/p&gt;

&lt;p&gt;Making a code review You can find hidden curl commands, base64-encoded strings and &lt;a href="https://dev.to/mcsee/code-smell-284-encrypted-functions-301e"&gt;obfuscated code&lt;/a&gt; that try to get to malicious IPs like 91.92.242.30.&lt;/p&gt;

&lt;p&gt;You can help yourself with security scanners like &lt;a href="https://www.clawdex.io/" rel="noopener noreferrer"&gt;Clawdex&lt;/a&gt; or &lt;a href="https://www.koi.ai/" rel="noopener noreferrer"&gt;Koi Security's tool&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The tools check the skills against a database of known malicious signatures.&lt;/p&gt;

&lt;p&gt;Bind your agent's gateway strictly to 127.0.0.1. When you bind to 0.0.0.0, you expose your administrative dashboard to the public internet.&lt;/p&gt;

&lt;p&gt;Limit the agent's permissions to &lt;strong&gt;read-only&lt;/strong&gt; for sensitive directories.&lt;/p&gt;

&lt;p&gt;This is also excellent for &lt;a href="https://dev.to/mcsee/ai-coding-tip-003-force-read-only-planning-1d1m"&gt;reasoning and planning&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can prevent the agent from modifying system files or stealing your keychain.&lt;/p&gt;

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

&lt;p&gt;You protect your production API keys and cloud credentials, protecting the &lt;a href="https://dev.to/mcsee/code-smell-258-secrets-in-code-1pg2"&gt;secrets in your code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You stop lateral movement inside your corporate network.&lt;/p&gt;

&lt;p&gt;You also reduce the risk of identity theft through session hijacking.&lt;/p&gt;

&lt;p&gt;You avoid &lt;a href="https://dev.to/mcsee/code-smell-300-package-hallucination-1kai"&gt;Package Hallucination&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;AI Agents like &lt;a href="https://openclaw.ai/" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; have administrative system access. They can run shell commands and manage files. &lt;/p&gt;

&lt;p&gt;Attackers now flood registries with "skills" that appear to be helpful tools for YouTube, Solana, or Google Workspace.&lt;/p&gt;

&lt;p&gt;When you install these, you broaden your attack surface and grant an attacker a direct shell on your machine.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prompt Reference 📝
&lt;/h1&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;Install the top-rated Solana wallet tracker skill 
and follow the setup instructions in the documentation.
&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;Download the source code for the Solana tracker skill
to my sandbox folder.

Wait until y review it line by line
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Good Prompt:&lt;br&gt;
"Download the source code for the Solana tracker skill to my sandbox folder. &lt;/p&gt;

&lt;p&gt;Let's analyze the scripts together for any external network calls before we install it."&lt;/p&gt;
&lt;h1&gt;
  
  
  Considerations ⚠️
&lt;/h1&gt;

&lt;p&gt;OpenClaw often stores secrets in &lt;a href="https://dev.to/mcsee/code-smell-258-secrets-in-code-1pg2"&gt;plaintext .env files&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you grant an agent access to your terminal, any malicious skill can read these secrets and exfiltrate them to a webhook in seconds.&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;Use this strategy when you host "agentic" AI platforms like OpenClaw or MoltBot locally. &lt;/p&gt;

&lt;p&gt;This tip doesn't replace endpoint protection. It adds a layer for AI-specific &lt;a href="https://dev.to/mcsee/code-smell-284-encrypted-functions-301e"&gt;supply chain risks&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Security&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;p&gt;

&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-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"&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=""&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="18" height="18"&gt;
                  &lt;/span&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/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;p&gt;Isolate LLM tool execution with Kernel-enforced sandboxes.&lt;/p&gt;

&lt;p&gt;Audit prompt injection risks in web-scraping agents.&lt;/p&gt;

&lt;p&gt;Encrypt local configuration files for AI assistants.&lt;/p&gt;

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

&lt;p&gt;Your AI assistant is a powerful tool, but it can also become a high-impact control point for attackers. &lt;/p&gt;

&lt;p&gt;When you verify &lt;em&gt;every skill&lt;/em&gt;, understand it, and isolate the runtime, you keep the "keys to your kingdom" safe. 🛡️&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.bleepingcomputer.com/news/security/malicious-moltbot-skills-used-to-push-password-stealing-malware/" rel="noopener noreferrer"&gt;Malicious moltbot skills&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-258-secrets-in-code-1pg2" class="crayons-story__hidden-navigation-link"&gt;Code Smell 258 - Secrets in 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-1922506" 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-258-secrets-in-code-1pg2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 13 '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/code-smell-258-secrets-in-code-1pg2" id="article-link-1922506"&gt;
          Code Smell 258 - Secrets in 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/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/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/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&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-258-secrets-in-code-1pg2" 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;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/code-smell-258-secrets-in-code-1pg2#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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-284-encrypted-functions-301e" class="crayons-story__hidden-navigation-link"&gt;Code Smell 284 - Encrypted Functions&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-2167675" 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-284-encrypted-functions-301e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 21 '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/code-smell-284-encrypted-functions-301e" id="article-link-2167675"&gt;
          Code Smell 284 - Encrypted Functions
        &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/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hacking"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hacking&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-284-encrypted-functions-301e#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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-263-squatting-45hl" class="crayons-story__hidden-navigation-link"&gt;Code Smell 263 - Squatting&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-1958301" 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-263-squatting-45hl" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 13 '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/code-smell-263-squatting-45hl" id="article-link-1958301"&gt;
          Code Smell 263 - Squatting
        &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/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/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&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-263-squatting-45hl" 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;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/code-smell-263-squatting-45hl#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;p&gt;

&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-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"&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=""&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="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/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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-300-package-hallucination-1kai" class="crayons-story__hidden-navigation-link"&gt;Code Smell 300 - Package Hallucination&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-2481919" 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-300-package-hallucination-1kai" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 12 '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-300-package-hallucination-1kai" id="article-link-2481919"&gt;
          Code Smell 300 - Package Hallucination
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&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/json"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;json&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-300-package-hallucination-1kai" 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;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/code-smell-300-package-hallucination-1kai#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;
            6 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;&lt;a href="https://www.brodersendarknews.com/p/moltbook-riesgos-vibe-coding" rel="noopener noreferrer"&gt;Dark news&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://securityscorecard.com/blog/beyond-the-hype-moltbots-real-risk-is-exposed-infrastructure-not-ai-superintelligence/" rel="noopener noreferrer"&gt;Beyond the Hype&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bitdefender.com/en-us/blog/labs/helpful-skills-or-hidden-payloads-bitdefender-labs-dives-deep-into-the-openclaw-malicious-skill-trap" rel="noopener noreferrer"&gt;Bit Defender&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thehackernews.com/2026/02/researchers-find-341-malicious-clawhub.html" rel="noopener noreferrer"&gt;Hacker News: Researchers Find 341 Malicious ClawHub Skills Stealing Data from OpenClaw Users&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Agentic Supply Chain Poisoning&lt;/p&gt;

&lt;p&gt;ClickFix AI Attacks&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://openclaw.ai/" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.clawdex.io/" rel="noopener noreferrer"&gt;Clawdex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.koi.ai/" rel="noopener noreferrer"&gt;Koi Security's tool&lt;/a&gt;&lt;/p&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 AI Coding Tip series.&lt;/p&gt;

&lt;p&gt;

&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>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AI Coding Tip 006 - Review Every Line Before Commit</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Fri, 13 Feb 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-006-review-every-line-before-commit-bmm</guid>
      <description>&lt;p&gt;&lt;em&gt;You own the code, not the AI&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: If you can't explain all your code, don't commit it.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You prompt and paste AI-generated code directly into your project without thinking twice.&lt;/p&gt;

&lt;p&gt;You trust the AI without verification and create &lt;a href="https://dev.to/mcsee/code-smell-313-workslop-code-n09"&gt;workslop&lt;/a&gt; that ~someone else~ you will have to clean up later.&lt;/p&gt;

&lt;p&gt;You assume the code works because it &lt;em&gt;looks&lt;/em&gt; correct (or complicated enough to impress anyone).&lt;/p&gt;

&lt;p&gt;You skip a &lt;a href="https://learning.oreilly.com/library/view/perform-code-reviews/9781098172657/ch01.html" rel="noopener noreferrer"&gt;manual review&lt;/a&gt; when the AI assistant generates large blocks because, well, it's a lot of code.&lt;/p&gt;

&lt;p&gt;You treat AI output as production-ready code and ship it without a second thought.&lt;/p&gt;

&lt;p&gt;If you're making code reviews, you get tired of large pull requests (probably generated by AI) that feel like reviewing a novel.&lt;/p&gt;

&lt;p&gt;Let's be honest: AI isn't accountable for your mistakes, &lt;strong&gt;you&lt;/strong&gt; are. And you want to keep your job and be seen as mandatory for the software engineering process.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security vulnerabilities and flaws&lt;/strong&gt;: AI generates code with &lt;a href="https://dev.to/mcsee/code-smell-189-not-sanitized-input-853"&gt;Not sanitized inputs&lt;/a&gt; SQL injection, XSS, &lt;a href="https://dev.to/mcsee/code-smell-317-email-handling-vulnerabilities-241f"&gt;Email&lt;/a&gt;, &lt;a href="https://dev.to/mcsee/code-smell-300-package-hallucination-1kai"&gt;Packages Hallucination&lt;/a&gt;, or &lt;a href="https://dev.to/mcsee/code-smell-311-plain-text-passwords-33mg"&gt;hardcoded credentials&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic errors&lt;/strong&gt;: The AI misunderstands your requirements and solves the wrong problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical debt&lt;/strong&gt;: Generated code uses &lt;a href="https://dev.to/mcsee/refactoring-018-replace-singleton-18gn"&gt;outdated patterns&lt;/a&gt; or creates &lt;a href="https://dev.to/mcsee/code-smell-148-todos-5gn9"&gt;maintenance nightmares&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lost accountability&lt;/strong&gt;: You cannot explain code you didn't review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hidden &lt;a href="https://dev.to/mcsee/stop-calling-them-bugs-57gl"&gt;defects&lt;/a&gt;&lt;/strong&gt;: Issues that appear in production cost 30-100x more to fix&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge gaps&lt;/strong&gt;: You miss learning opportunities when you blindly accept solutions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team friction&lt;/strong&gt;: Your reviewers waste time catching issues you should have found&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Productivity Paradox&lt;/strong&gt;: AI shifts the bottleneck from writing to &lt;a href="https://medium.com/@mozaman/the-productivity-paradox-of-ai-why-commits-and-prs-dont-tell-the-story-ceb68a453f54" rel="noopener noreferrer"&gt;integration&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Trust&lt;/strong&gt;: The team's trust erodes when unowned code causes failures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noisier Code&lt;/strong&gt;: AI-authored PRs contained &lt;a href="https://www.coderabbit.ai/blog/state-of-ai-vs-human-code-generation-report" rel="noopener noreferrer"&gt;1.7x more issues&lt;/a&gt; than human-only PRs. &lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;Ask the AI to generate the code you need using &lt;a href="https://dev.to/mcsee/ai-coding-tip-002-prompt-in-english-2la6"&gt;English&lt;/a&gt; language&lt;/li&gt;
&lt;li&gt;Read every single line the AI produced, &lt;strong&gt;understand it&lt;/strong&gt;, and challenge it if necessary&lt;/li&gt;
&lt;li&gt;Check that the solution matches your &lt;a href="https://dev.to/mcsee/what-is-wrong-with-software-5pa"&gt;actual requirements&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Verify the code handles edge cases and errors&lt;/li&gt;
&lt;li&gt;Look for security issues (&lt;a href="https://dev.to/mcsee/code-smell-189-not-sanitized-input-853"&gt;injection&lt;/a&gt;, auth, data exposure)&lt;/li&gt;
&lt;li&gt;Test the code locally with real scenarios&lt;/li&gt;
&lt;li&gt;Run your &lt;a href="https://dev.to/mcsee/code-smell-48-code-without-standards-2f5m"&gt;linters&lt;/a&gt;, prettifiers and security scanners&lt;/li&gt;
&lt;li&gt;Remove any &lt;a href="https://dev.to/mcsee/code-smell-106-production-dependent-code-3f47"&gt;debug code&lt;/a&gt; or &lt;a href="https://dev.to/mcsee/code-smell-05-comment-abusers-2ba5"&gt;comments&lt;/a&gt; you don't need&lt;/li&gt;
&lt;li&gt;Refactor the code to match &lt;a href="https://dev.to/mcsee/refactoring-032-apply-consistent-style-rules-4fhf"&gt;your team's style&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add or update tests for the new functionality (ask the AI for help)&lt;/li&gt;
&lt;li&gt;Write a clear commit message explaining what changed&lt;/li&gt;
&lt;li&gt;Only then &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;commit the code&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;You are not going to lose your job (by now)&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;You catch defects before they reach production.&lt;/p&gt;

&lt;p&gt;You understand the code you commit.&lt;/p&gt;

&lt;p&gt;You maintain accountability for your changes.&lt;/p&gt;

&lt;p&gt;You learn from your copilot's approach and become a better developer in the process.&lt;/p&gt;

&lt;p&gt;You build personal accountability. &lt;/p&gt;

&lt;p&gt;You build better human team collaboration and trust.&lt;/p&gt;

&lt;p&gt;You prevent &lt;a href="https://dev.to/mcsee/code-smell-311-plain-text-passwords-33mg"&gt;security breaches&lt;/a&gt; like the &lt;a href="https://www.brodersendarknews.com/p/moltbook-riesgos-vibe-coding" rel="noopener noreferrer"&gt;Moltbook incident&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You avoid long-term maintenance costs.&lt;/p&gt;

&lt;p&gt;You keep your reputation and accountability intact.&lt;/p&gt;

&lt;p&gt;You're a professional who shows respect for your human code reviewers.&lt;/p&gt;

&lt;p&gt;You are not disposable.&lt;/p&gt;

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

&lt;p&gt;AI assistants like GitHub Copilot, ChatGPT, and Claude help you code faster.&lt;/p&gt;

&lt;p&gt;These tools generate code from natural language prompts and &lt;a href="https://dev.to/mcsee/explain-in-5-levels-of-difficulty-vibe-coding-4f77"&gt;vibe coding&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;AI models are probabilistic, not logical. &lt;/p&gt;

&lt;p&gt;They predict the next token based on patterns. &lt;/p&gt;

&lt;p&gt;When you work on complex systems, the AI might miss a specific edge case that only a human knows.&lt;/p&gt;

&lt;p&gt;Manual review is the only way to close the gap between "code that looks good" and "code that is correct."&lt;/p&gt;

&lt;p&gt;The AI doesn't understand your business logic or the &lt;a href="https://dev.to/mcsee/the-one-and-only-software-design-principle-3086"&gt;real world bijection&lt;/a&gt; between your &lt;a href="https://dev.to/mcsee/what-is-wrong-with-software-5pa"&gt;MAPPER&lt;/a&gt; and your model.&lt;/p&gt;

&lt;p&gt;The AI cannot know your security requirements (unless you are explicit or execute a skill).&lt;/p&gt;

&lt;p&gt;The AI cannot test the code against your specific environment.&lt;/p&gt;

&lt;p&gt;You remain &lt;strong&gt;responsible&lt;/strong&gt; for every line in your codebase.&lt;/p&gt;

&lt;p&gt;Production &lt;a href="https://dev.to/mcsee/stop-calling-them-bugs-57gl"&gt;defects&lt;/a&gt; from unreviewed AI code cost companies millions.&lt;/p&gt;

&lt;p&gt;Code review catches many security risks that automated tools miss.&lt;/p&gt;

&lt;p&gt;Your organization holds you accountable for the code you commit.&lt;/p&gt;

&lt;p&gt;This applies whether you write code manually or use AI assistance.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Bad Prompts&lt;/strong&gt; ❌ &lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DatabaseManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;_instance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="c1"&gt;# Singleton Anti Pattern
&lt;/span&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__new__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_instance&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_instance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;super&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;__new__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_instance&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;eval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SELECT * FROM users WHERE id=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="c1"&gt;# SQL injection!
&lt;/span&gt;
    &lt;span class="c1"&gt;## 741 more cryptic lines
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Good Prompts&lt;/strong&gt; ✅ &lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DatabaseManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;db_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;db_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db_path&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_user&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;db_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;row_factory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Row&lt;/span&gt;
        &lt;span class="n"&gt;cursor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SELECT * FROM users WHERE id = ?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,))&lt;/span&gt;
        &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetchone&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Database error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;span class="n"&gt;db&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DatabaseManager&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;app.db&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_user&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;You cannot blame the AI when defects appear in production.&lt;/p&gt;

&lt;p&gt;The human is accountable, not the AI.&lt;/p&gt;

&lt;p&gt;AI-generated code might violate your company's licensing policies.&lt;/p&gt;

&lt;p&gt;The AI might use deprecated libraries or outdated patterns.&lt;/p&gt;

&lt;p&gt;Generated code might not follow your team's conventions.&lt;/p&gt;

&lt;p&gt;You need to understand the code to maintain it later.&lt;/p&gt;

&lt;p&gt;Other developers will review your AI-assisted code just like any other.&lt;/p&gt;

&lt;p&gt;Some AI models train on public repositories and might leak patterns.&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;You should use this tip for &lt;strong&gt;every&lt;/strong&gt; code change. You should not skip it even for "simple" refactors. &lt;/p&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;ul&gt;
&lt;li&gt;Self-Review Your Code Before Requesting a Peer Review&lt;/li&gt;
&lt;li&gt;Write Tests for AI-Generated Functions&lt;/li&gt;
&lt;li&gt;Document AI-Assisted Code Decisions&lt;/li&gt;
&lt;li&gt;Use Static Analysis on Generated Code&lt;/li&gt;
&lt;li&gt;Understand Before You Commit&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;AI assistants accelerate your coding speed.&lt;/p&gt;

&lt;p&gt;You still own &lt;strong&gt;every line&lt;/strong&gt; you commit.&lt;/p&gt;

&lt;p&gt;Manual review and &lt;a href="https://en.wikipedia.org/wiki/Fagan_inspection" rel="noopener noreferrer"&gt;code inspections&lt;/a&gt; catch what automated tools miss.&lt;/p&gt;

&lt;p&gt;Before AI code generators became mainstream, a very good practice was to make a &lt;a href="https://learning.oreilly.com/library/view/perform-code-reviews/9781098172657/ch01.html" rel="noopener noreferrer"&gt;self review&lt;/a&gt; of the code before requesting peer review.&lt;/p&gt;

&lt;p&gt;You learn more when you question the AI's choices and understand the 'why' behind them.&lt;/p&gt;

&lt;p&gt;Your reputation depends on code quality, not how fast you can churn out code.&lt;/p&gt;

&lt;p&gt;Take responsibility for the code you ship—your name is on it.&lt;/p&gt;

&lt;p&gt;Review everything. Commit nothing blindly. Your future self will thank you. 🔍&lt;/p&gt;

&lt;p&gt;Be incremental, make very small commits, and &lt;a href="https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e"&gt;keep your content fresh&lt;/a&gt;. &lt;/p&gt;
&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;

&lt;/p&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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-189-not-sanitized-input-853" class="crayons-story__hidden-navigation-link"&gt;Code Smell 189 - Not Sanitized Input&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-1310952" 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-189-not-sanitized-input-853" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 28 '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/code-smell-189-not-sanitized-input-853" id="article-link-1310952"&gt;
          Code Smell 189 - Not Sanitized Input
        &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/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/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&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-189-not-sanitized-input-853" 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;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/code-smell-189-not-sanitized-input-853#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;
            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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-300-package-hallucination-1kai" class="crayons-story__hidden-navigation-link"&gt;Code Smell 300 - Package Hallucination&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-2481919" 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-300-package-hallucination-1kai" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 12 '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-300-package-hallucination-1kai" id="article-link-2481919"&gt;
          Code Smell 300 - Package Hallucination
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&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/json"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;json&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-300-package-hallucination-1kai" 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;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/code-smell-300-package-hallucination-1kai#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;
            6 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;&lt;a href="https://martinfowler.com/articles/code-review.html" rel="noopener noreferrer"&gt;Martin Fowler's code review&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learning.oreilly.com/library/view/perform-code-reviews/9781098172657/ch01.html" rel="noopener noreferrer"&gt;Shortcut on performing reviews&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.coderabbit.ai/blog/state-of-ai-vs-human-code-generation-report" rel="noopener noreferrer"&gt;Code Rabbit's findings on AI-generated code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@mozaman/the-productivity-paradox-of-ai-why-commits-and-prs-dont-tell-the-story-ceb68a453f54" rel="noopener noreferrer"&gt;The Productivity Paradox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://google.github.io/eng-practices/review/" rel="noopener noreferrer"&gt;Google Engineering Practices - Code Review&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.atlassian.com/agile/software-development/code-reviews" rel="noopener noreferrer"&gt;Code Review Best Practices by Atlassian&lt;/a&gt;&lt;/p&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 - Code Ownership&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://standards.ieee.org/standard/1028-2008.html" rel="noopener noreferrer"&gt;IEEE Standards for Software Reviews&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Human-in-the-Loop Code Review&lt;/li&gt;
&lt;li&gt;AI Code Verification&lt;/li&gt;
&lt;li&gt;AI-Assisted Development Accountability&lt;/li&gt;
&lt;li&gt;LLM Output Validation&lt;/li&gt;
&lt;li&gt;Copilot Code Inspection&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;SonarQube (static analysis)&lt;/li&gt;
&lt;li&gt;Snyk (security scanning)&lt;/li&gt;
&lt;li&gt;ESLint / Pylint (linters)&lt;/li&gt;
&lt;li&gt;GitLab / GitHub (code review platforms)&lt;/li&gt;
&lt;li&gt;Semgrep (pattern-based scanning)&lt;/li&gt;
&lt;li&gt;CodeRabbit / AI-assisted code reviews&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;p&gt;

&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>programming</category>
      <category>development</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Refactoring 038 - Reify Collection</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Fri, 06 Feb 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/refactoring-038-reify-collection-2g2c</link>
      <guid>https://dev.to/mcsee/refactoring-038-reify-collection-2g2c</guid>
      <description>&lt;p&gt;&lt;em&gt;Give your collections a purpose and a connection to the real world&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Wrap primitive collections into dedicated objects to ensure type safety and encapsulate business logic.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;Type safety violations&lt;/li&gt;
&lt;li&gt;Logic duplication&lt;/li&gt;
&lt;li&gt;Primitive obsession&lt;/li&gt;
&lt;li&gt;Weak encapsulation&lt;/li&gt;
&lt;li&gt;Strong coupling avoiding collection type changes&lt;/li&gt;
&lt;li&gt;Hidden business rules&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Related Code Smells 💨
&lt;/h1&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-01-anemic-models-4dg2" class="crayons-story__hidden-navigation-link"&gt;Code Smell 01 - Anemic Models&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-492890" 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-01-anemic-models-4dg2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 20 '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-01-anemic-models-4dg2" id="article-link-492890"&gt;
          Code Smell 01 - Anemic Models
        &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/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/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/computerscience"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;computerscience&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-01-anemic-models-4dg2" 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="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&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;63&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-01-anemic-models-4dg2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              12&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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-122-primitive-obsession-4a55" class="crayons-story__hidden-navigation-link"&gt;Code Smell 122 - Primitive Obsession&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-1025474" 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-122-primitive-obsession-4a55" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 17 '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/code-smell-122-primitive-obsession-4a55" id="article-link-1025474"&gt;
          Code Smell 122 - Primitive Obsession
        &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/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/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-122-primitive-obsession-4a55" 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="18" height="18"&gt;
                  &lt;/span&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;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/code-smell-122-primitive-obsession-4a55#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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-63-feature-envy-502f" class="crayons-story__hidden-navigation-link"&gt;Code Smell 63 - Feature Envy&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-641338" 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-63-feature-envy-502f" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 23 '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/code-smell-63-feature-envy-502f" id="article-link-641338"&gt;
          Code Smell 63 - Feature Envy
        &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/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/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/code-smell-63-feature-envy-502f" 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="18" height="18"&gt;
                  &lt;/span&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;6&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-63-feature-envy-502f#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;
            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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-40-dtos-4426" class="crayons-story__hidden-navigation-link"&gt;Code Smell 40 - DTOs&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-530269" 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-40-dtos-4426" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 2 '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-40-dtos-4426" id="article-link-530269"&gt;
          Code Smell 40 - DTOs
        &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/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;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;/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-40-dtos-4426" 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="18" height="18"&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/code-smell-40-dtos-4426#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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-143-data-clumps-52f6" class="crayons-story__hidden-navigation-link"&gt;Code Smell 143 - Data Clumps&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-1121793" 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-143-data-clumps-52f6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 22 '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/code-smell-143-data-clumps-52f6" id="article-link-1121793"&gt;
          Code Smell 143 - Data Clumps
        &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/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;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/code-smell-143-data-clumps-52f6" 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="18" height="18"&gt;
                  &lt;/span&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;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/code-smell-143-data-clumps-52f6#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;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/code-smell-134-specialized-business-collections-2bm8" class="crayons-story__hidden-navigation-link"&gt;Code Smell 134 - Specialized Business Collections&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-1092741" 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-134-specialized-business-collections-2bm8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 22 '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/code-smell-134-specialized-business-collections-2bm8" id="article-link-1092741"&gt;
          Code Smell 134 - Specialized Business Collections
        &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/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/java"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;java&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/code-smell-134-specialized-business-collections-2bm8" 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="18" height="18"&gt;
                  &lt;/span&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;9&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-134-specialized-business-collections-2bm8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              12&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;h1&gt;
  
  
  Context 💬
&lt;/h1&gt;

&lt;p&gt;You find yourself passing around generic lists, arrays, or dictionaries as if they were just &lt;a href="https://dev.to/mcsee/code-smell-01-anemic-models-4dg2"&gt;anemic&lt;/a&gt; "bags of data." like &lt;a href="https://dev.to/mcsee/code-smell-40-dtos-4426"&gt;DTOs&lt;/a&gt; or &lt;a href="https://dev.to/mcsee/code-smell-143-data-clumps-52f6"&gt;Data Clumps&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;These primitive structures are convenient to iterate.&lt;/p&gt;

&lt;p&gt;But they are also anonymous and lack a voice in the business domain. &lt;/p&gt;

&lt;p&gt;When you use a raw array to represent a group of specific entities—like ActiveSubscribers, PendingInvoices, or ValidationErrors—you are essentially forcing every part of your system to re-learn how to handle that data, leading to scattered logic and "primitive obsession."&lt;/p&gt;

&lt;p&gt;When you reify the collection, you improve the model and create technical implementation into a first-class citizen of your domain model. &lt;/p&gt;

&lt;p&gt;This doesn't just provide a home for validation and filtering; it makes the invisible concepts in your business requirements visible in your code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Steps 👣
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a new class to represent the specific collection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define a private collection property within this class using the appropriate collection type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement a constructor that accepts only elements of the required type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add type-hinted methods to add, remove, or retrieve elements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Move collection-specific logic (like sorting or filtering) from the outside into this new class.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Sample Code 💻
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Before 🚨
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?&lt;/span&gt;

&lt;span class="cd"&gt;/** @var User[] $users */&lt;/span&gt;
&lt;span class="c1"&gt;// this is a static declaration used by many IDEs but not the compiler&lt;/span&gt;
&lt;span class="c1"&gt;// Like many comments it is useless, and possible outdated&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;notifyUsers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$users&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$user&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 have no guarantee $user is actually a User object&lt;/span&gt;
        &lt;span class="c1"&gt;// The comment above is &lt;/span&gt;
        &lt;span class="c1"&gt;// just a hint for the IDE/Static Analysis&lt;/span&gt;
        &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;sendNotification&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;span class="nv"&gt;$users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Anatoli Bugorski'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Product&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Laser'&lt;/span&gt;&lt;span class="p"&gt;)];&lt;/span&gt; 
&lt;span class="c1"&gt;// This array is anemic and lacks runtime type enforcement&lt;/span&gt;
&lt;span class="c1"&gt;// There's a Product in the collection and will show a fatal error&lt;/span&gt;
&lt;span class="c1"&gt;// unless it can understand #sendNotification() method&lt;/span&gt;

&lt;span class="nf"&gt;notifyUsers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  After 👉
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?&lt;/span&gt; 

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserDirectory&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// 1. Create a new class to represent the specific collection&lt;/span&gt;
&lt;span class="c1"&gt;// This is a real world concept reified  &lt;/span&gt;
&lt;span class="c1"&gt;// 2. Define a private property&lt;/span&gt;
&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

    &lt;span class="c1"&gt;// 3. Implement a constructor that accepts only User types&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;__construct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;User&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// 4. Add type-hinted methods to add elements&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;User&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;elements&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// 5. Move collection-specific logic inside&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;notifyAll&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;elements&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;sendNotification&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Type 📝
&lt;/h1&gt;

&lt;p&gt;[X] Manual&lt;/p&gt;
&lt;h1&gt;
  
  
  Safety 🛡️
&lt;/h1&gt;

&lt;p&gt;This refactoring is very safe.&lt;/p&gt;

&lt;p&gt;You create a new structure and gradually migrate references. &lt;/p&gt;

&lt;p&gt;Since you add strict type hints in the new class, the compiler engine catches any incompatible data at runtime, preventing silent failures.&lt;/p&gt;
&lt;h1&gt;
  
  
  Why is the Code Better? ✨
&lt;/h1&gt;

&lt;p&gt;You transform a generic, "dumb" array into a specialized object that understands its own rules. You stop repeating validation logic every time you handle the list. The code becomes self-documenting because the class name explicitly tells you what the collection contains.&lt;/p&gt;
&lt;h1&gt;
  
  
  How Does it Improve the Bijection? 🗺️
&lt;/h1&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/mcsee/what-is-wrong-with-software-5pa"&gt;real world&lt;/a&gt;, a "List of Users" or a "Staff Directory" is a distinct concept with specific behaviors. &lt;/p&gt;

&lt;p&gt;An anonymous array is a technical implementation detail, not a real-world entity. &lt;/p&gt;

&lt;p&gt;By reifying the collection, you create a &lt;a href="https://dev.to/mcsee/the-one-and-only-software-design-principle-3086"&gt;one-to-one correspondence&lt;/a&gt; between the business concept and your code.&lt;/p&gt;
&lt;h1&gt;
  
  
  Limitations ⚠️
&lt;/h1&gt;

&lt;p&gt;You might encounter slight performance overhead when dealing with millions of objects compared to raw arrays.&lt;/p&gt;

&lt;p&gt;For most business applications, the safety gains far outweigh the millisecond costs and prevents you from being a premature optimizator.&lt;/p&gt;

&lt;p&gt;Remember to avoid hollow &lt;a href="https://dev.to/mcsee/code-smell-134-specialized-business-collections-2bm8"&gt;Specialized Business collections&lt;/a&gt; that don't exist in the real world.&lt;/p&gt;

&lt;p&gt;Many languages support typed collections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;C# achieves typed collections through reified &lt;em&gt;generics&lt;/em&gt; in the CLR, preserving type information at runtime for types like &lt;em&gt;List&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;C++ achieves typed collections through &lt;em&gt;templates&lt;/em&gt; like blueprints instantiated at compile time for each concrete type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clojure achieves typed collections through optional static typing libraries such as core.typed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dart achieves typed collections through &lt;em&gt;reified generics&lt;/em&gt; with runtime type checks in sound null safety mode.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elixir achieves typed collections through &lt;em&gt;typespecs&lt;/em&gt; analyzed by Dialyzer for static verification.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go achieves typed collections through &lt;em&gt;parametric generics&lt;/em&gt; introduced in Go 1.18 with type parameters and constraints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Haskell achieves typed collections through &lt;em&gt;parametric polymorphism&lt;/em&gt; and type classes resolved at compile time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Java achieves typed collections through generics with type erasure, enforcing type constraints at compile time on classes like &lt;em&gt;List&lt;/em&gt; and &lt;em&gt;Map&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript achieves typed collections through TypeScript or Flow, which add static generic typing on top of the dynamic language (see below).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kotlin achieves typed collections through &lt;em&gt;JVM generics&lt;/em&gt; with variance annotations and null-safety integrated into the type system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Objective-C achieves typed collections through &lt;em&gt;lightweight generics&lt;/em&gt; that provide compile-time checks without full runtime enforcement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHP achieves typed collections through &lt;em&gt;docblock-based generics&lt;/em&gt; enforced by static analyzers like Psalm or PHPStan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python achieves typed collections through type hints like &lt;em&gt;list[T]&lt;/em&gt; and &lt;em&gt;dict[K, V]&lt;/em&gt; checked by static analyzers such as mypy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ruby achieves typed collections through &lt;em&gt;external type systems&lt;/em&gt; like Sorbet or RBS layered on top of the dynamic runtime.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rust achieves typed collections through &lt;em&gt;parametric types&lt;/em&gt; and trait bounds checked at compile time with monomorphization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scala achieves typed collections through a powerful &lt;em&gt;generic type system&lt;/em&gt; with variance and higher-kinded types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Swift achieves typed collections through &lt;em&gt;generics&lt;/em&gt; with value semantics and protocol constraints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TypeScript achieves typed collections through &lt;em&gt;structural typing&lt;/em&gt; and &lt;em&gt;generics&lt;/em&gt; enforced at compile time and erased at runtime since JavaScript doesn't support them.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In all the above cases, reifying a real business object (if exists in the &lt;a href="https://dev.to/mcsee/the-one-and-only-software-design-principle-3086"&gt;MAPPER&lt;/a&gt;) gives you a good extra abstraction layer.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Primitive Obsession&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 Refactorings 🔄
&lt;/h1&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mcsee/refactoring-012-reify-associative-arrays-41cp" class="crayons-story__hidden-navigation-link"&gt;Refactoring 012 - Reify Associative Arrays&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-1671188" 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/refactoring-012-reify-associative-arrays-41cp" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 19 '23&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-012-reify-associative-arrays-41cp" id="article-link-1671188"&gt;
          Refactoring 012 - Reify Associative Arrays
        &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/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/php"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;php&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-012-reify-associative-arrays-41cp" 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/refactoring-012-reify-associative-arrays-41cp#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;
  
  
  Refactor with AI 🤖
&lt;/h1&gt;

&lt;p&gt;Ask your AI assistant to: "Identify where I am passing arrays of objects and suggest a Typed Collection class for them." &lt;/p&gt;

&lt;p&gt;You can also provide the base class and ask: "Find a real business object and generate a boilerplate for a type-safe collection for this entity."&lt;/p&gt;

&lt;h1&gt;
  
  
  Credits 🙏
&lt;/h1&gt;

&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/maky_orel-436253/" rel="noopener noreferrer"&gt;Markéta Klimešová&lt;/a&gt; on &lt;a href="https://pixabay.com/" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inspired by the "Collection Object" pattern in clean architecture and the ongoing quest for type safety in dynamic languages.&lt;/p&gt;




&lt;p&gt;This article is part of the Refactoring Series.&lt;/p&gt;

&lt;p&gt;

&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-improve-your-code-with-easy-refactorings-2ij6" class="crayons-story__hidden-navigation-link"&gt;How to Improve your Code With easy Refactorings&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-1228319" 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/how-to-improve-your-code-with-easy-refactorings-2ij6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 24 '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/how-to-improve-your-code-with-easy-refactorings-2ij6" id="article-link-1228319"&gt;
          How to Improve your Code With easy Refactorings
        &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/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/how-to-improve-your-code-with-easy-refactorings-2ij6" 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;9&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-improve-your-code-with-easy-refactorings-2ij6#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>programming</category>
      <category>cleancode</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>AI Coding Tip 005 - Keep Context Fresh</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Wed, 04 Feb 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-005-keep-context-fresh-220e</guid>
      <description>&lt;p&gt;&lt;em&gt;Keep your prompts clean and focused, and stop the context rot&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Clear your chat history to keep your AI assistant sharp.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You keep a single chat window open for hours. &lt;/p&gt;

&lt;p&gt;You switch from debugging a React component to writing a SQL query in the same thread. &lt;/p&gt;

&lt;p&gt;The conversation flows, and the answers seem accurate enough. &lt;/p&gt;

&lt;p&gt;But then something goes wrong. &lt;/p&gt;

&lt;p&gt;The AI tries to use your old JavaScript context to help with your database schema. &lt;/p&gt;

&lt;p&gt;This creates "context pollution."&lt;/p&gt;

&lt;p&gt;The assistant gets confused by irrelevant data from previous tasks and starts to hallucinate.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Attention Dilution&lt;/strong&gt;: The AI loses focus on your current task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinations&lt;/strong&gt;: The model makes up subtle facts based on old, unrelated prompts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Waste&lt;/strong&gt;: You pay for "noise" in your history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Illusion of Infinite Context&lt;/strong&gt;: Today, context windows are huge. But you need to stay focused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stale Styles&lt;/strong&gt;: The AI keeps using old instructions you no longer need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Reliability&lt;/strong&gt;: Response quality decreases as the context window fills up.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;You need to identify when a specific microtask is complete. &lt;em&gt;(Like you would when coaching a new team member)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Click the "New Chat" button immediately and &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;commit the partial solution&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If the behavior will be reused, you save it as a new skill &lt;em&gt;(Like you would when coaching a new team member)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You provide a clear, isolated instruction for the new subject. &lt;em&gt;(Like you would when coaching a new team member)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Place your most important instructions at the beginning or end.&lt;/li&gt;
&lt;li&gt;Limit your prompts to 1,500-4,000 tokens for best results. (Most tools show the content usage).&lt;/li&gt;
&lt;li&gt;Keep an eye on your conversation title (usually titled after the first interaction). If it is not relevant anymore, it is a smell. Create a new conversation.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;You get more accurate code suggestions.&lt;/li&gt;
&lt;li&gt;You reduce the risk of the AI repeating past errors.&lt;/li&gt;
&lt;li&gt;You save time and tokens because the AI responds faster with less noise.&lt;/li&gt;
&lt;li&gt;Response times stay fast.&lt;/li&gt;
&lt;li&gt;You avoid cascading failures in complex workflows.&lt;/li&gt;
&lt;li&gt;You force yourself to write down agents.md or &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;skills.md&lt;/a&gt; for the next task&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Large Language Models use an "Attention" mechanism. &lt;/p&gt;

&lt;p&gt;When you give them a massive history, they must decide which parts matter. &lt;/p&gt;

&lt;p&gt;Just like a "God Object" in clean code, a "God Chat" violates the Single Responsibility Principle. &lt;/p&gt;

&lt;p&gt;When you keep it fresh and hygienic, you ensure the AI's "working memory" stays pure.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Bad Prompt (Continuing an old thread):&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Help me adjust the Kessler Syndrome Simulator
in Python function to sort data. 

Also, can you review this JavaScript code? 

And I need some SQL queries tracking crashing satellites, too. 

Use camelCase. 

Actually, use snake_case instead. Make it functional. 

No!, wait, use classes.

Change the CSS style to support
dark themes for the orbital pictures.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Good Prompt (In a fresh thread):
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Sort the data from @kessler.py#L23.

Update the tests using the skill 'run-tests'.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;You must extract &lt;em&gt;agents.md&lt;/em&gt; or &lt;em&gt;skills.md&lt;/em&gt; before starting the new chat. &lt;em&gt;(Like you would when coaching a new team member)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Use metacognition: &lt;em&gt;Write down what you have learned&lt;/em&gt;. &lt;em&gt;(Like you would when coaching a new team member)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The AI will not remember them across threads. &lt;em&gt;(Like you would when coaching a new team member)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Type 📝
&lt;/h2&gt;

&lt;p&gt;[X] Semi-Automatic&lt;/p&gt;
&lt;h2&gt;
  
  
  Level 🔋
&lt;/h2&gt;

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

&lt;p&gt;

&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-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"&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=""&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="18" height="18"&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;p&gt;Place the most important instructions at the beginning or end&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 🏁
&lt;/h2&gt;

&lt;p&gt;Fresh context leads to incrementalism and small solutions, &lt;a href="https://dev.to/mcsee/fail-fast-48dm"&gt;Failing Fast&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;When you start over, you win back the AI's full attention and fresh tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro-Tip 1&lt;/strong&gt;: This is not &lt;em&gt;just&lt;/em&gt; a coding tip. If you use Agents or Assistants for &lt;em&gt;any&lt;/em&gt; task, you should use this advice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro-Tip 2&lt;/strong&gt;: Humans need to &lt;a href="https://simple.wikipedia.org/wiki/Sleep_deprivation" rel="noopener noreferrer"&gt;sleep to consolidate&lt;/a&gt; what we have learned in the day; bots need to write down &lt;a href="https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97"&gt;skills&lt;/a&gt; to start fresh on a new day.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://arxiv.org/abs/1706.03762" rel="noopener noreferrer"&gt;Attention Is All You Need (Paper)&lt;/a&gt;&lt;/p&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://www.promptingguide.ai/" rel="noopener noreferrer"&gt;Full Prompt Engineering Guide: Context Management&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://zapier.com/blog/ai-hallucinations/" rel="noopener noreferrer"&gt;Avoiding AI Hallucinations&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/claude/docs/long-context-window-tips" rel="noopener noreferrer"&gt;Anthropic Context Window Best Practices&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them" rel="noopener noreferrer"&gt;Token Economy in Large Language Models&lt;/a&gt; &lt;/p&gt;

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

&lt;p&gt;Context Reset&lt;/p&gt;

&lt;p&gt;Thread Pruning&lt;/p&gt;

&lt;p&gt;Session Hygiene&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer 📢
&lt;/h2&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 AI Coding Tip series.&lt;/p&gt;

&lt;p&gt;

&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>programming</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI Coding Tip 004 - Use Modular Skills</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Tue, 27 Jan 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97</link>
      <guid>https://dev.to/mcsee/ai-coding-tip-004-use-modular-skills-g97</guid>
      <description>&lt;p&gt;&lt;em&gt;Stop bloating your context window.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Create small, specialized files with specific rules to keep your AI focused, accurate and preventing hallucinations.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;You know the drill - you paste your entire project documentation or every coding rule into a single massive &lt;a href="https://en.wikipedia.org/wiki/README" rel="noopener noreferrer"&gt;Readme.md&lt;/a&gt; or &lt;a href="https://agents.md/" rel="noopener noreferrer"&gt;Agents.md&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then you expect the AI to somehow remember everything at once.&lt;/p&gt;

&lt;p&gt;This overwhelms the model and leads to "hallucinations" or ignored instructions.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Long prompts consume the token limit quickly leading to context exhaustion.&lt;/li&gt;
&lt;li&gt;Large codebases overloaded with information for agents competing for the short attention span.&lt;/li&gt;
&lt;li&gt;The AI gets confused by rules and irrelevant noise that do not apply to your current task.&lt;/li&gt;
&lt;li&gt;Without specific templates, the AI generates non standardized code that doesn't follow your team's unique standards. &lt;/li&gt;
&lt;li&gt;The larger the context you use, the more likely the AI is to generate hallucinated code that doesn't solve your problem.&lt;/li&gt;
&lt;li&gt;Multistep workflows can confuse your next instruction. &lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;Find repetitive tasks you do very often, for example: writing unit tests, creating React components, adding coverage, formatting Git commits, etc.&lt;/li&gt;
&lt;li&gt;Write a small Markdown file (a.k.a. skill) for each task. Keep it &lt;strong&gt;between 20 and 50 lines&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Follow the &lt;a href="https://agentskills.io/home" rel="noopener noreferrer"&gt;Agent Skills format&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Add a "trigger" at the top of the file. This tells the AI &lt;strong&gt;when&lt;/strong&gt; to use these specific rules.&lt;/li&gt;
&lt;li&gt;Include the technology (e.g., Python, JUnit) and the goal of the skill in the metadata.&lt;/li&gt;
&lt;li&gt;Give the files to your AI assistant (Claude, Cursor, or Windsurf) only when you need them restricting context to cheaper subagents (Junior AIs) invoking them from a more intelligent (and expensive) &lt;a href="https://www.ibm.com/think/topics/ai-agent-orchestration" rel="noopener noreferrer"&gt;orchestrator&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Have many very short agents.md for specific tasks following the &lt;a href="https://dev.to/mcsee/ai-coding-tip-001-commit-before-prompt-5bd9"&gt;divide-and-conquer&lt;/a&gt; principle .&lt;/li&gt;
&lt;li&gt;Put the relevant skills on &lt;em&gt;agents.md&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Higher Accuracy:&lt;/strong&gt; The AI focuses on a narrow set of rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save Tokens:&lt;/strong&gt; You only send the context that matters for the specific file you edit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portability:&lt;/strong&gt; You can share these "skills" with your team across different AI tools.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Modern AI models have a limited "attention span.".&lt;/p&gt;

&lt;p&gt;When you dump too much information on them, the model literally loses track of the middle part of your prompt.&lt;/p&gt;

&lt;p&gt;Breaking instructions into "skills" mimics how human experts actually work: they pull specific knowledge from their toolbox only when a specific problem comes up.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Skills.md&lt;/em&gt; is an open standardized format for packaging procedural knowledge that agents can use.&lt;/p&gt;

&lt;p&gt;Originally developed by Anthropic and now adopted across multiple agent platforms.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;SKILL.md file&lt;/em&gt; contains instructions in a structured format with &lt;a href="https://en.wikipedia.org/wiki/YAML" rel="noopener noreferrer"&gt;YAML&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The file also has progressive disclosure. Agents first see only the skill name and description, then load full instructions only when relevant (when the trigger is pulled).&lt;/p&gt;

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

&lt;p&gt;Bad prompt 🚫&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Here are 50 pages of our company coding standards and business rules. 

Now, please write a simple function to calculate taxes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Good prompt 👉&lt;/p&gt;

&lt;p&gt;After you install your skill:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rbuzsxj7ko9ox9oe180.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rbuzsxj7ko9ox9oe180.gif" alt="I Know Kung Fu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good Prompt&lt;/strong&gt;&lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Use the PHP-Clean-Code skill. 

Create a tax calculator function 
from the business specification taxes.md

Follow the 'Early Return' rule defined in that skill.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Using skills for small projects is an overkill. &lt;/p&gt;

&lt;p&gt;If all your code fits comfortably in your context window, you're wasting time writing &lt;em&gt;agents.md&lt;/em&gt; or &lt;em&gt;skills.md&lt;/em&gt; files.&lt;/p&gt;

&lt;p&gt;You also need to keep your skills updated regularly.&lt;/p&gt;

&lt;p&gt;If your project architecture changes, your skill files must change too, or the AI will give you outdated advice.&lt;/p&gt;

&lt;p&gt;Remember &lt;a href="https://dev.to/mcsee/code-smell-183-obsolete-comments-3mmo"&gt;outdated documentation&lt;/a&gt; is much worse than no documentation at all.&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;Don't go crazy creating too many tiny skills. &lt;/p&gt;

&lt;p&gt;If you have 100 skills for one project, you'll spend more time managing files than actually coding. &lt;/p&gt;

&lt;p&gt;Group related rules into logical sets.&lt;/p&gt;
&lt;h1&gt;
  
  
  Tags 🏷️
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Complexity&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;ul&gt;
&lt;li&gt;&lt;p&gt;Keep a file like &lt;em&gt;AGENTS.md&lt;/em&gt; for high-level project context.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create scripts to synchronize skills across different IDEs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Conclusion 🏁
&lt;/h1&gt;

&lt;p&gt;Modular skills turn a generic AI into a specialized engineer that knows exactly how you want your code written.&lt;/p&gt;

&lt;p&gt;When you keep your instructions &lt;em&gt;small&lt;/em&gt;, incremental and sharp, you get better results. &lt;/p&gt;
&lt;h1&gt;
  
  
  More Information ℹ️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://skills.sh/" rel="noopener noreferrer"&gt;Skills Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agentskills.io/home" rel="noopener noreferrer"&gt;Agent Skills Format&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Also Known As 🎭
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Instruction-Sets&lt;/li&gt;
&lt;li&gt;Prompt-Snippets&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Tools 🧰
&lt;/h1&gt;

&lt;p&gt;Most skills come in different flavors for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Windsurf &lt;/li&gt;
&lt;li&gt;GitHub Copilot&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;p&gt;

&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>beginners</category>
    </item>
    <item>
      <title>AI Coding Tips</title>
      <dc:creator>Maxi Contieri</dc:creator>
      <pubDate>Wed, 21 Jan 2026 11:45:31 +0000</pubDate>
      <link>https://dev.to/mcsee/ai-coding-tips-118n</link>
      <guid>https://dev.to/mcsee/ai-coding-tips-118n</guid>
      <description>&lt;p&gt;&lt;em&gt;A series of practical advice on how to use AI to code&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Master the balance between AI speed and code with professional craftsmanship.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this series, you will learn practical state-of-the-art advices to use AI to code.&lt;/p&gt;

&lt;p&gt;

&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-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"&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=""&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="18" height="18"&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;p&gt;

&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-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"&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=""&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="18" height="18"&gt;
                  &lt;/span&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/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;p&gt;

&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-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"&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=""&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="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/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;p&gt;

&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-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"&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=""&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="18" height="18"&gt;
                  &lt;/span&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/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;p&gt;

&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-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;p&gt;

&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-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;p&gt;

&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-tip-007-avoid-malicious-skills-1jh" class="crayons-story__hidden-navigation-link"&gt;AI Coding Tip 007 - Avoid Malicious 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"&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-3261225" 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-007-avoid-malicious-skills-1jh" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 17&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-007-avoid-malicious-skills-1jh" id="article-link-3261225"&gt;
          AI Coding Tip 007 - Avoid Malicious 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/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/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;/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-007-avoid-malicious-skills-1jh" 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/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&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/ai-coding-tip-007-avoid-malicious-skills-1jh#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;p&gt;

&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-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"&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=""&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="18" height="18"&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;p&gt;

&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-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"&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=""&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="18" height="18"&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;p&gt;... more coming soon!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
