<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>davit.cc Writing</title>
  <link href="https://davit.cc/writing/"/>
  <link rel="self" href="https://davit.cc/writing/feed.xml"/>
  <id>https://davit.cc/writing/</id>
  <updated>2026-11-02T12:00:00+04:00</updated>
  <author><name>Davit Khaburdzania</name><uri>https://davit.cc/</uri></author>
  <entry>
    <title>I don&#x27;t have a CLAUDE.md file</title>
    <link href="https://davit.cc/writing/claude-md-file/"/>
    <id>https://davit.cc/writing/claude-md-file/</id>
    <published>2026-11-02T12:00:00+04:00</published>
    <updated>2026-11-02T12:00:00+04:00</updated>
    <summary>What a CLAUDE.md file is, why Claude Code no longer needs one when you have an AGENTS.md, and the real AGENTS.md that runs this website.</summary>
    <content type="html">&lt;p&gt;&lt;img src=&quot;https://davit.cc/assets/images/writing/two-robots-one-notebook.webp&quot; alt=&quot;Two small robots of different shapes reading the same open notebook on a desk, one from each side&quot;&gt;&lt;/p&gt;
&lt;p&gt;This website&#x27;s code has no CLAUDE.md file. It has an &lt;code&gt;AGENTS.md&lt;/code&gt;, and Claude Code reads that instead.&lt;/p&gt;
&lt;p&gt;A CLAUDE.md file is a plain Markdown file that Claude Code reads at the start of every session. It&#x27;s where you tell Claude what it can&#x27;t work out from the code: how you ship, what you&#x27;ve already rejected, what never to touch.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://agents.md&quot;&gt;AGENTS.md&lt;/a&gt; is the same idea under the name other coding tools use: &quot;a README for agents&quot;. Codex, Cursor, Copilot and Gemini CLI read it. Since version 2.1.277, &lt;a href=&quot;https://code.claude.com/docs/en/memory#agents-md&quot;&gt;Claude Code reads it too&lt;/a&gt;, so one file covers all of them.&lt;/p&gt;
&lt;p&gt;Here&#x27;s what&#x27;s in this post:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What Claude does with AGENTS.md.&lt;/li&gt;
&lt;li&gt;What my AGENTS.md says.&lt;/li&gt;
&lt;li&gt;What stays out.&lt;/li&gt;
&lt;li&gt;How it stays right.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;1. What Claude does with AGENTS.md&lt;/h2&gt;
&lt;p&gt;When a Claude Code session starts, Claude looks for a &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;CLAUDE.local.md&lt;/code&gt; in the folder you opened and the folders above it. If there isn&#x27;t one, it loads every &lt;code&gt;AGENTS.md&lt;/code&gt; it finds there instead, and you see a line like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few more things from &lt;a href=&quot;https://code.claude.com/docs/en/memory#agents-md&quot;&gt;Anthropic&#x27;s docs&lt;/a&gt; that are worth knowing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;code&gt;AGENTS.md&lt;/code&gt; inside a subfolder loads when Claude opens a file in that folder.&lt;/li&gt;
&lt;li&gt;Your own &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; still loads next to it, so your personal rules don&#x27;t go away.&lt;/li&gt;
&lt;li&gt;If the repo has a &lt;code&gt;CLAUDE.md&lt;/code&gt; or a &lt;code&gt;CLAUDE.local.md&lt;/code&gt;, Claude reads that and skips &lt;code&gt;AGENTS.md&lt;/code&gt;, unless you change &lt;strong&gt;Project instructions&lt;/strong&gt; in &lt;code&gt;/config&lt;/code&gt; to read both.&lt;/li&gt;
&lt;li&gt;Older Claude Code versions don&#x27;t read &lt;code&gt;AGENTS.md&lt;/code&gt; on their own. On those, a &lt;code&gt;CLAUDE.md&lt;/code&gt; with the single line &lt;code&gt;@AGENTS.md&lt;/code&gt; pulls it in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last trick is what I used to have. My &lt;code&gt;CLAUDE.md&lt;/code&gt; was that one line. Claude reads &lt;code&gt;AGENTS.md&lt;/code&gt; by itself now, so I deleted it.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A small round robot reading a single index card pinned to a door, with a thick notebook lying open on the floor behind it&quot; src=&quot;https://davit.cc/assets/images/writing/robot-reads-door-note.webp&quot;&gt;&lt;figcaption&gt;It checks the door for a note first. Then it reads the notebook.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;2. What my AGENTS.md says&lt;/h2&gt;
&lt;p&gt;It has seven short sections, in this order:&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;What it tells Claude&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ship it&lt;/td&gt;
&lt;td&gt;Every push to &lt;code&gt;main&lt;/code&gt; goes live. Show me a preview first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stack&lt;/td&gt;
&lt;td&gt;Plain HTML, CSS and JS, and what each file is for&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agents&lt;/td&gt;
&lt;td&gt;The Markdown pages, API and discovery files the site serves to AI agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run it locally&lt;/td&gt;
&lt;td&gt;One command, and the screen widths to check&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design rules&lt;/td&gt;
&lt;td&gt;Colours, type, the hero, the logo, and what I already said no to&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content rules&lt;/td&gt;
&lt;td&gt;Facts that must match my CV, and how blog posts get built&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code style&lt;/td&gt;
&lt;td&gt;Match the code around you. Short comments, plain commit messages&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The first section matters most, because it&#x27;s the one Claude can&#x27;t guess from the code:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;## Ship it

