mirror of
https://github.com/multica-ai/andrej-karpathy-skills.git
synced 2026-06-23 12:05:14 +02:00
docs: expand README with detailed Karpathy skills content
Add comprehensive explanations of the four principles: - Think Before Coding: explicit reasoning and assumption surfacing - Simplicity First: anti-patterns and the "senior engineer" test - Surgical Changes: editing vs cleaning up your own changes - Goal-Driven Execution: imperative to declarative transformation table Also add sections for measuring effectiveness, customization guidance, and tradeoff notes for trivial vs non-trivial tasks. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.5
parent
b4c9b0f6ee
commit
24eb5e2bb2
@@ -14,7 +14,7 @@ From Andrej's post:
|
||||
|
||||
## The Solution
|
||||
|
||||
Four principles in one file:
|
||||
Four principles in one file that directly address these issues:
|
||||
|
||||
| Principle | Addresses |
|
||||
|-----------|-----------|
|
||||
@@ -23,6 +23,73 @@ Four principles in one file:
|
||||
| **Surgical Changes** | Orthogonal edits, touching code you shouldn't |
|
||||
| **Goal-Driven Execution** | Leverage through tests-first, verifiable success criteria |
|
||||
|
||||
## The Four Principles in Detail
|
||||
|
||||
### 1. Think Before Coding
|
||||
|
||||
**Don't assume. Don't hide confusion. Surface tradeoffs.**
|
||||
|
||||
LLMs often pick an interpretation silently and run with it. This principle forces explicit reasoning:
|
||||
|
||||
- **State assumptions explicitly** — If uncertain, ask rather than guess
|
||||
- **Present multiple interpretations** — Don't pick silently when ambiguity exists
|
||||
- **Push back when warranted** — If a simpler approach exists, say so
|
||||
- **Stop when confused** — Name what's unclear and ask for clarification
|
||||
|
||||
### 2. Simplicity First
|
||||
|
||||
**Minimum code that solves the problem. Nothing speculative.**
|
||||
|
||||
Combat the tendency toward overengineering:
|
||||
|
||||
- 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 200 lines could be 50, rewrite it
|
||||
|
||||
**The test:** 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 imperative tasks into verifiable goals:
|
||||
|
||||
| Instead of... | Transform to... |
|
||||
|--------------|-----------------|
|
||||
| "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 the LLM loop independently. Weak criteria ("make it work") require constant clarification.
|
||||
|
||||
## Install
|
||||
|
||||
**Option A: CLAUDE.md (recommended)**
|
||||
@@ -52,3 +119,36 @@ From Andrej:
|
||||
> "LLMs are exceptionally good at looping until they meet specific goals... Don't tell it what to do, give it success criteria and watch it go."
|
||||
|
||||
The "Goal-Driven Execution" principle captures this: transform imperative instructions into declarative goals with verification loops.
|
||||
|
||||
## How to Know It's Working
|
||||
|
||||
These guidelines are working if you see:
|
||||
|
||||
- **Fewer unnecessary changes in diffs** — Only requested changes appear
|
||||
- **Fewer rewrites due to overcomplication** — Code is simple the first time
|
||||
- **Clarifying questions come before implementation** — Not after mistakes
|
||||
- **Clean, minimal PRs** — No drive-by refactoring or "improvements"
|
||||
|
||||
## Customization
|
||||
|
||||
These guidelines are designed to be merged with project-specific instructions. Add them to your existing `CLAUDE.md` or create a new one.
|
||||
|
||||
For project-specific rules, add sections like:
|
||||
|
||||
```markdown
|
||||
## Project-Specific Guidelines
|
||||
|
||||
- Use TypeScript strict mode
|
||||
- All API endpoints must have tests
|
||||
- Follow the existing error handling patterns in `src/utils/errors.ts`
|
||||
```
|
||||
|
||||
## Tradeoff Note
|
||||
|
||||
These guidelines bias toward **caution over speed**. For trivial tasks (simple typo fixes, obvious one-liners), use judgment — not every change needs the full rigor.
|
||||
|
||||
The goal is reducing costly mistakes on non-trivial work, not slowing down simple tasks.
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user