<?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: Malik Chohra</title>
    <description>The latest articles on DEV Community by Malik Chohra (@malik_chohra).</description>
    <link>https://dev.to/malik_chohra</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%2F1343661%2F5a5ed7f3-f672-4bd4-b592-b57036da4c95.jpg</url>
      <title>DEV Community: Malik Chohra</title>
      <link>https://dev.to/malik_chohra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/malik_chohra"/>
    <language>en</language>
    <item>
      <title>I compared four Claude Code memory tools, and why I still keep a Second Brain</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Sat, 24 Oct 2026 17:48:22 +0000</pubDate>
      <link>https://dev.to/malik_chohra/i-compared-four-claude-code-memory-tools-and-why-i-still-keep-a-second-brain-2kka</link>
      <guid>https://dev.to/malik_chohra/i-compared-four-claude-code-memory-tools-and-why-i-still-keep-a-second-brain-2kka</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Four memory tools for AI coding agents, compared on where memory lives, what it costs in tokens, how hard each is to set up and change, and how stale entries get caught. gstack and Superpowers teach the AI how to work, claude-mem records what happened, ECC stores memory files and treats them as unreviewed.&lt;/li&gt;
&lt;li&gt;A Second Brain answers a fifth way: it keeps what is true about your project right now, with a date on every fact. The free &lt;a href="https://github.com/chohra-med/second-brain-starter?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Second Brain Starter&lt;/a&gt; has the files to copy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I write &lt;a href="https://codemeetai.substack.com/p/how-gstack-superpowers-claude-mem?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, the newsletter where I document how I actually use AI to ship real products, receipts included. New guides land there first.&lt;/p&gt;

&lt;p&gt;Last time, in &lt;a href="https://codemeetai.substack.com/p/how-to-build-a-second-brain-that?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;How to build a Second Brain that stays useful&lt;/a&gt;, I built one from five records and a fresh-session test. Four memory tools for coding agents keep showing up on builders' feeds. Here they are side by side, and next to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four ways to compare memory tools
&lt;/h2&gt;

&lt;p&gt;A new AI session starts empty. Everything it knows about your project comes from what gets loaded in the first seconds.&lt;/p&gt;

&lt;p&gt;Developers gave the AI a memory by hand long before these four existed. The best-known version was the Memory Bank: a folder of structured Markdown files that the assistant reads at the start of a session and updates as it works. &lt;a href="https://docs.cline.bot/customization/memory-bank?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Cline's documentation&lt;/a&gt; describes it that way. I wrote about it for Cursor in &lt;a href="https://codemeetai.substack.com/p/how-to-enhance-cursor-ai-memory-bank?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;How to Enhance Cursor AI Memory Bank&lt;/a&gt; and about the habit itself in &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-02-give-the-ai?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Give the AI a memory&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Three things made it spread:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No tooling.&lt;/strong&gt; The memory is ordinary Markdown files, so any assistant that can read a file can use it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visible.&lt;/strong&gt; You open a file and see what the AI knows about the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Editable and versioned.&lt;/strong&gt; The files live in the repo, so you correct a wrong line by hand and git keeps the history.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Memory handling is more than the start of a session. The tools below are compared on where the memory lives, what loads at the start and what waits until it is asked for, what it costs in tokens, and how a wrong or old entry gets found.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9hlrlcehp04uz9miotdk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9hlrlcehp04uz9miotdk.gif" alt="A box on the left reads 'new session, empty'" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  gstack: a team of roles
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/garrytan/gstack?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;gstack&lt;/a&gt; is &lt;a href="https://x.com/garrytan?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Garry Tan&lt;/a&gt;'s open-source pack of Markdown slash commands. Each command turns Claude Code into one member of a small team: a CEO who challenges the plan, a designer, an engineering manager, a QA tester, a release engineer.&lt;/p&gt;

&lt;p&gt;It has about 137,000 stars and an MIT license.&lt;/p&gt;

&lt;p&gt;You install it by cloning the repo into &lt;code&gt;~/.claude/skills/gstack&lt;/code&gt; and running &lt;code&gt;./setup&lt;/code&gt;. It needs Bun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;/learn&lt;/code&gt;.&lt;/strong&gt; Lets you review, search and prune what gstack picked up about your codebase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design taste.&lt;/strong&gt; A profile of what you approve and reject that fades by 5% a week.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GBrain.&lt;/strong&gt; An optional add-on with a separate knowledge base, which the README calls the memory your agent keeps between sessions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Superpowers: a method the AI follows
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/obra/superpowers?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Superpowers&lt;/a&gt; is a skills framework and a development method by Jesse Vincent and the Prime Radiant team. It has about 304,000 stars and an MIT license.&lt;/p&gt;

&lt;p&gt;On Claude Code you add it with &lt;code&gt;/plugin install superpowers@claude-plugins-official&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Its skills trigger on their own. Before a task, the agent checks whether a skill applies: brainstorming before building, a plan before code, a review before done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Session start.&lt;/strong&gt; A short startup skill, called the bootstrap, is loaded at the start of each session so the agent knows the other skills exist.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Store.&lt;/strong&gt; The README describes no memory store. What Superpowers carries from session to session is a way of working.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  claude-mem: record everything, replay what matters
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/thedotmack/claude-mem?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;claude-mem&lt;/a&gt; is Alex Newman's plugin. It has about 103,000 stars and an Apache-2.0 license.&lt;/p&gt;

&lt;p&gt;Install is &lt;code&gt;npx claude-mem install&lt;/code&gt;. The installer asks you to sign in.&lt;/p&gt;

&lt;p&gt;The README says sign-in unlocks a 30-day free trial of its hosted memory provider, and afterwards memory runs on your Anthropic plan unless you subscribe or bring your own key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Capture.&lt;/strong&gt; Hooks fire at six moments in a session: start, prompt, before a tool, after a tool, stop and end. They send what the agent did to a small local service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Storage.&lt;/strong&gt; The service compresses it with AI and stores it in SQLite, with a vector index for search (a database index that finds notes by meaning as well as by keyword). A &lt;code&gt;&amp;lt;private&amp;gt;&lt;/code&gt; tag keeps a passage out of storage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Replay.&lt;/strong&gt; At the next session start, relevant past context is put back in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g44ty6voaz8gckdxj9a.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g44ty6voaz8gckdxj9a.gif" alt="Six small hook markers along a session timeline (start, prompt, before tool, after tool, stop, end) send events to a local service box" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ECC: memory as unreviewed files
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/affaan-m/ECC?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Everything Claude Code&lt;/a&gt;, now at &lt;code&gt;affaan-m/ECC&lt;/code&gt;, is Affaan Mustafa's bundle of skills, rules, hooks and memory for Claude Code, Codex and others.&lt;/p&gt;

&lt;p&gt;It has about 288,000 stars and an MIT license.&lt;/p&gt;

&lt;p&gt;Install is &lt;code&gt;npx ecc-universal@2.2.3 setup&lt;/code&gt;, the pinned form the README gives, or through the plugin marketplace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Where it lives.&lt;/strong&gt; A Memory Vault stores plain Markdown documents, in &lt;code&gt;.ecc/memory/&lt;/code&gt; for a project and &lt;code&gt;~/.ecc/memory/&lt;/code&gt; for you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Session hooks.&lt;/strong&gt; A session-start hook loads context and a session-end hook saves it. A small set of learned patterns, called instincts, is injected at the start up to a cap.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trust.&lt;/strong&gt; The README calls memory unreviewed context, and it says a human promotes accepted knowledge into the project's own documents.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmvfwxvfwa77xeci5saum.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmvfwxvfwa77xeci5saum.gif" alt="Session end saves a note into .ecc/memory/ with an amber 'unreviewed' chip" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Second Brain does differently
&lt;/h2&gt;

&lt;p&gt;This part is my approach. Here is how I read the gap each setup leaves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gstack.&lt;/strong&gt; The roles are the center of its pitch and memory is the smaller part. If the AI plans without being challenged, the roles are aimed at that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Superpowers.&lt;/strong&gt; It teaches the AI how to build. Your project's facts still have to come from somewhere else.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;claude-mem.&lt;/strong&gt; Say you spent Monday moving a login flow from one Supabase project to another. By Thursday it can hand the new session a summary of Monday, which is a strong answer to forgetting. The summary is a history written by a model, so if Monday's plan changed on Tuesday, the history holds both and the new session has to work out which one is current.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ECC.&lt;/strong&gt; Someone has to decide which saved note is true, and it leaves that step to you.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Second Brain keeps current facts in plain files you own, and it makes the review step part of the system instead of leaving it open.&lt;/p&gt;

&lt;p&gt;The shape from Article 2 is five records per project. Rules name the route the AI follows. A facts file holds current values, each with a checked date. A decisions file holds one line per choice with its reason. A roadmap holds open work with evidence. A progress log ends with a Next line.&lt;/p&gt;

&lt;p&gt;The AI reads rules and facts first and the rest on demand. I run a fresh-session test to prove it recovers a decision from the files alone.&lt;/p&gt;

&lt;p&gt;At the last count, on 22 October 2026, my own vault had 645 memory files, 119 skills, 41 commands and 640 session reports. It stays usable because the project records are small, dated and reviewed weekly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four answers side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;Where memory lives&lt;/th&gt;
&lt;th&gt;Loads at session start&lt;/th&gt;
&lt;th&gt;How a stale entry gets caught&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;gstack&lt;/td&gt;
&lt;td&gt;Per-project learnings, optional gbrain knowledge base&lt;/td&gt;
&lt;td&gt;Roles load when you call them&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/learn&lt;/code&gt; lets you review and prune&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Superpowers&lt;/td&gt;
&lt;td&gt;No memory store in the README&lt;/td&gt;
&lt;td&gt;A bootstrap skill, then skills as tasks need them&lt;/td&gt;
&lt;td&gt;Not a memory feature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-mem&lt;/td&gt;
&lt;td&gt;SQLite plus a vector index, local service&lt;/td&gt;
&lt;td&gt;Relevant past context, injected by hooks&lt;/td&gt;
&lt;td&gt;No stale-entry check; &lt;code&gt;&amp;lt;private&amp;gt;&lt;/code&gt; only keeps passages out of storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECC&lt;/td&gt;
&lt;td&gt;Markdown files in &lt;code&gt;.ecc/memory/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Hook-loaded context and a capped set of instincts&lt;/td&gt;
&lt;td&gt;You review and promote into project docs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Second Brain&lt;/td&gt;
&lt;td&gt;Five Markdown records per project&lt;/td&gt;
&lt;td&gt;Rules and facts first&lt;/td&gt;
&lt;td&gt;Checked date on every fact, weekly review&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last column is the one I weigh most, because an old entry read with confidence is the failure that costs me the most time. Each of the four rows solves a different problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tokens and answer quality
&lt;/h2&gt;

&lt;p&gt;Each setup spends tokens in a different place. What follows is what the READMEs say about their own design. Measured token use and answer quality are a separate test.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gstack.&lt;/strong&gt; It ships &lt;code&gt;gstack-context-bill&lt;/code&gt;, a read-only audit of what an installed skills tree costs in tokens: the always-on frontmatter every session pays, against the skill text that loads when you call one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Superpowers.&lt;/strong&gt; The startup bootstrap loads each session and skills load when a task triggers them. The README has a diagnosing skill for sessions that burn more tokens than you expect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;claude-mem.&lt;/strong&gt; Search works in layers: a compact index first, at about 50 to 100 tokens per result, then full details only for the results you pick, at about 500 to 1,000 each. The README claims about 10 times fewer tokens from filtering first. That figure is the author's claim.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ECC.&lt;/strong&gt; Skills load on demand and rules are always loaded, so the README says to install rules selectively. Injected instincts are capped at 6 by default, with a minimum confidence of 0.7.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Second Brain.&lt;/strong&gt; Rules and facts load first and the rest on demand. The records stay small because each holds one kind of thing and gets reviewed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Which one fits which problem
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The AI plans without pushback.&lt;/strong&gt; gstack's roles are built for that. Start there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The AI skips steps or builds before it plans.&lt;/strong&gt; Superpowers makes the steps a habit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The AI forgets what happened last week.&lt;/strong&gt; claude-mem replays history automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want portable memory files across tools.&lt;/strong&gt; ECC's vault is plain Markdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The AI is confident about a fact that stopped being true.&lt;/strong&gt; A dated record makes each fact's age visible. The other setups catch stale entries through manual review or pruning.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can run more than one. A skill pack for how to work and a Second Brain for what is true is a combination I would choose before any single one of these.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn6auxbhgmvjq1i5t7i19.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn6auxbhgmvjq1i5t7i19.gif" alt="Five problems on the left (plans without pushback, skips steps, forgets last week, files across tools, confident about an old fact) each connect in turn to one " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup and personalization
&lt;/h2&gt;

&lt;p&gt;The same five, compared on how much work it is to start and how much you can change.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;Personalization&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;gstack&lt;/td&gt;
&lt;td&gt;Clone the repo into &lt;code&gt;~/.claude/skills/gstack&lt;/code&gt; and run &lt;code&gt;./setup&lt;/code&gt;. It needs Bun. Team mode adds a command that commits the setup into the repo.&lt;/td&gt;
&lt;td&gt;The commands are Markdown files and the README says to fork it and make it yours. Model choices per host are settings, and some hooks are opt-in.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Superpowers&lt;/td&gt;
&lt;td&gt;One plugin command on Claude Code.&lt;/td&gt;
&lt;td&gt;The README points to forking the repo for changes and gives one opt-out setting, for telemetry.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-mem&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;npx claude-mem install&lt;/code&gt;, a browser sign-in, and a local background service with its own database.&lt;/td&gt;
&lt;td&gt;A settings file controls the AI model, worker port, data directory and what context is injected. A &lt;code&gt;&amp;lt;private&amp;gt;&lt;/code&gt; tag keeps a passage out.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECC&lt;/td&gt;
&lt;td&gt;An &lt;code&gt;npx&lt;/code&gt; command or the plugin marketplace, across several coding tools. The README warns against stacking install methods.&lt;/td&gt;
&lt;td&gt;A &lt;code&gt;/ecc:configure-ecc&lt;/code&gt; skill reconfigures it, and a setting caps how many instincts are injected. Memory has a project scope and a user scope.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Second Brain&lt;/td&gt;
&lt;td&gt;Copy the plain Markdown files of the free &lt;a href="https://github.com/chohra-med/second-brain-starter?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Second Brain Starter&lt;/a&gt;. The assistant shows the setup plan before it writes anything. The initializer needs Node.js 22 or newer.&lt;/td&gt;
&lt;td&gt;Everything it loads is a Markdown file you open and edit. The rules file decides the route, and you add the facts and decisions yourself.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The free &lt;a href="https://github.com/chohra-med/second-brain-starter?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Second Brain Starter&lt;/a&gt; is plain Markdown. Open it in Claude Code or Codex and type &lt;code&gt;Set this up for me&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This one came from &lt;a href="https://codemeetai.substack.com/p/how-gstack-superpowers-claude-mem?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-four-claude-code-setups-handle-memory" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, the newsletter where I write up the setups I actually run on my own projects.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Why I keep a Second Brain for Claude Code, and why you should too</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Fri, 23 Oct 2026 12:44:52 +0000</pubDate>
      <link>https://dev.to/malik_chohra/why-i-keep-a-second-brain-for-claude-code-and-why-you-should-too-34h8</link>
      <guid>https://dev.to/malik_chohra/why-i-keep-a-second-brain-for-claude-code-and-why-you-should-too-34h8</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AI forgets, cannot see what lives in your notes and calls, and answers with full confidence anyway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The fix is a Second Brain: plain files, one record per project and one per client, that every tool and person reads before work starts. The free &lt;a href="https://choumed.gumroad.com/l/nhgsxf?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;Second Brain Starter&lt;/a&gt; is where to begin.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I write &lt;a href="https://codemeetai.substack.com/p/why-every-builder-needs-a-second?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, the newsletter where I document how I actually use AI to ship real products, receipts included. New guides land there first.&lt;/p&gt;

&lt;p&gt;I use a Second Brain every day: plain files that Claude Code and my other AI tools read before they start work. Counted on 22 October 2026, it holds 645 memory files, 119 skills, 41 commands and 640 session reports. This is why I have one, and why I think you should too: six places AI goes wrong across projects, and the file that fixes each.&lt;/p&gt;

&lt;p&gt;AI started as &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-01-the-art-of-prompting?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;prompting&lt;/a&gt;. You typed a question, it typed back, and the whole skill was in how you asked.&lt;/p&gt;

&lt;p&gt;Then it became &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-04-context-engineering?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;context engineering&lt;/a&gt;. Same model, but now you decide what it reads before it answers: your files, your rules, your examples.&lt;/p&gt;

