Field Manual DOC—KARPATHY/SKILLS REV 2026.04 · a
— Karpathy-Inspired CLAUDE.md Guidelines —

Karpathy 原則·給 Claude Code 的紀律手冊

Compiled by 2026·04·26 ★ 89,071 stars
figure 00 · principles 4 Rules · One File A single
CLAUDE.md.

Andrej Karpathy 在 X 上拋出三個對 LLM 寫程式的尖銳觀察:模型會替你做錯誤假設、會把 100 行能解決的問題寫成 1000 行、會順手改掉它根本沒看懂的程式碼。

Forrest Chang 把這些痛點翻成一個 CLAUDE.md 檔案、四條原則——直接放進你的專案,Claude Code 讀到就會照做。它沒有複雜的 plugin、沒有依賴、沒有設定檔——就是一個 markdown 檔

這個 repo 在 GitHub 上有 89,071 顆星。本文把四條原則拆解成可立即套用的 stage——每條原則 + 細則 + 自我檢驗。讀完你可以直接把 CLAUDE.md 拉進自己的專案。

Legend · 圖例

  • Structural
  • Principle
  • Test / Highlight
  • The Pitfall
— The Four Principles · Flow 四原則 · 流程一覽 Stage 00 / 04
01
Think Before Coding

思考再動手

— Don't Assume

說出假設、呈現多解、必要時推回、困惑時停下——把預設的偷偷詮釋變成顯性對話。

02
Simplicity First

極簡為先

— Nothing Speculative

解問題的最少程式、不寫推測性的東西、不做沒人要的彈性與可設定。

03
Surgical Changes

外科級修正

— Touch Only What You Must

只碰你必須碰的、只清自己造成的爛攤子;每行改動都能追溯到使用者的請求。

04
Goal-Driven Execution

目標驅動

— Loop Until Verified

把祈使句翻成可驗證目標——強的成功標準讓 LLM 自己 loop 到通過。

P·1

模型會替你做錯誤假設並繼續跑下去——不檢查、不管理自己的困惑、不問問題、不浮現不一致、不呈現權衡、該推回時不推回。

P·2

它們很愛把程式跟 API 弄複雜、膨脹抽象、不清死代碼⋯⋯把 100 行就能解決的事寫成 1000 行的臃腫構造。

P·3

它們有時候會改/刪自己沒看懂的程式或註解作為副作用——即使這些跟當前任務根本無關。

— Andrej Karpathy · X / Twitter, 2026 → 原始貼文
01/04
— Think Before Coding
思考再動手 · 別偷偷做假設
LLM 常常默默挑一個解讀就跑——這條原則強迫顯性推理: 說出你的假設、呈現多種可能、必要時推回、困惑時停下。
// surface-thinking
Don't assume. Don't hide confusion. Surface tradeoffs.
RULE · 01

顯性說出假設

不確定時,不要猜——直接問。把你打算採用的假設寫在回應裡,使用者可以否決或修正。

RULE · 02

呈現多種解讀

遇到模糊指令時,把可能的詮釋都列出來——而不是默默選一個跑下去。讓使用者選。

RULE · 03

該推回時推回

如果你看到更簡單的做法、或對方的方向有問題——說出來。Pleaser 不是好工程師。

RULE · 04

困惑時停下

不確定的時候停下來,明確說出哪裡不清楚,然後問。「假裝懂」是大多數失敗的起點。

02/04
— Simplicity First
極簡為先 · 不寫沒人要的東西
對抗過度工程的傾向:解決問題的最少程式、不寫推測性的東西、 不做沒被要求的「彈性」與「可設定」。
// minimum-viable
Minimum code that solves the problem. Nothing speculative.
RULE · 01

不超出需求

沒被要求的功能不要寫——「我想說可能用得到」是過度工程的入口毒品。

RULE · 02

單次使用不抽象

只用一次的程式不需要 helper、不需要 base class、不需要 strategy pattern——直接寫死最直白。

RULE · 03

沒人要的彈性不做

不要主動加 config、選項、開關——除非使用者明確說過要這樣。「以後可能要改」≠「現在要做」。

