[{"data":1,"prerenderedAt":873},["ShallowReactive",2],{"blog-perfect-claude-folder-agents-skills-claude-md":3,"related-perfect-claude-folder-agents-skills-claude-md":872},{"id":4,"title":5,"author":6,"body":7,"category":855,"date":856,"description":857,"extension":858,"featured":173,"image":859,"meta":860,"navigation":173,"path":861,"readTime":862,"seo":863,"sitemap":864,"stem":865,"tags":866,"__hash__":871},"blog\u002Fblog\u002Fperfect-claude-folder-agents-skills-claude-md.md","The Perfect .claude Folder: Agents, Skills, and CLAUDE.md Before You Write a Line of Code","SynchSoft Team",{"type":8,"value":9,"toc":842},"minimark",[10,15,19,31,34,38,41,50,53,70,74,77,84,87,121,127,131,136,139,239,242,283,286,290,293,296,303,370,373,391,394,400,403,407,410,421,473,476,496,499,565,569,583,691,694,698,727,731,734,740,746,750,782,786,792,801,804,838],[11,12,14],"h2",{"id":13},"the-hour-before-you-start-is-the-one-that-pays","The hour before you start is the one that pays",[16,17,18],"p",{},"Most people open Claude Code, type a request, and hope. It works, until the project gets big enough that the agent starts forgetting conventions, re-reading the same files, and confidently doing the wrong thing.",[16,20,21,22,26,27,30],{},"The fix is almost never a better prompt. It is a better setup. The ",[23,24,25],"code",{},".claude"," folder - your ",[23,28,29],{},"CLAUDE.md",", your subagents, your skills, your hooks - is where you tell the agent how your project works, once, so you do not have to repeat yourself every session. Get it right and the agent behaves like a senior engineer who already knows your codebase. Get it wrong, or skip it, and you are pair-programming with someone who has amnesia.",[16,32,33],{},"This is a practical guide to setting up that folder before you start real work. It is grounded in Anthropic's official Claude Code documentation and in the way Andrej Karpathy talks about designing context for large language models. Details of the tool evolve, so treat the exact fields as \"check the current docs,\" but the mental model is durable.",[11,35,37],{"id":36},"the-mental-model-context-is-the-program","The mental model: context is the program",[16,39,40],{},"Karpathy has a useful framing: the LLM is a new kind of computer, and the context window is its RAM. The model is fixed. What changes from one run to the next is what you load into that window. In that world, your job is not to write clever prompts. It is to curate the right context - the right instructions, the right files, the right tools - so the model has what it needs and nothing that distracts it.",[16,42,43,44,46,47,49],{},"He calls the broader idea \"context engineering,\" and it maps directly onto Claude Code. ",[23,45,29],{}," is not a README. It is a curated system prompt that gets loaded into RAM every session. Subagents are separate RAM banks for focused work. Skills are programs you load on demand. Hooks are the parts you refuse to leave to chance. The whole ",[23,48,25],{}," folder is you programming the agent with context instead of code.",[16,51,52],{},"Two principles fall out of this immediately, and everything below is really just applying them:",[54,55,56,64],"ul",{},[57,58,59,63],"li",{},[60,61,62],"strong",{},"Signal over volume."," Every line you load costs attention. If removing a line would not cause a mistake, remove it.",[57,65,66,69],{},[60,67,68],{},"Determinism where it matters."," If something must happen every single time, do not write it as an instruction and hope. Wire it as a hook.",[11,71,73],{"id":72},"what-actually-lives-in-claude","What actually lives in .claude",[16,75,76],{},"Here is the anatomy of a well-formed setup. Not every project needs all of it, but this is the full shape.",[16,78,79],{},[80,81],"img",{"alt":82,"src":83},"The anatomy of a .claude folder: CLAUDE.md, agents, skills, hooks, settings, and MCP config","\u002Fblog\u002Fdiagram-claude-anatomy.svg",[16,85,86],{},"A few things worth internalizing:",[54,88,89,115],{},[57,90,91,94,95,98,99,102,103,106,107,110,111,114],{},[60,92,93],{},"Project vs personal vs managed."," Project files (",[23,96,97],{},".\u002F.claude\u002F",") are shared with your team through git. Personal files (",[23,100,101],{},"~\u002F.claude\u002F",") apply to all your projects and are yours alone. Managed files are deployed by an organization and win over everything. Anything ending in ",[23,104,105],{},".local"," (like ",[23,108,109],{},"settings.local.json"," or ",[23,112,113],{},"CLAUDE.local.md",") is personal and gitignored - the right place for machine-specific paths and secrets-adjacent notes.",[57,116,117,120],{},[60,118,119],{},"Precedence is real."," When two files disagree, the more specific and more local one usually wins, with managed org policy on top. Knowing the order saves you hours of \"why is it ignoring my instruction.\"",[16,122,123],{},[80,124],{"alt":125,"src":126},"Settings precedence, highest to lowest: managed org policy, command-line arguments, local settings, project settings, then user settings","\u002Fblog\u002Fdiagram-precedence.svg",[11,128,130],{"id":129},"claudemd-write-a-system-prompt-not-a-wiki","CLAUDE.md: write a system prompt, not a wiki",[16,132,133,135],{},[23,134,29],{}," is the single most important file, and the one people most often get wrong by making it huge. Claude Code loads it every session. Anthropic's own guidance is blunt about the tradeoff: keep it tight, because past a couple hundred lines adherence starts to slip and the tail may not even be loaded. A 600-line CLAUDE.md is not thorough. It is diluted.",[16,137,138],{},"Write it the way you would brief a sharp new hire on day one. Short, specific, high-signal.",[140,141,146],"pre",{"className":142,"code":143,"language":144,"meta":145,"style":145},"language-markdown shiki shiki-themes github-dark","# Build and test\n- Run `npm test` before committing\n- Lint with `npm run lint` (Prettier is pre-configured)\n\n# Conventions\n- 2-space indentation, no console.log in production code\n- REST URLs are kebab-case; error responses use the shape in @docs\u002Fapi-errors.md\n\n# Architecture\n- App code in app\u002F (Nuxt 4 convention); server routes in server\u002Fapi\u002F\n- Never call the DB from a Vue component - go through server\u002Fapi\n\n# Gotchas\n- Session tokens expire after 2 hours; use the refresh endpoint\n- Do not edit generated files in .output\u002F\n","markdown","",[23,147,148,156,162,168,175,181,187,193,198,204,210,216,221,227,233],{"__ignoreMap":145},[149,150,153],"span",{"class":151,"line":152},"line",1,[149,154,155],{},"# Build and test\n",[149,157,159],{"class":151,"line":158},2,[149,160,161],{},"- Run `npm test` before committing\n",[149,163,165],{"class":151,"line":164},3,[149,166,167],{},"- Lint with `npm run lint` (Prettier is pre-configured)\n",[149,169,171],{"class":151,"line":170},4,[149,172,174],{"emptyLinePlaceholder":173},true,"\n",[149,176,178],{"class":151,"line":177},5,[149,179,180],{},"# Conventions\n",[149,182,184],{"class":151,"line":183},6,[149,185,186],{},"- 2-space indentation, no console.log in production code\n",[149,188,190],{"class":151,"line":189},7,[149,191,192],{},"- REST URLs are kebab-case; error responses use the shape in @docs\u002Fapi-errors.md\n",[149,194,196],{"class":151,"line":195},8,[149,197,174],{"emptyLinePlaceholder":173},[149,199,201],{"class":151,"line":200},9,[149,202,203],{},"# Architecture\n",[149,205,207],{"class":151,"line":206},10,[149,208,209],{},"- App code in app\u002F (Nuxt 4 convention); server routes in server\u002Fapi\u002F\n",[149,211,213],{"class":151,"line":212},11,[149,214,215],{},"- Never call the DB from a Vue component - go through server\u002Fapi\n",[149,217,219],{"class":151,"line":218},12,[149,220,174],{"emptyLinePlaceholder":173},[149,222,224],{"class":151,"line":223},13,[149,225,226],{},"# Gotchas\n",[149,228,230],{"class":151,"line":229},14,[149,231,232],{},"- Session tokens expire after 2 hours; use the refresh endpoint\n",[149,234,236],{"class":151,"line":235},15,[149,237,238],{},"- Do not edit generated files in .output\u002F\n",[16,240,241],{},"Some rules of thumb that keep it lean:",[54,243,244,250,256,266],{},[57,245,246,249],{},[60,247,248],{},"If Claude can infer it from the code, do not write it."," It can see your file structure. Spend the budget on the things it cannot guess: your conventions, your gotchas, your \"never do this.\"",[57,251,252,255],{},[60,253,254],{},"Be specific."," \"Use 2-space indentation\" beats \"format code properly.\" Specific instructions are followed; vague ones are interpreted.",[57,257,258,261,262,265],{},[60,259,260],{},"Reference, do not inline."," Long documents belong in files the agent reads on demand. Many setups support an ",[23,263,264],{},"@path\u002Fto\u002Ffile"," reference so you can point at deeper docs without pasting them into the always-loaded prompt.",[57,267,268,271,272,275,276,278,279,282],{},[60,269,270],{},"Bootstrap, then prune."," ",[23,273,274],{},"\u002Finit"," will generate a first draft of ",[23,277,29],{}," from your codebase. Use it as a starting point, then cut hard. ",[23,280,281],{},"\u002Fmemory"," lets you open and edit it any time.",[16,284,285],{},"There is also an auto-memory system that accumulates notes across sessions. Let it do its job; skim it occasionally and delete what has gone stale. Curated memory beats a wall of history.",[11,287,289],{"id":288},"subagents-focused-specialists-with-their-own-ram","Subagents: focused specialists with their own RAM",[16,291,292],{},"The second failure mode of long AI sessions is context pollution. You start on a feature, the agent reads twenty files to understand one subsystem, and now your working context is full of detail that has nothing to do with what you are building. Everything after that is a little dumber.",[16,294,295],{},"Subagents fix this. A subagent is a separate Claude with its own context window, its own system prompt, and its own tool permissions. You hand it a job, it does the reading and the thinking in its own RAM, and it hands back only the conclusion. Your main context stays clean.",[16,297,298,299,302],{},"You define one as a markdown file in ",[23,300,301],{},".claude\u002Fagents\u002F"," with YAML frontmatter:",[140,304,306],{"className":142,"code":305,"language":144,"meta":145,"style":145},"---\nname: security-reviewer\ndescription: Reviews changed code for security issues. Use before merging anything that touches auth, inputs, or data access.\ntools: Read, Grep, Glob\nmodel: sonnet\n---\n\nYou are a senior security engineer. Review the diff for:\n- Broken or missing authorization (checks that live only in the UI)\n- Secrets or credentials committed to the repo\n- Unvalidated inputs that reach the database or get rendered\n\nReturn specific file and line references with concrete fixes. Do not modify code.\n",[23,307,308,313,318,323,328,333,337,341,346,351,356,361,365],{"__ignoreMap":145},[149,309,310],{"class":151,"line":152},[149,311,312],{},"---\n",[149,314,315],{"class":151,"line":158},[149,316,317],{},"name: security-reviewer\n",[149,319,320],{"class":151,"line":164},[149,321,322],{},"description: Reviews changed code for security issues. Use before merging anything that touches auth, inputs, or data access.\n",[149,324,325],{"class":151,"line":170},[149,326,327],{},"tools: Read, Grep, Glob\n",[149,329,330],{"class":151,"line":177},[149,331,332],{},"model: sonnet\n",[149,334,335],{"class":151,"line":183},[149,336,312],{},[149,338,339],{"class":151,"line":189},[149,340,174],{"emptyLinePlaceholder":173},[149,342,343],{"class":151,"line":195},[149,344,345],{},"You are a senior security engineer. Review the diff for:\n",[149,347,348],{"class":151,"line":200},[149,349,350],{},"- Broken or missing authorization (checks that live only in the UI)\n",[149,352,353],{"class":151,"line":206},[149,354,355],{},"- Secrets or credentials committed to the repo\n",[149,357,358],{"class":151,"line":212},[149,359,360],{},"- Unvalidated inputs that reach the database or get rendered\n",[149,362,363],{"class":151,"line":218},[149,364,174],{"emptyLinePlaceholder":173},[149,366,367],{"class":151,"line":223},[149,368,369],{},"Return specific file and line references with concrete fixes. Do not modify code.\n",[16,371,372],{},"Two fields do most of the work:",[54,374,375,383],{},[57,376,377,382],{},[60,378,379],{},[23,380,381],{},"description"," is not decoration. It is how the orchestrator decides when to delegate to this agent automatically. Write it as a clear trigger: \"Use when X.\"",[57,384,385,390],{},[60,386,387],{},[23,388,389],{},"tools"," scopes what the agent can touch. A reviewer that can only Read, Grep, and Glob physically cannot change your code, which is exactly what you want from a reviewer.",[16,392,393],{},"The payoff is both cleaner context and cheaper, parallel work. A read-heavy exploration can run on a smaller, faster model in its own window while your main agent stays focused on implementation.",[16,395,396],{},[80,397],{"alt":398,"src":399},"The main agent delegates heavy work to focused subagents, which return only their conclusions so the main context stays clean","\u002Fblog\u002Fdiagram-orchestration.svg",[16,401,402],{},"The rule of thumb: when a task would flood your context with detail you will not need afterward, send it to a subagent.",[11,404,406],{"id":405},"skills-reusable-capabilities-loaded-on-demand","Skills: reusable capabilities, loaded on demand",[16,408,409],{},"If subagents are specialists, skills are procedures. A skill packages a repeatable workflow - a set of instructions, and optionally scripts and reference files - that gets loaded into context only when it is relevant. This is the \"load a program on demand\" idea made concrete, and it is the single best way to keep your always-on context small while still giving the agent deep know-how when a task calls for it.",[16,411,412,413,416,417,420],{},"A skill is a folder under ",[23,414,415],{},".claude\u002Fskills\u002F"," with a ",[23,418,419],{},"SKILL.md"," at its root:",[140,422,424],{"className":142,"code":423,"language":144,"meta":145,"style":145},"---\nname: deploy-staging\ndescription: Build and deploy the site to the staging branch, then verify the URL.\n---\n\n## Steps\n1. Run the test suite and stop if anything fails.\n2. Build: `npm run build`\n3. Push to the `staging` branch (never `main` directly).\n4. Verify the staging URL returns 200 and log the result.\n",[23,425,426,430,435,440,444,448,453,458,463,468],{"__ignoreMap":145},[149,427,428],{"class":151,"line":152},[149,429,312],{},[149,431,432],{"class":151,"line":158},[149,433,434],{},"name: deploy-staging\n",[149,436,437],{"class":151,"line":164},[149,438,439],{},"description: Build and deploy the site to the staging branch, then verify the URL.\n",[149,441,442],{"class":151,"line":170},[149,443,312],{},[149,445,446],{"class":151,"line":177},[149,447,174],{"emptyLinePlaceholder":173},[149,449,450],{"class":151,"line":183},[149,451,452],{},"## Steps\n",[149,454,455],{"class":151,"line":189},[149,456,457],{},"1. Run the test suite and stop if anything fails.\n",[149,459,460],{"class":151,"line":195},[149,461,462],{},"2. Build: `npm run build`\n",[149,464,465],{"class":151,"line":200},[149,466,467],{},"3. Push to the `staging` branch (never `main` directly).\n",[149,469,470],{"class":151,"line":206},[149,471,472],{},"4. Verify the staging URL returns 200 and log the result.\n",[16,474,475],{},"The mechanics that make skills powerful:",[54,477,478,484,490],{},[57,479,480,483],{},[60,481,482],{},"Progressive disclosure."," The agent sees a skill's name and description at all times, but only loads the full body when it decides the skill is relevant (or when you invoke it). You can have dozens of skills installed and pay almost nothing for the ones you are not using.",[57,485,486,489],{},[60,487,488],{},"Bundled resources."," A skill folder can carry scripts, templates, and docs the instructions refer to, so a complex workflow travels as one unit.",[57,491,492,495],{},[60,493,494],{},"Invocation."," Many skills can be triggered by the model when the description matches the task, or run explicitly by you like a slash command. You can restrict a skill to manual-only when you do not want the model firing it on its own.",[16,497,498],{},"Here is the distinction people trip over:",[500,501,502,518],"table",{},[503,504,505],"thead",{},[506,507,508,512,515],"tr",{},[509,510,511],"th",{},"Mechanism",[509,513,514],{},"What it is",[509,516,517],{},"Reach for it when",[519,520,521,532,543,554],"tbody",{},[506,522,523,526,529],{},[524,525,29],"td",{},[524,527,528],{},"Always-loaded project instructions",[524,530,531],{},"The rule applies to everything, every session",[506,533,534,537,540],{},[524,535,536],{},"Subagent",[524,538,539],{},"A separate context window with its own tools",[524,541,542],{},"A task would pollute your main context, or benefits from isolation and a different model",[506,544,545,548,551],{},[524,546,547],{},"Skill",[524,549,550],{},"An on-demand procedure with optional scripts",[524,552,553],{},"You repeat the same multi-step workflow and want it packaged and loaded only when needed",[506,555,556,559,562],{},[524,557,558],{},"Hook",[524,560,561],{},"A deterministic script on an event",[524,563,564],{},"Something must happen every time, with no exceptions",[11,566,568],{"id":567},"hooks-the-parts-you-refuse-to-leave-to-chance","Hooks: the parts you refuse to leave to chance",[16,570,571,572,574,575,578,579,582],{},"An instruction in ",[23,573,29],{}," is advisory. The agent usually follows it, but \"usually\" is not good enough for \"run the formatter after every edit\" or \"never let a commit touch ",[23,576,577],{},"main"," directly.\" For those, use a hook: a command wired to an event in ",[23,580,581],{},"settings.json"," that runs deterministically.",[140,584,588],{"className":585,"code":586,"language":587,"meta":145,"style":145},"language-json shiki shiki-themes github-dark","{\n  \"hooks\": {\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"Edit|Write\",\n        \"hooks\": [\n          { \"type\": \"command\", \"command\": \"$CLAUDE_PROJECT_DIR\u002F.claude\u002Fhooks\u002Fformat-changed.sh\" }\n        ]\n      }\n    ]\n  }\n}\n","json",[23,589,590,596,605,613,618,633,640,666,671,676,681,686],{"__ignoreMap":145},[149,591,592],{"class":151,"line":152},[149,593,595],{"class":594},"s95oV","{\n",[149,597,598,602],{"class":151,"line":158},[149,599,601],{"class":600},"sDLfK","  \"hooks\"",[149,603,604],{"class":594},": {\n",[149,606,607,610],{"class":151,"line":164},[149,608,609],{"class":600},"    \"PostToolUse\"",[149,611,612],{"class":594},": [\n",[149,614,615],{"class":151,"line":170},[149,616,617],{"class":594},"      {\n",[149,619,620,623,626,630],{"class":151,"line":177},[149,621,622],{"class":600},"        \"matcher\"",[149,624,625],{"class":594},": ",[149,627,629],{"class":628},"sU2Wk","\"Edit|Write\"",[149,631,632],{"class":594},",\n",[149,634,635,638],{"class":151,"line":183},[149,636,637],{"class":600},"        \"hooks\"",[149,639,612],{"class":594},[149,641,642,645,648,650,653,656,658,660,663],{"class":151,"line":189},[149,643,644],{"class":594},"          { ",[149,646,647],{"class":600},"\"type\"",[149,649,625],{"class":594},[149,651,652],{"class":628},"\"command\"",[149,654,655],{"class":594},", ",[149,657,652],{"class":600},[149,659,625],{"class":594},[149,661,662],{"class":628},"\"$CLAUDE_PROJECT_DIR\u002F.claude\u002Fhooks\u002Fformat-changed.sh\"",[149,664,665],{"class":594}," }\n",[149,667,668],{"class":151,"line":195},[149,669,670],{"class":594},"        ]\n",[149,672,673],{"class":151,"line":200},[149,674,675],{"class":594},"      }\n",[149,677,678],{"class":151,"line":206},[149,679,680],{"class":594},"    ]\n",[149,682,683],{"class":151,"line":212},[149,684,685],{"class":594},"  }\n",[149,687,688],{"class":151,"line":218},[149,689,690],{"class":594},"}\n",[16,692,693],{},"Hooks can run before a tool call (to allow, block, or add context), after one (to format, test, or notify), when a session starts, and at other lifecycle points. The mindset shift is simple: if you find yourself writing an instruction and adding \"always\" or \"never\" and \"no exceptions,\" that is a hook, not a sentence.",[11,695,697],{"id":696},"mcp-and-permissions-two-more-levers-worth-knowing","MCP and permissions: two more levers worth knowing",[54,699,700,710],{},[57,701,702,705,706,709],{},[60,703,704],{},"MCP servers"," (declared in ",[23,707,708],{},".mcp.json",") connect the agent to external tools and data - a GitHub client, a database, an internal API - so it reads live capabilities instead of guessing at APIs. Wire the tools your workflow actually needs; skip the rest.",[57,711,712,715,716,718,719,722,723,726],{},[60,713,714],{},"Permissions"," in ",[23,717,581],{}," let you pre-approve the commands you run constantly (",[23,720,721],{},"Bash(npm run *)",") and hard-deny the ones you never want (",[23,724,725],{},"Bash(curl *)","). This turns a stream of approval prompts into a quiet, fast session, without giving up the guardrails that matter.",[11,728,730],{"id":729},"a-setup-order-you-can-copy","A setup order you can copy",[16,732,733],{},"You do not build all of this at once. Start minimal, add the piece the pain points ask for.",[16,735,736],{},[80,737],{"alt":738,"src":739},"A recommended order for building out a .claude folder, from a lean CLAUDE.md through permissions, skills, subagents, hooks, MCP, and a monthly review","\u002Fblog\u002Fdiagram-setup-order.svg",[16,741,742,743,745],{},"The order matters because each step earns the next. A lean ",[23,744,29],{}," and good permissions make every session better immediately. Skills and subagents pay off once you notice yourself repeating a workflow or drowning your context. Hooks come last, for the rules you have decided are non-negotiable.",[11,747,749],{"id":748},"the-mistakes-that-cost-the-most","The mistakes that cost the most",[54,751,752,758,764,770,776],{},[57,753,754,757],{},[60,755,756],{},"A giant CLAUDE.md."," The most common and most damaging. If it is over a couple hundred lines, it is too big; the agent may not even load the end, and the middle gets diluted. Cut it.",[57,759,760,763],{},[60,761,762],{},"Instructions where you needed a hook."," \"Always run tests\" in prose will be skipped eventually. If it is truly always, make it deterministic.",[57,765,766,769],{},[60,767,768],{},"One long conversation for everything."," Context is a budget. Use fresh sessions for unrelated tasks and delegate heavy reading to subagents, instead of letting one context window fill with noise.",[57,771,772,775],{},[60,773,774],{},"Documenting what the code already says."," The agent can read your files. Spend your words on conventions and gotchas it cannot infer.",[57,777,778,781],{},[60,779,780],{},"Skipping setup entirely."," The most expensive mistake of all. The hour you save at the start you pay back many times over in correction.",[11,783,785],{"id":784},"why-this-is-how-we-work","Why this is how we work",[16,787,788,789,791],{},"At SynchSoft, agentic development is not a novelty we bolt on. It is how we build - which is exactly why we are careful about the setup underneath it. The same discipline that makes a ",[23,790,25],{}," folder effective (curated context, focused specialists, determinism where it counts, ruthless signal-to-noise) is the discipline that separates an AI-generated demo from software that survives production.",[16,793,794,795,800],{},"That is the whole thesis of an ",[796,797,799],"a",{"href":798},"\u002Fai-first","AI-first agency",": use AI to move fast, and put senior engineering underneath it so what you ship is real. If you have built something with AI and want to know whether the foundation holds, that is what we do.",[802,803],"hr",{},[16,805,806],{},[807,808,809,810,655,816,655,821,655,826,831,832,837],"em",{},"Sources and further reading: Anthropic's official Claude Code documentation on ",[796,811,815],{"href":812,"rel":813},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fmemory",[814],"nofollow","memory \u002F CLAUDE.md",[796,817,820],{"href":818,"rel":819},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fsub-agents",[814],"subagents",[796,822,825],{"href":823,"rel":824},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fskills",[814],"skills",[796,827,830],{"href":828,"rel":829},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fhooks",[814],"hooks",", and ",[796,833,836],{"href":834,"rel":835},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fbest-practices",[814],"best practices","; and Andrej Karpathy's public talks on context engineering and the \"LLM as a new kind of computer\" framing. Tooling details change over time - verify specifics against the current docs.",[839,840,841],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}",{"title":145,"searchDepth":158,"depth":158,"links":843},[844,845,846,847,848,849,850,851,852,853,854],{"id":13,"depth":158,"text":14},{"id":36,"depth":158,"text":37},{"id":72,"depth":158,"text":73},{"id":129,"depth":158,"text":130},{"id":288,"depth":158,"text":289},{"id":405,"depth":158,"text":406},{"id":567,"depth":158,"text":568},{"id":696,"depth":158,"text":697},{"id":729,"depth":158,"text":730},{"id":748,"depth":158,"text":749},{"id":784,"depth":158,"text":785},"AI Engineering","2026-08-14","The highest-leverage hour in any AI-assisted project is the one before you start. A practical, opinionated guide to setting up CLAUDE.md, subagents, skills, hooks, and the whole .claude folder, grounded in Anthropic's official guidance and Andrej Karpathy's context-engineering philosophy.","md","\u002Fblog\u002Fperfect-claude-folder.svg",{},"\u002Fblog\u002Fperfect-claude-folder-agents-skills-claude-md","15 min read",{"title":5,"description":857},{"loc":861},"blog\u002Fperfect-claude-folder-agents-skills-claude-md",[867,868,869,870],"Claude Code","AI Agents","Skills","Context Engineering","MsbAwSXtxt-z0t6zEt_rb76A4IEO6MtSmEMgIbYm8B4",[],1786732942740]