&lt;p&gt;Then came tools. With &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-05-get-started?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; the model stopped only talking. It could open your inbox, read your calendar, run a command, and react to what came back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q5yp8p83go32ytzdpqv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q5yp8p83go32ytzdpqv.gif" alt="Three boxes light up in order, prompting, context and tools, and a fourth empty box is labelled where the project lives." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is a good place to be. AI is better than it has ever been, and every week a new tool does something that looked impossible last year.&lt;/p&gt;

&lt;p&gt;So why does it still go wrong when you have more than one project?&lt;/p&gt;

&lt;p&gt;One thing did not come with the upgrade: a place where the project lives. The model can read whatever you point it at, but it does not know what to point at. With three or four projects it forgets what you told it last week, it cannot find the file that holds the answer, and it fills the gap with something that sounds right.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI forgets too
&lt;/h2&gt;

&lt;p&gt;When a team forgets why a project works the way it does, we call it a communication problem. With AI the same thing happens in three ways.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It forgets.&lt;/strong&gt; Every new chat starts from zero, so last week's work is gone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It has no access.&lt;/strong&gt; The answer sits in a note, a call or someone's head, and the model never sees it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It is confident anyway.&lt;/strong&gt; This is the one that hurts.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A person who does not know says "I do not know". The AI says the wrong thing in the same calm voice it uses when it is right. You read a clean answer, you think it is 100% true, and you have no way to check. Worse, the wrong part goes into the chat and becomes context, so the next answer builds on it. One dumb thing, said once, gets repeated as if it was settled.&lt;/p&gt;

&lt;h2&gt;
  
  
  You explain the same project again and again
&lt;/h2&gt;

&lt;p&gt;Say it is Monday. You open a chat to get help with your app, and you spend twenty minutes saying what the product is, who it is for, what you built last week and what must be left alone. The answers are good.&lt;/p&gt;

&lt;p&gt;On Wednesday you switch to another tool for another job, and it knows nothing. You type the whole thing again from memory, and the detail that mattered most, the one that would have stopped the bug, is the one you forget.&lt;/p&gt;

&lt;p&gt;The easy fix is one project record. A single file at the root of the project that says what it is, who it is for, the current state and the next action. Every tool reads it before it does anything. You write the explanation once, and each chat starts where the last one stopped.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcxngy6ujqv8x7lf1nj8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcxngy6ujqv8x7lf1nj8.gif" alt="Before, three chats each hold a different half-copy of a project. After, one project record sits in the middle and every chat reads it first." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Decisions get made and then vanish
&lt;/h2&gt;

&lt;p&gt;Suppose you decide to use A instead of B. A is the payment provider with the fees you can live with, and B is the one your partner liked. You agree on a call, you hang up, and nobody writes it down.&lt;/p&gt;

&lt;p&gt;Three weeks later the AI suggests B, politely, with good reasons. Your partner says "see?", and you spend an hour on a decision you already made.&lt;/p&gt;

&lt;p&gt;So keep a decision file. One line per decision: what you chose, what you turned down, why, who decided and the date. Write it right after the call, in the file the next session reads.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The reason is the part people drop first, and it is the part that stops the argument from coming back.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz4d0kklo50pqtzyctqf7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz4d0kklo50pqtzyctqf7.gif" alt="A decision line fills in field by field, chose A, turned down B, reason, owner and date, then is stamped into the decision file." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI reopens what you already settled
&lt;/h2&gt;

&lt;p&gt;Take the other side. You did write the decision down, in a notes app, in a doc, in a chat from last month. The AI never saw it, so it treats the question as open and argues for B again.&lt;/p&gt;

&lt;p&gt;Writing it down is half the job. The other half is telling the model it is settled. Keep a short list of closed decisions inside the project record, each with its reason, in the part that is read first. A decision with a reason attached is much harder to reopen by accident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context leaves with the person
&lt;/h2&gt;

&lt;p&gt;This version costs money. Take one client account. The account lead knows the client was promised a faster turnaround last spring. They know the client said no to one format, and that approvals go through one person on Fridays. None of it is in the CRM, which keeps deal values, dates and activity but has no field for the promise or the reason behind it.&lt;/p&gt;

&lt;p&gt;Then the account lead goes on holiday, or leaves. The next person meets the client without the history, and the AI helps them no more than it helps anyone else, because it cannot read what was never written.&lt;/p&gt;

&lt;p&gt;The fix is one client record per account. It holds the brief, the dated decisions with reasons, what the client said no to, the promises made and the next action. Whoever covers the account, person or AI, reads it first. The record outlives the person.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjnsnqzujajtaf4kg105.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjnsnqzujajtaf4kg105.gif" alt="Before, tools, a notes file and the account lead each keep their own copy. After, all of them read one client record." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Each tool keeps its own copy, and the copies drift
&lt;/h2&gt;

&lt;p&gt;Claude, Cursor, Codex and Gemini each want their own rules file. You change a rule in one of them on Tuesday. A month later two of the four disagree, and the AI follows the old one without telling you.&lt;/p&gt;

&lt;p&gt;Keep one rules file as the source. Give each tool a one-line file that points to it, and link one shared &lt;a href="https://codemeetai.substack.com/p/use-ai-properly-07-skills-101?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;skills&lt;/a&gt; folder into each tool's own path. The copies stop existing, so they cannot drift.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dnhz1cgharnjlqm6kng.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dnhz1cgharnjlqm6kng.gif" alt="Four tool files, each with its own rules, collapse into one source file with four one-line pointers." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Files go stale, and the AI trusts them
&lt;/h2&gt;

&lt;p&gt;Last month you moved the project from Firebase to Supabase. The record still says Firebase. The AI reads it, writes for the old database with full confidence, and the result breaks in a way that looks like a bug in your own work.&lt;/p&gt;

&lt;p&gt;A wrong file is worse than no file, because nobody doubts it. Put a last-checked date on each section, and check the record whenever the project changes: you swap a tool, a client leaves, a decision is reversed. A rule that a script can test becomes a &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-06-what-are-hooks?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;hook&lt;/a&gt;, which runs at a fixed point whether the model agrees or not. A rule that needs judgement stays in the record, as a request.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Second Brain is, in one sentence
&lt;/h2&gt;

&lt;p&gt;A Second Brain is a set of plain files, one record per project and one per client, that every AI tool and every person reads before work starts, and that gets written back after each decision. It is a folder with a discipline attached.&lt;/p&gt;

&lt;p&gt;The layout follows ICM, the Interpretable Context Methodology: a small routing file points the AI to the one file it needs, so it does not have to load everything.&lt;/p&gt;

&lt;p&gt;This is mine, drawn as a graph. Every dot is a note, and the lines are the links between them. When the AI starts a session, this is what it can walk through instead of starting from zero.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fheupro7d7ddgdozylfxs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fheupro7d7ddgdozylfxs.png" alt="Obsidian graph view of Malik's second brain: a dense network of dots, each one a note, joined by lines that are the links between them." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do this week
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Count the repeats.&lt;/strong&gt; For five working days, note each time you explain the same thing to an AI tool, and which tool it was. The count tells you which record to build first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write the decision line.&lt;/strong&gt; After each call or chat where something gets decided, add one dated line to the project file: the decision, the reason, the owner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the leave test on one account.&lt;/strong&gt; Pick one client. Ask whether the next person could open one file and find the promises, the no's and the next action. If not, that file is your first client record.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A plain Markdown starting point for all of it is in the free &lt;a href="https://github.com/chohra-med/second-brain-starter?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;Second Brain Starter&lt;/a&gt;. For how to sort the folders once you have a few records, see &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-11-how-to-organise?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;how to organise your files for AI&lt;/a&gt;, Episode 11 of Using AI, properly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This one came from &lt;a href="https://codemeetai.substack.com/p/why-every-builder-needs-a-second?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=second-brain-article-1" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, the newsletter where I write up the setups I actually run on my own projects.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Second brain 101: what your AI loads at session start, and what it drops</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Thu, 20 Aug 2026 08:27:19 +0000</pubDate>
      <link>https://dev.to/malik_chohra/second-brain-101-what-your-ai-loads-at-session-start-and-what-it-drops-1k38</link>
      <guid>https://dev.to/malik_chohra/second-brain-101-what-your-ai-loads-at-session-start-and-what-it-drops-1k38</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An operating system for your AI is one folder it reads before it works and writes back to when it learns. The folder takes an afternoon. The write-back is the part that makes it a system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Not all of it loads.&lt;/strong&gt; One short index file loads at session start, and a detail file gets opened only when something in the index points at it. Past &lt;strong&gt;200 lines or 25 KB&lt;/strong&gt; the rest of the index is dropped, quietly, with nothing in the transcript to tell you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is read first and in full, and the runtime walks up the folder tree from wherever you launched. &lt;strong&gt;Put it one folder down and it is not there at launch.&lt;/strong&gt; It gets read later, on demand, the first time your AI opens a file in that folder. Mine is 41,480 bytes and lives in &lt;code&gt;00-Meta/&lt;/code&gt;, so &lt;strong&gt;8 of my 31 commands&lt;/strong&gt; pull it in by name and the other 23 do not.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rules are read. Hooks are run. Anything that has to happen every time, and not most times, is a hook.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The receipt after a few months of this: 465 memory notes, 474 entries in my own decision log, 454 in both places under the same filename, 441 carrying the write-back footer. I typed none of it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This piece is from &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-10-create-your?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where I document how I actually use AI to ship real products, receipts included.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI for techies · 10.&lt;/em&gt; Last time I went through &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-09-how-to-create?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;how to create your own commands&lt;/a&gt;, which is one saved job you run again by typing one word. This one is about the place all those jobs run inside.&lt;/p&gt;

&lt;p&gt;By now you have the pieces. An instructions file. A skill or two. A command you actually use. Maybe a second agent you hand the boring half of a job to.&lt;/p&gt;

&lt;p&gt;Each one works. None of them is broken. And you still open a new session by explaining where things are, which project, what you settled last week, why that folder is named that.&lt;/p&gt;

&lt;p&gt;This is mine. Every dot is one file, every line is a link between two of them, and the folders down the left are the whole filing system.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyongkhs1byisrkug6brb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyongkhs1byisrkug6brb.png" alt="Graph view of my Obsidian vault. Several hundred note dots wired together by link lines, with the numbered PARA folders listed down the left side." width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the pile of parts problem
&lt;/h2&gt;

&lt;p&gt;The pieces do not know about each other.&lt;/p&gt;

&lt;p&gt;What your AI worked out on Monday is not in the file it reads on Tuesday. It found the answer, you moved on, and the answer stayed in a chat window that is closed now. Next week you ask the same question and it starts from nothing.&lt;/p&gt;

&lt;p&gt;So you pay for the same thing twice. Once to work it out, and once to hold it in your own head well enough to say it out loud again.&lt;/p&gt;

&lt;p&gt;A pile of good parts is not a system. What makes it a system is that the end of one session is the start of the next one.&lt;/p&gt;

&lt;h2&gt;
  
  
  an operating system is one folder and one loop
&lt;/h2&gt;

&lt;p&gt;One folder your AI reads before it works, and writes back to when it learns.&lt;/p&gt;

&lt;p&gt;That is the whole sentence. The folder is the easy half and you can build it in an afternoon. The loop is the thing: read, work, write back, and the next session opens on what the last one learned.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjx5y547zal3yre0041nj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjx5y547zal3yre0041nj.gif" alt="Two halves. On top, three pieces file into one folder and stop. Below, a closed circuit runs read, work, write back, and returns into the next session's read." width="800" height="460"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A folder is a one way trip. The loop is what sends the next session back in.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the eight parts
&lt;/h2&gt;

&lt;p&gt;Most of these you already run one at a time.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The folder.&lt;/strong&gt; Files on disk, sorted by what you are doing with them. That is all it is.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The memory.&lt;/strong&gt; Your AI writes its own notes and keeps them in its own folder, not in yours, which is &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-02-give-the-ai?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;how you give it a memory&lt;/a&gt;. Mine holds 465 of them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The rules.&lt;/strong&gt; A &lt;code&gt;CLAUDE.md&lt;/code&gt; is the file that gets read first, in full, before any work starts, and &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-04-context-engineering?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;what you write down once&lt;/a&gt; is most of the job.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The skills.&lt;/strong&gt; One kind of job, saved as a folder. It costs you nothing until it is used: your AI sees the name and one line about when to reach for it, and opens the body only when a job matches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The agents.&lt;/strong&gt; A second AI with an empty head. It does not get the main session's memory, and that is the one that catches people out. What it needs goes in the prompt you send it, or it works blind. Six of these sit in my personal agents folder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The hooks.&lt;/strong&gt; Rules are read, hooks are run, and &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-06-what-are-hooks?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;this one&lt;/a&gt; is where I went through them properly. A hook is a small program the tool itself runs at a fixed moment, whatever the model decides. I have seven, on four moments: before a tool runs, after a tool runs, when I send a prompt, and when the session stops.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The commands.&lt;/strong&gt; A prompt you saved in a file, so you type one word instead of ten lines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The write-back.&lt;/strong&gt; At the end of a session, what was learned gets written back into the folder it was read from. Nobody writes about this one, and it is the part that turns seven good pieces into a loop.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  what actually loads, and what does not
&lt;/h2&gt;

&lt;p&gt;This is where the tidy version is wrong, and being exact here saves you an afternoon of wondering why your AI ignored a note you can see on disk.&lt;/p&gt;

&lt;p&gt;Pointing it at your notes folder does not mean it reads your notes.&lt;/p&gt;

&lt;p&gt;One short index file loads at the start of every conversation. A detail file gets opened only when something in the index points at it. So the index has a budget, and it is a hard one: past 200 lines or 25 KB, the rest is dropped. Quietly. Nothing in the transcript says a word about it. Mine sits at 117 lines and 22,252 bytes, which is closer to that ceiling than I am comfortable with.&lt;/p&gt;

&lt;p&gt;Skill bodies behave the same way. Name and trigger line up front, body on request.&lt;/p&gt;

&lt;p&gt;Hooks sit apart from both, because a hook is the only one of the three that is not a suggestion.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgck1dpl8yi2fwlpljhun.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgck1dpl8yi2fwlpljhun.gif" alt="Three bands in load order. At session start: the rules file walking up the tree, plus the memory index. Opened on request: 464 memory detail files and skill bodies. Set apart below: the hooks, which run whatever the AI decides." width="800" height="460"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The folder holds 465 files and the index is one of them, so the detail files are 464.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  where your CLAUDE.md really sits
&lt;/h2&gt;

&lt;p&gt;The runtime walks up the folder tree from wherever you opened the session and reads every &lt;code&gt;CLAUDE.md&lt;/code&gt; it finds on the way. In full, before any work starts.&lt;/p&gt;

&lt;p&gt;So placement is load-bearing. Put it where you start, not one folder down.&lt;/p&gt;

&lt;p&gt;Mine is 41,480 bytes and it lives in &lt;code&gt;00-Meta/&lt;/code&gt;. There is no &lt;code&gt;CLAUDE.md&lt;/code&gt; at the top of my vault. When I open a session at the top, that file is not loaded at launch.&lt;/p&gt;

&lt;p&gt;It is not invisible either, and this is the part that gets stated wrong in both directions. It gets read later, on demand, the first time my AI opens a file in that folder, which is after the work has already begun. Eight of my 31 commands pull it in by name, so those eight get it up front. The other 23 do not.&lt;/p&gt;

&lt;p&gt;If a rule has to be in the room from the first token, the file has to sit at the level you launch from. Otherwise you are relying on the work happening to walk past it.&lt;/p&gt;

&lt;h2&gt;
  
  
  three ways in
&lt;/h2&gt;

&lt;p&gt;The effort climbs with each one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It already does some of this.&lt;/strong&gt; Auto memory is on by default, and any &lt;code&gt;CLAUDE.md&lt;/code&gt; above your working folder is read in full when you launch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You ask for it in plain words.&lt;/strong&gt; Say "remember that". Say "add this to &lt;code&gt;CLAUDE.md&lt;/code&gt;". Say "save that as a skill". It writes the file, in the right place, and you never have to learn the folder layout. &lt;code&gt;/init&lt;/code&gt; will write you a first &lt;code&gt;CLAUDE.md&lt;/code&gt; from the project you are sitting in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You set it up so it is always there.&lt;/strong&gt; The docs are blunt about the difference: "Settings rules are enforced by the client regardless of what Claude decides to do. CLAUDE.md instructions shape Claude's behavior but are not a hard enforcement layer." So anything that must happen every time is a hook. Not a line of instructions.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F80n70a58yacm0j1f7vds.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F80n70a58yacm0j1f7vds.gif" alt="Three rows of rising effort. It already does it, auto memory and rules files read at launch. You ask for it, remember that or save that as a skill. You set it up, a hook, because a rule is read and a hook is run." width="800" height="460"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A rule is read. A hook is run. That is the whole difference between rows two and three.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the loop on my own disk
&lt;/h2&gt;

