andrej-karpathy-skills

基于 Andrej Karpathy 对 LLM 编程缺陷观察整理的行为准则集合,以 Claude Code Plugin(Skill)形式分发,141k stars。

原始灵感来自 Karpathy 的推文,由 multica-ai 封装为可安装 Skill。

核心问题

Karpathy 总结的 LLM 编程四大缺陷:

  1. 错误假设:模型默默选择一种解读就开始执行,不澄清歧义
  2. 过度工程:倾向于写 1000 行代码解决 100 行能搞定的问题,堆砌抽象
  3. 副作用修改:修改与任务无关的注释和代码
  4. 目标模糊:接受”让它工作”这类弱指令,而非可验证的成功标准

四条原则

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 加载机制原理