将上述内容放入 .claude/commands/fix-github-issue.md 使其在 Claude Code 中作为 /project:fix-github-issue 命令可用。然后您可以例如使用 /project:fix-github-issue 1234 让 Claude 修复问题 #1234。类似地,您可以将自己的个人命令添加到 ~/.claude/commands 文件夹中,以获得在所有会话中都可用的命令。
3. 尝试常见工作流程
Claude Code 不强加特定的工作流程,给您使用它的灵活性。在这种灵活性提供的空间内,我们的用户社区中出现了几种有效使用 Claude Code 的成功模式:
a. 探索、规划、编码、提交
这个多功能工作流程适用于许多问题:
要求 Claude 阅读相关文件、图像或 URL,提供通用指针("阅读处理日志的文件")或特定文件名("阅读 logging.py"),但明确告诉它现在还不要编写任何代码。
这是工作流程中您应该考虑大量使用子代理的部分,特别是对于复杂问题。告诉 Claude 使用子代理来验证细节或调查它可能有的特定问题,特别是在对话或任务的早期,往往会保持上下文可用性,而在效率损失方面没有太多缺点。
要求 Claude 制定如何处理特定问题的计划。我们建议使用"思考"这个词来触发扩展思考模式,这给 Claude 额外的计算时间来更彻底地评估替代方案。这些特定短语直接映射到系统中递增的思考预算级别:"think" < "think hard" < "think harder" < "ultrathink"。每个级别为 Claude 分配逐渐增加的思考预算来使用。
如果这一步的结果看起来合理,您可以让 Claude 创建一个文档或 GitHub 问题来记录其计划,这样如果实施(步骤 3)不是您想要的,您可以重置到这个点。
要求 Claude 在代码中实施其解决方案。这也是要求它在实施解决方案的各个部分时明确验证其解决方案合理性的好地方。
要求 Claude 提交结果并创建拉取请求。如果相关,这也是让 Claude 更新任何 README 或变更日志并解释它刚刚做了什么的好时机。
步骤 #1-#2 是至关重要的——没有它们,Claude 往往会直接跳到编写解决方案的代码。虽然有时这就是您想要的,但要求 Claude 首先研究和规划会显著提高需要预先深入思考的问题的性能。
b. 编写测试,提交;编码,迭代,提交
要求 Claude 基于预期的输入/输出对编写测试。明确说明您正在进行测试驱动开发,这样它就会避免创建模拟实现,即使对于代码库中尚不存在的功能也是如此。
告诉 Claude 运行测试并确认它们失败。在这个阶段明确告诉它不要编写任何实现代码通常很有帮助。
当您对测试满意时,要求 Claude 提交测试。
要求 Claude 编写通过测试的代码,指示它不要修改测试。告诉 Claude 继续,直到所有测试都通过。Claude 通常需要几次迭代来编写代码、运行测试、调整代码,然后再次运行测试。
在这个阶段,要求它用独立的子代理验证实现没有过度拟合测试会很有帮助
当您对更改满意时,要求 Claude 提交代码。
当 Claude 有明确的目标进行迭代时,它表现最佳——视觉模拟、测试用例或其他类型的输出。通过提供像测试这样的预期输出,Claude 可以进行更改、评估结果,并逐步改进直到成功。
c. 编写代码,截图结果,迭代
类似于测试工作流程,您可以为 Claude 提供视觉目标:
给 Claude 一种截取浏览器截图的方法(例如,使用 Puppeteer MCP 服务器、iOS 模拟器 MCP 服务器,或手动复制/粘贴截图到 Claude)。
通过复制/粘贴或拖放图像,或给 Claude 图像文件路径来给 Claude 一个视觉模拟。
要求 Claude 在代码中实现设计,截取结果的截图,并迭代直到其结果与模拟匹配。
当您满意时要求 Claude 提交。
像人类一样,Claude 的输出通过迭代往往会显著改善。虽然第一个版本可能很好,但经过 2-3 次迭代后,它通常会看起来好得多。给 Claude 查看其输出的工具以获得最佳结果。
d. 安全 YOLO 模式
不是监督 Claude,您可以使用 claude --dangerously-skip-permissions 来绕过所有权限检查,让 Claude 不间断地工作直到完成。这对于修复 lint 错误或生成样板代码等工作流程效果很好。
让 Claude 运行任意命令是有风险的,可能导致数据丢失、系统损坏,甚至数据泄露(例如,通过提示注入攻击)。为了最小化这些风险,在没有互联网访问的容器中使用 --dangerously-skip-permissions。您可以使用 Docker Dev Containers 遵循这个参考实现。
e. 代码库问答
在新代码库入职时,使用 Claude Code 进行学习和探索。您可以向 Claude 询问在结对编程时会向项目中其他工程师询问的同类问题。Claude 可以智能地搜索代码库来回答一般性问题,如:
日志记录是如何工作的?
我如何创建一个新的 API 端点?
foo.rs 第 134 行的 async move { ... } 是做什么的?
CustomerOnboardingFlowImpl 处理哪些边缘情况?
为什么我们在第 333 行调用 foo() 而不是 bar()?
baz.py 第 334 行在 Java 中的等价物是什么?
在 Anthropic,以这种方式使用 Claude Code 已经成为我们的核心入职工作流程,显著改善了提升时间并减少了其他工程师的负担。不需要特殊的提示!只需提问,Claude 会探索代码来找到答案。
f. 使用 Claude 与 git 交互
Claude 可以有效地处理许多 git 操作。许多 Anthropic 工程师使用 Claude 进行 90%+ 的 git 交互:
搜索 git 历史来回答诸如"哪些更改进入了 v1.2.3?"、"谁拥有这个特定功能?"或"为什么这个 API 是这样设计的?"等问题。明确提示 Claude 查看 git 历史来回答此类查询会有帮助。
告诉 Claude 运行 lint 命令并将所有结果错误(包括文件名和行号)写入 Markdown 检查清单
指示 Claude 逐一解决每个问题,在检查并移至下一个之前修复和验证
h. 向 Claude 传递数据
向 Claude 提供数据有几种方法:
直接复制粘贴到您的提示中(最常见的方法)
管道传输到 Claude Code(例如,cat foo.txt | claude),特别适用于日志、CSV 和大数据
告诉 Claude 通过 bash 命令、MCP 工具或自定义斜杠命令拉取数据
要求 Claude 读取文件或获取 URL(也适用于图像)
大多数会话涉及这些方法的组合。例如,您可以管道传入日志文件,然后告诉 Claude 使用工具拉入额外的上下文来调试日志。
5. 使用 headless mode 自动化您的基础设施
Claude Code 包含headless mode,用于非交互式环境,如 CI、pre-commit hooks、构建脚本和自动化。使用-p标志和 prompt 来启用 headless mode,使用--output-format stream-json获取流式 JSON 输出。
请注意,headless mode 不会在会话之间持续存在。您必须在每个会话中都触发它。
a. 使用 Claude 进行问题分类
Headless mode 可以支持由 GitHub 事件触发的自动化,例如在您的仓库中创建新 issue 时。例如,公开的Claude Code 仓库使用 Claude 检查新创建的 issue 并分配适当的标签。
b. 使用 Claude 作为 linter
Claude Code 可以提供超越传统 linting 工具检测能力的主观代码审查,识别诸如拼写错误、过期注释、误导性函数或变量名称等问题。
6. 通过多 Claude 工作流程提升水平
除了独立使用之外,一些最强大的应用涉及并行运行多个 Claude 实例:
a. 让一个 Claude 编写代码;使用另一个 Claude 进行验证
一个简单但有效的方法是让一个 Claude 编写代码,而另一个审查或测试它。类似于与多个工程师合作,有时拥有独立的上下文是有益的:
使用 Claude 编写代码
运行/clear或在另一个终端中启动第二个 Claude
让第二个 Claude 审查第一个 Claude 的工作
启动另一个 Claude(或再次/clear)来阅读代码和审查反馈
让这个 Claude 根据反馈编辑代码
您可以对测试做类似的事情:让一个 Claude 编写测试,然后让另一个 Claude 编写代码使测试通过。您甚至可以让您的 Claude 实例相互通信,通过给它们各自独立的工作草稿本,并告诉它们要写入哪一个和要读取哪一个。
这种分离通常比让单个 Claude 处理所有事情产生更好的结果。
b. 拥有多个代码仓库 checkout
与其等待 Claude 完成每个步骤,Anthropic 的许多工程师采用的做法是:
创建 3-4 个 git checkout在不同的文件夹中
在单独的终端标签页中打开每个文件夹
在每个文件夹中启动 Claude执行不同的任务
循环检查进度并批准/拒绝权限请求
c. 使用 git worktrees
这种方法在处理多个独立任务时表现出色,提供了比多个 checkout 更轻量级的替代方案。Git worktrees 允许您将同一仓库的多个分支 checkout 到单独的目录中。每个 worktree 都有自己的工作目录和隔离的文件,同时共享相同的 Git 历史记录和 reflog。
使用 git worktrees 使您能够在项目的不同部分同时运行多个 Claude 会话,每个都专注于自己独立的任务。例如,您可能让一个 Claude 重构您的身份验证系统,而另一个构建完全无关的数据可视化组件。由于任务不重叠,每个 Claude 都可以全速工作,无需等待其他 Claude 的更改或处理合并冲突: