Claude code 学习手册

0 阅读13分钟

文档地址:code.claude.com/docs/en/ove…

安装后问了个问题:如何在 Claude Code 中创建自定义 skills

在 Claude Code 中创建自定义 skills 需要通过配置文件(settings.json)来定义。以下是具体步骤:

  1. 了解 skill 类型

  - 简单命令:执行单个命令(如 /build 运行 npm run build)
  - 复杂脚本:执行多步骤脚本
  - 交互式:需要用户输入
  - 自动化:基于条件自动触发

  2. 配置文件位置

  你有三个选择(按优先级):
  1. 项目级别:.claude/settings.json(推荐,可提交到版本控制)
  2. 用户级别:~/.claude/settings.json(适用于所有项目)
  3. 本地覆盖:.claude/settings.local.json(本地使用,不提交)

  你的项目已有 .claude/settings.local.json,目前只配置了权限。

  3. 添加 skill 配置示例

  编辑配置文件,添加 skills 字段:

  {
    "permissions": {
      "allow": [
        "Bash(npm run:*)",
        "Bash(npm test)",
        "FileWrite(src/components/*)"
      ]
    },
    "skills": {
      "dev": {
        "description": "启动开发服务器",
        "command": "npm run dev",
        "permissions": ["Bash(npm run:*)"]
      },
      "lint": {
        "description": "运行代码检查",
        "command": "npm run lint",
        "permissions": ["Bash(npm run:*)"]
      },
      "add-todo": {
        "description": "创建新的待办事项组件",
        "script": "create-todo-component.sh",
        "parameters": ["component-name"],
        "permissions": ["Bash", "FileWrite(src/components/*)"]
      }
    }
  }

  4. 配置权限

  确保 skill 有足够权限执行所需操作。你的现有权限配置已包含 Bash(npm run:*),适合运行 npm 命令。

  5. 测试 skill

  1. 保存配置文件
  2. 重启 Claude Code 或重新加载配置
  3. 输入 / 查看可用的 skills
  4. 运行你的自定义 skill(如 /dev)

  6. 使用现有 skill 帮助配置

  你可以尝试使用 /update-config skill(如果可用)来帮助配置。

  7. 注意事项

  - 权限遵循最小必要原则
  - 项目级别配置(settings.json)可提交到版本控制
  - 本地敏感信息放在 settings.local.json
  - 为每个 skill 提供清晰的描述

1.常用命令

  • claude:启动交互模式
  • claude "task": 运行一次性任务
  • claude -p "query":运行一次性查询,然后退出
  • claude -c :在当前目录中继续最近的对话 continue
  • claude -r:恢复之前的对话 resume
    • 直接输会列出所有历史会话列表,可选定到特定任务对话 "<会话ID或名称>"
  • claude commit:创建 Git 提交
  • /clear:清空上下文
    • 当你要开始一个和之前对话完全不同的任务时。
  • /help:显示可用命令
  • esc或Ctrl+c:退出

2.Claude Code 如何工作

2.1.核心架构

对话期间可以使用 /model 切换模型

image.png

2.2.内置功能

模型进行推理,工具采取行动;

  • 模型

Sonnet 可以很好地处理大多数编码任务。Opus 为复杂的架构决策提供更强的推理能力

  • 工具

五类内置工具:文件操作,搜索,执行,网络,代码智能

内置工具是基础,skills 扩展 Claude 知道的内容,MCP 链接外部服务,hooks 自动化工作流,下放任务给 subagents

  • 执行环境

本地-默认:代码运行在自己机器,完全访问文件,工具和本地环境 云:代码运行在Anthropic 管理的虚拟机,卸载任务,处理本地没有的仓库 远程控制:代码运行在自己机器,但可通过浏览器控制,使用网络 UI

  • 会话

每个会话是独立的。Claude 可以使用自动内存跨会话保持学习,您可以在 CLAUDE.md 中添加您自己的持久说明。
对于从相同起点的并行工作,使用 --fork-session 为每个终端提供自己的干净会话。

image.png

  • 上下文窗口

/context 查看上下文窗口信息

  • 使用检查点撤销修改

每个文件编辑都是可逆的。 如果出现问题,按两次 Esc 以回退到之前的状态,或要求 Claude 撤销。

  • Claude code权限模式

