<?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: JDiz00</title>
    <description>The latest articles on DEV Community by JDiz00 (@jdiz00).</description>
    <link>https://dev.to/jdiz00</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3993048%2F4721d60a-0656-4cce-be9b-2505dbbec641.JPG</url>
      <title>DEV Community: JDiz00</title>
      <link>https://dev.to/jdiz00</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jdiz00"/>
    <language>en</language>
    <item>
      <title>3 Claude Code habits that were quietly costing me (and the fixes I actually run)</title>
      <dc:creator>JDiz00</dc:creator>
      <pubDate>Thu, 09 Jul 2026 22:49:59 +0000</pubDate>
      <link>https://dev.to/jdiz00/3-claude-code-habits-that-were-quietly-costing-me-and-the-fixes-i-actually-run-1ahn</link>
      <guid>https://dev.to/jdiz00/3-claude-code-habits-that-were-quietly-costing-me-and-the-fixes-i-actually-run-1ahn</guid>
      <description>&lt;p&gt;I run Claude Code every day — it builds real tools for my business. Three habits kept burning me. Every fix below is something running on my machine right now, not theory.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. It says "done" when it isn't
&lt;/h2&gt;

&lt;p&gt;The worst one. Claude finishes a change, says "done ✅", and the code was never run. You find out later, when it breaks.&lt;/p&gt;

&lt;p&gt;A rule in CLAUDE.md ("never say done without verifying") helps, but rules get ignored under pressure. What actually fixed it: a Stop hook — a script that runs every time Claude tries to end its turn. If no verification happened this session, the hook blocks the turn and tells Claude to go test its work.&lt;/p&gt;

