我的 Claude Code 最佳实践

亲手敲出来的

分享我用 Claude Code 写代码的心得:10条核心技巧、斜杠命令详解、自定义命令配置,助你提升 AI 编程效率

经过持续使用 Claude Code 进行 AI 编程,我总结出了一套高效的开发工作流。这套 Claude Code 最佳实践涵盖会话管理、规划模式、版本控制、质量保障和代码审查等核心环节。

Claude Code 核心使用技巧

  1. 一个会话完成一个任务,每个任务完成就 /clear,避免压缩。
  2. 除了单个文件的简单修改直接修改,其他一律plan模式,再复杂一点使用spec方式。
  3. 使用 think、think hard、ultrathink 让 Claude 花更多时间思考复杂问题。
  4. 每次修改后都使用git管理,每个任务都自动创建一个分支处理,完成后再进行合并。
  5. 使用Claude Code Hooks和pre-commit等工具链保障代码质量,不依赖Claude做格式检查等工作。
  6. 几个回合对话还处理不好一个问题,直接新开一个会话重新处理。
  7. 任务出现较大问题直接 git checkout . 回到上次提交状态重新开始。
  8. 使用worktree同时处理多个任务,再由Claude Code自行合并,不过更多的情况是开多个窗口同时处理多个项目(例如一个功能的前端和后端部分)。
  9. Claude Code不仅仅可以用来编程,还可以用来整理和搜集信息和资料。
  10. 直接使用 claude --dangerously-skip-permissions 给他全部权限,反正我还没遇见过有什么问题。
  11. 每次任务完成后新开一个窗口使用代码审查的 Subagent 进行代码审查。

Claude Code 斜杠命令完全指南

Claude Code 提供的斜杠命令是提高编程效率的关键工具。下面介绍 Claude Code 中最常用的斜杠命令及其用法:

/init

  1. 初始化 CLAUDE.md 文件,记录项目背景、需求、约束等。
  2. 我是等项目已经启动一段时间后再用这个命令。

/memory

  1. 查看和管理个人或者项目的通用记忆,即管理CLAUDE.md文件内容。
  2. 可以在terminal中使用#开头快速调用。
  3. 每次在开发过程中遇见了认为可以通用约束的内容就加进来,可以每次改完之后和claude说,让他自己加即可。

/add-dir

  1. 将指定目录下的所有文件添加到Claude的上下文中,实现多项目联动。
  2. 我个人会直接在terminal里面复制和他说去这个目录下面看,一般不使用这个命令,因为这样可以强制让他看。
  3. 如果经常会多个项目联动可以直接在CLAUDE.md里面写好地址,因为每次/clear之后这个记忆会被保留。

/clear

  1. 清空当前会话的上下文,开始一个新任务。
  2. 每次完成一个任务就使用一下这个命令,不要让上下文过大,避免自动压缩。
  3. 不要担心丢失信息,如果是重要信息应该写在CLAUDE.md里面,毕竟一个任务是干一个任务的事情。

/compact

  1. 压缩当前会话的上下文,保留要点,继续当前任务。
  2. 基本不会主动使用,因为压缩会丢失细节信息,影响后续响应质量。
  3. 如果一个任务实在太大,建议应该是拆分任务,而不是压缩上下文。

/mcp

  1. 控制和管理MCP。
  2. 最常用的MCP有 Context7 和 chrome-devtools-mcp。

/agent

Agent 仓库示例
前往
  1. 查看和管理sub agent的使用。
  2. 可以使用 Github 上的Agent仓库里面定义好的agent。
  3. 最常用的 SubAgent 有 /code-review-ai:ai-review,主要是做代码审查工作。

/hooks

  1. 查看和管理 Claude Code Hooks。
  2. 例如每次代码完成后自动格式化。
    {
      "hooks": {
        "Stop": [
          {
            "hooks": [
              {
                "type": "command",
                "command": "cd \"$CLAUDE_PROJECT_DIR\" && make format",
                "timeout": 60
              }
            ]
          }
        ]
      }
    }
  3. 例如每次消息完成后的系统通知。
    {
      "hooks": {
        "Notification": [
          {
            "matcher": "",
            "hooks": [
              {
                "type": "command",
                "command": "terminal-notifier -title '🚀 通知' -subtitle '需要你的指令' -message 'Claude 正等待下一步操作' -sound 'Pop' -execute '/usr/local/bin/code /Users/wyx/code'"
              }
            ]
          }
        ],
        "Stop": [
          {
            "matcher": "",
            "hooks": [
              {
                "type": "command",
                "command": "terminal-notifier -title '✅ 通知' -subtitle '任务已完成' -message '当前任务已完成' -sound 'Pop' -execute '/usr/local/bin/code /Users/wyx/code'"
              }
            ]
          }
        ]
      }
    }

