Skip to content

Claude Code 进阶使用 ​

拆解 Claude Code 的扩展能力:Skills、Hooks、MCP、Subagents 四个核心概念各自解决什么问题、配置放在哪里,以及 Plan 模式、print 模式、ultrathink、自定义指令与规则和权限配置的用法。

目录 ​

一、核心概念 ​

1. Skills ​

Skills 本质上是打包好的、可重复使用的工作流,相当于一份操作指南。

核心功能是「按需加载指令集」:只有当用户显式调用特定技能,或者 Claude 根据任务判断该技能相关时,它才会被读入上下文。

1. 自定义 skills ​

一个典型的 Skill 目录结构如下:

text
my-skill/
├── SKILL.md        # 核心文件
├── assets/         # 资源文件(可选)
├── scripts/        # 脚本文件(可选)
├── references/     # 参考文件(可选)
└── templates/      # 模板文件(可选)

SKILL.md 是 Skill 的入口,由 YAML 元数据和 Markdown 主体两部分构成:YAML 元数据定义技能名称与描述触发场景,Markdown 主体描述分步操作和示例。

元数据常用字段:

字段是否必填约束作用
name必填1–64 字符,仅小写字母、数字和连字符(-),不能以连字符开头/结尾,不得含连续连字符(--),必须与父目录名一致技能唯一标识
description必填1–1024 字符,非空,应同时说明「做什么」和「何时用」,含便于代理匹配的关键词自动发现与触发的关键,模型仅凭此字段判断是否加载该技能
license可选许可证名称或对许可证文件的引用声明开源协议
metadata可选任意 key-value 字符串对,建议 key 具有唯一性以避免冲突相当于自定义标签,可存放版本等信息
allowed-tools可选空格分隔的预批准工具列表(实验性,各实现支持度不一)限制该技能可调用的工具白名单

可通过 skill-creator 创建 skills 模板:

bash
npx skills add https://github.com/anthropics/skills --skill skill-creator

安装之后,在 Claude Code 中运行 /skill-creator 即可使用。

2. 官方 skills ​

通过 /skills 指令查看已安装的技能,官方 skills 库:https://skills.sh/。

技能说明
web-design-guidelines对 UI 代码进行多维度合规性审计,含 100+ 规则
frontend-design优化页面
vercel-react-best-practicesReact 最佳实践
vue-best-practicesVue 3 最佳实践
skill-creator创建技能模板

安装命令:

bash
npx skills add https://github.com/vercel-labs/agent-skills --skill web-design-guidelines
npx skills add https://github.com/anthropics/skills --skill frontend-design
npx skills add https://github.com/vercel-labs/agent-skills --skill vercel-react-best-practices
npx skills add https://github.com/hyf0/vue-skills --skill vue-best-practices
npx skills add https://github.com/anthropics/skills --skill skill-creator

2. Hooks ​

Hooks 是在特定事件触发时自动执行的脚本,用于自定义工作流、拦截危险操作、自动格式化代码等,通过 /hooks 查看。

2.1 版本中目前共有 5 类钩子:

钩子触发时机与用途
PreToolUse在 Claude 执行任何工具(如 Bash、Write、Edit)之前触发;rtk 就是在这个钩子里压缩输入信息,从而减少 Token 使用量
PostToolUse工具成功执行后触发,可用于记录审计日志、执行后续清理等操作
PostToolUseFailure工具执行失败时触发,用于捕获失败信息、记录错误原因以便分析
PermissionDenied某操作因权限控制系统返回错误(权限被拒绝)时触发,提供了一个在失败后修复问题的最后机会
Notification处理 Claude Code 发出的各种通知事件,例如把任务完成、请求用户输入转发到桌面通知

3. MCP ​

1. 核心概念 ​

MCP(Model Context Protocol)是 AI 的扩展接口标准,通过添加 MCP 服务器可以扩展 Claude Code 获取外部工具、资源、服务的能力。

2. 作用域 ​

安装 MCP 等附加功能时,Claude Code 有三种作用域。

本地范围

这是很多命令的默认行为,配置文件位于项目特定路径 ~/.claude.json 中。在某个目录下安装服务器时,Claude 会把该服务器的配置与这个路径关联起来,因此只对当前项目生效,是项目私有的配置。

例如安装 @modelcontextprotocol/server-github:

bash
claude mcp add github npx -y @modelcontextprotocol/server-github

@modelcontextprotocol/server-github 是 GitHub API 集成,与项目上下文强相关,因此 Claude Code 判定为默认的「本地范围」,会在 ~/.claude.json 中新增配置:

json
{
  "D:/a/vite-ts-react": {
    "allowedTools": [],
    "mcpContextUris": [],
    "mcpServers": {
      "github": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github"],
        "env": {}
      }
    }
  }
}

用户范围

配置文件位于用户目录的 ~/.claude/settings.json,属于全局配置,本机任何 Claude Code 项目都可以使用。

例如安装 chrome-devtools-mcp:

bash
claude mcp add chrome-devtools npx chrome-devtools-mcp@latest

chrome-devtools-mcp 用于浏览器测试,属于全局通用的开发者工具,适合在任何项目中复用,因此 Claude Code 自动选择「用户范围」,配置写入 ~/.claude/settings.json:

