安装后问了个问题:如何在 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 切换模型
2.2.内置功能
模型进行推理,工具采取行动;
- 模型
Sonnet 可以很好地处理大多数编码任务。Opus 为复杂的架构决策提供更强的推理能力
- 工具
五类内置工具:文件操作,搜索,执行,网络,代码智能
内置工具是基础,skills 扩展 Claude 知道的内容,MCP 链接外部服务,hooks 自动化工作流,下放任务给 subagents
- 执行环境
本地-默认:代码运行在自己机器,完全访问文件,工具和本地环境 云:代码运行在Anthropic 管理的虚拟机,卸载任务,处理本地没有的仓库 远程控制:代码运行在自己机器,但可通过浏览器控制,使用网络 UI
- 会话
每个会话是独立的。Claude 可以使用自动内存跨会话保持学习,您可以在 CLAUDE.md 中添加您自己的持久说明。
对于从相同起点的并行工作,使用 --fork-session 为每个终端提供自己的干净会话。
- 上下文窗口
/context 查看上下文窗口信息
- 使用检查点撤销修改
每个文件编辑都是可逆的。 如果出现问题,按两次 Esc 以回退到之前的状态,或要求 Claude 撤销。
- Claude code权限模式
按 Shift+Tab 循环切换权限模式:可以在 .claude/settings.json 中允许特定命令,以便 Claude 不会每次都询问
2.3.有效使用 Claude code 的提示
/init引导您为项目创建 CLAUDE.md/agents帮助您配置自定义 subagents/doctor诊断您的安装的常见问题
可以在任何时刻中断 Claude。如果它走错了路,只需输入更正并按 Enter,Claude 会立即停止正在做的事,并根据输入重新调整
预先越具体的提示,后续更正的操作就越少
在实现前先探索,即先写计划,后面再编码
3.常见工作流
4.扩展Claude code
功能的加载机制
-
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
- 保持 CLAUDE.md 在 200 行以下。如果它在增长,将参考内容移到 skills 或拆分为
有关项目概述,请参阅 @README,有关此项目的可用 npm 命令,请参阅 @package.json。
一个好的 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
Skills教Claude怎么做事,Hooks在关键节点自动执行检查,MCP把外面的世界接进来。
4.1.skills
本质是对模型的建议
如果一件事你每天做超过一次, 就应该把它变成skill
disable-model-invocation: true; // 配置skill 只能手动调用
4.2.MCP
让 claude 看到外面的世界;
添加一个MCP服务器:
claude mcp add slack -- npx -y @modelcontextprotocol/server-slack
实用 MCP 推荐
4.3.hooks
你把规则写在 CLAUDE.md 中,大多数时候有效,但是长对话时,上下文被压缩之后,可能会忘记;CLAUDE.md里的规则只是建议,但 hooks 是平台层面的机制,会强制执行;
你不需要自己从零写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-reviewer、api-designer)。 - Claude 何时应该使用此代理
- 它可以访问哪些工具
- 描述代理角色和行为的系统提示
4.5 plugins-打包好的扩展包
plugin 可以组合 skills,hooks,mcp等信息,打包分享使用;
4.6 Slash Commands:带预计算的快捷入口
Skills vs Commands选择指南
两者有重叠,但定位不同。Skills更像「知识和能力J,Claude根据上下文自动应用或手动调用;Commands更像「宏」,包含预计算步骤,强调执行流程。经验法则:如果需要Claude「知道什么」,用skill;如果需要 Claude「做一串事」,用 command。
5.常见工作流
5.1 PlanMode
何时使用 Plan Mode:claude --permission-mode plan
- 多步骤实现:当您的功能需要对许多文件进行编辑时
- 代码探索:当您想在更改任何内容之前彻底研究代码库时
- 交互式开发:当您想与 Claude 迭代方向时
将 Plan Mode 配置为默认值
// .claude/settings.json
{
"permissions": {
"defaultMode": "plan"
}
}
5.2 使用图像
可以使用以下任何方法:
- 将图像拖放到 Claude Code 窗口中
- 复制图像并使用 ctrl+v 将其粘贴到 CLI 中(不要使用 cmd+v)
- 向 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 最佳实践三条原则
- 具体化:指定文件、场景、偏好
- 指向已有模式:照着这个做
- 描述症状,不要自己猜原因
上下文管理的核心原则:不是给所有信息,而是给对的信息。让Claude看到它解决当前问题需要的上下文,不是整个项目的百科全书。
6.3.2 让 claude 采访你
先和 claude 聊你想做的事情,让它采访你,把整个方案完善,然后根据方案新开会话,开始执行;
加入一个新项目后,先花10分钟问ClaudeCode:「这个项目的架构是什么?核心模块有哪些?数据流是怎么走的?」你会省下至少半天翻文档的时间。
不要依赖/compact(自动压缩)。它是不透明的、容易出错的。需要重启时用/clear,不要用/compact。
好的对话靠的不是花哨的prompt,而是精准的上下文。具体化需求,让Claude采访你来补盲点,用/clear保持干净,别把effort调低。说到底,最有效的进阶是在实践中积累和Claude协作的直觉,不是学更多prompt技巧。
6.3.3 多 agent 协作
/remote-control:可以远程控制;生成一个唯一的会话链接和二维码,然后使用Claude移动应用或访问claude.ai/code网页扫描二维码即可连接。
/loop:可以本地长时间运行;晚上睡前启动一批任务,醒来review 结果
最开始从 2 个session 开始,给每个 session 一个明确的角色,用 git 分支隔离一切,定期扫一眼,把握整体节奏。