&lt;p&gt;My &lt;code&gt;/endSession&lt;/code&gt; command has a phase 3, and it is a few lines of plain English. New facts about how to work with me or my projects go to memory files, plus one line in the index, plus a stub in the vault's decision log.&lt;/p&gt;

&lt;p&gt;Here is what those few lines produced.&lt;/p&gt;

&lt;p&gt;The memory folder holds 465 notes. My own decision log holds 474. 454 of them exist in both places under the same filename, and 441 carry the same footer line saying they were written out from the memory bank.&lt;/p&gt;

&lt;p&gt;I did not type any of that. The session that learned the thing wrote it down on the way out, and the next one opened on it.&lt;/p&gt;

&lt;p&gt;That is the loop. The folder my AI read from is the folder it wrote to.&lt;/p&gt;

&lt;h2&gt;
  
  
  where to start
&lt;/h2&gt;

&lt;p&gt;Do not build the whole thing. Pick the one thing you explained to your AI twice this month.&lt;/p&gt;

&lt;p&gt;At the end of your next session, say: write that into &lt;code&gt;CLAUDE.md&lt;/code&gt; so you have it next time. Then open a new session tomorrow and check whether it did.&lt;/p&gt;

&lt;p&gt;If it did, you have a loop, and everything after that is filling it in.&lt;/p&gt;

&lt;p&gt;If you would rather not start from empty, the prompt that builds the whole folder is in my guide, &lt;a href="https://choumed.gumroad.com/l/nhgsxf?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;Build a second brain with Obsidian and Claude Code&lt;/a&gt;. Paste it in and it writes the files for you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This one came from &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-10-create-your?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap10" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, the newsletter where I write up the setups I actually run and the numbers come off my own disk. Next episode is how to keep this working once the folder gets big.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Wire AI Is Live: Beta tester open</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Thu, 30 Jul 2026 16:19:58 +0000</pubDate>
      <link>https://dev.to/malik_chohra/let-the-model-write-the-content-never-the-control-flow-12aj</link>
      <guid>https://dev.to/malik_chohra/let-the-model-write-the-content-never-the-control-flow-12aj</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Wire AI is live and early access is open. It's an AI-native growth engineer for mobile apps: your React Native app embeds an SDK, a LangGraph backend decides what to ask each user next, and deterministic code owns the routing while the model only generates content. On one live app, activation went from 69% to 93%. 15 early-access seats, 3 taken, free and installed by hand.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is part of my Code Meet AI newsletter: &lt;a href="https://codemeetai.substack.com" rel="noopener noreferrer"&gt;https://codemeetai.substack.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Wire AI is live today, and early access is open.&lt;/p&gt;

&lt;p&gt;It's the AI-native growth engineer for mobile apps: AI that replaces your growth team. It runs four versions of every step of your users' journey, live at once, and keeps what makes them stay.&lt;/p&gt;

&lt;p&gt;On the first app it ran on, activation went from 69% to 93%.&lt;/p&gt;

&lt;p&gt;15 seats. 3 are already gone. Free, installed by me personally, and there's no price attached because I haven't set one yet.&lt;/p&gt;

&lt;p&gt;Below: what it does, what already shipped, what's still rough, and how to claim one of the 12 that are left.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Your users' journey has stages. They onboard, they get a plan, they hit their first real win, they get asked for a review. Wire AI runs four versions of each of those stages, live, at the same time. Users are assigned to a version and stay in it, the funnel says which version keeps more of them, and the winner gets promoted.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F71gqcrr15loppkrwmucg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F71gqcrr15loppkrwmucg.png" alt="The learning loop: four versions of every journey stage, the winner promoted, every finished journey feeding the next round." width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then the part a testing tool doesn't do. Every finished journey feeds back in: Wire reads what happened and writes a sharper variant for the next round.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It isn't a dashboard that tells you to go run a test. It's the loop, already running.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What that looks like in your codebase
&lt;/h2&gt;

&lt;p&gt;Your React Native app embeds a small SDK. When a user opens the app, the SDK talks to a backend I run, and that backend decides, one screen at a time, what to ask that specific person next. It renders as native cards. Not a webview, not a chat window bolted onto your product.&lt;/p&gt;

&lt;p&gt;At the end it hands your app a structured plan you can save and act on, and every step streams into a funnel you can read.&lt;/p&gt;

&lt;p&gt;So instead of writing an onboarding once and guessing for the next two years, you write a config and the AI runs it.&lt;/p&gt;

&lt;p&gt;The part that makes it work is boring on purpose. Deterministic code controls the flow and the model only generates content. Routing is a pure function of where the session is, how many questions are left, whether the user is bailing, so the whole flow is testable without a model in the loop.&lt;/p&gt;

&lt;p&gt;The AI writes the next question, grounded in every answer the person already gave, and writes the final plan. Everything it emits gets validated against a fixed vocabulary of components before it's allowed anywhere near a screen.&lt;/p&gt;

&lt;p&gt;That's the difference between a generative UI demo and something you can put in front of paying users. Most AI UI demos let the model draw whatever it wants and hope. This one gives the model a small, checked job and keeps the state machine in code where it belongs.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgoknj8qtipckqf946t2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgoknj8qtipckqf946t2d.png" alt="How a single turn runs, from the app through A2A to a schema-checked card." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What that gets you
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A journey that adapts per user.&lt;/strong&gt; The static onboarding asks everybody the same seven questions in the same order. Wire AI asks what follows from what the person just said, stops when it has enough, and skips what it can already infer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Experiments that run without you.&lt;/strong&gt; A/B/C/D variants across the journey, five stages, four arms, twenty combinations, without anybody sitting in a meeting deciding which to try next. This is the direction the product is built toward and I'll be straight about where it sits today, further down.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A funnel you can actually read.&lt;/strong&gt; Completion, drop by step, time per screen, and the transcript of any individual session so you can read exactly what the AI asked and what the person answered. Most apps at this stage are guessing about where users give up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You find out who your users actually are.&lt;/strong&gt; Wire AI reads every session and hands you the patterns: what people came for, which question makes them hesitate, which wording converts. Most founders are still running on a persona doc written before launch.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Our pilot client, and what actually happened
&lt;/h2&gt;

&lt;p&gt;I can't name the app, that's a client boundary I hold. What I can tell you is what it does: it helps people find spots to hang out. Live React Native app, real users, and an onboarding people were quietly dropping out of.&lt;/p&gt;

&lt;p&gt;Here's the run, in the order it happened.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We started with an experiment, not a redesign.&lt;/strong&gt; Three versions of the onboarding running live at the same time, users assigned stickily so nobody got a different flow on their second open, every version chasing the same goal event. Nobody sat in a room deciding which one was better.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The first read was wrong, and the loop is what caught it.&lt;/strong&gt; One arm came back looking like a 17 point winner. At around fifty sessions that feels like a result, and it's exactly the moment a human growth team ships it and builds the next quarter on top. At scale it was worth about three and a half points. Mostly noise wearing a nice hat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The version that actually won was the short one.&lt;/strong&gt; The deep, thorough discovery flow lost to a fast one of about eight screens. On a flow with no real leak in it, where every individual question converts in the high nineties, length turned out to be the only lever that moved anything.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Then the part I didn't expect: we found out who the users actually were.&lt;/strong&gt; The product context we had written assumed one kind of person, someone new to the city looking for places. The answers said something else. Younger, local, born there, social, budget conscious. My actual reaction, reading the answers: wait, these people already live here. We had spent months onboarding a user who didn't exist.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;So we rewrote the messaging to the real one.&lt;/strong&gt; New product context, questions rewritten for the person who actually shows up, one question cut completely because it was seasonal noise nobody cared about, and a guard added so the AI stops asking the same thing twice in different words.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Three learning loops in, activation had gone from 69% to 93%&lt;/strong&gt;, and the first movement showed up inside the first week of running live.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two honest caveats on that number, because it's the one people will quote. It's activation on one app, in one category, over one window, so it isn't a portfolio of case studies and I won't dress it up as one.&lt;/p&gt;

&lt;p&gt;And the winning arm's completion rate moved by about thirteen points between generations of the experiment, which is a reminder that you read these numbers per run, never all-time. That lesson cost me a re-read of my own dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  What already shipped
&lt;/h2&gt;

&lt;p&gt;Not a landing page and a waitlist. These pieces exist and run.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The SDK is open source.&lt;/strong&gt; &lt;code&gt;wireai-rn&lt;/code&gt; on npm, MIT licensed, eleven built in components with validated schemas, six adapters for different model providers. Swapping providers is one environment variable, so you're not married to whoever is winning this quarter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The transport is an open standard.&lt;/strong&gt; The device and the backend speak Google's A2A over JSON-RPC 2.0, the same contract implemented on both ends. That's how a Python agent graph ends up driving a native React Native screen. One call, one turn, one card.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The backend is a real service.&lt;/strong&gt; Python, FastAPI, LangGraph. Multi tenant, per app keys with scoped access, session state living outside the process so it scales sideways, data in &lt;code&gt;eu-central-1&lt;/code&gt; because GDPR isn't a Q3 problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;There's a console.&lt;/strong&gt; Register an app, edit the config without cutting a release, read the funnel, open any session and read the transcript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It's tested like something people depend on.&lt;/strong&gt; The drop in kit runs 630 tests on every merge, and the agent routing has its own eval suite with an accuracy gate, so "the agent got worse" shows up as a failing build instead of a feeling.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First card lands in about 130 milliseconds, against roughly three and a half seconds when I started. Onboarding is the one screen where a spinner costs you the user permanently.&lt;/p&gt;




&lt;h2&gt;
  
  
  What a seat gets you
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;If Wire AI doesn't lift your activation, you've paid nothing and you still keep the teardown.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the deal in one sentence. Here's everything inside it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Activation Teardown, before you commit to anything.&lt;/strong&gt; I put your existing onboarding through the analysis and send you a report: where people drop, which step leaks, what I would change first and why. It's yours whether you take a seat or walk away, and you don't need to install a single line of code to get it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The install, done by me, by hand.&lt;/strong&gt; Up to four hours on a call, in your codebase, together. Not a docs link and good luck. This is the part that doesn't scale, and it's exactly why there are 15 seats and not 500.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your bugs jump the queue.&lt;/strong&gt; When you hit something broken, and you will, it gets fixed that day instead of queueing behind everything else. That stops being possible the moment this cohort is full.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A direct line to the roadmap.&lt;/strong&gt; What gets built next is what early-access apps need next. At this stage that isn't landing-page language, it's just how the queue works, because there is nobody in front of you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Analytics free to 1 million events a month.&lt;/strong&gt; Any app, not only early access, and it doesn't expire when the beta does.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No price, and that's deliberate. I'm not deciding what Wire AI costs until early access tells me what it's worth, so nobody in these 15 seats gets priced by a guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want back
&lt;/h2&gt;

&lt;p&gt;One thing: the truth, while you use it.&lt;/p&gt;

&lt;p&gt;When a question the AI asks is stupid, say so. When the console confuses you, say so. When a number looks wrong, say so, and that one is worth more to me than any testimonial you could write.&lt;/p&gt;

&lt;p&gt;That's the whole trade. You get the teardown, the install, the queue and the roadmap line. I get the thing I can't buy, which is honest reactions from a real app with real users in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  If it isn't you, it might be someone you know
&lt;/h2&gt;

&lt;p&gt;All three seats that are gone came warm. Somebody knew somebody. Not one came from a cold email, and I have sent a lot of cold emails, so I've stopped pretending that's the channel.&lt;/p&gt;

&lt;p&gt;So if your own app doesn't fit but a name came to mind while you were reading, that's the ask. Forward this to them, or drop the name in a comment and I'll reach out and tell them you sent me.&lt;/p&gt;

&lt;p&gt;Anyone arriving through a referral skips the queue and goes straight to a call. And I'll run the Activation Teardown on your app too, even if you never install anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you say yes, two things you should know
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Only the onboarding stage is live and proven.&lt;/strong&gt; The journey wide experimentation I described up there is the roadmap, not a shipped feature. I'd rather you hear that now than find it out in week two.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;I have an open number I can't explain yet.&lt;/strong&gt; This week my own dashboard read 23% completion on an app that had been finishing north of ninety. I spent a morning on it and I still don't have a clean answer. Best guess is the dashboard, there are two honest ways to compute a completion rate and my headline tile looks like it's reading the wrong one, but I haven't proven it and I'm not going to pretend I have.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both of those are in a launch post on purpose. The product is deliberately incomplete at this stage, and the fastest way to harden it is with a few real apps inside it rather than a year of me polishing it alone. If that reads as a red flag, this isn't the right moment for you and that's a fair call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;You're a fit if you have a React Native or Expo app that's live, with real users going through an onboarding right now, and you're a solo founder or a tiny team where the person who feels the activation problem is also the person who decides.&lt;/p&gt;

&lt;p&gt;It helps if your app already has AI or personalization in it, because then I don't have to sell you the idea and we can go straight to the mechanics.&lt;/p&gt;

&lt;p&gt;You're not a fit if you already have a growth team running experiments every week. Genuinely. A larger company passed on this recently for exactly that reason and they were right to. The value here is removing a person from a loop you don't have. If you have the person, you don't need me.&lt;/p&gt;

&lt;p&gt;Pre launch is also a bad fit, and I say that with some regret because those are usually the most fun conversations. Without traffic there's nothing for the loop to learn from.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to claim a seat
&lt;/h2&gt;

&lt;p&gt;Reply to this email. That's the whole process, there's no form and no demo request.&lt;/p&gt;

&lt;p&gt;Tell me what your app does and roughly how many people go through onboarding in a week. Two sentences is plenty. If it's a fit I'll send you a time this week. If it isn't, I'll tell you straight instead of quietly moving you into a nurture sequence.&lt;/p&gt;

&lt;p&gt;Not sure you qualify? Ask for the teardown anyway. Worst case, you get a report on your own funnel and we both move on.&lt;/p&gt;

&lt;p&gt;12 seats left of 15. The cap is real, because the install is manual and I'm the one doing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I make this
&lt;/h2&gt;

&lt;p&gt;I draft with AI. I've written about my workflow more than once and it'd be strange to hide it here. The receipts, the numbers, the decisions and the opinions are mine, the sentences get a drafting partner and then a lot of editing from me. If that disqualifies me for you, fair enough. If it interests you, that's most of what this newsletter is about.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm Malik, 9 years building mobile apps, React Native and Expo. I write Code Meet AI, where I show what I'm building with AI and what it costs me. Wire AI lives at &lt;a href="https://getwireai.com" rel="noopener noreferrer"&gt;getwireai.com&lt;/a&gt;, and the SDK is open source.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>reactnative</category>
      <category>architecture</category>
      <category>llm</category>
    </item>
    <item>
      <title>Fable 5 vs Opus vs GLM: I had a cheaper model grade the audit of my own code</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Tue, 21 Jul 2026 09:43:04 +0000</pubDate>
      <link>https://dev.to/malik_chohra/fable-5-vs-opus-vs-glm-i-had-a-cheaper-model-grade-the-audit-of-my-own-code-1c64</link>
      <guid>https://dev.to/malik_chohra/fable-5-vs-opus-vs-glm-i-had-a-cheaper-model-grade-the-audit-of-my-own-code-1c64</guid>
      <description>&lt;p&gt;i'm building Wire AI, and the next piece i have to build is the learning loop. It's the self-improving core of the engine: it takes each user's journey inside the app, generates variations of that flow, tests them, and keeps whatever makes people activate and stay. Real implementation work, a big pile of it, and the kind you'd rather not write by hand at frontier prices every single time.&lt;/p&gt;

&lt;p&gt;so i wanted to do that build with a cheaper Chinese model, GLM 5.2, instead of reaching for a frontier model on reflex. one problem. cheap-and-wrong is the most expensive thing there is, and i was not about to let a model i hadn't vetted write production code inside my own engine. so before i trusted it with anything, i gave it a hard, real technical challenge: audit the actual codebase behind Wire AI and tell me where it breaks. not a benchmark, my own code, the files i'd opened a dozen times and thought i understood.&lt;/p&gt;

&lt;p&gt;and i didn't just point GLM at it and hope. i ran the same audit through three models to see where the cheap one really lands: GLM 5.2, the candidate i actually wanted to hire for the build; Opus 4.8, my daily driver and the reference i already trust; and Fable 5, the ceiling. cheap, reliable, frontier, same job, and i'd grade every finding myself.&lt;/p&gt;

&lt;p&gt;Here is what happened, with the receipts, because a feeling is not evidence.&lt;/p&gt;

&lt;p&gt;Most model comparisons you read are benchmark charts on tasks neither you nor the author care about. i wanted the other thing. One real task, my own codebase, the actual numbers off the runs instead of vibes. So i gave three models the identical job inside Claude Code: audit the architecture of this SDK and tell me where it breaks when i build on top of it. Same prompt, same files, same instruction to cite every claim with a real file path. Then i read every output against the source and counted what was actually true.&lt;/p&gt;

