实战

实战者说:Harper Reed 分享 Claude Code 真实工作流——TDD、预提交钩子与 prompt_plan

Harper Reed(奥巴马 2012 竞选技术总监)分享 Claude Code 真实工作流:GPT-4o 打磨想法→推理模型生成 spec.md→生成 prompt_plan.md→Claude 自动执行计划,配合 TDD、Linting 和 Pre-commit Hooks 三大防御性实践,实现 30-45 分钟完成完整开发计划。

2026/3/24分钟 阅读ClaudeEagle

本文翻译自 harper.blog,作者 Harper Reed 是一位资深开发者,曾担任奥巴马 2012 年竞选技术总监。

Claude Code 在 2025 年 2 月发布后,Harper 立刻从 Aider 迁移过来。以下是他在真实项目中磨合出的工作流。

完整工作流:5 步流程

Step 1:用 GPT-4o 打磨想法

在开始写代码前,先和 gpt-4o 对话,打磨和明确你的想法。这一步的目的不是生成代码,而是厘清思路。

Step 2:用推理模型生成规格文档

选用最强的推理模型(Harper 用 o1-pro 或 o3)生成 spec.md——项目的完整规格说明。

Step 3:用推理模型生成 Prompt 计划

再次使用推理模型,基于 spec.md 生成 prompt_plan.md——一份分步骤的实现计划,每一步都是一个可执行的 Prompt。

Harper 的洞见:「用 LLM 生成 Prompt 是一种绝妙的 hack。它还会惹怒老一辈程序员。」

Step 4:把规格文档放到项目根目录

spec.mdprompt_plan.md 保存在项目根目录,Claude Code 启动时会自动读取。

Step 5:启动 Claude Code 并执行计划

在 Claude Code 中输入这个核心 Prompt:

1. 打开 @prompt_plan.md,找出所有未标记为完成的 Prompt 2. 对于每个未完成的 Prompt: - 再次确认是否真的未完成(如有疑问请询问) - 如果确认已完成,跳过 - 否则,按描述实现 - 确保测试通过,程序可以构建/运行 - 用清晰的提交信息提交变更到 git - 更新 @prompt_plan.md,将该 Prompt 标记为完成 3. 完成每个 Prompt 后暂停,等待用户审查或反馈 4. 根据用户指引,继续下一个未完成的 Prompt

这个 Prompt 的魔力

  • 自动检查计划,只处理未完成的步骤
  • 每步完成后提交 git(带意义明确的提交信息)
  • 更新计划文件,持续追踪进度
  • 每步完成后暂停等待反馈

然后你只需要不断说「continue」或者「yes」,Claude 就会自动完成整个计划。

三大「防御性编码」实践

1. TDD(测试驱动开发)

Harper 坦言自己曾经是 TDD 的反对者,认为写测试是浪费时间。但用 AI 编程后,他改变了看法:

机器人热爱 TDD。它们真的很享受这个过程。

最有效的方法:先让 AI 写测试和 Mock,下一步再让 AI 把 Mock 替换成真实实现。TDD 是 Harper 发现的对抗 AI 幻觉和范围漂移最有效的方法,帮助机器人保持专注。

2. Linting(代码规范检查)

Harper 大力推荐:

  • Python:Ruff(极快的 Linter + Formatter)
  • JavaScript:Biome
  • Rust:Clippy

「机器人超级喜欢运行好的 Linter。」

3. Pre-commit Hooks(预提交钩子)

这是关键技巧。Claude Code 非常想要提交代码,所以在它提交前运行测试、类型检查、Linting:

bash
# 安装 pre-commit
uv tools install pre-commit

然后配置 .pre-commit-config.yaml,每次提交前自动运行所有检查。

效果:AI 写了乱糟糟的代码 → 尝试提交 → 预提交钩子报错 → AI 不得不修复 → 再次提交。不用等 CI/CD,就在本地解决问题。

⚠️ 趣味发现:「Claude 完全搞不清楚怎么正确使用 uv,如果不小心,它会到处 pip install。就算告诉它用 uv,它也会用 uv pip install。」

CLAUDE.md 和自定义命令