按 Shift+Tab 循环切换权限模式:可以在 .claude/settings.json 中允许特定命令,以便 Claude 不会每次都询问

image.png

2.3.有效使用 Claude code 的提示

  • /init 引导您为项目创建 CLAUDE.md
  • /agents 帮助您配置自定义 subagents
  • /doctor 诊断您的安装的常见问题

可以在任何时刻中断 Claude。如果它走错了路,只需输入更正并按 Enter,Claude 会立即停止正在做的事,并根据输入重新调整

预先越具体的提示,后续更正的操作就越少

在实现前先探索,即先写计划,后面再编码

3.常见工作流

4.扩展Claude code

功能的加载机制

image.png

  • CLAUDE.md:添加 Claude 每个会话都能看到的持久上下文;*项目约定,每个会话需要的说明

    • 保持 CLAUDE.md 在 200 行以下。如果它在增长,将参考内容移到 skills 或拆分为 .claude/rules/ 文件。
    • rules: 仅在 Claude 处理匹配文件时加载,节省上下文。
    • CLAUDE.md 文件 是累加的:所有级别同时向 Claude 的上下文贡献内容
    • 会话开始时候加载完整内容
    • CLAUDE.md 文件可以使用 @path/to/import 语法导入其他文件
    • 排除特定的 CLAUDE.md 文件 claudeMdExcludes
    • 要引入 README、package.json 和工作流指南,在你的 CLAUDE.md 中的任何地方使用 @ 语法引用它们;这个操作不建议,因为引入的文件也会消耗大量token
有关项目概述,请参阅 @README,有关此项目的可用 npm 命令,请参阅 @package.json。

image.png

一个好的 CLAUDE.md 示例

#MyApp
#架构
- Next.js 15 + TypeScript + Tailwind CSS
- 数据库:PostgreSQL+DrizzLe 
- ORM认证:Better Auth
- 状态管理:Zustand(不要用Redux)

#开发命令
-启动开发服务器:pnpm dev
- 跑测试: pnpm test (Jest + React Testing Library)
- 类型检查:pnpm typecheck
- Lint:pnpm lint

#代码风格
- 组件用函数式,不用cLass
- 样式用Tailwind,不要写CSS文件
- 数据获取用servercomponent,不用useEffect
- 错误处理用error.tsx边界,不用try-catch包裹组件

#常见陷阱
- Drizzle迁移后必须跑 pnpm db:generate,否则类型不同步
- 环境变量改了之后要重启devserverbetter-auth的session检查
- 在middLeware中,不要在页面组件里重复检查

#不要做
-不要安装新依赖除非我明确同意
- 不要修改drizzle.config.ts
-不要在cLientcomponent中直接调数据库

队规则写在项目CLAUDE.md个人习惯Auto Memory自动处理

  • Skills:添加可重用的知识和可调用的工作流;可重用内容、参考文档、可重复任务;有时只需要的内容,使用 skills

    • Skills 按名称覆盖
    • 多个级别重名时,优先级 skills 为托管 > 用户 > 项目
    • 会话开始时+使用时加载,启动时加载描述,使用时完整内容
    • 在 skill 的 frontmatter 中设置 disable-model-invocation: true 以将其完全隐藏在 Claude 中,直到你手动调用它。这将 skills 的上下文成本降低到零,您只需自己触发这些 skills。
  • MCP:将Claude 连接到外部服务和工具;链接外部服务或数据

    • 按名称覆盖:本地 > 项目 > 用户
    • 会话开始时加载所有工具定义和JSON 架构
  • Subagents:在隔离的上下文中运行自己的循环,返回摘要;上下文隔离,并行任务,专门的工作者;会话内运行并将结果报告回当前主上下文

    • 按名称覆盖
    • subagents 为托管 > CLI 标志 > 项目 > 用户 > plugin
    • 生成时具有指定 skills 的新上下文
  • Agent teams:协调多个独立会话,可共享任务和点对点消息传递;并行研究,新功能开发,使用竞争假设进行测试;是相互通信的独立 Claude Code 会话

  • Hooks:完全在循环外作为确定下脚本运行; 可预测的自动化,不涉及 LLM

  • Plugins 和 marketplaces:打包和分发这些功能;plugin 将 skills、hooks、subagents 和 MCP servers 捆绑到单个可安装单元中;如果想在多个仓库中重用相同的设置或通过 marketplace 分发给他人,使用 plugin