- Every push to `main` deploys davit.cc within about a minute.
- Work directly on `main`. Davit is the only person on this repo:
  no pull requests, no feature branches.
- Because a push is a deploy, show Davit a preview of any visual change
  and push once he&#x27;s happy. Copy fixes and small bug fixes can go straight in.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That second rule exists because I typed this into a thread once:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;since i am only one working on this no need to create prs just push to main&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I said it once. It&#x27;s been in the file since.&lt;/p&gt;
&lt;p&gt;The design rules work the same way. Each one is a decision I already made, written down so I don&#x27;t make it again:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;- Light only. Mostly cool grey with a faint lavender glow.
  Davit found stronger lilac &amp;quot;too colourful&amp;quot;. Never use green accents.
- Project cards: the same dust in each product&#x27;s own soft colour.
  Illustrated scenes and redrawn product UIs were tried and rejected.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&quot;Tried and rejected&quot; saves the most time. Without that line, a new session has no way to know I already turned those ideas down.&lt;/p&gt;
&lt;p&gt;The content rules are short facts with no room for guessing: &quot;15+ years of experience&quot;, the section is called &quot;Projects&quot;, not &quot;Work&quot;, and &quot;Experience must match Davit&#x27;s CV&quot;.&lt;/p&gt;
&lt;h2&gt;3. What stays out&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Anything the code already says.&lt;/strong&gt; Claude can see the framework, the folders and the function names. Repeating them just makes the file longer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Long how-tos.&lt;/strong&gt; Writing a blog post here takes a style guide, image rules and a build script. That lives in a &lt;a href=&quot;https://code.claude.com/docs/en/skills&quot;&gt;skill&lt;/a&gt; in &lt;code&gt;.claude/skills/&lt;/code&gt;, which Claude loads only when it writes a post. My &lt;code&gt;AGENTS.md&lt;/code&gt; gives it one line: follow the &lt;code&gt;write-blog-post&lt;/code&gt; skill.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rules that must never break.&lt;/strong&gt; These files are advice, and Claude can miss advice. If something must never happen, the docs point you to a &lt;a href=&quot;https://code.claude.com/docs/en/hooks-guide&quot;&gt;hook&lt;/a&gt; that blocks it instead.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secrets.&lt;/strong&gt; The file is in git. Mine names the &lt;code&gt;AUTH_SECRET&lt;/code&gt; setting but never its value.&lt;/p&gt;
&lt;p&gt;Anthropic suggests &lt;a href=&quot;https://code.claude.com/docs/en/memory&quot;&gt;keeping each file under 200 lines&lt;/a&gt;, because longer files get followed less. Mine is about 80.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A small robot holding a single sheet of paper next to a tall wobbly stack of paper it has decided not to carry&quot; src=&quot;https://davit.cc/assets/images/writing/robot-one-sheet.webp&quot;&gt;&lt;figcaption&gt;It took the one page that mattered.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;4. How it stays right&lt;/h2&gt;
&lt;p&gt;Instructions go stale like any other doc. My first project instructions for this site still said it deployed from the &lt;code&gt;master&lt;/code&gt; branch through GitHub Pages, after I had moved it to &lt;code&gt;main&lt;/code&gt; and Cloudflare.&lt;/p&gt;
&lt;p&gt;Now the rule is simple. When a convention changes, &lt;code&gt;AGENTS.md&lt;/code&gt; changes in the same commit. And when I correct a choice, like &quot;too colourful&quot;, it becomes a line in the file.&lt;/p&gt;
&lt;p&gt;So the file keeps growing, one line per &quot;no&quot;, and I rewrite lines when they stop being true.&lt;/p&gt;
&lt;h2&gt;Questions people ask&lt;/h2&gt;
&lt;h3&gt;Do I still need a CLAUDE.md file?&lt;/h3&gt;
&lt;p&gt;Only in a few cases: you want rules that only Claude should read, or you&#x27;re on a Claude Code version older than 2.1.277. Otherwise an &lt;code&gt;AGENTS.md&lt;/code&gt; is enough. If you do keep both, put &lt;code&gt;@AGENTS.md&lt;/code&gt; at the top of the &lt;code&gt;CLAUDE.md&lt;/code&gt;, because Claude reads the &lt;code&gt;CLAUDE.md&lt;/code&gt; and skips the other one.&lt;/p&gt;
&lt;h3&gt;Should AGENTS.md be in git?&lt;/h3&gt;
&lt;p&gt;Yes, so everyone on the project, people and agents, gets the same rules. Personal rules go in &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;, which stays on your machine. Skip &lt;code&gt;CLAUDE.local.md&lt;/code&gt; here: having one makes Claude stop reading &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Is it the same as Claude Projects instructions?&lt;/h3&gt;
&lt;p&gt;No. &lt;code&gt;AGENTS.md&lt;/code&gt; lives in the code and travels with it. Project instructions live in &lt;a href=&quot;https://davit.cc/writing/how-to-use-claude-projects/&quot;&gt;Claude Projects&lt;/a&gt; and cover how you work: where the repo is, who approves what. I keep both short. They overlap only on how to ship, because that rule matters everywhere.&lt;/p&gt;
&lt;h2&gt;Start yours&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;/init&lt;/code&gt; in Claude Code. It reads the codebase and writes a first &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rename it to &lt;code&gt;AGENTS.md&lt;/code&gt;, so every agent reads it.&lt;/li&gt;
&lt;li&gt;Delete everything Claude could find by reading the code.&lt;/li&gt;
&lt;li&gt;Add how you ship and what you&#x27;ve already said no to.&lt;/li&gt;
&lt;li&gt;Each time you correct Claude, add one line.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Write down the &quot;no&quot;. Skip the rest.&lt;/p&gt;
&lt;p&gt;More on how this site gets built in &lt;a href=&quot;https://davit.cc/writing/agentic-coding-workflow/&quot;&gt;my agentic coding workflow&lt;/a&gt;, or see what I&#x27;ve worked on in &lt;a href=&quot;https://davit.cc/cv/&quot;&gt;my CV&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>My agentic coding workflow</title>
    <link href="https://davit.cc/writing/agentic-coding-workflow/"/>
    <id>https://davit.cc/writing/agentic-coding-workflow/</id>
    <published>2026-10-23T12:00:00+04:00</published>
    <updated>2026-10-25T12:00:00+04:00</updated>
    <summary>How I build with AI agents: Claude writes the code, I write the rules once and make the calls. With the real prompts I used to rebuild this site.</summary>
    <content type="html">&lt;p&gt;&lt;img src=&quot;https://davit.cc/assets/images/writing/notebook-paper-planes.webp&quot; alt=&quot;An open notebook and a coffee cup on a desk, with five paper planes flying off from the notebook in different directions&quot;&gt;&lt;/p&gt;