&lt;p&gt;The wiring in settings.json looks like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"hooks": {
  "Stop": [
    { "hooks": [ { "type": "command", "command": "python3 ~/.claude/hooks/verify-gate.py" } ] }
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The script checks whether the session actually ran a test or exercised the feature. If not, Claude physically cannot say "done." Since wiring it, fake completions went to zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The invisible token tax
&lt;/h2&gt;

&lt;p&gt;I measured what my setup loads into context every single session, before I type a word: 7,229 tokens. CLAUDE.md files, auto-loaded rules, MCP tool definitions — all of it billed on every message.&lt;/p&gt;

&lt;p&gt;Check yours: add up your CLAUDE.md files, always-on rules, and MCP servers you rarely use. The fix that paid off most: move rarely-needed rules out of auto-load into files Claude reads on demand, and disable MCP servers you don't use daily. I cut my standing load nearly in half in one afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Total amnesia between sessions
&lt;/h2&gt;

&lt;p&gt;Every new session, Claude knows nothing about yesterday's decisions. The fashionable fix is a vector database. At personal scale you don't need one.&lt;/p&gt;

&lt;p&gt;What works: a MEMORY.md index file (one line per memory) plus one small file per fact. Claude loads the index each session, reads the specific files it needs, and writes new facts back at the end. Plain files, greppable, no infrastructure. My agent now opens a session already knowing what we decided last week.&lt;/p&gt;




&lt;p&gt;I packaged the starter versions of all this — my CLAUDE.md behavioral contract plus a verify-before-done skill — as a free Starter Kit: &lt;a href="https://expressive446.gumroad.com/l/qlypgs?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=3fixes" rel="noopener noreferrer"&gt;https://expressive446.gumroad.com/l/qlypgs?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=3fixes&lt;/a&gt; — the full Setup Playbook with the three working hooks is on the same page.&lt;/p&gt;

&lt;p&gt;Questions about hooks welcome — they're the most underused part of Claude Code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Claude is a trademark of Anthropic PBC. This post is not affiliated with, endorsed by, or sponsored by Anthropic.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>devtools</category>
      <category>claude</category>
    </item>
    <item>
      <title>The No BS Claude Code Setup: The CLAUDE.md + Hooks I Run Every Session</title>
      <dc:creator>JDiz00</dc:creator>
      <pubDate>Fri, 19 Jun 2026 18:40:57 +0000</pubDate>
      <link>https://dev.to/jdiz00/the-no-bs-claude-code-setup-the-claudemd-hooks-i-run-every-session-197b</link>
      <guid>https://dev.to/jdiz00/the-no-bs-claude-code-setup-the-claudemd-hooks-i-run-every-session-197b</guid>
      <description>&lt;p&gt;If you use Claude Code seriously, you've felt this: the model is brilliant, but the &lt;em&gt;session&lt;/em&gt; fights you. It forgets what it did last week. It edits the wrong file. It declares a broken build "done" and moves on. You end up re-explaining your conventions every single morning.&lt;/p&gt;

&lt;p&gt;Here's what took me a while to accept: &lt;strong&gt;the model was never the bottleneck. The harness around it was.&lt;/strong&gt; A great model with a sloppy harness is a junior dev with amnesia.&lt;/p&gt;

&lt;p&gt;So I stopped tweaking prompts and started building a &lt;em&gt;system&lt;/em&gt;. This is the actual setup I run every session — not theory, the real thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. CLAUDE.md is a contract, not a wish list
&lt;/h2&gt;

&lt;p&gt;Most people's &lt;code&gt;CLAUDE.md&lt;/code&gt; is a pile of polite suggestions the agent ignores under pressure. Mine reads like a contract with non-negotiables. A few of the rules that earn their place:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Response style&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Answer first, explain only if asked. No filler.

&lt;span class="gu"&gt;## Decision forks&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; At a real choice point: stop, present options, wait. Don't guess and proceed.

&lt;span class="gu"&gt;## Done means done&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Never say a task is complete without verifying it. Run it, test it, or
  show the output. If you can't verify, say so explicitly.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last one — "done means done" — is the highest-leverage line in the whole file. But a rule in a doc is only a suggestion until something &lt;em&gt;enforces&lt;/em&gt; it. That's where hooks come in.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The one hook that changed everything: verify-before-done
&lt;/h2&gt;

&lt;p&gt;Claude Code lets you run a hook when the agent tries to end its turn (a "Stop" hook). I use one that does a simple, brutal check: &lt;strong&gt;if the agent modified code and claims it works, but ran no test/build/command that turn, block the stop and make it actually verify.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The logic is basically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;Stop&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;changed_code_this_turn&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;claimed_done&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;ran_verification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="nf"&gt;block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You said it works but verified nothing. Run the feature,
             test it, or state plainly what you couldn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t verify.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a few dozen lines, but it killed almost all of my "it said it worked and it didn't" pain in one move. The agent can no longer hand me a green checkmark it didn't earn.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Model routing: cheap work to cheap models
&lt;/h2&gt;

&lt;p&gt;Subagents inherit the main model unless you say otherwise — which means a top-tier model can quietly end up doing grep sweeps and log-summarizing at premium prices. I route by task: recall/inventory/summarization → a cheap fast model, implementation/tests → a mid model, deep review/diagnosis → the strong one. A small pre-spawn hook auto-pins the tier so I don't have to remember. Same quality on the work that matters, a fraction of the spend on the work that doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Persistent memory + a knowledge graph
&lt;/h2&gt;

&lt;p&gt;The agent writes durable facts to a small file-based memory (one fact per file, with a one-line index it loads each session) and I keep a knowledge graph over my notes. The payoff: it stops re-researching my own past work. Before it builds or researches something, a recall step checks "have we already done this?" — and usually we have.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Pre-build recall: don't rebuild what exists
&lt;/h2&gt;

&lt;p&gt;Tied to the memory above: a check on each build/research request that surfaces prior work first. The number of times this has caught me about to rebuild something I finished three weeks ago is genuinely embarrassing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The point
&lt;/h2&gt;

&lt;p&gt;None of these are clever individually. Together they turn the agent from an amnesiac genius into something that behaves like a senior engineer who remembers the project and refuses to lie about whether the build is green.&lt;/p&gt;

&lt;p&gt;If you want a running start, I packaged the two highest-leverage pieces — the &lt;strong&gt;CLAUDE.md contract&lt;/strong&gt; and the &lt;strong&gt;verify-before-done&lt;/strong&gt; guardrail — into a small free starter kit. It's drop-in: copy the files, restart, done in about ten minutes. It's pay-what-you-want with a $0 option, no email wall to read it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Free Claude Code Starter Kit: &lt;a href="https://expressive446.gumroad.com/l/qlypgs" rel="noopener noreferrer"&gt;https://expressive446.gumroad.com/l/qlypgs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Built and run by someone who ships with this stack daily. Happy to answer setup questions in the comments.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Claude is a trademark of Anthropic PBC. This is an independent setup guide and is not affiliated with, endorsed by, or sponsored by Anthropic.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>devtool</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
