andrej-karpathy-skills
基于 Andrej Karpathy 对 LLM 编程缺陷观察整理的行为准则集合,以 Claude Code Plugin(Skill)形式分发,141k stars。
原始灵感来自 Karpathy 的推文,由 multica-ai 封装为可安装 Skill。
核心问题
Karpathy 总结的 LLM 编程四大缺陷:
- 错误假设:模型默默选择一种解读就开始执行,不澄清歧义
- 过度工程:倾向于写 1000 行代码解决 100 行能搞定的问题,堆砌抽象
- 副作用修改:修改与任务无关的注释和代码
- 目标模糊:接受”让它工作”这类弱指令,而非可验证的成功标准
四条原则
1. Think Before Coding(编码前先思考)
不假设,不隐藏困惑,暴露权衡。
- 明确陈述假设;不确定时先问
- 存在多种解读时,列出来,不要默默选一个
- 如果有更简单的方案,说出来,适时推回
- 遇到不清楚的地方,停下来,说明困惑点,提问
2. Simplicity First(简洁优先)
最少代码解决问题,不写投机性代码。
- 不实现未被要求的功能
- 单次使用的代码不做抽象
- 不加未被要求的”灵活性”或”可配置性”
- 不为不可能发生的场景写错误处理
- 200 行能写成 50 行就重写
测试标准:资深工程师会说这过度复杂吗?如果是,简化。
3. Surgical Changes(外科手术式修改)
只动必须动的地方,只清理自己制造的烂摊子。
编辑已有代码时:
- 不”改进”相邻代码、注释或格式
- 不重构没有问题的东西
- 匹配现有风格,即使你会用不同方式写
- 发现无关死代码,提及它,不要删除
当你的修改产生孤儿代码时:
- 删除你的修改导致的无用 import/变量/函数
- 不删除已有的死代码(除非被要求)
测试标准:每一行改动都应能直接追溯到用户的请求。
4. Goal-Driven Execution(目标驱动执行)
定义成功标准,循环直到验证通过。
将命令式任务转化为可验证目标:
| 原始指令 | 转化为 |
|---|---|
| ”添加验证" | "为无效输入写测试,然后让测试通过" |
| "修复 bug" | "写一个能复现 bug 的测试,然后让它通过" |
| "重构 X" | "确保重构前后测试都通过” |
多步任务时,先陈述简短计划:
1. [步骤] → 验证:[检查项]
2. [步骤] → 验证:[检查项]
强成功标准让 LLM 能独立循环执行;弱标准(“让它工作”)需要持续澄清。
安装方式
方式 A:Claude Code Plugin(推荐)
/plugin marketplace add forrestchang/andrej-karpathy-skills
/plugin install andrej-karpathy-skills@karpathy-guidelines
方式 B:直接写入 CLAUDE.md
# 新项目
curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md
# 已有项目(追加)
curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md项目结构
andrej-karpathy-skills/
├── CLAUDE.md # 可直接复制到项目的行为准则
├── CURSOR.md # Cursor 集成说明
├── EXAMPLES.md # 使用示例
└── skills/
└── karpathy-guidelines/
└── SKILL.md # Claude Code Plugin 定义
关联项目
- superpowers — 更完整的 14 个 Skill 工程方法论,包含 TDD/设计/计划等强制纪律
- agentara-skills — 另一个 Claude Code Skill 扩展库
- llm-wiki-pattern — Karpathy 提出的 LLM 知识库构建方法论(同一作者的另一贡献)
- agent-skill-loading — Skill 加载机制原理