image.png

SkillsClaude怎么做事Hooks在关键节点自动执行检查MCP把外面的世界接进来

4.1.skills

本质是对模型的建议

如果一件事你每天做超过一次, 就应该把它变成skill

image.png

disable-model-invocation: true; // 配置skill 只能手动调用

4.2.MCP

让 claude 看到外面的世界;

添加一个MCP服务器:

claude mcp add slack -- npx -y @modelcontextprotocol/server-slack

实用 MCP 推荐

image.png

4.3.hooks

你把规则写在 CLAUDE.md 中,大多数时候有效,但是长对话时,上下文被压缩之后,可能会忘记;CLAUDE.md里的规则只是建议,但 hooks 是平台层面的机制,会强制执行;

image.png

image.png

你不需要自己从零写hooks。 直接告诉Claude: 「Write a hook that runs eslint after every file editj, 它会帮你生成配置并写入.claude/settings.json。

4.4.subagents

/agents 指令创建 subagent

然后选择”Create New subagent”并按照提示定义:

  • 描述 subagent 目的的唯一标识符(例如,code-reviewerapi-designer)。
  • Claude 何时应该使用此代理
  • 它可以访问哪些工具
  • 描述代理角色和行为的系统提示

4.5 plugins-打包好的扩展包

plugin 可以组合 skills,hooks,mcp等信息,打包分享使用;

4.6 Slash Commands:带预计算的快捷入口

Skills vs Commands选择指南

两者有重叠,但定位不同。Skills更像「知识和能力J,Claude根据上下文自动应用或手动调用;Commands更像「宏」,包含预计算步骤,强调执行流程。经验法则:如果需要Claude「知道什么」,用skill;如果需要 Claude「做一串事」,用 command。

image.png

image.png

5.常见工作流

image.png

5.1 PlanMode

何时使用 Plan Mode:claude --permission-mode plan

  • 多步骤实现:当您的功能需要对许多文件进行编辑时
  • 代码探索:当您想在更改任何内容之前彻底研究代码库时
  • 交互式开发:当您想与 Claude 迭代方向时

将 Plan Mode 配置为默认值

// .claude/settings.json
{
  "permissions": {
    "defaultMode": "plan"
  }
}

5.2 使用图像

可以使用以下任何方法:

  1. 将图像拖放到 Claude Code 窗口中
  2. 复制图像并使用 ctrl+v 将其粘贴到 CLI 中(不要使用 cmd+v)
  3. 向 Claude 提供图像路径。例如,“Analyze this image: /path/to/your/image.png”

5.3 恢复之前的对话

启动 Claude Code 时,您可以恢复以前的会话:

  • claude --continue 继续当前目录中最近的对话
  • claude --resume 打开对话选择器或按名称恢复
  • claude --from-pr 123 恢复链接到特定拉取请求的会话

命名你的对话,用于后期恢复

claude -n auth-refactor
/rename auth-refactor

5.4 使用 Git worktrees 运行并行 Claude 会话

使用 --worktree-w)标志创建隔离的 worktree 并在其中启动 Claude,如果您省略名称,Claude 会自动生成一个随机名称:

# 在名为 "feature-auth" 的 worktree 中启动 Claude
# 创建 .claude/worktrees/feature-auth/ 和新分支
claude --worktree feature-auth

# 在单独的 worktree 中启动另一个会话
claude --worktree bugfix-123

# 自动生成名称如 "bright-running-fox"
claude --worktree
  • 为了更好地控制 worktree 位置和分支配置,直接使用 Git 创建和管理 worktrees
# 使用新分支创建 worktree
git worktree add ../project-feature-a -b feature-a

# 使用现有分支创建 worktree
git worktree add ../project-bugfix bugfix-123

# 在 worktree 中启动 Claude
cd ../project-feature-a && claude

# 完成时清理
git worktree list
git worktree remove ../project-feature-a

5.5 在 Claude 需要你的注意时获得通知

打开 ~/.claude/settings.json 并添加一个 Notification hook

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

5.6 语音输入