/tasks

  1. 列出和管理后台任务,可以使用 ! 快速触发。
  2. 很少手动触发,还是喜欢自己新开一个窗口看运行情况,手动复制错误。

/export

  1. 导出当前session的内容。
  2. 有时候需要使用其他ai对内容进行分析的时候使用,可以导出复制到其他的ai工具中。

自定义命令分享

Claude Code支持自定义命令,主要就是写md文件,放在 ~/.claude/commands/ 目录下即可。

/commit

# Commit Message 生成规范

你是一位资深的软件工程师和代码审查专家,专注于生成高质量、符合 Git Conventional Commits 规范的提交信息,并且执行git add和git commit命令,不执行git push操作。

## 核心任务

根据用户提供的代码变更(diff)或暂存区内容,执行以下分析并生成提交信息:

1. **原子性分析 (Atomic Check)**:
    * 首先分析代码变更是否过于复杂或包含多个不相关的改动。
    * 如果包含多个逻辑独立的改动(例如同时修改了 UI 和后端 API,且两者无直接依赖),**请优先建议用户拆分提交**,并给出拆分建议。
    * 如果改动是原子的(Atomic),则继续生成提交信息。

2. **生成提交信息 (Commit Generation)**:
    * 严格遵循 **Conventional Commits** 格式。
    * **语言要求**: 提交信息的标题(Subject)和正文(Body)必须使用**中文**
    * **最后说明**:这个commit是谁提交的,例如“由Claude AI助手生成”。

    * **格式结构**:

        ```text
        <emoji> <type>(<scope>): <subject>

        <body>
        ```

## 详细规则

### 1. Header 格式

* **Emoji**: 根据改动类型选择最准确的表情符号(见下表)。
* **Type**: 使用标准的英文类型(如 `feat`, `fix`),保持工具兼容性。
* **Scope** (可选): 用英文括号包裹,简短说明改动影响的模块或文件名。
* **Subject**: 简练的**中文**描述,不超过 50 个字符,不要以句号结尾。

### 2. Body 内容 (至关重要)

正文部分必须清晰分段,包含以下两部分:
* **What (做了什么)**: 使用无序列表 (`- `) 详细列出具体的代码改动点。
* **Why (为什么做)**: 解释改动的动机、解决的问题或带来的优化。

### 3. 类型映射表 (Type/Emoji Mapping)

| Type | Emoji | 含义 | 适用场景 |
|:---|:---|:---|:---|
| **feat** | ✨ | 新功能 | 引入新特性或功能 |
| **fix** | 🐛 | 修复 Bug | 修复生产环境或开发中的错误 |
| **docs** | 📝 | 文档 | 仅修改文档 (README, API doc) |
| **style** | 💄 | 格式/样式 | 代码格式化、UI 微调 (不影响逻辑) |
| **refactor** | ♻️ | 重构 | 代码结构调整,既不修 Bug 也不加功能 |
| **perf** | ⚡️ | 性能 | 提升性能的改动 |
| **test** | ✅ | 测试 | 增加或修改测试代码 |
| **build** | 📦 | 构建 | 构建系统或外部依赖变动 |
| **ci** | 👷 | CI/CD | CI 配置文件或脚本变动 |
| **chore** | 🔧 | 杂项 | 其他琐碎改动 |

## 输出示例

**输入**: 用户修改了登录逻辑,增加了验证码校验,并修复了一个空指针报错。

**输出**:

✨ feat(auth): 增加登录时的验证码校验机制

-`LoginController` 中集成验证码服务
- 更新前端登录表单,增加验证码输入框
- 🐛 fix: 修复 `UserParams` 解析时的空指针异常

**原因 (Why):**
为了防止暴力破解攻击,提高账户安全性,因此引入强制验证码流程。同时顺带修复了测试中发现的潜在崩溃问题。

---

**注意**:
*   你可以执行提交commit的命令,但是最终的git push操作由用户执行,因为最终的提交信息需要用户确认。
*   最终输出只需包含建议的 Commit Message 内容,不需要额外的寒暄。

***

写在最后

目前这些 Claude Code 的最佳实践主要基于后端开发的经验,前端部分的优化策略还在探索中。

如果你想深入了解在 AI 辅助编程中如何保证代码质量,可以参考《AI编程质量控制:5道防线确保代码质量》,那篇文章详细介绍了 Claude Code 编程中的 5 层质量防线。

这些 Claude Code 的技巧和实践也在不断演进,我会持续更新这篇文章。

评论