Ivo Nikolov All free resources

free template1 page · 7 min read

The four rules for Claude Code, ready to paste into CLAUDE.md

For beginners. From the GitHub repo andrej-karpathy-skills (223,455 stars as of October 25, 2026). Free.

Hi, it's Ivo. This repo has more than 223,000 stars on GitHub, and it isn't software. It's four plain rules that Claude reads before it works on your project. Below you get the rules word for word, two ways to add them, and how to tell they're working.

Who wrote it

The four rules (copy everything in the box)

Paste this
# CLAUDE.md

Behavioral guidelines to reduce common LLM coding mistakes. Merge with project-specific instructions as needed.

**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.

## 1. Think Before Coding

**Don't assume. Don't hide confusion. Surface tradeoffs.**

Before implementing:
- State your assumptions explicitly. If uncertain, ask.
- If multiple interpretations exist, present them - don't pick silently.
- If a simpler approach exists, say so. Push back when warranted.
- If something is unclear, stop. Name what's confusing. Ask.

## 2. Simplicity First

**Minimum code that solves the problem. Nothing speculative.**

- No features beyond what was asked.
- No abstractions for single-use code.
- No "flexibility" or "configurability" that wasn't requested.
- No error handling for impossible scenarios.
- If you write 200 lines and it could be 50, rewrite it.

Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.

## 3. Surgical Changes

**Touch only what you must. Clean up only your own mess.**

When editing existing code:
- Don't "improve" adjacent code, comments, or formatting.
- Don't refactor things that aren't broken.
- Match existing style, even if you'd do it differently.
- If you notice unrelated dead code, mention it - don't delete it.

When your changes create orphans:
- Remove imports/variables/functions that YOUR changes made unused.
- Don't remove pre-existing dead code unless asked.

The test: Every changed line should trace directly to the user's request.

## 4. Goal-Driven Execution

**Define success criteria. Loop until verified.**

Transform tasks into verifiable goals:
- "Add validation" → "Write tests for invalid inputs, then make them pass"
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
- "Refactor X" → "Ensure tests pass before and after"

For multi-step tasks, state a brief plan:
1. [Step] → verify: [check]
2. [Step] → verify: [check]
3. [Step] → verify: [check]

Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.

Source: github.com/multica-ai/andrej-karpathy-skills, file CLAUDE.md, copied October 25, 2026 (MIT licence per the README).

Way 1: paste them into your project's CLAUDE.md (the simple one)

  1. Open your project folder. If there's a file called CLAUDE.md, open it. If not, make a new text file with that name.
  2. Paste the four rules at the bottom and save.
  3. Start a new Claude Code session in that folder. Claude reads CLAUDE.md when the session starts.

This works for one project. Do it again in each project where you want the rules.

Way 2: install them as a plugin (every project)

In a Claude Code session, type these two lines, one at a time. They're copied from the repo's README:

Type these
/plugin marketplace add forrestchang/andrej-karpathy-skills
/plugin install andrej-karpathy-skills@karpathy-skills

The README still uses the repo's old address (forrestchang). GitHub forwards it to the new one (multica-ai). The plugin adds one skill with the same four rules. Read the details panel before you say yes.

How to tell they're working

The README lists these signs:

One honest catch

In the same post, Karpathy wrote that the problems still happen "despite a few simple attempts to fix it via instructions in CLAUDE.md". Rules help. They don't replace reading what changed. Check every edit before you keep it.

Sources