The repo is andrej-karpathy-skills, and the whole thing is one markdown file called CLAUDE.md. It has passed 200,000 stars on the organisation mirror, with the original sitting at forrestchang/andrej-karpathy-skills. It's MIT licensed and free.
The rules come from a post by Andrej Karpathy (co-founder of OpenAI, formerly director of AI at Tesla) listing what still goes wrong when you hand real work to a coding agent. His words: "The models make wrong assumptions on your behalf and just run along with them without checking. They don't manage their confusion, don't seek clarifications, don't surface inconsistencies, don't present tradeoffs, don't push back when they should." Somebody turned that complaint into a file, and that file is what you're installing.
Both take under three minutes. Option A drops the file into one project. Option B installs it once and it follows you into every project.
curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md. That's it, the file is in place.curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md. Open the file afterwards and check the two sections read sensibly together./plugin marketplace add forrestchang/andrej-karpathy-skills, then /plugin install andrej-karpathy-skills@karpathy-skills. Now the guidelines are available across all your projects without copying files around./context, then look under Memory files. If your CLAUDE.md isn't listed there, Claude cannot see it and nothing you wrote in it is doing anything.CLAUDE.md in your project folder. Same result, no commands.This is the part that quietly breaks for people: the name and the location both matter, and Claude Code will not go looking for a file you left somewhere reasonable-seeming. Anthropic's memory documentation lists the exact locations, and these are the two you actually need.
./CLAUDE.md. The root of the project folder, or ./.claude/CLAUDE.md if you prefer it tucked away. This is the one you commit, so your whole team gets the same behaviour.~/.claude/CLAUDE.md. Preferences that apply to every project on your machine. This is where your own voice and workflow rules belong, so they follow you everywhere../CLAUDE.local.md. Loads alongside the project file, and you add it to .gitignore so it never gets committed. Good for anything you don't want teammates reading.The four rules in the repo are aimed at code. Most of what Claude does for me is not code, so these are the lines I keep in my own ~/.claude/CLAUDE.md, written the same way: specific, checkable, and each one added because something annoyed me. Paste them under the repo's four and delete whatever doesn't match how you work.
## How to work with me
- Ask before assuming. If my request has two sensible readings, tell me both and ask which one, do not pick silently and build the wrong thing.
- One question at a time. If you need three things from me, ask the one that blocks you most and wait.
- Never say done until you have verified it. State how you checked, and if you could not check it, say "not verified" instead of implying you did.
- If I am about to do something that will not work, say so plainly before doing it. I would rather be told than be agreed with.
## Facts and sources
- Every stat, quote or factual claim comes with a real link I can open, plus the sentence in the source that backs it.
- If you cannot find a real source, write "I could not verify this" and leave the claim out. Do not fill the gap with something that sounds plausible.
- Never invent a tool, a library, a feature, a menu path or a person's quote. If you are not sure a feature exists, check before you describe it.
- Before you send, reread your own draft and delete or flag anything you cannot back up.
## Writing
- No em dashes anywhere. Use commas, full stops, brackets or colons instead.
- Sentence case for headings, no title case.
- Plain words over corporate ones. Do not use delve, leverage, robust, seamless, unlock, elevate or "it's not X, it's Y".
- Match the length I asked for. If I asked for three lines, do not send six.
## Working style
- Show me the actual thing, not a description of the thing. Real output over a summary of what you would produce.
- When you finish a task, end with what you changed and anything you were unsure about, in two lines maximum.
- If a task takes more than three steps, tell me the plan first and wait for a yes.
~/.claude/CLAUDE.md, project-specific detail moves to that project's file.CLAUDE.md is a Claude Code mechanism, so if you work in the Claude app the file itself does nothing for you. The equivalent is a project: a container with its own custom instructions that get applied to every chat inside it. Same idea, different door.
The repo file is a strong starting point, and it's still somebody else's file. What makes your Claude better than everyone else's is the twenty lines you add over the next few months, because those encode your work, your standards, and your specific pet peeves. The rule is boring and it works: the moment you type a correction you have typed before, that correction becomes a permanent line.
You don't even have to write it well. Have Claude turn the annoyance into a proper rule:
You just did something I have had to correct before, so let's make it permanent. Here is what happened: [describe it, for example "you gave me a five paragraph answer when I asked for a one line answer"].
Write me a single CLAUDE.md rule that prevents it, in the style of the rules already in my file: one line, specific, and written so it is obvious whether you followed it or not. Avoid vague words like clear, good or appropriate, because I cannot check those. Then tell me which file it belongs in (my personal one at ~/.claude/CLAUDE.md, or this project's CLAUDE.md) and why, and show me the exact line to paste.
The repo, andrej-karpathy-skills (MIT licensed, free)
The CLAUDE.md file itself, read it before you install it
Andrej Karpathy's original post, the source of the four rules
Anthropic's memory docs, file locations, load order and size guidance