json
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["chrome-devtools-mcp@latest"]
    }
  }
}

使用示例:

text
打开 http://localhost:3000 看看实际效果,与设计图做对比

或者:

text
用 Chrome 浏览器打开 https://example.com,然后通过 chrome devtools mcp 完成以下任务:
1. 截取页面截图
2. 提取所有链接
3. 分析页面结构
4. 获取页面性能数据

项目范围

配置文件位于项目根目录的 .mcp.json,这个文件可以提交到 Git 仓库,让团队其他成员共享相同的配置,适用于团队协作。

4. Subagents ​

Subagents 是可以并行处理任务的独立 AI 代理,每个子代理拥有独立的 200K 上下文窗口,可以分配不同任务以提高效率。

例如执行 /batch 指令进行批量修改,或执行 /simplify 指令进行代码审查,都会调用子智能体去执行任务。

创建方式:输入 /agents,选择 Library,再选择 Create new agent。

例如已有两个子智能体 .claude/agents/code-simplifier.md 和 .claude/agents/verify-app.md,在 Claude Code 中这样使用:

text
使用 code-simplifier agent 优化刚才写的代码
使用 verify-app agent 验证应用是否正常工作

执行子代理时会生成很多 worktree 分支,可以按命名批量删除:

powershell
git branch | Select-String 'worktree-agent-' | ForEach-Object { git branch -D $_.ToString().Trim() }

二、高级功能 ​

1. Plan 计划模式 ​

Plan 模式是一种「先规划、后执行」的工作模式。

text
/plan

提示:也可以按两次 Shift+Tab 切换。

2. print 非交互式模式 ​

print 模式是非交互式模式:claude 只负责输出,不会进入交互式对话界面。

1. 基本用法 ​

bash
# 从管道输入
git diff 021a03 | claude -p "解释这些更改"

# 从文件输入
cat file.txt | claude -p "总结这个文件"

# 直接指定
claude -p "检查代码质量" < src/main.js
  • |(管道符):将左侧命令的标准输出(stdout)作为右侧命令的标准输入(stdin)。
  • -p:进入非交互式模式。

2. GitHub Actions 集成示例 ​

yaml
# .github/workflows/claude-review.yml
name: Claude Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "20"

      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: Run Code Review
        run: |
          git diff origin/main...HEAD | claude -p "审查这个 PR 的代码变更" > review.txt

      - name: Comment PR
        uses: actions/github-script@v6
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('review.txt', 'utf8');
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: review
            });

3. ultrathink 深度思考模式 ​

当你需要设计复杂的缓存层或重构架构时,在提示词中加上 ultrathink,claude code 会分配更多的上下文额度,缺点是更耗 Token。

text
# 标准模式
设计一个 Redis 缓存层

# ultrathink 模式
ultrathink: 设计一个高可用的 Redis 缓存层,考虑:
- 缓存穿透、缓存击穿、缓存雪崩
- 分布式锁
- 缓存更新策略
- 降级方案

4. 自定义指令 ​

通过自定义指令,可以把复杂的「人机对话」变成简单的「命令行指令」。

在 .claude/commands/ 目录创建 Markdown 文件,例如 commit-push-pr.md:

markdown
---
description: 你是一个发布助手,当要发布的时候执行
---

1. 检查 Git 状态
   !git status

重启 Claude Code 后,执行 /commit-push-pr。

5. 自定义规则 ​

在 .claude/rules/ 目录创建 Markdown 文件,可通过元信息 paths 限制规则的生效范围,或配置 allowed_extensions 指定允许处理的文件扩展名列表。

例如只希望 AI 在处理 src/service/** 目录下的文件时遵循 API 开发规范,项目目录结构如下:

text
your-project/
├── .claude/
│   └── rules/
│       ├── code-style.md   # 编码风格规则(通用)
│       ├── testing.md      # 测试规则(通用)
│       └── api-rules.md    # API 开发规范(仅作用于特定路径)

创建 .claude/rules/api-rules.md:

markdown
---
paths:
  - "src/service/**/*.ts"
name: API 开发规范
description: 项目 API 层的编码与安全标准
---

# API 开发规则

1. **必须** 使用 TypeScript 严格模式(`"strict": true`)。
2. **必须** 为所有 API 添加中文注释。

保存文件后重启 Claude Code,提问「你知道我们项目的 API 开发规范吗?」;再让它「按照 api 规则帮我重构对应文件」,AI 会将 service 文件夹下的函数或类型接口等都加上中文注释。

三、开放权限 ​

1. 使用启动命令 ​

bash
claude --permission-mode acceptEdits --allowedTools "Read,Write,Edit,Bash,Git,Npm,Pip"

2. 配置文件 ​

~/.claude/settings.json:

json
{
  "permissions": {
    "initialPermissionMode": "acceptEdits",
    "allow": [
      "Read",
      "Write",
      "Edit",
      "Bash",
      "Git",
      "Npm",
      "Pip",
      "Grep",
      "Glob"
    ],
    "deny": ["Rm", "Ssh", "Sud"]
  }
}