&lt;p&gt;I rebuilt this website in two days and didn&#x27;t write a line of code.&lt;/p&gt;
&lt;p&gt;Claude wrote it. I said yes or no. Mostly no.&lt;/p&gt;
&lt;p&gt;That&#x27;s my agentic coding workflow, and it comes down to three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;One project per product.&lt;/li&gt;
&lt;li&gt;Rules I write down once.&lt;/li&gt;
&lt;li&gt;Short answers.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;1. One project per product&lt;/h2&gt;
&lt;p&gt;Every product I work on gets its own Claude Project: this site, &lt;a href=&quot;https://rillow.ai&quot;&gt;Rillow&lt;/a&gt;, &lt;a href=&quot;https://bundle.ink&quot;&gt;Bundle&lt;/a&gt; and &lt;a href=&quot;https://unposed.camera&quot;&gt;Unposed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I tell the project what I want. It starts a separate thread for each task, and each thread works on its own copy of the code. Three things can be in progress while I&#x27;m doing something else.&lt;/p&gt;
&lt;p&gt;When I come back, I check what&#x27;s done and what&#x27;s waiting on me. It works from my phone too.&lt;/p&gt;
&lt;p&gt;Boris Cherny, who made Claude Code, used to juggle ten or more sessions by hand (&lt;a href=&quot;https://venturebeat.com/technology/the-creator-of-claude-code-just-revealed-his-workflow-and-developers-are&quot;&gt;VentureBeat&lt;/a&gt;). A project does the juggling for me. More on that in &lt;a href=&quot;https://davit.cc/writing/how-to-use-claude-projects/&quot;&gt;how I use Claude Projects&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;2. Rules I write down once&lt;/h2&gt;
&lt;p&gt;Every project starts with one paragraph of instructions. Mine says where the code lives, that I&#x27;m the only one working on it, and that every push goes live, so show me a preview first.&lt;/p&gt;
&lt;p&gt;The code has its own rulebook too, an &lt;code&gt;AGENTS.md&lt;/code&gt; file. A few real lines from it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;- Light only. Mostly cool grey with a faint lavender glow. Davit found stronger lilac &amp;quot;too colourful&amp;quot;. Never use green accents.
- Keep pixel art pixel-exact: nearest-neighbour scaling only.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Almost every rule in there is a &quot;no&quot; I said once.&lt;/p&gt;
&lt;p&gt;When I correct Claude, I tell it to remember. Then I never say it again.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A small robot on tiptoe pins another card onto a cork board full of pinned cards&quot; src=&quot;https://davit.cc/assets/images/writing/robot-cork-board.webp&quot;&gt;&lt;figcaption&gt;Every &quot;no&quot; ends up on the board.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Mitchell Hashimoto calls this &lt;a href=&quot;https://mitchellh.com/writing/my-ai-adoption-journey&quot;&gt;engineering the harness&lt;/a&gt;: every mistake becomes a rule, so it doesn&#x27;t happen twice.&lt;/p&gt;
&lt;div class=&quot;flow&quot; role=&quot;img&quot; aria-label=&quot;The loop: I write the rules, Claude builds, I look at a preview. Yes means it ships. No means Claude tries again and remembers why.&quot;&gt;
  &lt;span&gt;I write the rules&lt;/span&gt;
  &lt;span&gt;Claude builds&lt;/span&gt;
  &lt;span&gt;I look at a preview&lt;/span&gt;
  &lt;span&gt;&lt;b&gt;Yes:&lt;/b&gt; it ships&lt;br&gt;&lt;b&gt;No:&lt;/b&gt; it tries again and remembers why&lt;/span&gt;
&lt;/div&gt;

&lt;h2&gt;3. Short answers&lt;/h2&gt;
&lt;p&gt;Here&#x27;s what I actually typed during the redesign:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;too colourful&quot;&lt;/li&gt;
&lt;li&gt;&quot;i love it&quot;&lt;/li&gt;
&lt;li&gt;&quot;childish&quot;&lt;/li&gt;
&lt;li&gt;&quot;not real&quot;&lt;/li&gt;
&lt;li&gt;&quot;Pixel is better&quot;&lt;/li&gt;
&lt;li&gt;&quot;mario in threejs&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last one became &lt;a href=&quot;https://davit.cc/projects/shiba-land/&quot;&gt;Shiba Land&lt;/a&gt;, a small platformer. With a Shiba instead of Mario, because I&#x27;d like to keep this website.&lt;/p&gt;
&lt;p&gt;None of this is code review. It&#x27;s taste, and taste is most of my job now.&lt;/p&gt;
&lt;p&gt;Simon Willison says &lt;a href=&quot;https://simonwillison.net/2026/Feb/23/agentic-engineering-patterns/&quot;&gt;writing code is cheap now&lt;/a&gt;. When three versions of a page take a few minutes, picking one is the work.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A person at a desk with a coffee looks at three small robots, each holding up a different drawing of a house&quot; src=&quot;https://davit.cc/assets/images/writing/robots-three-drawings.webp&quot;&gt;&lt;figcaption&gt;Three versions. Pick one.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;If a choice changes what I&#x27;m building, Claude asks on a card with a few options and a recommendation. I pick one and go back to what I was doing.&lt;/p&gt;
&lt;h2&gt;By the numbers&lt;/h2&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The redesign&lt;/th&gt;
&lt;th style=&quot;text-align: right;&quot;&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td style=&quot;text-align: right;&quot;&gt;About two days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull requests&lt;/td&gt;
&lt;td style=&quot;text-align: right;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files changed&lt;/td&gt;
&lt;td style=&quot;text-align: right;&quot;&gt;43&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines of code I wrote&lt;/td&gt;
&lt;td style=&quot;text-align: right;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replies in the thread&lt;/td&gt;
&lt;td style=&quot;text-align: right;&quot;&gt;165&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;What I keep for myself&lt;/h2&gt;
&lt;p&gt;I decide what gets built. I approve anything that can&#x27;t be undone. On this site every push goes live, so I see a preview first.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A hand pressing a rubber stamp onto the middle of three sheets of paper, each showing a slightly different shape&quot; src=&quot;https://davit.cc/assets/images/writing/rubber-stamp-three-sheets.webp&quot;&gt;&lt;figcaption&gt;The part I keep.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;And I read anything with my name on it. Including this post, which has been rewritten three times. The first version sounded like a robot. The second had too many details. The third was fine, and then I found a style I liked better.&lt;/p&gt;
&lt;h2&gt;What still goes wrong&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Instructions go stale.&lt;/strong&gt; My first setup said the site deploys from the master branch. It doesn&#x27;t. The first thread read the code and fixed it. Trust the code over your own summary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Drawing from scratch.&lt;/strong&gt; The first hand-coded Shiba came out &quot;silly&quot;. The 3D one was too red. Claude does much better with clear rules, like pixel art, or with a design I&#x27;ve already made.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Long threads get heavy.&lt;/strong&gt; After a while every new message costs more. New work gets a new thread.&lt;/p&gt;
&lt;h2&gt;Try it&lt;/h2&gt;
&lt;p&gt;Pick one side project and make it a project.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write one paragraph of instructions: where the code is, how to check a change, what needs your OK.&lt;/li&gt;
&lt;li&gt;Put the rules for the code in &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ask for a preview before anything ships.&lt;/li&gt;
&lt;li&gt;When you correct it, tell it to remember.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Then mostly say no.&lt;/p&gt;
&lt;p&gt;If you&#x27;re hiring someone who works like this, &lt;a href=&quot;https://davit.cc/cv/&quot;&gt;here&#x27;s my CV&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>How to use Claude Projects the right way</title>
    <link href="https://davit.cc/writing/how-to-use-claude-projects/"/>
    <id>https://davit.cc/writing/how-to-use-claude-projects/</id>
    <published>2026-10-23T12:00:00+04:00</published>
    <updated>2026-10-25T12:00:00+04:00</updated>
    <summary>How to use the new Claude Projects: let Claude set it up, keep instructions short, know where memory goes and watch your usage. Examples from my own site.</summary>
    <content type="html">&lt;p&gt;&lt;img src=&quot;https://davit.cc/assets/images/writing/hand-threads-spools.webp&quot; alt=&quot;A hand holding the ends of five threads, each running to its own wooden spool on a table&quot;&gt;&lt;/p&gt;
&lt;p&gt;I run this whole website from one Claude Project. The redesign, the favicon, the little games, these posts. All of it.&lt;/p&gt;
&lt;p&gt;If you want to know how to use Claude Projects well, here&#x27;s the short version: brief it once, keep feeding it work, and answer when it asks.&lt;/p&gt;
&lt;p&gt;The rest of this post is the long version, from my own setup.&lt;/p&gt;
&lt;h2&gt;What a project is now&lt;/h2&gt;
&lt;p&gt;Anthropic &lt;a href=&quot;https://claude.com/blog/projects-redesigned&quot;&gt;redesigned Projects&lt;/a&gt; in September 2026.&lt;/p&gt;
&lt;p&gt;Before, a project was a folder: some files, some instructions, some chats.&lt;/p&gt;
&lt;p&gt;Now it&#x27;s a chat with a coordinator. You tell it what you want. It answers, or it starts a thread. Each thread is a full Claude Code session with its own copy of your code. Threads share a memory and report back when they&#x27;re done.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A person talks to one robot, which holds threads leading to five small robots each working at its own little desk&quot; src=&quot;https://davit.cc/assets/images/writing/robot-coordinator-threads.webp&quot;&gt;&lt;figcaption&gt;You only talk to the one in the middle.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;It&#x27;s in beta on Pro and Max, on the web, desktop and mobile apps (&lt;a href=&quot;https://code.claude.com/docs/en/claude-projects&quot;&gt;docs&lt;/a&gt;). Most guides online still describe the old folder version.&lt;/p&gt;
&lt;h2&gt;1. Let Claude set it up&lt;/h2&gt;
&lt;p&gt;I didn&#x27;t write my setup. My first message was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Help me set up this new project from my recent work. Look through my recent sessions and repositories, identify the main thread of work, and propose a project setup: a short name, the repositories it should include, an environment, concise project instructions drawn from what kept coming up, and one or two optional routines. Show me the proposal before changing anything.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It came back with a name, instructions and a weekly check of the live site. I said &quot;yes&quot;.&lt;/p&gt;
&lt;h2&gt;2. Keep the instructions short&lt;/h2&gt;
&lt;p&gt;Instructions are the brief every thread reads first. Mine are one paragraph:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Site is davit.cc, built from the main branch of davit-khaburdzania.github.io and served by a Cloudflare Worker (wrangler.jsonc). Davit is the only one working on the site, so don&#x27;t open pull requests: commit and push straight to main. Every push to main deploys davit.cc automatically within about a minute (Cloudflare&#x27;s GitHub connection), so a push is a production change: show Davit a preview of visual changes before pushing. Keep profile details (location &quot;Tbilisi, Georgia&quot;, website davit.cc) consistent across the site, GitHub and LinkedIn. Verify changes on the live site after each push.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The first version got the branch wrong. The first thread read the code and fixed it.&lt;/p&gt;
&lt;p&gt;The rest got added as I went. &quot;No pull requests&quot; came on day two, when I told it I&#x27;m the only one working on the site.&lt;/p&gt;
&lt;h2&gt;3. Know where things go&lt;/h2&gt;
&lt;p&gt;A project keeps context in three places:&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;What goes in it&lt;/th&gt;
&lt;th&gt;Example from my site&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instructions&lt;/td&gt;
&lt;td&gt;Rules every thread needs&lt;/td&gt;
&lt;td&gt;&quot;Show a preview before pushing&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;Decisions you make along the way&lt;/td&gt;
&lt;td&gt;&quot;Unposed goes last in the Projects list&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; in the repo&lt;/td&gt;
&lt;td&gt;How the code is built&lt;/td&gt;
&lt;td&gt;&quot;Never use green accents&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Memory fills itself when you say &quot;remember&quot;. If you only write one of these, write the repo file. Every session reads it, project or not.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;An open wooden index card box with blank cards, next to a folded sheet of paper and a pencil&quot; src=&quot;https://davit.cc/assets/images/writing/index-card-box.webp&quot;&gt;&lt;figcaption&gt;Memory. Fills up faster than you&#x27;d think.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;4. Send work, then walk away&lt;/h2&gt;
&lt;p&gt;Talk to the coordinator like a colleague. Questions get answered. Work becomes a thread.&lt;/p&gt;
&lt;p&gt;When a thread needs a decision, it asks with a few options and a recommendation. When my CV needed updating, it asked whether it should edit the PDF or I&#x27;d do it myself. I picked &quot;I&#x27;ll do it&quot;.&lt;/p&gt;
&lt;p&gt;One thing isn&#x27;t obvious: if a thread needs your approval, answer in that thread. Saying &quot;go ahead&quot; to the coordinator doesn&#x27;t reach it.&lt;/p&gt;
&lt;h2&gt;5. Use your own computer when you have to&lt;/h2&gt;
&lt;p&gt;Some of my work needs my Mac. Paper, the design app I use, only runs there.&lt;/p&gt;
&lt;p&gt;So that one thread runs on my machine through Remote Control, and everything else stays in the cloud. Turn it on in the desktop app under Settings &amp;gt; Claude Code, then pick &quot;Work locally&quot; in the project chat.&lt;/p&gt;
&lt;h2&gt;6. Watch your usage&lt;/h2&gt;
&lt;p&gt;Every thread is a full session and several run at once, so a project uses your plan faster than a chat.&lt;/p&gt;
&lt;p&gt;Two habits help:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;New work, new thread.&lt;/strong&gt; Long threads get expensive. My redesign thread hit 165 replies before I let it go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Close what you&#x27;re done with.&lt;/strong&gt; A thread that watches a pull request wakes up every time CI fails.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can also switch to cheaper models in the project settings.&lt;/p&gt;
&lt;h2&gt;Frequently asked questions&lt;/h2&gt;
&lt;h3&gt;When should I use a project instead of a chat?&lt;/h3&gt;
&lt;p&gt;When the work keeps going, like a product or a site you keep improving. A quick question is fine in a chat.&lt;/p&gt;
&lt;h3&gt;What&#x27;s the difference between Claude Projects and Claude Code?&lt;/h3&gt;
&lt;p&gt;Projects are built on Claude Code. Every thread is a Claude Code session. The project adds the coordinator, shared instructions and memory.&lt;/p&gt;
&lt;h3&gt;Can I share a Claude Project with my team?&lt;/h3&gt;
&lt;p&gt;Not yet. During the beta a project belongs to one person.&lt;/p&gt;
&lt;h3&gt;Do cloud threads get my local skills and MCP servers?&lt;/h3&gt;
&lt;p&gt;No. They get the connectors and skills from your claude.ai account and whatever is in your repo. Anything installed only on your laptop needs a thread running on your computer.&lt;/p&gt;
&lt;h2&gt;The short version, again&lt;/h2&gt;
&lt;p&gt;Brief it once. Let it remember the rest.&lt;/p&gt;
&lt;p&gt;Here&#x27;s &lt;a href=&quot;https://davit.cc/writing/agentic-coding-workflow/&quot;&gt;how I work day to day&lt;/a&gt;, and here&#x27;s &lt;a href=&quot;https://davit.cc/cv/&quot;&gt;my CV&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Languages and frameworks don&#x27;t matter anymore</title>
    <link href="https://davit.cc/writing/languages-and-frameworks-dont-matter/"/>
    <id>https://davit.cc/writing/languages-and-frameworks-dont-matter/</id>
    <published>2026-10-23T12:00:00+04:00</published>
    <updated>2026-10-25T12:00:00+04:00</updated>
    <summary>With AI agents writing most of the code, the stack matters much less. What the best language for AI coding really comes down to, and what still matters.</summary>
    <content type="html">&lt;p&gt;&lt;img src=&quot;https://davit.cc/assets/images/writing/robot-screwdriver-shrug.webp&quot; alt=&quot;A small robot holding a screwdriver handle shrugs at a row of different screwdriver bits&quot;&gt;&lt;/p&gt;
&lt;p&gt;I&#x27;ve shipped Rails, Elixir, Node, TypeScript, Python and React professionally. For 15 years, picking the stack was the first big decision on every project.&lt;/p&gt;
&lt;p&gt;It isn&#x27;t anymore.&lt;/p&gt;
&lt;p&gt;If you&#x27;re asking what the best language for AI coding is, my answer is anything where the agent can check its own work fast. The syntax barely matters.&lt;/p&gt;
&lt;h2&gt;What changed&lt;/h2&gt;
&lt;p&gt;Agents write most of the code now, in whatever language you give them.&lt;/p&gt;
&lt;p&gt;This year I&#x27;ve worked on a Next.js app for &lt;a href=&quot;https://rillow.ai&quot;&gt;Rillow&lt;/a&gt;, an iPhone app, an Android app and a Chrome extension for &lt;a href=&quot;https://bundle.ink&quot;&gt;Bundle&lt;/a&gt;, and this site in plain HTML. Each time the platform picked the language. Claude handled all of them.&lt;/p&gt;
&lt;p&gt;Andrej Karpathy says agents now write almost all of his code (&lt;a href=&quot;https://tech.yahoo.com/ai/chatgpt/articles/ai-agents-wrote-80-karpathys-175030864.html&quot;&gt;Yahoo Tech&lt;/a&gt;). Simon Willison puts it simply: &lt;a href=&quot;https://simonwillison.net/2026/Feb/23/agentic-engineering-patterns/&quot;&gt;writing code is cheap now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When code is cheap, the language you write it in is a detail.&lt;/p&gt;
&lt;h2&gt;But languages aren&#x27;t equal&lt;/h2&gt;
&lt;p&gt;To be fair, there&#x27;s evidence they differ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Elixir&lt;/strong&gt; scored highest on one benchmark, as its creator José Valim &lt;a href=&quot;https://dashbit.co/blog/why-elixir-best-language-for-ai&quot;&gt;points out&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt; catches the most common mistake. In one study, almost all compile errors in AI-written code were type errors (&lt;a href=&quot;https://github.blog/2025-12-09-why-ai-is-pushing-developers-toward-typed-languages/&quot;&gt;GitHub&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go&lt;/strong&gt; gets praise from Armin Ronacher for being easy for agents to read and test (&lt;a href=&quot;https://lucumr.pocoo.org/2026/2/9/a-language-for-agents/&quot;&gt;A Language for Agents&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Look at why each one wins, though. It&#x27;s the same reason every time: the agent finds out fast when it&#x27;s wrong.&lt;/p&gt;
&lt;p&gt;That comes from the tooling. The syntax has little to do with it.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A small robot building something at a workbench pauses and looks up at a desk lamp that has just lit up&quot; src=&quot;https://davit.cc/assets/images/writing/robot-lamp-lights-up.webp&quot;&gt;&lt;figcaption&gt;All it needs is a light that comes on when it&#x27;s wrong.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;What still matters&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fast feedback.&lt;/strong&gt; Tests that run in seconds and a strict type checker beat any language switch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One way to do things.&lt;/strong&gt; Conventions help agents for the same reason they help new hires.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The platform.&lt;/strong&gt; An iPhone app goes through Xcode and App Review whatever you write it in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code you can read.&lt;/strong&gt; You still review it. You still own it.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;So what should you pick?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;A new web app:&lt;/strong&gt; TypeScript, with strict checks on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your team already knows Rails or Elixir:&lt;/strong&gt; keep it and write good tests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance-critical, native, or brand new with little public code:&lt;/strong&gt; this is where the choice still deserves real thought.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Everything else:&lt;/strong&gt; pick what fits the platform and move on.&lt;/p&gt;
&lt;figure&gt;&lt;img width=&quot;1600&quot; height=&quot;900&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A balance scale with a different small stone in each pan, its beam almost level&quot; src=&quot;https://davit.cc/assets/images/writing/balance-scale-stones.webp&quot;&gt;&lt;figcaption&gt;Close enough.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;What this means for hiring&lt;/h2&gt;
&lt;p&gt;Years in one framework tell you less than they used to. The agent already knows the framework.&lt;/p&gt;
&lt;p&gt;I&#x27;d look for someone who splits work into small pieces, checks the results properly and knows what not to build.&lt;/p&gt;
&lt;h2&gt;The short version&lt;/h2&gt;
&lt;p&gt;The best language for AI coding is the one that tells the agent it&#x27;s wrong. Everything else is preference.&lt;/p&gt;
&lt;p&gt;Here&#x27;s &lt;a href=&quot;https://davit.cc/writing/agentic-coding-workflow/&quot;&gt;how I work with agents day to day&lt;/a&gt;, and here&#x27;s &lt;a href=&quot;https://davit.cc/cv/&quot;&gt;my CV&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
</feed>
