{"id":3508,"date":"2026-05-15T01:07:36","date_gmt":"2026-05-15T01:07:36","guid":{"rendered":"https:\/\/aiopsschool.com\/blog\/?p=3508"},"modified":"2026-05-15T01:08:13","modified_gmt":"2026-05-15T01:08:13","slug":"introducing-claude-md-your-projects-memory-for-claude","status":"publish","type":"post","link":"https:\/\/aiopsschool.com\/blog\/introducing-claude-md-your-projects-memory-for-claude\/","title":{"rendered":"Introducing CLAUDE.md \u2014 Your Project&#8217;s Memory for Claude"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What is <code>CLAUDE.md<\/code>?<\/h2>\n\n\n\n<p><code>CLAUDE.md<\/code> is a plain markdown file that Claude Code reads automatically every time you start a session. It&#8217;s how you give Claude <strong>persistent context<\/strong> about your project \u2014 architecture, conventions, commands, gotchas \u2014 so you don&#8217;t have to re-explain everything each time you come back.<\/p>\n\n\n\n<p>Think of it as an onboarding document, but written for Claude instead of a new teammate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Claude Loads It<\/h2>\n\n\n\n<p>When you run Claude Code from any directory, it walks <strong>upward<\/strong> through the folder tree and loads every <code>CLAUDE.md<\/code> it finds. The files <strong>stack<\/strong> \u2014 Claude reads all of them together. No manual loading, no special commands.<\/p>\n\n\n\n<p>That&#8217;s why a two-layer setup works so well for multi-repo projects.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Two-Layer Setup<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Layer 1 \u2014 Root <code>CLAUDE.md<\/code> (parent project folder)<\/h3>\n\n\n\n<p>Lives at the workspace root, above all your repos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/projects\/my-app\/\n\u251c\u2500\u2500 CLAUDE.md          \u2190 root (shared context)\n\u251c\u2500\u2500 repo-frontend\/\n\u251c\u2500\u2500 repo-backend\/\n\u2514\u2500\u2500 repo-shared-lib\/\n<\/code><\/pre>\n\n\n\n<p>This file holds <strong>cross-cutting context<\/strong> \u2014 things that are true for the whole project, not just one repo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Layer 2 \u2014 Per-repo <code>CLAUDE.md<\/code> (inside each service\/repo)<\/h3>\n\n\n\n<p>Lives inside each repo folder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>repo-backend\/\n\u251c\u2500\u2500 CLAUDE.md          \u2190 repo-specific context\n\u251c\u2500\u2500 src\/\n\u2514\u2500\u2500 package.json\n<\/code><\/pre>\n\n\n\n<p>This file holds <strong>repo-specific details<\/strong> \u2014 folder layout, local commands, internal patterns unique to that codebase.<\/p>\n\n\n\n<p>When you work inside <code>repo-backend\/<\/code>, Claude automatically loads both <code>repo-backend\/CLAUDE.md<\/code> and the root <code>CLAUDE.md<\/code>. You get the big picture and the local detail at the same time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rule of Thumb \u2014 What Goes Where<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Goes in <strong>root<\/strong> <code>CLAUDE.md<\/code><\/th><th>Goes in <strong>per-repo<\/strong> <code>CLAUDE.md<\/code><\/th><\/tr><\/thead><tbody><tr><td>System architecture and how repos relate<\/td><td>This repo&#8217;s folder structure<\/td><\/tr><tr><td>Cross-repo workflows (e.g., signup spans 3 services)<\/td><td>Entry points and main modules<\/td><\/tr><tr><td>Shared conventions (commit style, PR rules, branch naming)<\/td><td>Local build, test, and run commands<\/td><\/tr><tr><td>Glossary of domain terms<\/td><td>Repo-specific gotchas and quirks<\/td><\/tr><tr><td>Tech stack overview across repos<\/td><td>Internal patterns and idioms<\/td><\/tr><tr><td>Deployment topology<\/td><td>Dependencies and external integrations specific to this repo<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Quick test when you&#8217;re unsure:<\/strong> if the info is true for more than one repo, lift it to the root. If it only matters when working inside one specific repo, keep it there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Started in 3 Steps<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Create the root file.<\/strong> From your project root, create <code>CLAUDE.md<\/code> and write a short overview: what the project does, list of repos with one-line descriptions, shared conventions.<\/li>\n\n\n\n<li><strong>Create per-repo files.<\/strong> Inside each repo, run <code>\/init<\/code> in Claude Code to auto-generate a starter <code>CLAUDE.md<\/code>, then refine it by hand.<\/li>\n\n\n\n<li><strong>Keep it alive.<\/strong> Treat <code>CLAUDE.md<\/code> like code \u2014 review it in PRs, update it when conventions change, delete stale parts. The more current it is, the better Claude works.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Tips<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep each file under ~500 lines. Long context files get skimmed, not read carefully.<\/li>\n\n\n\n<li>Commit <code>CLAUDE.md<\/code> to git so the whole team benefits.<\/li>\n\n\n\n<li>For personal or sensitive notes, use <code>CLAUDE.local.md<\/code> (add it to <code>.gitignore<\/code>).<\/li>\n\n\n\n<li>If the same info is repeating across repo files, lift it to the root. If the root is getting bloated with details only one repo cares about, push them down.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is CLAUDE.md? CLAUDE.md is a plain markdown file that Claude Code reads automatically every time you start a session. [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[916],"tags":[],"class_list":["post-3508","post","type-post","status-publish","format-standard","hentry","category-claude"],"_links":{"self":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=3508"}],"version-history":[{"count":1,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3508\/revisions"}],"predecessor-version":[{"id":3509,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3508\/revisions\/3509"}],"wp:attachment":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=3508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=3508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=3508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}