使用讯飞输入法,或者MAC 电脑自带 fn 按钮就可以进行输入。当然讯飞输入法识别率高得多。 claude code支持输入 /voice 进行语音输入。

6.最佳实践

先探索,再规划,最后编码(对于小而明确的任务,直接让其执行编码,减少 token 消耗)

  • 探索: 进入plan mode,读取文件并分析整体内容,不进行任何更改
  • 规划:要求 claude 创建详细的实现计划
  • 实现:让 claude 根据计划做编码实现,并根据其计划验证
  • 提交:要求 claude 使用规范化message 进行 PR

个会话做完就 /clear或者开端窗
纠正次不行,果断 /clear 重来
每一轮改动都实际运行一次,代码看起来对和实际运行对是两码事
关注结果。让Cla ude把一个 完整任务做完,看最终输出是否符合预期。中间过程除非明显跑偏,不用管。
给出具体的需求描述,越具体,实现效果越好

Plan模式想清楚再动手,Auto模式减少审批疲劳,/permissions精细控权限,Git集成管版本, 会话管理保持上下文干净。这五个工作流覆盖90%的日常场景

6.1 在提示中提供具体的上下文

你可以通过多种方式向 Claude 提供丰富的数据:

  • 使用 @ 引用文件,而不是描述代码的位置。Claude 在响应前读取文件。
  • 直接粘贴图像。复制/粘贴或拖放图像到提示中。
  • 提供 URL 用于文档和 API 参考。使用 /permissions 来允许列表经常使用的域。
  • 管道数据 通过运行 cat error.log | claude 直接发送文件内容。
  • 让 Claude 获取它需要的东西。告诉 Claude 使用 Bash 命令、MCP 工具或通过读取文件来自己拉取上下文

你可以在多个位置放置 CLAUDE.md 文件:

  • 主文件夹(~/.claude/CLAUDE.md :适用于所有 Claude 会话
  • 项目根目录(./CLAUDE.md :检入 git 以与你的团队共享
  • 父目录:对于 monorepos 有用,其中 root/CLAUDE.md 和 root/foo/CLAUDE.md 都会自动拉入
  • 子目录:当处理这些目录中的文件时,Claude 按需拉入子 CLAUDE.md 文件

6.2 尽早且经常改正方向

在不相关的任务之间频繁运行 /clear 来重置 context。

  • Esc:使用 Esc 键在中途停止 Claude。Context 被保留,所以你可以重定向。
  • Esc + Esc 或 /rewind:按 Esc 两次或运行 /rewind 来打开 rewind 菜单并恢复之前的对话和代码状态,或从选定的消息进行总结。
  • "撤销那个" :让 Claude 恢复其更改。
  • /clear:在不相关的任务之间重置 context。长会话与无关的 context 可能会降低性能。

6.3 进阶对话技巧

6.3.1 最佳实践三条原则
  • 具体化:指定文件、场景、偏好
  • 指向已有模式:照着这个做
  • 描述症状,不要自己猜原因

image.png

上下文管理的核心原则不是给所有信息,而是给对的信息。让Claude看到它解决当前问题需要的上下文,不是整个项目的百科全书。

6.3.2 让 claude 采访你

先和 claude 聊你想做的事情,让它采访你,把整个方案完善,然后根据方案新开会话,开始执行;

image.png

加入一个新项目后,先花10分钟问ClaudeCode:「这个项目的架构是什么?核心模块有哪些?数据流是怎么走的?」你会省下至少半天翻文档的时间。

不要依赖/compact(自动压缩)。它是不透明的、容易出错的。需要重启时用/clear,不要用/compact。

好的对话靠的不是花哨的prompt,而是精准的上下文。具体化需求,让Claude采访你来补盲点,用/clear保持干净,别把effort调低。说到底,最有效的进阶是在实践中积累和Claude协作的直觉,不是学更多prompt技巧。

6.3.3 多 agent 协作

image.png

/remote-control:可以远程控制;生成一个唯一的会话链接和二维码,然后使用Claude移动应用或访问claude.ai/code网页扫描二维码即可连接。

/loop:可以本地长时间运行;晚上睡前启动一批任务,醒来review 结果

最开始从 2 个session 开始,给每个 session 一个明确的角色,用 git 分支隔离一切,定期扫一眼,把握整体节奏。