RULE · 04

不可能情境不防

不為「不可能發生」的情境寫錯誤處理。內部呼叫不需要驗證、框架保證的事不需要再檢查。

RULE · 05

200 行能變 50,重寫

寫完一看 200 行,但其實 50 行能解決——直接重寫。看起來「精簡」勝過看起來「全面」。

The Test · 資深工程師看到這份程式,會說「太複雜了」嗎?如果會——簡化。
03/04
— Surgical Changes
外科級修正 · 只動該動的
編輯既有程式時,只碰你必須碰的東西、只清自己造成的爛攤子。 順手改注解、順手 refactor、順手刪「死代碼」——三大失誤源。
// minimal-blast-radius
Touch only what you must. Clean up only your own mess.
RULE · 01

不改鄰近程式

不順手「改善」附近的程式、註解、或排版——即使你看到了問題。

RULE · 02

不改沒壞的東西

沒壞的東西不要重構。看起來「可以更好」≠「需要現在改」。

RULE · 03

順從既有風格

跟著現有風格寫——即使你覺得自己會用不同的方式。一致性比個人偏好重要。

RULE · 04

看到死代碼提一下

看到不相關的死代碼?提一下、別動手刪。讓使用者決定要不要清。

RULE · 05

清掉自己造成的孤兒

但你的改動產生的 unused import、變數、函式——這些是你的責任,要刪掉。

RULE · 06

不刪預先存在的死代碼

除非使用者明確要求,否則別動「在你動工前就已經死掉」的程式。

The Test · 每一行改動都應該能直接追溯到使用者的請求。如果不能——你動太多了。
04/04
— Goal-Driven Execution
目標驅動 · 把任務翻成驗證迴圈
把「做這件事」轉成「達到這個可驗證的目標」—— 強的成功標準讓 LLM 可以獨立 loop;弱的標準讓你不停澄清。
// looping-on-criteria
Define success criteria. Loop until verified.

把祈使句翻成可驗證的目標——這是 LLM 真正擅長的工作模式:

原本的命令 翻成可驗證目標
「加上 validation」 「為非法輸入寫測試,然後讓它們通過。」
「修這個 bug」 「寫一個能重現它的測試,然後讓它通過。」
「重構 X」 「確保改動前後測試都通過。」

多步任務時,先寫一個簡短的計畫——每步配一個可驗證的檢查:

// PLAN TEMPLATE
1. [Step]  →  verify: [check]
2. [Step]  →  verify: [check]
3. [Step]  →  verify: [check]
The Test · 強的成功標準讓 LLM 可以獨立 loop;弱的標準(「讓它能跑就好」)會讓你不停澄清。
"
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.
— Andrej Karpathy
How To Know It's Working · 怎麼知道它在生效

四個可觀察的訊號

Diff 中沒多餘改動

每一次 PR 的 diff 都只動到該動的——沒有 drive-by 的 refactor、沒有附帶清理、沒有亂改注解。

不再因過度複雜重寫

第一次寫出來就夠簡單——不會走完一輪後才發現「啊這個 50 行就好了」再重做。

澄清在實作之前出現

模糊需求會在動工前被點出來——而不是寫了 200 行才發現方向錯了。

PR 簡潔且最小化

合併進去的東西乾淨——沒有跟主題無關的「順便改善」、沒有亂入的 formatting commit。

Option A · Recommended

Claude Code Plugin

# 在 Claude Code 裡執行
/plugin marketplace add forrestchang/andrej-karpathy-skills
/plugin install andrej-karpathy-skills@karpathy-skills
裝成 Claude Code plugin,跨所有專案都生效——不必每個 repo 都複製一份。
Option B · Per-Project

CLAUDE.md(單專案)

# 新專案:直接下載
curl -o CLAUDE.md \
  https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md

# 既有專案:append 進去
echo "" >> CLAUDE.md
curl ...CLAUDE.md >> CLAUDE.md
放在專案根目錄的 CLAUDE.md,Claude Code 會自動讀取。可以與專案自己的規則合併。
Further Reading 延伸閱讀