&lt;h2&gt;
  
  
  a quick aside on what the codebase even is
&lt;/h2&gt;

&lt;p&gt;The code i audited isn't a side project. It's the engine behind Wire AI, the thing i'm building, and it helps to know what it does before you watch three models take it apart.&lt;/p&gt;

&lt;p&gt;Wire AI finds your app's winning formula. The one-breath version of how: it runs the experience inside your app, the first session a user gets, the moment they finally get it, the parts of the app they find, what they tell you back, then tests the variations itself and keeps the ones that make users stay. You set the goal. The AI runs the loop.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F13kgbj3xbgtiz0mw3plr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F13kgbj3xbgtiz0mw3plr.png" alt="The Wire learning loop. A user's real journey inside the app feeds the engine, the AI writes variations of the flow, tests them on live traffic, keeps whatever makes users stay, and loops the result back in. You set the goal, the AI runs the loop." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the part that's easy to miss, and it's the reason i keep testing this thing against real code. Changing the app with no release isn't the trick, plenty of tools do that now. The difference is who's holding the pen. In the usual setup a person sits in a no-code builder and drags the new flow together by hand. In this one there's no builder and nobody in the middle: the AI writes the variants, runs them, and promotes the winner. That's the whole bet, and it only works if the engine underneath is right.&lt;/p&gt;

&lt;p&gt;The part i keep pointing models at is exactly that engine, the piece that generates and renders those flows at runtime, the server deciding what a given user sees and the app drawing it without a new binary. It's the code with real users behind it, so it's the code i actually need to be right. Which is why i handed it to three different models and read every word back against the source.&lt;/p&gt;

&lt;h2&gt;
  
  
  the audit, scored
&lt;/h2&gt;

&lt;p&gt;GLM 5.2, the cheap one. Opus 4.8, the one i run every day. And Fable 5, the frontier model, the most capable one i have access to. Same job for all three.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjp2w5qzyg223sxwb24f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjp2w5qzyg223sxwb24f.png" alt="Same audit, three models. GLM 5.2 and Opus 4.8 each found the same 5 core problems at 0 hallucinations. Fable 5 found 11, the same 5 plus 6 more, also 0 hallucinations. All 14 re-verified by a cheaper model, 0 refuted." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GLM and Opus found the same five problems. Not similar problems. The same five, down to the files.&lt;/p&gt;

&lt;p&gt;They both caught that my component types get sealed into the bundle at startup, so an agent can't define a component at runtime. They both caught that streaming is dead on the agent path because the adapter never implemented it. They both caught the drift between what my SDK can render, what my server allows, and what my model actually gets told about. They both traced the coupling between the SDK and the agent backend to the same leaky spot. And they both landed on the same fix, make the registry the single source of truth.&lt;/p&gt;

&lt;p&gt;i verified the citations on both. Zero hallucinations, every file path checked out. GLM even found one extra thing Opus missed: a comment in my backend claiming it runs the latest Claude while the code underneath quietly calls a cheaper OpenAI model. The kind of lie your own codebase tells you.&lt;/p&gt;

&lt;p&gt;So on those two it was a tie. One costs roughly ten times less than the other and it found the same five things. If the story ended there the headline writes itself, run the cheap one for audits, go home.&lt;/p&gt;

&lt;p&gt;Then i gave Fable 5 the identical prompt, and it found eleven.&lt;/p&gt;

&lt;p&gt;Not five. Eleven distinct architectural problems, plus three smaller ones it flagged separately as lower severity. The same five the other two found are in there. Then six more, and i checked those against the source the exact same way. The streaming path advertises a sixty second timeout in its own docstring while a hidden thirty second poll cap kills the request first. The mechanism the SDK exports to tell an agent what components exist is built, tested, and wired into nothing. The registry silently ignores a component swap if you keep the same name. The agent card reads a private Zod internal that a supported version of Zod no longer has, so it degrades to typeless without ever throwing an error. Real, cited, reproducible. Zero hallucinations again, and it rated its own weaker findings as medium confidence instead of overselling them.&lt;/p&gt;

&lt;p&gt;Later i ran the inverse experiment, because trusting a frontier model on my own code without a check is exactly the mistake i tell everyone else not to make. i had a cheaper model independently re-verify all eleven findings, line by line, plus the three secondary ones. Fourteen confirmed, zero refuted. The frontier model found the problems, the cheap one confirmed the homework.&lt;/p&gt;

&lt;p&gt;Take one of them, the sixty-versus-thirty-second one. My agent path promises sixty seconds right there in its own docstring, and underneath it a hidden thirty second poll cap kills the request first. i would have built onboarding flows on top of that, watched a perfectly legitimate agent run die at thirty seconds, and burned an afternoon blaming my prompt or the network before i found the real thing. Fable found it by reading. That's the one that landed for me, because it's the exact kind of bug you only ever meet in production, on a user's screen, at the worst possible time.&lt;/p&gt;

&lt;p&gt;That's the finding that reframes the whole comparison. It's not that Fable is a better model on a leaderboard. It's that on a genuinely hard read, depth is not free, and the cheaper models stopped at the obvious layer.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1wz536oj5au6yn9h0z34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1wz536oj5au6yn9h0z34.png" alt="Audit scorecard: GLM and Opus each hit the same 5 core findings with 0 hallucinations. Fable 5 hit 11, the same 5 plus 6 more, also 0 hallucinations, with honest confidence ratings on the harder calls." width="799" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the numbers behind the runs
&lt;/h2&gt;