Harper 从朋友 Jesse Vincent 那里「借」了一个 CLAUDE.md 模板,内容包括:

  • 轻量版的大模型行为规则
  • TDD 操作说明
  • 个人编码风格偏好

自定义命令的典型用法:

bash
/user:gh-issue #45  # 传入 GitHub Issue 编号

Claude 会执行 gh-issue.md 文件中定义的完整 Prompt 流程。

Harper 还给自己的 CLAUDE.md 设置了「呼叫方式」:「如果卡住了,停下来寻求帮助——Harp Dog 可能知道最佳方案。」

实测数据

一个 8-12 步的开发计划,Harper 通常在 30-45 分钟内完成,无论项目复杂度或使用什么语言。

他和朋友 Bob 的一次赌约:Bob 说「用 C 语言写一个 BASIC 解释器」——Harper 不会 C,也不会写解释器,但还是接受了挑战。第一个能运行的版本在一小时内完成。 项目地址:github.com/harperreed/basic

团队协作

Harper 的整个团队都在用 Claude Code,每个人根据自己的情况做了调整:

  • 测试覆盖率比以前任何时候都高
  • 代码质量更好
  • 在 Ghostty、VS Code 终端、Zed 终端和 Jupyter Notebook 里都能看到 Claude Code 在跑

原文:Basic Claude Code | Harper Reed | harper.blog | 2025-05-08

相关文章推荐

实战Harper Reed 的 Claude Code 实战工作流:Spec 驱动开发 + TDD + 提交计划的黄金组合Harper Reed 分享的 Claude Code Spec 驱动开发工作流:用推理模型(o1/o3)生成规格说明和提示计划,Claude Code 按计划逐步执行并自动追踪进度。配合 TDD、Linting、Pre-commit Hooks 三大防御性编码实践,团队在 30-45 分钟内完成新功能开发。2026/2/28实战从 Cursor 用户到 Claude Code 深度用户:最实用的使用技巧合集Builder.io CTO Steve Sewell 从 Cursor 切换到 Claude Code 的实战经验:跳过权限提示的正确姿势、终端非直觉操作大全、消息队列让 Claude 24/7 工作、让 Claude 自动建立项目配置、自定义斜杠命令,以及处理 18000 行超大文件的独特能力。2026/2/28实战Claude Code 测试驱动开发(TDD)实战:AI 辅助红绿重构循环完全指南Claude Code 与测试驱动开发(TDD)深度结合实战:让 Claude 先写测试再写实现的完整工作流、Red-Green-Refactor 循环的 AI 辅助方式、测试用例描述转换为 Jest/pytest/Go test 测试代码、边界条件和异常路径的自动发现、用 Claude 做变异测试(Mutation Testing)发现测试盲区、提升测试质量的提示词技巧,以及 TDD 在遗留代码改造中的应用方法。2026/3/20实战Claude Code Hooks 实战:每次保存自动格式化、拦截危险命令、桌面通知Claude Code Hooks 实战教程:五个即用示例(桌面通知/文件自动格式化/危险命令拦截/压缩后上下文注入/配置变更审计)、Hook 配置位置(全局/项目/本地)、退出码含义(允许/上下文/阻止)、七大 Hook 事件速查表、Prompt-based AI 判断 Hook 进阶用法。2026/3/14实战用 AI 写单元测试:Claude Code 自动化测试生成完全指南Claude Code AI 自动化测试生成完全指南:为什么 AI 特别适合写测试、Jest/pytest/JUnit 三大框架使用示例、四大高价值测试场景(提升覆盖率/TDD/回归测试/批量补测试)、高质量测试 Prompt 写法、CLAUDE.md 固化测试规范与常见问题解答。2026/3/14实战Claude Code 日常工作流实战:探索代码库、Plan Mode、Git Worktree 并行开发与管道集成Claude Code 13 大日常工作流实战:五步探索陌生代码库(从宏观到微观的提示词序列)、Plan Mode 安全规划(--permission-mode plan/Shift+Tab 切换/配置为默认)、专用 Subagent 配置、TDD 测试工作流、Git Worktree 并行开发(-w flag 自动创建/两终端并行任务)、Unix 管道集成(git diff | claude -p/--output-format json/CI 成本控制),以及扩展思考模式和会话管理。2026/3/5