&lt;p&gt;This is the part i actually care about, pulled from the session logs, not estimated.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;GLM 5.2&lt;/th&gt;
&lt;th&gt;Opus 4.8&lt;/th&gt;
&lt;th&gt;Fable 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Distinct problems found&lt;/td&gt;
&lt;td&gt;5 (+1)&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;11 (+3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hallucinations&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Turns / tool calls&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fresh input tokens billed&lt;/td&gt;
&lt;td&gt;644,000&lt;/td&gt;
&lt;td&gt;88,000&lt;/td&gt;
&lt;td&gt;62,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wall clock&lt;/td&gt;
&lt;td&gt;6.0 min&lt;/td&gt;
&lt;td&gt;18.1 min&lt;/td&gt;
&lt;td&gt;~8 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;$0.59&lt;/td&gt;
&lt;td&gt;~$6&lt;/td&gt;
&lt;td&gt;~$14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few things jump out.&lt;/p&gt;

&lt;p&gt;Token consumption runs the opposite direction from price. GLM billed six hundred and forty four thousand fresh input tokens for the job. Opus billed eighty eight thousand. Fable billed sixty two thousand, the fewest of the three, and it did the deepest read. The two expensive models lean hard on context caching, reusing what they've already read at a steep discount, and that's most of why they can cost more per token and still not blow up on input. You're not just paying for the weights, you're paying for how few fresh tokens the model needs to hold the whole codebase in its head at once.&lt;/p&gt;

&lt;p&gt;But few tokens is not cheap. Fable billed the fewest fresh input tokens and still cost the most, because the frontier price sits on top of every token and its denser output is expensive to generate. GLM is a tenth of that. So the cost curve and the depth curve run in the same direction: you consume more, you get more, and the more here is real problems in real files, not padding.&lt;/p&gt;

&lt;p&gt;Speed didn't track price either. GLM was fastest at six minutes. Fable came in around eight. Opus, on maximum reasoning effort, took eighteen, because i deliberately run it slow and thorough. Fast and cheap didn't mean shallow on the five, and slow and expensive wasn't the deepest. The deepest was the frontier model, at a middle speed. None of the tidy stories hold.&lt;/p&gt;

&lt;h2&gt;
  
  
  then i made one of them build
&lt;/h2&gt;

&lt;p&gt;A read tests reasoning. It doesn't test whether a model can do unattended work. So i ran a second round, GLM only, on a real build: take the drift bug from the audit and fix it properly. Single source of truth, generated manifest, a test that fails if anything drifts again.&lt;/p&gt;

&lt;p&gt;It worked. Ninety two tests passing when i ran them myself, a drift guard that failed correctly when i sabotaged it on purpose, two previously unreachable components wired through end to end. A clean, verified, tested refactor.&lt;/p&gt;

&lt;p&gt;And the build burned nearly seven times what the audit did. Same model, same codebase, one fix. Not because the fix was large, because building unattended means iterating, and iterating burns tokens. Three hundred and seventeen turns. A hundred and twenty seven tool calls, more than half of them just running tests and reading the errors. On a read the cost gap is enormous and it's in GLM's favor. On a long build it closes fast, because the cheap model pays for its discount in extra steps.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuqka2vj0dmabw77s9y3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuqka2vj0dmabw77s9y3g.png" alt="The gap that flips: on the read task GLM is about ten times cheaper than Opus. On the build task the gap closes, because the cheap model burns its savings on debugging loops." width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what each model actually gave back
&lt;/h2&gt;

&lt;p&gt;All three earned a job. That's the real conclusion, and it's more useful than a winner, because it tells me what to do on Monday.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opus is the daily reliable read. It found the same five things GLM did, cited clean, no drama, on the everyday work where the answer sits at the obvious layer. It's the one i trust without babysitting it, and on a long autonomous build the token efficiency i pay for stops being a luxury and becomes the reason the job finishes cheaper than the sticker suggests.&lt;/li&gt;
&lt;li&gt;GLM is the cheap different lens. It found the same five, at six hundred and forty four thousand tokens of brute-force reading instead of clever caching, and it surfaced the one comment the frontier model didn't. i don't care how it got there when the output is right and the run comes in an order of magnitude under the one i trust. For volume reads it's the pick, and even on a build it finishes, it just pays in turns.&lt;/li&gt;
&lt;li&gt;Fable is the surprising deep finder. It found six real problems the other two walked straight past, in the exact files, with honest confidence about the ones it was less sure of. That's the model you point at the thing before you commit six months to building on top of it. One deep read to not ship on top of a broken assumption is the cheapest line item in the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of them replaced the others. Cheap for volume, efficient for endurance, frontier for depth. Better outcome than a leaderboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  where this actually went
&lt;/h3&gt;

&lt;p&gt;Here's the part that isn't abstract. Those findings didn't sit in a doc. They went back into the engine, and the first tenant running it in production felt the difference.&lt;/p&gt;

&lt;p&gt;The sixty-versus-thirty-second bug and the drift bug were the exact kind of thing that shows up as a mystery failure on a real user's phone. Hardening them was the point of the audit. Around the same stretch i chased the first-card latency on the onboarding and it dropped from about 2279ms to 71ms, because i prefetch the adaptive card while the user answers the fixed questions instead of after, so the first screen a user sees is close to instant now.&lt;/p&gt;

&lt;p&gt;And the loop holds. On the live tenant it runs about 88.5% completion with zero server language-model fallbacks, on real production traffic. When the AI tested the flow length itself, the short version, roughly eight screens, won at 92.8% on its arm. Earlier in that tenant's life the same loop found the message that actually resonated and daily installs went from about 100 to 1,000, because it landed on the exact problem users showed up to solve.&lt;/p&gt;

&lt;p&gt;i want to be honest about what that is. It's a set of real receipts, not one clean before-and-after conversion number. i don't have a single "we lifted X%" figure and i'm not going to invent one. What i have: a hardened engine, a first card that went from a beat-and-a-half to instant, a live flow completing in the high eighties to low nineties with nothing falling back to a language model on the server, and an acquisition number that moved because the loop found the words. That's the improvement, stated as the numbers i can actually stand behind.&lt;/p&gt;

&lt;p&gt;That engine is Wire AI, and here's the one line that matters if you build apps. You put AI &lt;em&gt;in&lt;/em&gt; your product, a feature, a chatbot, a recommendation. i let AI &lt;em&gt;run&lt;/em&gt; mine, the loop above is the AI operating the product's experience, not sitting inside it as one more feature. Same instinct you already have, pointed one layer up. The easiest way in costs you nothing. Analytics free to 1M events/month. Forever. Any app. Wire it up and watch where your own funnel actually leaks before you commit to a thing. If you want the loop itself running your product, i'm taking 10 founders into a free founding cohort right now, and the deal is plain: don't pay if we don't improve your activation. i set it up with you hands-on and stay in it with you month to month, no invoice attached. If you just want to see where your app leaks first, i'll run you a free Activation Teardown, one AI report on your real users, ending in "here's what to fix", no strings. If you ship React Native and you've already got AI somewhere in the app, you're exactly who i want in that cohort. Reply and i'll run your teardown.&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest caveats
&lt;/h2&gt;

&lt;p&gt;Four, so nobody quotes this out of context.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is one task type on one codebase. Strong evidence about reading and reasoning over real code. On building it's exactly one data point, GLM only, not a verdict.&lt;/li&gt;
&lt;li&gt;The depth result is one audit. Fable finding eleven where the others found five is a real, verified result on this codebase. It is not a promise the frontier model always doubles the count. Run your own hard task before you trust the pattern.&lt;/li&gt;
&lt;li&gt;The provider matters. i pinned GLM to its first-party host at full precision. The cheaper resellers serving the same model name can be quantized and worse, and then you're measuring the host, not the model.&lt;/li&gt;
&lt;li&gt;And the telemetry isn't perfectly symmetric. The Opus and GLM numbers came from the original run transcripts. Fable's came from a clean re-run of the identical audit, and i've flagged every number that's measured slightly differently instead of smoothing it over.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want the raw data, the full audit from each model, the telemetry table, and the config i used to run all three, reply RECEIPTS and i'll send the breakdown.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>claude</category>
      <category>programming</category>
    </item>
    <item>
      <title>context engineering, simplified</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Tue, 21 Jul 2026 09:43:04 +0000</pubDate>
      <link>https://dev.to/malik_chohra/context-engineering-simplified-ckb</link>
      <guid>https://dev.to/malik_chohra/context-engineering-simplified-ckb</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A prompt is the ask. Context is the ground it stands on: who this is for, what good looks like, the real material, and what to leave alone.&lt;/li&gt;
&lt;li&gt;When the AI gives you generic or wrong output, the reflex is to write a cleverer prompt. Usually the prompt was fine and the context was thin.&lt;/li&gt;
&lt;li&gt;More context is not better context. Dump everything in and the model loses the thread. Curation is the actual skill, and the boundary (what to ignore) is the load-bearing half.&lt;/li&gt;
&lt;li&gt;Write the context down once, in a small set of files next to the code, and every future task starts from ground instead of a guess. Stale context is worse than none, so treat it like a dependency you keep current.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This piece is from &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap04" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where i document how i actually use AI to ship real products, receipts included. New guides land there first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A few weeks ago an AI i built into an app asked a real user to name a beach-party plan. First thirty seconds in the product. The app can technically make a plan called that, so it wasn't a hallucination exactly, it was worse: a real feature dragged to the front because the model had nothing better to go on. i had handed it a one-line description of the app and told it to get the user to a concrete first action. A one-line description is an invitation to guess. So it guessed, confidently, in front of someone i was trying to keep.&lt;/p&gt;

&lt;p&gt;That was the moment context engineering stopped being a phrase i skimmed past and became a bug with a name. And here is the part that should get a senior dev's attention: the failure looked exactly like AI code that compiles clean and still ships a bug. Confident, plausible, wrong. The fix was never a better prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  a prompt is the ask, context is the ground
&lt;/h2&gt;

&lt;p&gt;The prompt is what you want. "Write the migration." "Refactor this service." "Draft the onboarding." Short, and you already know how to write one. Context is everything the model needs to answer that well and doesn't have unless you give it: which service owns this, which files are generated and off-limits, what the system actually does and who is on the other side of it. The prompt points at a target. Context is whether the model can see the target or is throwing in the dark.&lt;/p&gt;

&lt;p&gt;Most bad AI output is not a bad prompt. It is a fine prompt fired into an empty room. The model fills the empty room with the most statistically average thing, and average is exactly what makes you close the tab and call it overhyped.&lt;/p&gt;

&lt;h2&gt;
  
  
  the four things you are actually feeding it
&lt;/h2&gt;

&lt;p&gt;When people say "context," they mean four different things stacked together. It helps to see them apart.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwiog84g455dlv73ko90j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwiog84g455dlv73ko90j.png" alt="The four inputs of a working context: the goal, the ground truth, the constraints, and the boundary, feeding one context window." width="800" height="460"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A prompt is the arrow. These four are the ground it lands on.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal.&lt;/strong&gt; Not the task, the outcome. "Turn these contracts into a tracker" is a task. "so i can see at a glance which renewals are risky this quarter" is the goal. Give the model the why and it makes better calls on the hundred small things you didn't specify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ground truth.&lt;/strong&gt; The real material, not a description of it. This is the one people skip. Don't tell the AI "our style is terse and functional," paste two modules that already read that way. Examples beat adjectives every time. A model shown three real things you like will out-perform any paragraph describing them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The constraints.&lt;/strong&gt; What good looks like and what to never do. The format. The interface it has to satisfy. The generated files it must not edit. Constraints are not the AI's handcuffs, they are how it knows it succeeded instead of guessing at your taste.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The boundary.&lt;/strong&gt; What to leave out and what not to touch. This is the half nobody talks about, and it is coming next, because it is the one that separates people who are good at this from people who just paste more.&lt;/p&gt;

&lt;h2&gt;
  
  
  more context is not better context
&lt;/h2&gt;

&lt;p&gt;Here is the counter-move, and it is the part everyone gets wrong.&lt;/p&gt;

&lt;p&gt;Once you learn that thin context causes bad output, the obvious next step is to feed it everything. The whole repo. The entire history. Every doc, in case it helps. It feels thorough. It is the exact opposite of thorough.&lt;/p&gt;

&lt;p&gt;A model has a working memory, and past a point, adding more doesn't inform it, it distracts it. The signal you actually needed gets buried under fifty files of nearly-relevant noise, and the answer gets vaguer, not sharper. i have watched a model give a worse answer to the same question after i "helpfully" pasted three more files. The good lines were in there. It just couldn't find them anymore.&lt;/p&gt;

&lt;p&gt;So context engineering is not "add context until it works." It is "give it exactly what this task needs, and nothing that competes with that." Curation, not accumulation. Telling the model what to ignore is as load-bearing as telling it what to read. This is the same discipline as scoping a service token: you grant the access the job needs, not everything you own, because blast radius is real whether the risk is a leaked secret or a distracted model.&lt;/p&gt;

&lt;p&gt;The test i use now is embarrassingly simple. Before i paste something in, i ask: does the model need this to answer, or am i adding it to feel safe? The second kind is the noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  how to actually do it
&lt;/h2&gt;

&lt;p&gt;You don't need a framework. You need four sentences before the task, roughly in this order.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;State the goal, not just the task.&lt;/strong&gt; One line on the outcome you're actually after. "so that..." is the most useful phrase in the whole practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show, don't describe.&lt;/strong&gt; Paste two or three real examples of what good looks like. A before, an after, a module you'd be happy to merge. This single move fixes most "it sounds generic" complaints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name the constraints and the anti-goals.&lt;/strong&gt; The format, the interface, the hard limits, and the one or two things it must never do. Short bullets are fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draw the boundary.&lt;/strong&gt; Say what to use and what to ignore. "Only this package." "Don't touch the generated types." "The old implementation is background, not a template."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Four sentences turns a coin flip into something you'd actually ship.&lt;/p&gt;

&lt;h2&gt;
  
  
  write it down once
&lt;/h2&gt;

&lt;p&gt;The last move is what makes this compound instead of repeat. The first time you assemble the context for a recurring job, don't throw it away. Put it in the repo, next to the code it describes. Next time, you point the AI at the folder and add one line for today's task. A five-minute setup becomes a five-second one, and the output stays consistent because the ground under it stopped moving.&lt;/p&gt;

&lt;p&gt;On a real project this is not one file, it is a few, and the names are becoming a standard any agent already reads. &lt;code&gt;PROJECT.md&lt;/code&gt; for what the thing is and why. &lt;code&gt;CONTEXT.md&lt;/code&gt; for what you are working on right now. &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;AGENTS.md&lt;/code&gt; for the rules and conventions you want followed. &lt;code&gt;README.md&lt;/code&gt; for the human who lands cold. And &lt;code&gt;progress.md&lt;/code&gt;, the &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-02-give-the-ai?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap04" rel="noopener noreferrer"&gt;memory file from episode 02&lt;/a&gt;, for what happened last.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk57ytq5ra9d72wfyn5qm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk57ytq5ra9d72wfyn5qm.png" alt="A code editor showing the context files at a project root: AGENTS.md, CLAUDE.md, CONTEXT.md, PROJECT.md, progress.md, README.md, with CONTEXT.md open and filled in." width="800" height="488"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;the context lives in the repo, not in your head. any AI you point at the folder reads it and knows where it is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If episode 02 sounds like it is happening again, that is because it is. A memory folder is context that persists across sessions. A context file is the same instinct pointed at a single repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  where this breaks
&lt;/h2&gt;

&lt;p&gt;Two ways, both worth knowing.&lt;/p&gt;

&lt;p&gt;Stale context is worse than no context. A context file that still describes last quarter's architecture will make the AI confidently wrong, and confidently wrong is the expensive kind. When the thing changes, change the file. It is a living note, not a monument, and it belongs in code review like anything else that drifts.&lt;/p&gt;

&lt;p&gt;And context is not a substitute for the check. Grounding the model dramatically raises the floor, it does not remove your job of reading the diff before you trust it. A non-engineer has no compiler and no test suite to catch a confident lie, but neither does your prose. The review step is the job that does not get automated away, and it is its own episode later in this series.&lt;/p&gt;

&lt;p&gt;The punchline is small and annoying and true: most of the time the AI wasn't wrong because it is dumb. It was wrong because it was guessing, and it was guessing because you didn't tell it the thing you assumed was obvious. Context engineering is just the discipline of saying the obvious thing out loud, once, and then reusing it.&lt;/p&gt;

&lt;p&gt;I put together a context starter pack: the four-line context you write before a task, the set of files that give any AI your whole project's context (PROJECT, CONTEXT, CLAUDE, AGENTS, README, and the progress.md memory file from episode 02, each explained), and the one prompt that sets them up for you. It goes out through the newsletter first.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Written by Malik at &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap04" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;. This is episode 04 of Using AI, properly. Episode 02 was &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-02-give-the-ai?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap04" rel="noopener noreferrer"&gt;give the AI a memory&lt;/a&gt;, episode 03 was &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap04" rel="noopener noreferrer"&gt;put the AI on the work around work&lt;/a&gt;. New guides land there first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;i'm Malik, i've been a mobile engineer for 9 years, and i run my work and this newsletter on the system these episodes describe. Next up: how to make the AI check its own work, before you do.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>aitools</category>
    </item>
    <item>
      <title>Claude Cowork acts across your files now. Confidence is not correctness.</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Tue, 14 Jul 2026 08:12:31 +0000</pubDate>
      <link>https://dev.to/malik_chohra/claude-cowork-acts-across-your-files-now-confidence-is-not-correctness-1p2b</link>
      <guid>https://dev.to/malik_chohra/claude-cowork-acts-across-your-files-now-confidence-is-not-correctness-1p2b</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat makes you drive every step. Cowork flips it: you describe the outcome, it plans the steps, works across your files and connected apps, and hands back the finished thing.&lt;/li&gt;
&lt;li&gt;Anthropic says more than 90% of Claude Cowork usage is not software development. It is expense memos, contract trackers, client decks, folder cleanup. This week it went to web and mobile, and scheduled tasks run with no device online.&lt;/li&gt;
&lt;li&gt;That is a governance surface, not just a convenience. It acts across whatever you connect, and it is confident when it is wrong. Scope the access, keep the review.&lt;/li&gt;
&lt;li&gt;Start with one task you already resent, give it context first, and check its work like a code review.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This piece is from &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap03" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where i document how i actually use AI to ship real products, receipts included. New guides land there first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This Monday Anthropic put a number on something most of us felt but hadn't measured. They expanded &lt;a href="https://anthropic.skilljar.com/introduction-to-claude-cowork" rel="noopener noreferrer"&gt;Claude Cowork&lt;/a&gt; to web and mobile and shared what people actually run on it: more than 90% of usage is not software development. Not code. The biggest categories were business operations and content work. Reconciling the quarter's spend and drafting the memo about it. Turning a folder of contracts into a renewals tracker with the risks flagged. Building tomorrow's client deck from call transcripts.&lt;/p&gt;

&lt;p&gt;They call it "the work around work." Good name. It is the layer of the job that is real work, takes real hours, and somehow is nobody's actual job.&lt;/p&gt;

&lt;p&gt;If you write code, you have had this delegation engine for a year in the terminal. Cowork is that same engine pointed at everyone else's work. The interesting part for us is not the convenience. It is that the tool now acts, on its own, across whatever you connect it to. That changes what "review" means.&lt;/p&gt;

&lt;h2&gt;
  
  
  what Cowork is, in one honest paragraph
&lt;/h2&gt;

&lt;p&gt;You already know chat: you ask, it answers, you ask again. You are the project manager of every tiny step.&lt;/p&gt;

&lt;p&gt;Cowork is the same Claude with a different job description. You hand it an outcome: "turn this folder of contracts into a renewals tracker, flag anything risky." It makes a plan, breaks it into steps, works across the files and apps you have connected, and comes back with the finished thing. While it runs, you do something else. Since this week it follows you: start a task at your desk, check the status on your phone, pick up the result later with the laptop closed. Scheduled tasks run even with no device online.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fakxymrhnx0i98541kftg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fakxymrhnx0i98541kftg.png" alt="Chat versus Cowork: driving every step versus describing the outcome and reviewing the deliverable." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Chat: you drive. Cowork: you describe, then review.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6i7hmoc1lu7m95wc2hrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6i7hmoc1lu7m95wc2hrr.png" alt="Malik's Claude home screen: the Chat and Cowork toggle set to Cowork, model Opus 4.8, with suggested ideas Send me a daily briefing, Organize my inbox, Customize Cowork for me." width="800" height="594"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;my actual Claude home. one toggle flips chat into Cowork, and "send me a daily briefing" is already sitting there as a suggestion.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One tool, two jobs, and the second job is most people's actual day.&lt;/p&gt;

&lt;h2&gt;
  
  
  what people actually run on it
&lt;/h2&gt;

&lt;p&gt;Not moonshots. Chores. The patterns showing up again and again in the early write-ups:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Folder archaeology.&lt;/strong&gt; Sort, rename, and deduplicate a cluttered folder. Rename 400 photos to match the product list. The task postponed for a year because it is three hours of mind-numbing clicking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pile of documents, should be a list.&lt;/strong&gt; A folder of contracts becomes a renewals tracker with dates and risk flags. A stack of receipts becomes an expense sheet. Dense PDFs in, structured table out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The recurring report.&lt;/strong&gt; The weekly status, the morning brief, the numbers pulled into the same format every Monday. Described once as a routine, in plain language: what to gather, what format, where to deliver it. It runs every morning without you. Cron, described in English, with file and app access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First drafts from your own material.&lt;/strong&gt; Tomorrow's client deck from the call transcripts. The variance memo from the spreadsheet. Not "write me something generic," but "turn my raw material into my draft."&lt;/p&gt;

&lt;p&gt;The common shape: high effort, repeatable, source material already in your files.&lt;/p&gt;

&lt;h2&gt;
  
  
  the part that should get your attention
&lt;/h2&gt;

&lt;p&gt;Here is where the senior-dev instinct earns its keep. Two things about this tool are load-bearing, and both are easy to wave past.&lt;/p&gt;

&lt;p&gt;It has access to what you give it. That is the feature and the risk in one sentence. Connect the folders and tools the job needs, not everything you own. This is least privilege, the same principle you apply to a service token or an OAuth scope, except the person setting it up may never have thought about blast radius in their life. A general-purpose agent with read and write access to your whole drive is a very different thing from one pointed at a single project folder.&lt;/p&gt;

&lt;p&gt;And it is confident, including when it is wrong. A renewals tracker with one silently wrong date is worse than no tracker, because someone will trust it. You already know this shape from AI-generated code that compiles clean and still ships a bug. The difference is that a non-engineer has no compiler, no test suite, no diff habit to catch it. The review step is not optional politeness. It is the entire job that does not get automated away.&lt;/p&gt;

&lt;p&gt;So the honest framing is not "AI does your admin now." It is "AI does your admin now, and it needs the same governance you already give your code: scoped access, and a review before you trust the output."&lt;/p&gt;

&lt;h2&gt;
  
  
  how to start: one resented task
&lt;/h2&gt;

&lt;p&gt;Don't tour the features. Pick the one task you flinched at earlier. Then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Give it context first.&lt;/strong&gt; Before the task, point Cowork at a short context file: what this project is, what good output looks like, what to leave alone. If you have given an AI a &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-02-give-the-ai?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap03" rel="noopener noreferrer"&gt;memory folder&lt;/a&gt; before, this is the same muscle. Two minutes, and the output quality jump is not subtle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Describe the outcome, not the steps.&lt;/strong&gt; "Make this folder make sense: group by client, newest first, flag anything duplicated" beats a 12-message back-and-forth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review like a manager, not a believer.&lt;/strong&gt; Open the deliverable, spot-check five rows against the source. A code review with different file types.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If it worked twice, make it a routine, and scope it tight.&lt;/strong&gt; Describe it once, give it access to exactly the folder it needs, and stop doing it forever.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  the punchline
&lt;/h2&gt;

&lt;p&gt;The AI didn't take the work. It took the work around the work. What's left over is the part that needed you all along: deciding, and checking. For us that is not new. We just called it code review and least privilege. The rest of the world is about to learn why we were so annoying about both.&lt;/p&gt;

&lt;p&gt;I am putting together a routines starter pack: three plain-language routine templates (the folder cleanup, the pile-to-tracker, the morning brief) you can adapt in five minutes. It goes out through the newsletter first.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Written by Malik at &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap03" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;. This is episode 03 of Using AI, properly. Episode 02 was &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-02-give-the-ai?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap03" rel="noopener noreferrer"&gt;give the AI a memory&lt;/a&gt;, episode 01 was &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-01-the-art-of-prompting?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap03" rel="noopener noreferrer"&gt;the art of prompting&lt;/a&gt;. New guides land there first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;i'm Malik, i've been a mobile engineer for 9 years, and i run my work and this newsletter on the system these episodes describe. The delegation habit started in the terminal, moved to my &lt;a href="https://codemeetai.substack.com/p/how-to-build-a-second-brain-with?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap03" rel="noopener noreferrer"&gt;second brain&lt;/a&gt;, and now it does the work around the work. Next up: where a single sentence stops helping, and context begins.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>aitools</category>
    </item>
    <item>
      <title>Memory you can't inspect is memory you can't trust</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Fri, 10 Jul 2026 14:48:10 +0000</pubDate>
      <link>https://dev.to/malik_chohra/memory-you-cant-inspect-is-memory-you-cant-trust-4mb4</link>
      <guid>https://dev.to/malik_chohra/memory-you-cant-inspect-is-memory-you-cant-trust-4mb4</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every new session your AI starts from zero. It doesn't remember you, your repo, or the thing it got wrong yesterday.&lt;/li&gt;
&lt;li&gt;The fix is not a feature you wait for, it's a file you write. Two, actually: house rules (&lt;code&gt;CLAUDE.md&lt;/code&gt;) and a diary (a memory folder).&lt;/li&gt;
&lt;li&gt;The habit that makes it work: end each session with "what should you remember from this? write it down," and save the answer as one small note.&lt;/li&gt;
&lt;li&gt;Wrong memories are worse than none. Keep each note to one fact so you can delete it the day it stops being true.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This piece is from &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap02" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where i document how i actually use AI to ship real products, receipts included. New guides land there first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This Tuesday my AI told me a piece of work was shipped. Merged, published, CI green, the whole report. It wasn't. The server was still serving week-old code, and i only caught it because i went and hit the actual endpoint instead of trusting the summary.&lt;/p&gt;

&lt;p&gt;Annoying. But here is the part worth stealing. Instead of fixing it and moving on, i had the AI write the lesson down. One small note in the project's memory folder: "merged is not deployed. before you say shipped, curl the live thing and check the release SHA against the merge, twice."&lt;/p&gt;

&lt;p&gt;Next morning, new session, zero context, the model has no memory of Tuesday. I run an &lt;code&gt;npm publish&lt;/code&gt; and it stops me: the version on the registry didn't match the build we had just tested. It caught the exact same class of mistake, on its own, because Tuesday's note was sitting in a file it reads on startup.&lt;/p&gt;

&lt;p&gt;That's the whole trick, and it lives in your repo, not in some feature you're waiting for.&lt;/p&gt;

&lt;p&gt;I didn't plan any of this. It grew out of my repos. Each project got a small folder of markdown the AI reads before it writes a line of code, so it never opens the thing cold. That worked well enough that i lifted the whole pattern out of the codebase. My second brain runs on it now, the Obsidian vault too, and every work session i close ends by writing to the same kind of file. The pattern i built for my repos runs my notes.&lt;/p&gt;

&lt;h2&gt;
  
  
  your AI opens the project blind
&lt;/h2&gt;

&lt;p&gt;You know this if you pair with Claude Code or Cursor daily. The first ten minutes of every session go to re-explaining the same things. The stack, where the API client lives, which files are generated, the conventions you moved to and the pattern you moved off. Good session. Next morning it opens the repo like it has never seen it.&lt;/p&gt;

&lt;p&gt;So you type it all out again. Every day.&lt;/p&gt;

&lt;p&gt;There was a thread on &lt;a href="https://reddit.com/r/ClaudeAI" rel="noopener noreferrer"&gt;r/ClaudeAI&lt;/a&gt; this week, roughly titled "I often forget how many people are clueless when it comes to Claude (or any AI)." A bit harsh. The gap it points at is real though, and it is not intelligence, it is setup. The people getting compounding value out of these tools are not smarter. They stopped re-briefing the assistant every morning.&lt;/p&gt;

&lt;p&gt;A session is a phone call. When it ends, the other side keeps no notes unless somebody writes them down. So write them down.&lt;/p&gt;

&lt;h2&gt;
  
  
  two kinds of memory, two files
&lt;/h2&gt;

&lt;p&gt;Everything worth keeping splits into two buckets, and they belong in two different places.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;House rules.&lt;/strong&gt; The stuff that is always true: the stack, the conventions, the boundaries, the things it should never touch. One standing file the AI reads at the start of every session. In Claude Code that file is literally &lt;code&gt;CLAUDE.md&lt;/code&gt;. Cursor calls it &lt;code&gt;.cursorrules&lt;/code&gt;, some tools read &lt;code&gt;AGENTS.md&lt;/code&gt;. Same idea everywhere, a one-page briefing that is just always there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The diary.&lt;/strong&gt; The stuff it learns as you go: a correction, a decision that closed a debate, a gotcha. "The Android build breaks if you bump reanimated past the pinned version." "We dropped the March API, stop importing it." "Merged is not deployed." Learned facts, they change, so they don't belong in the house rules.&lt;/p&gt;

&lt;p&gt;Here is the part people overbuild. On day one the diary is one file. Make a &lt;code&gt;memory.md&lt;/code&gt; in the repo root, tell the AI to read it at session start, and add a line whenever something worth keeping shows up. A working memory system, no framework, no folder. The folder version is an upgrade you grow into, and i'll show you mine in a minute. But it starts as one file you could open in any editor.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhg3sesrfxuvcbl6vyqvy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhg3sesrfxuvcbl6vyqvy.png" alt="Two kinds of remembering: the standing house-rules file the AI always reads, and the memory folder of small learned facts with an index." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;House rules are written once and edited rarely. The diary grows a note at a time.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why the split matters: &lt;code&gt;CLAUDE.md&lt;/code&gt; you write once and edit rarely, the diary grows every week and any note in it can turn out wrong later. Mix them and your always-on briefing slowly fills with stale facts, the one file you least want rotting. Keep them apart and each stays honest.&lt;/p&gt;

&lt;p&gt;The tools already exist and you'll meet them as you go. Claude Code reads &lt;code&gt;CLAUDE.md&lt;/code&gt; plus a memory folder automatically, the community ships things like claude-mem that record whole sessions, ChatGPT and Claude both have built-in memory they fill on their own. All fine. The plain file has one quiet advantage though: you can open it, diff it, and delete the wrong bits, and git already keeps the history. Memory you can't inspect is memory you can't trust, and a file you wrote is the most inspectable memory there is.&lt;/p&gt;
&lt;h2&gt;
  
  
  the capture loop
&lt;/h2&gt;

&lt;p&gt;The memory folder doesn't fill itself. The habit that fills it takes about two minutes.&lt;/p&gt;

&lt;p&gt;At the end of a session, ask: "what should you remember from this session? write it down."&lt;/p&gt;

&lt;p&gt;That's it. Every correction, every "actually, do it this way," every decision that closed a question becomes a candidate. The AI writes each as its own small note and adds a line to the index.&lt;/p&gt;

&lt;p&gt;I'm not the only one on a version of this. One of the most upvoted posts on &lt;a href="https://reddit.com/r/ClaudeAI" rel="noopener noreferrer"&gt;r/ClaudeAI&lt;/a&gt; this month, close to three thousand upvotes, was titled "I end every AI session with two questions." The session-ending ritual is quietly becoming the power move, because it converts a good session, which evaporates the moment you close the tab, into a note, which does not.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkyw31k580l8yizu34asa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkyw31k580l8yizu34asa.png" alt="The capture loop: work, then a correction, then one small note in memory, then the next session reads it and behaves better." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;One turn of the loop per session. It compounds fast.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Mine runs on two habits. During the day, anything worth keeping gets dumped into an inbox note without stopping to sort it. At the end of a session the AI does the ritual: sorts what it learned, writes the notes, updates the index. Next morning it reads the index and picks up where we left off.&lt;/p&gt;
&lt;h2&gt;
  
  
  the memory bank: one folder per repo
&lt;/h2&gt;

&lt;p&gt;Once the one-file &lt;code&gt;memory.md&lt;/code&gt; clicks, there's a natural upgrade, and it's still just files. I call it a memory bank: one small folder per repo, two files inside.&lt;/p&gt;

&lt;p&gt;The first is the &lt;strong&gt;context&lt;/strong&gt;: what this repo is, the stack, the conventions, the boundaries, the things the AI must never touch. You write it once and edit it rarely. The second is the &lt;strong&gt;progress&lt;/strong&gt;: a dated log of where the work actually stands, updated at the end of each session. Drop both in a &lt;code&gt;.memory/&lt;/code&gt; folder in the repo (or &lt;code&gt;docs/&lt;/code&gt;, wherever your team already looks) and point the AI at them on startup.&lt;/p&gt;

&lt;p&gt;Here's the whole thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;your-repo/&lt;/span&gt;
  &lt;span class="s"&gt;.memory/&lt;/span&gt;
    &lt;span class="s"&gt;context.md    stack, conventions, boundaries, hard no's. written once.&lt;/span&gt;
    &lt;span class="s"&gt;progress.md   2026-07-09&lt;/span&gt;&lt;span class="na"&gt;: shipped the auth refactor. open: token-refresh race. next&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;wire the retry.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same shape for every repo you touch. The context file barely moves. The progress file is a diary with dates. Open a session, the AI reads both, and it starts from where the code actually is instead of from zero. This is not theory for me: my whole work life runs on these folders, and the "merged is not deployed" catch from the opener came straight out of one.&lt;/p&gt;

&lt;p&gt;You don't have to hand-roll it either. Paste this into the AI once, per repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to give you a memory for this repo. Do two things.

First, create .memory/context.md. Interview me before you write it: ask one question at a time about what this repo is, the stack, the conventions, and the things you must never touch. Then write a one-page briefing you would want to read at the start of every session.

Second, create .memory/progress.md. Start it with today's date and one line: where the work stands right now.

From now on, read both files at the start of every session on this repo.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And at the end of each session, this one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before we finish, update .memory/progress.md. Add today's date and 3 to 5 lines: what we did, what we decided, what is still open, and anything you should remember next time. If i corrected you today or gave you a convention, put that in context.md instead. Keep both files short. Cut anything that is no longer true.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That second prompt is the whole engine. It's the capture loop from the last section, turned into a habit you can paste.&lt;/p&gt;

&lt;h2&gt;
  
  
  one fact per note, so you can fire it
&lt;/h2&gt;

&lt;p&gt;The rule that took me longest to learn: one fact per note.&lt;/p&gt;

&lt;p&gt;Not a session summary. Not a changelog. One fact, a couple of lines, with a date. "2026-07: merged is not deployed, verify the live endpoint before reporting shipped." That's a whole note.&lt;/p&gt;

&lt;p&gt;The reason is not tidiness. Memories go stale, and a stale memory is worse than no memory, because the model states it with full confidence. The component gets refactored, the workaround you swore by gets fixed upstream, the dependency you pinned moves on. When each fact lives alone, you delete that one note and the rest stays intact. When facts live tangled in a long summary, you can't pull the rotten one without rewriting everything, so nobody does, and the whole thing quietly rots.&lt;/p&gt;

&lt;p&gt;My memory folder is a few months old now. Notes get added most days, and deleted too, and that is not the system failing, that is the system working. Tuesday's "merged is not deployed" note earned its place by catching a real mistake inside twenty-four hours. A note that never fires again for months gets cut.&lt;/p&gt;

&lt;h2&gt;
  
  
  where this breaks
&lt;/h2&gt;

&lt;p&gt;Honest limits, because there are some.&lt;/p&gt;

&lt;p&gt;Memory doesn't make the AI right, it makes it consistent. Write down a wrong fact and you now have a machine that repeats your mistake politely, forever. Re-check anything important that came out of memory, especially anything with a date on it.&lt;/p&gt;

&lt;p&gt;No secrets in there. Tokens, keys, other people's private data. A memory folder is a plain readable file and it's probably tracked in git, so treat it like one.&lt;/p&gt;

&lt;p&gt;And don't over-collect. The goal is not to remember everything, it's to stop re-explaining the same ten things. If your index runs longer than a page, you're hoarding, not remembering.&lt;/p&gt;

&lt;h2&gt;
  
  
  start on your next branch
&lt;/h2&gt;

&lt;p&gt;Two files. A &lt;code&gt;CLAUDE.md&lt;/code&gt; with your stack and conventions. An empty memory folder with an empty index. Then end your next session with "what should you remember from this?" and let it write note one.&lt;/p&gt;

&lt;p&gt;That's the whole setup. The assistant you pair with next week already feels different from today's, and the gap only widens from there.&lt;/p&gt;

&lt;p&gt;I put together a memory starter pack: the &lt;code&gt;CLAUDE.md&lt;/code&gt; template i actually use, the note format, the index file, and the exact session-ending prompt. It goes out through the newsletter first.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Written by Malik at &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap02" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;. This is episode 02 of Using AI, properly. Episode 01 was &lt;a href="https://codemeetai.substack.com/p/using-ai-properly-01-the-art-of-prompting?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap02" rel="noopener noreferrer"&gt;the art of prompting&lt;/a&gt;. New guides land there first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;i'm Malik, i've been a mobile engineer for 9 years, and i run my work and this newsletter on the system these episodes describe. The memory folder is where &lt;a href="https://codemeetai.substack.com/p/how-to-build-a-second-brain-with?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap02" rel="noopener noreferrer"&gt;the second brain&lt;/a&gt; and this newsletter both live now. Next up: putting the AI to work on the work around the work.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Loop engineering with Fable 5</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Wed, 08 Jul 2026 19:52:33 +0000</pubDate>
      <link>https://dev.to/malik_chohra/loop-engineering-with-fable-5-4dfp</link>
      <guid>https://dev.to/malik_chohra/loop-engineering-with-fable-5-4dfp</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I pointed Fable 5 at my own React Native SDK, read only. It found 11 real bugs, each cited to a file and a line, six more than the two other models on the same job. A cheaper model re-checked all 11 against the source. 0 got refuted.&lt;/li&gt;
&lt;li&gt;Finding bugs just got cheap. The moat moved to the check: tests plus reviewer agents run in a clean context, the part that does not come in the box.&lt;/li&gt;
&lt;li&gt;A model in a loop with no check is a confident intern shipping unwatched. The check is the discipline that keeps it useful instead of dangerous.&lt;/li&gt;
&lt;li&gt;Below: the two paste-able prompts I run (a read-only architecture audit and a weekly news loop), the receipts, and the loop I run them in.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This piece is from &lt;a href="https://codemeetai.substack.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where I document how I actually use AI to ship real products, receipts included. New guides land there first. It was &lt;a href="https://codemeetai.substack.com/p/how-im-actually-using-fable-5-with?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;originally published there&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Finding bugs used to be the expensive, senior skill. Then I pointed Fable 5 at my own &lt;a href="https://github.com/chohra-med/wireai-rn?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;React Native / Expo SDK&lt;/a&gt;, read only, and asked where the code breaks when another app builds on top of it. It handed back eleven real problems, each cited to a file and a line, six more than the two other models I ran on the same job. A cheaper model re-checked all eleven against the source. Zero got refuted.&lt;/p&gt;

&lt;p&gt;That should scare you a little, not excite you. A model that good at finding things, wired to also fix and ship them unwatched, is a confident intern with commit access. The risk is not that it is wrong. The risk is that it is confidently, plausibly wrong on the one path that actually ships, and nobody checked. The discipline that keeps that intern useful instead of dangerous is the check. That is the whole job now, and it is the beat everyone skips.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0nj7qvwxazfvon99ibur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0nj7qvwxazfvon99ibur.png" alt="My last 7 days in Claude Code. Opus 4.8 and Fable 5, split about 58/42." width="800" height="718"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;My last 7 days in Claude Code. Opus 4.8 and Fable 5, split about 58/42. This is not a test drive: Fable does roughly 40 percent of my real work now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So a model that good at finding things is only worth the bill if you do something with the finding, and "chatting with it" is not that. The way I actually use a model like this is the way I use every model now. I do not talk to it. I put it in a loop, and I spend my own time on the one part of the loop that still needs me.&lt;/p&gt;

&lt;p&gt;Here is the loop, the prompts, and the part that does the real work.&lt;/p&gt;
&lt;h2&gt;
  
  
  What a loop actually is
&lt;/h2&gt;

&lt;p&gt;Every loop has the same four beats.&lt;/p&gt;

&lt;p&gt;Goal. You write down what done means before anything runs. Not a vibe, a test. Something that can come back true or false.&lt;/p&gt;

&lt;p&gt;Act. The model takes one step toward that goal.&lt;/p&gt;

&lt;p&gt;Check. Something compares the result against the goal.&lt;/p&gt;

&lt;p&gt;Repeat. Failed the check, go again. Passed, stop.&lt;/p&gt;

&lt;p&gt;The check is the beat everyone skips. It is also the whole game, and I will come back to it, because it is where finding a bug and actually shipping a fix stop being the same thing.&lt;/p&gt;

&lt;p&gt;For content people the goal might be "beats my best newsletter." For me the goal is a codebase that stays green. Same shape, different done. I run this loop as a system I call Spec Harness: plan, spec, build, verify, learn. The model does the building. The verify step is the check. The learn step is what makes tomorrow's loop tighter than today's.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi3fznumhs94lp18ote06.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi3fznumhs94lp18ote06.png" alt="The loop, four beats. Goal, act, check, repeat. The check is the one everyone skips." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The loop, four beats. Goal, act, check, repeat. The check is the one everyone skips.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How I prompt Fable for the read that sets the goal
&lt;/h2&gt;

&lt;p&gt;The loop needs a goal, and for code the goal starts with an honest read of what is actually wrong. That read is the one place I pay for the frontier model, because it is a single expensive pass I run once, not the grind that comes after.&lt;/p&gt;

&lt;p&gt;Four things make the read worth the money.&lt;/p&gt;

&lt;p&gt;Give it the reason, not just the task. "Audit this SDK, two apps are about to ship on top of it" gets a sharper read than "find bugs."&lt;/p&gt;

&lt;p&gt;Set a boundary. Read only. It audits, it does not touch the code. Finding and fixing are different beats of the loop, and letting one model do both in one breath makes both sloppy.&lt;/p&gt;

&lt;p&gt;Make it cite everything. Every finding points at a real file and line. A made-up bug cannot cite a real location, so this one rule kills hallucinations. It is also how I spot-checked eleven findings in minutes.&lt;/p&gt;

&lt;p&gt;Make it grade itself. Rate each finding high, medium, low. A model that will admit "medium, not certain" on its weak calls is one you can trust on the strong ones.&lt;/p&gt;

&lt;p&gt;The paste-able version, adapt the paths to your repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Audit the architecture of &amp;lt;package or feature dir&amp;gt; in this React Native / Expo app. Read only. Do not edit a single file.

Context: this ships to real users on real phones in a few days, and other screens (in my case, other apps too) are being built on top of it. I care about the problems that survive to production and page me at 2am, not style nits.

For every problem you find:
- cite the exact file and line
- explain how it breaks when someone builds on top of it, or when it hits a real device: slow or dropped network, the app backgrounded mid-request, low memory, a cold start, or the OS killing and restoring the process
- name the layer it lives in: state, navigation, data fetching, a native module, or the public API other code depends on
- rate your confidence high / medium / low, and for anything medium, say exactly what you'd need to read to make it high

Prioritise, in this order: silent data loss, a failure the user never sees but that corrupts state, anything that only breaks after the app is killed and reopened, and any API shape that forces a breaking change on the screens already built on it.

Do not pad the list. Ten real, cited problems I can fix today beat forty maybes. If an area is genuinely solid, say so plainly instead of inventing a finding.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I hand the list to a cheaper model and ask it to refute each finding against the source. Zero of the eleven survived as false. Frontier finds, cheap checks, I do neither by hand. That verified list is the goal the rest of the loop runs against.&lt;/p&gt;

&lt;p&gt;If you do not write code, the same four rules work on anything you ship. Here is the one I run on the marketing side once a week. It reads the week's news in my space, hands back posts I could actually publish, and ranks them against what has already worked for me. Different job, identical bones: give it the reason, keep it read-only, make it cite every claim to a real source, make it grade its own confidence.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scan the last 7 days of news and discussion in &amp;lt;your space&amp;gt;. Read and gather only, publish nothing.

Goal: three posts I could ship this week that would beat my best-performing post, not generic hot takes.

For each one:
- link the exact article, thread, or number it is built on (no angle without a real source)
- write it as a post I could publish as-is, in my voice, not a summary of the news
- name which of my patterns that has worked before it matches, and why it should land
- rate your confidence high / medium / low; for any medium, say what you would need to know about my audience to make it high

Then rank the three against what has actually worked for me before, and tell me the one you would cut.
Do not pad. One post I can ship today, tied to a real source, beats five vague trend-chases.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Swap "posts" for "emails," "landing sections," or "feature ideas" and the shape holds. The domain changes; the four rules do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The effort dial, and the one place I still switch models
&lt;/h2&gt;

&lt;p&gt;The advice going around is to stop switching models and just use Fable's effort dial. Turn it down for easy work, up for hard, one model for everything. For a single reasoning pass, that is right. I leave the dial on high, push it up when the read is genuinely hard, and I stopped babysitting the model picker for one-shot work.&lt;/p&gt;

&lt;p&gt;The dial does not save you inside a loop, though.&lt;/p&gt;

&lt;p&gt;A build loop iterates for hundreds of turns, and every turn re-sends a growing context at the model's per-token rate. That rate is what compounds, not how hard the model thought on any single turn. I watched the same cheap model that audited my SDK for fifty nine cents spend four dollars building one fix, because building means running tests and reading errors over and over. Put a frontier model on that loop with the dial turned down and you are ordering the cheap wine at a three-star restaurant. You saved on the wrong line.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F73jvwk43duhwu1l0wcmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F73jvwk43duhwu1l0wcmv.png" alt="A normal day. I run the window down to the wall, it resets, I do it again." width="799" height="93"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A normal day. I run the window down to the wall, it resets, I do it again. That is what "I actually use it" looks like on the invoice.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I do both. The dial for the single read. A cheaper model for the loop that grinds. One is a knob inside a model, the other is a knob across phases. They are not the same knob.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftfaqym790m5v48bw7qy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftfaqym790m5v48bw7qy8.png" alt="Pay the frontier rate once for the read. Drop to a cheaper model for the build loop." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Pay the frontier rate once for the read. Drop to a cheaper model for the build loop, where the cost compounds every turn.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the loop: the check is the part you actually build
&lt;/h2&gt;

&lt;p&gt;Writing the loop is easy. Writing the check is the job.&lt;/p&gt;

&lt;p&gt;Charlie Hills, whose piece got me writing this one, builds his check as a rubric. He fed a model a hundred and ten past newsletters plus their engagement numbers, had it pull out a scoring rubric, and now a separate judge agent scores every draft against it until it clears the bar. Separate judge, on purpose, so nothing grades its own homework.&lt;/p&gt;

&lt;p&gt;My check is not a content rubric. It is tests, plus agents that read like a senior reviewer, all run in a clean context so nothing marks its own work.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ho5kojc169a959ohddk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ho5kojc169a959ohddk.png" alt="The check is tests plus a reviewer agent plus a workflow-tester, all run in a clean context." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The check is tests plus a reviewer agent plus a workflow-tester, all run in a clean context so nothing grades its own homework.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Two of those agents earn their keep every week.&lt;/p&gt;

&lt;p&gt;A reviewer agent. I was wiring the same &lt;a href="https://getwireai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;AI onboarding&lt;/a&gt; into two apps at once, mine and a client's, built days apart. The reviewer read both and found the same three mistakes in each. Config hand-rolled separately instead of calling the one shared helper, the copy-paste that drifts the second you touch it. An onboarding that asked the user what they cared about and then threw the answers away before saving, a quiet data-loss bug I would never have caught by eye. And a fallback I promised in a code comment and never wired, so a backend timeout would have dead-ended the new user instead of dropping them back to the old flow. Three real bugs, twice, caught by the check, not by me.&lt;/p&gt;

&lt;p&gt;A workflow-tester agent. On another job it caught a status-code bug: a database outage was reaching the client as the wrong HTTP code, a four hundred where it had to be a five hundred. The kind of thing that passes every happy-path test and pages you at 2am.&lt;/p&gt;

&lt;p&gt;That is the check. It is boring, it is most of the work, and it is the reason I can let the loop run on something without watching it.&lt;/p&gt;

&lt;p&gt;The one Fable finding I actually shipped went through exactly this. The goal was a failing test for a timeout bug it found, a path that advertised a sixty second limit in its own docstring while a hidden thirty second cap killed the request first. Opus wrote the fix. The check ran the full suite, eighty eight of eighty eight green, plus the review gate, before it ever became a pull request. Goal, act, check, repeat, then stop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your codebase is the moat
&lt;/h2&gt;

&lt;p&gt;Charlie's line is that your data is the moat, because every model read the same internet and everyone's output sounds the same, so the differentiator is your own history fed into the loop. For code it is the same idea one layer over.&lt;/p&gt;

&lt;p&gt;Every model has read the same open source. What it has not read is your bugs.&lt;/p&gt;

&lt;p&gt;The learn step of my loop turns every bug the check catches into a dated rule the harness enforces next time. The reviewer's three mistakes became an eight-point review bar, so app number three cannot repeat what apps one and two did. The eleven Fable findings, the ten I deferred, the triage note for when they come back, all of it is a private test set that grows every week and belongs to nobody else. A general model finds a bug. My harness knows which bugs I keep making. That accumulation is the thing you cannot download.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33e6crphh0aflvbka1mz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33e6crphh0aflvbka1mz.png" alt="41 million tokens, a 9-day streak, active every single day." width="800" height="699"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;41 million tokens, a 9-day streak, active every single day. The loop is a habit, not a demo, and the rules it has ratcheted out of my bugs are the part nobody else has.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The check is the job
&lt;/h2&gt;

&lt;p&gt;Finding got cheap. Fable proved it on my own code, eleven real problems for the price of lunch, better than I did by eye. That skill, the one you used to pay a senior nine years in for, just got commoditized.&lt;/p&gt;

&lt;p&gt;The check did not.&lt;/p&gt;

&lt;p&gt;The tests you wrote, the rules you ratcheted out of your own mistakes, the judgment to ship one finding and defer ten in launch week because you know which ones touch the path that is actually shipping, none of that came in the box. A model in a loop with no check is a confident intern shipping unwatched. Slop is a failure of judgement, not tooling, as Charlie puts it. The loop scales you exactly as far as your check is good, and not one inch further.&lt;/p&gt;

&lt;p&gt;So that is how I actually use Fable 5. I do not chat with it. I pay it once for the honest read, I drop to a cheaper model for the grind, and I spend my own time on the check, because that is the part that is still mine.&lt;/p&gt;

&lt;p&gt;Finding what is wrong is free now. Checking it is the job.&lt;/p&gt;




&lt;p&gt;Want the loop itself? The &lt;a href="https://choumed.gumroad.com/l/loop-engineering-starter-kit?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;loop starter kit&lt;/a&gt; is the four-part loop plus the verifier and ratchet templates I actually run it on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Written by Malik Chohra&lt;/strong&gt;, AI-first mobile engineer, 9 years building health, wellness, and coaching products (Mindshine, acquired by Greator; DocMorris; CoachHub). I build the AI-native infrastructure the next wave of mobile products runs on, including &lt;a href="https://getwireai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;getwireai.com&lt;/a&gt; and &lt;a href="https://aimobilelauncher.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;aimobilelauncher.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This was one issue of Code Meet AI.&lt;/strong&gt; I document how I actually use AI to ship real products, receipts included, and new guides land there first. Subscribe at &lt;a href="https://codemeetai.substack.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fable5-method" rel="noopener noreferrer"&gt;codemeetai.substack.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>productivity</category>
      <category>testing</category>
    </item>
    <item>
      <title>GLM 5.2 for 59 cents: the read is cheap, the build isn't</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Tue, 07 Jul 2026 17:21:40 +0000</pubDate>
      <link>https://dev.to/malik_chohra/glm-52-for-59-cents-the-read-is-cheap-the-build-isnt-18l1</link>
      <guid>https://dev.to/malik_chohra/glm-52-for-59-cents-the-read-is-cheap-the-build-isnt-18l1</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GLM 5.2 is the open-weight model everyone is benchmarking right now: a tenth of Claude's price, a one million token context window. Instead of reading takes, I ran it on my own SDK.&lt;/li&gt;
&lt;li&gt;The setup is five lines in your Claude Code settings, routed through OpenRouter. Pin the Z.ai provider and turn off fallbacks, or you might be testing a quantized knockoff.&lt;/li&gt;
&lt;li&gt;The architecture read: 41 files, every citation real, 59 cents, six minutes. The build: it worked, 92 tests green, but cost four dollars, most of it test-loop stamina.&lt;/li&gt;
&lt;li&gt;My split now: GLM for the reading, Claude for the building. Private code never leaves my machine, cheap or not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This piece is from &lt;a href="https://codemeetai.substack.com/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=glm-5-2" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where I document how I actually use AI to ship real products, receipts included. New guides land there first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My Claude Code bill had been bothering me for a while. Not scary numbers, just creeping ones. I run a lot of agents, sometimes a whole harness of them at once, and the number at the end of the month kept drifting up. So I went looking for a cheaper engine, and the thing everyone kept pointing at was a Chinese open-weight model called GLM 5.2.&lt;/p&gt;

&lt;p&gt;Two reasons I wanted to try it. One was pure cost. If a model a tenth of the price could do even half my work, that's real money back. The other was a curiosity I'd been avoiding, if I'm honest. The Chinese labs have been shipping fast, the benchmarks look absurd, and I had never actually run one of their models on my own code to see past the marketing.&lt;/p&gt;

&lt;p&gt;So I put five dollars on OpenRouter and decided to stop reading takes. I'd run GLM on the one codebase I know better than anyone, &lt;a href="https://getwireai.com/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=glm-5-2" rel="noopener noreferrer"&gt;my own generative UI SDK&lt;/a&gt;, and check every line of what it gave back.&lt;/p&gt;

&lt;p&gt;This is what I did, what it cost, and the part I got wrong before I started.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup, because it's shorter than you think
&lt;/h2&gt;

&lt;p&gt;GLM 5.2 is an open-weight model from Z.ai. It came out in the middle of June, it has a one million token context window, and the thing people keep saying about it is that it codes like a frontier model for a fraction of the price. The public numbers back the noise up: on OpenRouter's Design Arena board it sits in the top one percent for code, across more than three thousand head-to-head tournaments. I didn't want to take that on faith either. Benchmarks are somebody else's code.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnu425ldm8vdi4bciwc14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnu425ldm8vdi4bciwc14.png" alt="OpenRouter Design Arena benchmarks for GLM 5.2: top 1% in code, across 3,243 tournaments." width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The public claim, as of this week: top one percent for code on Design Arena, 3,243 tournaments. This article is me checking it against my own repo.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Claude Code doesn't care which model sits behind it. It speaks the Anthropic API format, and it reads two environment variables to decide where to send requests. Point those at a different endpoint and the whole tool keeps working, same agent, same file editing, same test running, different brain.&lt;/p&gt;

&lt;p&gt;I used OpenRouter as the endpoint. The reason is simple: one account, one API key, and it can route that key to dozens of model providers including Z.ai. I didn't want a separate billing relationship with a Chinese lab to run one experiment. OpenRouter sits in the middle, I top up a few dollars, and I can try any model behind one key.&lt;/p&gt;

&lt;p&gt;Here's the whole path, start to finish.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft541gycligg4mdcp41qb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft541gycligg4mdcp41qb.png" alt="How GLM gets into Claude Code through OpenRouter: Claude Code reads ANTHROPIC_BASE_URL, points at OpenRouter, which routes to a provider. Pin Z.ai first-party with fallbacks off." width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three steps to set it up.&lt;/p&gt;

&lt;p&gt;First, make the key. On OpenRouter you create an API key and put a few dollars of credit on the account. There's no free GLM 5.2 tier, but the credit goes a long way, my whole experiment ran on five dollars and I didn't finish it.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmo67u8ka01rk1sfcieq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmo67u8ka01rk1sfcieq6.png" alt="OpenRouter New Key dialog: name the key and set an optional hard credit limit." width="800" height="789"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Creating the key. The credit limit field is the safety net: mine got five dollars, hard cap.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flwiy0ad10gjsxx4rqmk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flwiy0ad10gjsxx4rqmk3.png" alt="OpenRouter API Keys page showing the glm test key with $4.59 used of a $5 limit." width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The same key after the experiment: $4.59 of the five dollar cap used. Everything in this article ran inside that.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Second, point Claude Code at it. Five lines in your Claude Code settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ANTHROPIC_BASE_URL &lt;span class="o"&gt;=&lt;/span&gt; https://openrouter.ai/api
ANTHROPIC_AUTH_TOKEN &lt;span class="o"&gt;=&lt;/span&gt; your_openrouter_key
ANTHROPIC_DEFAULT_OPUS_MODEL &lt;span class="o"&gt;=&lt;/span&gt; z-ai/glm-5.2
ANTHROPIC_DEFAULT_SONNET_MODEL &lt;span class="o"&gt;=&lt;/span&gt; z-ai/glm-5.2
ANTHROPIC_DEFAULT_HAIKU_MODEL &lt;span class="o"&gt;=&lt;/span&gt; z-ai/glm-4.5-air
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop that in, start Claude Code, and you're talking to GLM. To go back to Claude you comment it out. That's the entire switch.&lt;/p&gt;

&lt;p&gt;Third, and this is the step most people skip, pin the provider. On OpenRouter the same model name can be served by a long list of different companies, and the prices are all over the place, from under a dollar per million tokens to over three. That spread is not a coincidence. Some of those hosts run quantized copies of the model, smaller and faster and measurably dumber, and the Providers tab even has a quantization filter because of it. If you let OpenRouter auto-route you might land on one of those, and then you're testing a compressed knockoff while thinking you're testing the real thing.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs0c6ogrjnshbexnwj23z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs0c6ogrjnshbexnwj23z.png" alt="The GLM 5.2 model page on OpenRouter, Providers tab: a dozen hosts serving the same model at different prices, latencies, and uptimes." width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Same model name, a dozen hosts, a real price spread. This is why you pin the provider.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I set the routing to Z.ai directly, the first-party host, and turned off fallbacks. Every request hit the real full-precision model and nothing else. If a fair comparison is the point, this toggle is the whole game.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I got wrong: my own code is not all mine to share
&lt;/h2&gt;

&lt;p&gt;Here's the mistake I almost made. I was about to point a third-party model at my whole monorepo.&lt;/p&gt;

&lt;p&gt;My SDK is open source. But sitting in the same repo are the things that are not open: the dynamic onboarding kit, the billing, the tenant logic, the work that's supposed to make money. Sending that to a hosted model in another country is exactly the kind of casual leak you only notice after it's gone.&lt;/p&gt;

&lt;p&gt;So before anything ran, I built a clean copy. I pulled out only the showable parts, the SDK package and the mental coach example with its agent backend, and I left the commercial code on my disk where it belongs. Then I did the boring but important step: I searched the copy for the words that would give the game away, onboarding, billing, tenant, stripe, and confirmed there were zero hits before a single token left my machine.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhrlkw2th7whcnv6mflis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhrlkw2th7whcnv6mflis.png" alt="Before sending your repo to a third-party model: copy out only the showable parts, grep for leak words and confirm zero hits, then send only that." width="798" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That habit is the whole point. The model being cheap doesn't change the rule. Public code can go to a hosted API. Private code either stays local or it doesn't go at all. I wrote about &lt;a href="https://codemeetai.substack.com/p/how-i-run-claude-code-offline-the?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=glm-5-2" rel="noopener noreferrer"&gt;choosing a more expensive but EU-safe model for a client backend&lt;/a&gt; a while ago for the same reason, and the logic didn't change just because this one was fun to try.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task one: read my SDK and tell me where it breaks
&lt;/h2&gt;

&lt;p&gt;The first job was a pure reading test. I told GLM to audit the architecture as if I were about to build a new generation of tooling on top of it. Find the load-bearing seams. Name the files. Tell me what will crack first. And the rule that mattered most: cite a real file and line for every claim, and if you're not sure, say so instead of inventing something.&lt;/p&gt;

&lt;p&gt;It read forty-one files. Then it handed me an audit that found the three real problems I already knew were there.&lt;/p&gt;

&lt;p&gt;It found that my component types are sealed into the bundle when the app starts, which means an agent can't define a new component at runtime, which is the exact thing my next feature needs. It found that streaming is quietly dead on my main agent path, because the adapter that handles it never implemented the streaming method. And it found a drift bug I'd been ignoring, where my SDK can render thirteen components but the server only allows eleven of them and only tells the model about seven, so two perfectly good components were unreachable through the agent.&lt;/p&gt;

&lt;p&gt;I didn't take its word for any of this. I went through its citations and grepped each one against the code. They were real. The file paths were right, the line numbers were right, and it hadn't made up a single function. It even caught something I hadn't flagged: a comment in my backend that proudly says it uses the latest Claude models, sitting directly above code that actually calls a cheaper OpenAI model. A stale comment that became a small lie. Good eye, for a model I was ready to dismiss.&lt;/p&gt;

&lt;p&gt;That audit cost fifty-nine cents and took six minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task two: now fix one of them
&lt;/h2&gt;

&lt;p&gt;A read is one thing. Reading is where every model looks smart. So I said: ok, you can read my code. Now touch it.&lt;/p&gt;

&lt;p&gt;I gave it the hardest fix from its own audit: kill the component drift for good. Make the &lt;a href="https://github.com/chohra-med/wireai-rn" rel="noopener noreferrer"&gt;SDK&lt;/a&gt; the single source of truth, generate a manifest from it, and have the server read that manifest instead of its own hand-typed list, so the two can never fall out of sync again. And write a test that fails if they ever do.&lt;/p&gt;

&lt;p&gt;It did it. It generated the manifest, rewired the server to read it, promoted the two orphaned components into real SDK built-ins so they were finally reachable, and wrote a drift guard test. When I ran the suite myself, ninety-two tests passed, the original eighty-seven untouched and five new ones added. Then I tried to break it on purpose. I deleted a component from the manifest by hand and re-ran the guard. It failed, loudly, exactly where it should. The safety net had teeth.&lt;/p&gt;

&lt;p&gt;It also hit a genuinely annoying toolchain trap along the way, a syntax issue in React Native that stops the test runner from loading certain files, and instead of hiding it or giving up it built a small workaround and then wrote the problem down in its report as a caveat. That honesty is worth more to me than a clean-looking result.&lt;/p&gt;

&lt;h2&gt;
  
  
  The catch, because there is always a catch
&lt;/h2&gt;

&lt;p&gt;The build cost four dollars. The read cost fifty-nine cents.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2mo0xzxyhege3e1bgqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2mo0xzxyhege3e1bgqr.png" alt="Bar chart: the same architecture audit cost $0.59 on GLM 5.2 versus roughly $5.90 at Claude list rates." width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The receipt behind the "ten times cheaper" line: same audit, same 41 files, priced twice.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's the number nobody in the hype videos mentions. On the reading task GLM was a clear win, ten times cheaper than what I usually run, and three times faster. On the build it succeeded, but it spent most of those four dollars not on the fix itself but on grinding through the test harness, run the tests, read the error, edit, run again, over and over, three hundred turns of it. The actual code changes were maybe thirty of those steps. The rest was stamina.&lt;/p&gt;

&lt;p&gt;So the lesson I'm keeping is not "GLM replaces my setup." It's narrower and more useful than that. For reading, reviewing, auditing, explaining a codebase, the kind of work where the model thinks hard once and hands you an answer, GLM 5.2 is a genuine bargain and I'll reach for it on purpose. For long unattended building, where the cost is paid in debugging loops, it works, but the price gap closes and the reasons I pay for a frontier model come back into focus.&lt;/p&gt;

&lt;p&gt;Five dollars, one afternoon, my own code, and a clear answer instead of a feed full of opinions. That's the cheapest research I've done all month.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I actually use this now
&lt;/h2&gt;

&lt;p&gt;Two routes, depending on the code.&lt;/p&gt;

&lt;p&gt;For anything public, I keep the OpenRouter config above in a commented block in my Claude Code settings. When I want a cheap second opinion on an open-source repo, an architecture read, a "what is wrong with this," I uncomment it, pin Z.ai, and let GLM do the heavy reading for cents. Claude stays my default for the building.&lt;/p&gt;

&lt;p&gt;For anything private, the model goes to the code, the code doesn't go to the model. Local weights or nothing.&lt;/p&gt;

&lt;p&gt;If you want the exact settings block, the provider-pinning step, and the little script I use to strip a repo down to the showable parts before sending it anywhere, reply LOCAL and I'll send it over.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This was one experiment in a longer thread I keep at &lt;a href="https://codemeetai.substack.com/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=glm-5-2" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, where I document how I actually use AI to ship real products, receipts included. It's the hosted-model sibling of my post on &lt;a href="https://codemeetai.substack.com/p/how-i-run-claude-code-offline-the?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=glm-5-2" rel="noopener noreferrer"&gt;running Claude Code offline with a local LLM&lt;/a&gt;. Next week: the full three-way comparison, GLM against the frontier models on the same tasks.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you have run GLM 5.2 or another cheap model on real code, where did it hold up and where did it fall apart for you?&lt;/strong&gt; I'm still calibrating my own split, and the build-cost number surprised me most.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>llm</category>
      <category>programming</category>
    </item>
    <item>
      <title>The one habit that fixes generic AI answers (and 7 ways to ask)</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Mon, 06 Jul 2026 10:41:07 +0000</pubDate>
      <link>https://dev.to/malik_chohra/the-one-habit-that-fixes-generic-ai-answers-and-7-ways-to-ask-8bm</link>
      <guid>https://dev.to/malik_chohra/the-one-habit-that-fixes-generic-ai-answers-and-7-ways-to-ask-8bm</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't need to be technical to prompt well. You need to stop typing three words and hitting enter.&lt;/li&gt;
&lt;li&gt;The one habit that fixes almost everything is context: tell the AI who it should be, what you want, and what a good answer looks like.&lt;/li&gt;
&lt;li&gt;Seven simple ways of asking cover most of daily life, from summarizing an email to planning a week of meals.&lt;/li&gt;
&lt;li&gt;The best place to practice is your own life: your messages, your plans, your notes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This piece is from &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap01" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where I document how I actually use AI to ship real things, receipts included. New guides land there first.&lt;/p&gt;

&lt;p&gt;Prompting is just how you ask an AI for something. The AI reads your words, not your mind, so a lazy question gets a lazy answer. The fix is context: tell it who you want it to be, what you actually need, and what a good result would look like. After that, a handful of simple patterns handle almost anything. No jargon. You get good by practising on the things you already do every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI reads your words, not your mind
&lt;/h2&gt;

&lt;p&gt;The first time a lot of people try one of these tools, they type something like "make me 1 million," read the bland thing that comes back, and quietly decide it is overrated. I did a version of this for months. I treated it like a smarter Google, typed three words, and was annoyed when i got three-word-quality answers back.&lt;/p&gt;

&lt;p&gt;Spoiler alert: the "make me 1 million" prompt doesn't work. Which i think you already know by now.&lt;/p&gt;

&lt;p&gt;What changed for me was not a better app. It was an afternoon in a park. Instead of firing one-line questions at it, i opened the AI on my phone and just talked to it for about three hours: what i was working on, what was stuck, what i had been avoiding. By the evening it could help me in a way it never could when i was firing one-liners at it.&lt;/p&gt;

&lt;p&gt;That is the whole game. When you leave a question vague, the model fills the empty space with something generic, because generic is the safest guess when it does not know what you actually meant.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a good prompt actually contains
&lt;/h2&gt;

&lt;p&gt;A good prompt is not longer; it is clearer. Four things usually do it, and you rarely need all four: who you want the AI to be, what you want, the bit of context it cannot see, and what a good answer looks like.&lt;/p&gt;

&lt;p&gt;Lazy: "give me dinner ideas." You get a generic list, half of which you would never make.&lt;/p&gt;

&lt;p&gt;Clear: "You're a practical home cook. Give me three vegetarian dinners for a tired weeknight. I have pasta, spinach, and eggs, i want each under twenty minutes, and just give me the three with a one-line reason, no essay." Same question, but now it knows the situation, the limits, and the shape you want back.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzpbepip5sh9jr90e28n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzpbepip5sh9jr90e28n.png" alt="Anatomy of a good ask: lazy vs clear, broken into who, context, what, shape." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The same question, minus the guesswork.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The seven ways to prompt
&lt;/h2&gt;

&lt;p&gt;Friendly names first, the technical name in brackets for the curious.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Just ask it clearly (zero-shot).&lt;/strong&gt; "Summarize this email in three bullets and tell me whether i need to reply." Your default for anything simple.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show it an example (few-shot).&lt;/strong&gt; "Here's a thank-you note i wrote once that felt right [paste it]. Write one like it for my neighbour." It copies your taste instead of guessing at it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it think out loud (chain-of-thought).&lt;/strong&gt; "I'm choosing between two flats. Walk through commute, cost, and daylight step by step, then tell me which one and why." Forcing the thinking first beats a snap answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Break the big thing into steps (decomposition).&lt;/strong&gt; Planning a five-day trip becomes: rough day-by-day, then one day in detail, then the packing list. Small steps you can check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for the plan, then the work (reason then act).&lt;/strong&gt; "Tell me how you'd structure a monthly budget for an irregular income, then build it as a table i can fill in."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Have it check its own answer (self-critique).&lt;/strong&gt; "Reread that message to my landlord and flag anything passive-aggressive, then give me a warmer version." The easiest quality check there is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep improving, and save what works (iterate).&lt;/strong&gt; Tell it exactly what was off, teach it your taste, and save the asks that work so you can reuse them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you only remember three: ask clearly for the simple stuff, make it think out loud for anything you are deciding, and have it check itself before you send anything that matters.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ns072hed0evq3ojryjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ns072hed0evq3ojryjk.png" alt="The seven ways to prompt, at a glance, numbered 01 to 07." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The seven, one line each. This is the cheat sheet.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your own notes are the best place to practice
&lt;/h2&gt;

&lt;p&gt;You learn this on your own life, not from a course. I keep what people call a second brain, a plain folder of my own notes that the AI can read, and it is the best practice ground i have.&lt;/p&gt;

&lt;p&gt;Try the smallest version. Drop a week of messy notes into one place, then ask: "group these into themes, tell me what i keep circling back to, and what i seem to be avoiding." Giving it your real material instead of a blank question is patterns 1 through 7 at once. If you want the full setup, i wrote up &lt;a href="https://codemeetai.substack.com/p/how-to-build-a-second-brain-with?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap01" rel="noopener noreferrer"&gt;how i built mine with Obsidian&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxstojapgw4lj8om4746i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxstojapgw4lj8om4746i.png" alt="The practice loop: ask, read, steer, save, then repeat." width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Ask, read what came back, steer, save what works. Then again.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where a better question stops helping
&lt;/h2&gt;

&lt;p&gt;Asking well fixes one conversation. It does nothing about the fact that the AI forgets you the moment you close the chat. That is where the work moves from the question to what is around it: giving the AI a memory it can read, which is exactly what a second brain is for. That is the next part of this series.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get good: practise on your own life
&lt;/h2&gt;

&lt;p&gt;Try, look at what came back, adjust, go again. When an answer is bad, read it instead of deleting it, because it is telling you which of the four things you left out. And when a way of asking works, hand it back to the AI: "write me a cleaner version of this prompt i can reuse." Using the AI to improve how you talk to the AI is the fastest way i know to get good.&lt;/p&gt;

&lt;p&gt;The seven live on a one-page cheat sheet, plain language, ready to copy. &lt;a href="https://choumed.gumroad.com/l/seven-ways-to-ask-ai?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap01" rel="noopener noreferrer"&gt;Grab it free here&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm Malik. I build with AI every day and write about using it well, minus the hype. This is part 01 of Using AI, properly. Next: giving the AI a memory. New parts land first at &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=uap01" rel="noopener noreferrer"&gt;codemeetai.substack.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>writing</category>
    </item>
    <item>
      <title>Your AI agent checks its own work. That's not a loop, that's a confident intern with a cron job.</title>
      <dc:creator>Malik Chohra</dc:creator>
      <pubDate>Sun, 05 Jul 2026 16:24:29 +0000</pubDate>
      <link>https://dev.to/malik_chohra/your-ai-agent-checks-its-own-work-thats-not-a-loop-thats-a-confident-intern-with-a-cron-job-4hoo</link>
      <guid>https://dev.to/malik_chohra/your-ai-agent-checks-its-own-work-thats-not-a-loop-thats-a-confident-intern-with-a-cron-job-4hoo</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; a loop is memory + rules + verify + schedule. Most agent setups have three of the four. The one they skip is a separate verifier, and skipping it means the agent that does the work also grades the work. That is the difference between self-correcting and self-confirming.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This piece is from &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;, my newsletter where I document how I actually use AI to ship real products, receipts included. New guides land there first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I run background AI agents on a schedule. For months I was quietly proud of the setup, until I lined it up against what a real loop actually requires and found I had skipped the one part that makes it trustworthy. If you have any agent running unattended, this is the question I had to ask myself, and you should too.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ladder, fast
&lt;/h2&gt;

&lt;p&gt;Prompt engineering tuned the words. Context engineering got the right things into the window. Harness engineering is the scaffolding around the model: tools, rules, sandboxes (&lt;a href="https://codemeetai.substack.com/p/harness-engineering-101prompt-engineering?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;I mapped the harness floor here&lt;/a&gt;). Loop engineering is the floor above, the harness running on a timer, spawning helpers, feeding itself. Each layer wrapped the last. Nobody got replaced, the edge just climbed a floor.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvty50p3i0rnq9hjkytfe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvty50p3i0rnq9hjkytfe.png" alt="The ladder: prompt, context, harness, loop" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A loop has four parts
&lt;/h2&gt;

&lt;p&gt;Memory it reads before acting and writes after. Rules it cannot break. A verifier that confirms the output before it counts. A schedule that triggers the cycle. Memory, rules, verify, schedule.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0eby67ywqxgzqg1urh1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0eby67ywqxgzqg1urh1.png" alt="The four parts of a loop, with verify highlighted" width="800" height="692"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I told on myself
&lt;/h2&gt;

&lt;p&gt;Three indexing layers per project, a curated memory bank, a structural index of what imports what, a temporal recall layer (&lt;a href="https://codemeetai.substack.com/p/how-to-build-a-second-brain-with?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;the full second-brain setup is here&lt;/a&gt;). Background agents on a schedule on top.&lt;/p&gt;

&lt;p&gt;Count it against the four parts. Memory, yes. Rules, yes. Schedule, yes. That is three. The fourth is verify, and I did not have it.&lt;/p&gt;

&lt;p&gt;I never built a separate checker. The loop produced work and then trusted its own work. No second model, no sub-agent whose only job is to read the output and return true or false. &lt;strong&gt;The agent that does the work also decides the work is fine.&lt;/strong&gt; In any human process you would flag that conflict of interest immediately. In an automated one it is somehow the default.&lt;/p&gt;

&lt;p&gt;That is the whole point. Memory plus rules plus schedule gives you an agent that runs a lot. It does not give you an agent you can trust to run unattended. Verification is the difference between self-correcting and self-confirming.&lt;/p&gt;

&lt;h2&gt;
  
  
  What verification actually means
&lt;/h2&gt;

&lt;p&gt;Not the agent re-reading its own output and saying "looks good." A &lt;em&gt;separate&lt;/em&gt; checker: a sub-agent or a second model, given the acceptance criteria of the goal, whose only output is true or false against a defined end-state. It does not see the reasoning that produced the work, it sees the work and the spec. That independence is the entire value. If you build one thing this week, build this, because it is what makes the rest safe to leave alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The governance angle most people miss
&lt;/h2&gt;

&lt;p&gt;The loop does not know what you are using it for. Two teams build the identical loop and get opposite results. One uses it to move faster on work they understand deeply. The other uses it to avoid understanding the work at all. Same files, same cron line, same checker, opposite outcomes. The responsibility moved up a floor alongside the capability.&lt;/p&gt;

&lt;p&gt;So, the one question: &lt;strong&gt;who checks the output?&lt;/strong&gt; If the answer is "the same agent that wrote it," you do not have a loop. You have a head start.&lt;/p&gt;

&lt;p&gt;I packaged the skeleton I am using to close my own gap, the memory bank, the rules file, a goal with a verifiable end-state, the checker sub-agent, the schedule, and guardrails so it cannot run off a cliff. It is free, name your price: &lt;a href="https://choumed.gumroad.com/l/loop-engineering-starter-kit?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;the Loop Engineering Starter Kit&lt;/a&gt;. The deeper write-up, with the diagrams, is on &lt;a href="https://codemeetai.substack.com/p/loop-engineering-what-happened-when?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I lean on these loops daily building &lt;a href="https://getwireai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;Wire AI&lt;/a&gt;, my generative onboarding SDK for React Native, where unverified agent output would land in front of real users.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I write &lt;a href="https://codemeetai.substack.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=loop" rel="noopener noreferrer"&gt;Code Meet AI&lt;/a&gt;: real AI workflows, real numbers, from someone shipping with it every day.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How are you handling verification in your own agent setups? I am still wiring mine in and would take notes from anyone further along.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>automation</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
