最近在做 AI 编程工具调研时,我在 Claude Code 上花了不少时间。它的灵活度很高,尤其是可以通过SKILL.md给模型预置一套“动手流程”,相当于给 Claude Code 装上定制外挂。但坦白说,这工具的上手门槛并不低:安装、模型配置、权限管理、技能文件编写,每一个环节都能劝退不少开发者。网上的资料又比较零散,很多教程只贴命令不解释原理,出了问题也不知道去哪里排查。
这篇文章我会把完整的链路走一遍,从 Claude Code 的安装、认证、多模型切换,到SKILL.md的目录结构、编写规范,再手写一个“测试生成外挂”,让你在项目里直接复用。最后还会整理几个高频报错的排查思路,包括模型名不识别、529 请求失败、桌面端 binary 找不到等问题。
1. 为什么要用 Claude Code,以及 SKILL.md 是什么
1.1 Claude Code 是什么,解决了什么问题
Claude Code 是 Anthropic 推出的终端编程助手工具,它和传统聊天式 AI 工具最大的区别在于:它运行在终端里,可以直接读取项目文件、执行命令、做出修改、跑测试,不需要你把代码复制进网页对话框。
简单理解,它是一个“能真正操作你项目的 AI 工程师”:
- 可以基于项目上下文回答问题,理解你的目录结构、依赖关系、代码风格。
- 可以自动修改代码、生成测试、执行命令行工具。
- 可以通过权限配置,决定它能读哪些文件、执行哪些命令。
- 可以通过
SKILL.md预先注入一套工作流,让它在指定任务下按你的方法论执行。
相比纯手动搜索代码、写单测、跑测试,Claude Code 把其中一大部分琐碎工作自动化了。尤其是在团队项目里,新人来了之后可以直接让它按照规范的流程生成代码和测试,大大缩短熟悉业务和工程规范的时间。
1.2 SKILL.md 到底是什么
SKILL.md是 Claude Code 中一种技能定义文件。它的思想非常简单:把一个特定任务的“能力描述 + 操作步骤 + 约束条件”写在一个 Markdown 文件里,放在项目的.claude/skills/目录下。Claude Code 在需要时会加载这些技能文件,从而按照你预定义的流程执行任务。
比如你想让 Claude Code 自动生成单元测试,就可以写一个名为test-generator的 skill,里面规定:
- 这个 skill 在什么时候被触发。
- 生成测试代码前需要先读哪些文件。
- 测试代码放在哪个目录。
- 使用什么测试框架。
- 代码风格要求。
这样一来,你不需要每次对话都重复说明整套流程,只需要告诉 Claude Code “用 test-generator 给/src/xxx.py生成测试”,它会自动加载对应的 skill,然后按照流程执行。
1.3 这套方案的典型工作流
结合 Claude Code 和 SKILL.md,典型的工作流程是这样的:
- 编写并配置
SKILL.md,定义一组任务的工作步骤和输出规范。 - 启动 Claude Code,用自然语言描述任务,比如“给用户模块写单元测试”。
- Claude Code 根据任务描述,触发对应的 skill。
- skill 中的流程会引导模型逐步执行:先扫描代码,再分析函数,再生成测试,最后可选运行测试。
- 生成结果由你检查和确认,模型才能写入文件或执行命令。
2. 安装与基础环境配置
2.1 安装前的环境检查
Claude Code 本质上是一个 Node.js 命令行工具,所以安装前需要确认本机环境。
至少需要准备:
- Node.js 环境,建议使用 LTS 版本。
- npm 包管理器,一般随 Node.js 一起安装。
- 一个可用的 API Key,或者能通过官方身份认证的账号。
- 终端工具,Windows 下推荐使用 PowerShell 7、Windows Terminal,或者 Git Bash。
你可以在终端里先检查已有的环境:
node -v npm -v如果node命令不存在,说明本机还没有安装 Node.js,需要先到 Node.js 官网下载对应的 LTS 版本。安装完成后重新打开终端再验证一次。如果你所在网络访问 npm 官方源不稳定,可以换成国内 npm 镜像:
npm config set registry https://registry.npmmirror.com修改镜像源只是加速依赖下载,不影响后续的使用逻辑。
2.2 通过 npm 安装 Claude Code
环境确认没问题后,直接用 npm 全局安装:
npm install -g @anthropic-ai/claude-code安装完成后,验证版本号:
claude --version如果命令能正常输出版本信息,说明 CLI 安装成功。
claude命令会被安装到 npm 的全局 bin 目录下。如果你在终端里执行claude提示找不到命令,通常是全局 bin 目录没有加入系统的 PATH 环境变量。这时需要找到 npm 全局安装路径,比如npm prefix -g会输出全局目录,把它对应的 bin 目录加到 PATH 里即可。
2.3 认证与 API Key 配置
Claude Code 有两种常见的认证方式:一种是登录 Anthropic 账号,让工具在后台完成授权;另一种是直接配置 API Key,适合使用第三方 API 或自动化脚本。
推荐使用环境变量方式配置 API Key,方便在多个项目之间复用,也能避免把密钥写进项目代码:
# Linux / macOS 临时配置 export ANTHROPIC_API_KEY=sk-ant-xxxx在 Windows PowerShell 中,这样设置:
$env:ANTHROPIC_API_KEY="sk-ant-xxxx"需要注意,直接把 API Key 写在终端里会留在 shell 历史记录中。更安全的做法是使用.env文件,或者在系统环境变量面板中配置。.env文件一定不要提交到 Git 仓库,建议在.gitignore中加入.env。
2.4 多模型切换:接入 DeepSeek 等第三方 API
很多同学希望把 Claude Code 接入 DeepSeek 等第三方大模型 API,主要目的是降低调用成本,或者满足国内项目的合规要求。Claude Code 本身支持通过环境变量指定 API 地址和模型名。
这里要特别提醒一点:网上很多教程会让你直接设置一个自定义模型名,比如deepseek-v4-pro,然后启动时报错:
"deepseek-v4-pro" is not a model this version of claude code recognizes这个报错的意思是:当前这个模型名不在 Claude Code 认可的模型列表中。
出现这种情况,通常是因为模型名写错了,或者该版本 Claude Code 还不支持自定义模型注册。解决办法是,先确认服务商提供的 Anthropic 兼容接口文档中实际支持的模型名,然后正确配置。
一般的配置方式如下:
export ANTHROPIC_BASE_URL=https://api.example.com/anthropic export ANTHROPIC_API_KEY=sk-xxxx export ANTHROPIC_MODEL=your-model-name其中:
ANTHROPIC_BASE_URL:第三方 API 的 Anthropic 兼容接口地址。ANTHROPIC_API_KEY:你申请的 API Key。ANTHROPIC_MODEL:服务商支持的模型名。
如果你使用了 cc-switch 这类配置切换工具,切换之后建议重启终端和 Claude Code,避免旧的环境变量残留导致模型名不识别。cc-switch 的作用本质上是帮你快速替换这些环境变量配置,并不改变 Claude Code 本身的模型校验逻辑,所以模型名是否合法,最终还是要以 Claude Code 的校验结果为准。
2.5 验证安装是否成功
配置完成后,在项目目录下启动:
claude如果一切正常,你会进入交互式对话界面。第一次启动时,Claude Code 可能会询问是否允许读取某些目录、是否开启权限确认,根据项目需要选择即可。
如果启动时报错,先看 API Key 是否配置成功:
echo $ANTHROPIC_API_KEY在 Windows PowerShell 中:
echo $env:ANTHROPIC_API_KEY只要能看到密钥,说明环境变量已经生效。接下来可以继续排查网络和模型名问题。
3. Claude Code 的基础使用
3.1 启动交互终端
在项目根目录执行claude后,你会看到一个交互式命令行界面。可以直接输入自然语言指令,例如:
请说明一下这个项目的整体结构Claude Code 会读取项目文件,然后给出项目结构分析和关键文件的说明。
它和普通聊天 AI 不同的地方在于,它可以真正修改文件。比如你输入:
给 src/calculator.py 里的 add 函数写一个单元测试它会先读取src/calculator.py,分析函数签名,然后生成测试文件。写文件之前,通常会在终端里展示将要执行的写入操作,等你确认。
3.2 常用指令与快捷键
在 Claude Code 交互界面中,有一些常用指令可以帮助你控制它的行为:
/clear:清空当前会话上下文。/compact:压缩上下文,释放 token 空间。/model:查看或切换当前模型。/permissions:查看和管理权限规则。Ctrl+C:中断当前操作。Ctrl+D:退出会话。- 输入
!加命令,可以直接执行系统命令,比如!git status。
这些指令在不同版本中可能会有细微差异,以你当前安装版本的提示为准。
3.3 权限控制与安全模式
Claude Code 可以执行终端命令,所以权限控制非常重要。首次启动时,它可能会询问你是否允许特定操作,例如读取文件、写入文件、执行命令。
在实际项目中,推荐按最小权限原则来配置.claude/settings.json:
{ "permissions": { "allow": [ "Read", "Write" ], "deny": [ "Bash" ] } }这个配置的含义是:允许 Claude Code 读写文件,但不允许它随意执行 shell 命令。如果你确实需要它执行命令,可以再把Bash从 deny 中移除,或者单独设置允许的命令白名单。
权限不是越多越好。尤其是生产环境目录,建议明确禁止删除类和危险命令,比如rm、drop、git push --force等。这样即使模型判断失误,也不会对项目造成不可逆的破坏。
3.4 调试日志
遇到问题时,可以通过--debug或--verbose参数启动 Claude Code,查看详细的请求日志和错误日志:
claude --debug claude --verbose这些日志会输出在终端中,包含 API 请求、模型选择、工具调用等信息。排查“为什么模型没有按预期执行”或“为什么请求失败”时,日志是第一时间要看的东西。
另外,Claude Code 通常会在项目或用户目录下生成本地日志文件,比如~/.claude/下的日志目录。如果你在终端里看不到完整错误,可以到日志文件中检索关键词。
4. 手把手从零写 SKILL.md
4.1 SKILL.md 在项目里放哪里
SKILL.md需要放在项目根目录的.claude/skills/下,每个技能一个子目录。目录名称就是技能的标识符,建议使用小写字母和连字符,比如test-generator。
推荐的项目结构如下:
my-project/ ├── .claude/ │ ├── settings.json │ └── skills/ │ └── test-generator/ │ └── SKILL.md ├── src/ │ └── calculator.py └── tests/ └── test_calculator.py这里.claude/skills/test-generator/SKILL.md就是这个技能的入口文件。Claude Code 读取该文件后,会把技能名称、描述、执行步骤交给模型。
4.2 SKILL.md 的基础结构
一个标准的SKILL.md文件包含两部分:YAML front matter 和 Markdown 正文。
YAML front matter 是文件最开头的两块---之间的内容,用来描述技能的元数据,例如:
--- name: test-generator description: 自动为项目生成单元测试,推荐在新增业务函数后使用 ---其中:
name:技能名称,对应目录名。description:技能描述,Claude Code 会根据描述判断何时触发该技能。描述写得越具体,触发越准确。
正文部分就是普通 Markdown,用来编写具体的执行步骤和约束规则。
4.3#号到底执不执行
我看到一个高频问题:SKILL.md里面#后面的是不是不执行?
这里需要先分清一个概念:SKILL.md不是脚本,Markdown 中的内容本来就不是“执行”的,而是给模型阅读理解的文本。#在 Markdown 中表示标题层级,模型会通过######来判断文档结构,所以标题并不是“不执行”,而是要重点理解的部分。
如果你在 YAML front matter 里使用#,那它是 YAML 注释语法,会被解析器忽略,不会作为元数据处理。例如:
name: test-generator # description 是必填项,最好写清楚触发场景 description: 自动生成单元测试这里# description 是必填项这一行只是注释,Claude Code 解析 YAML 时会忽略它。
如果你在正文的代码块里写#,那它按照对应语言的注释规则来解释。比如:
```python # 这是一个 Python 注释 def add(a, b): return a + b ```这里的#是 Python 注释,Claude Code 不会把这一行当时可执行代码。
所以结论是:#是否“生效”,取决于它出现在SKILL.md的哪个位置。出现在 YAML 中是注释,出现在 Markdown 标题中是结构标记,出现在代码块中是代码注释。SKILL.md的核心作用是给模型补充上下文,并不是逐行解释执行的脚本文件。
4.4 写一条最小可用的 Skill
我们先用一个最小示例,演示一个技能的文件结构。
创建目录和文件:
mkdir -p .claude/skills/hello-skill编辑.claude/skills/hello-skill/SKILL.md:
--- name: hello-skill description: 当用户说“你好”或“打招呼”时,返回项目结构概览 --- # Hello Skill 当用户向你打招呼时,请主动介绍当前项目的核心目录结构,并给出主要文件的职责说明。 执行步骤: 1. 使用目录读取工具,查看项目根目录。 2. 识别核心目录(如 src、tests、docs)。 3. 输出目录树和主要文件职责。这个技能定义了一个最简单的触发场景:用户打招呼时,让 Claude Code 自动输出项目结构。保存后,重启 Claude Code(或重新加载项目),再输入“你好”,它会尝试调用这个技能。
5. 实战:给 Claude Code 装“测试生成外挂”
5.1 需求分析与 Skill 设计
接下来我们实现一个真正有用的技能:测试生成外挂。
需求可以拆成几个点:
- 自动识别项目使用什么语言和测试框架。
- 读取待测试模块的源码,理解函数签名、返回类型、依赖。
- 按照项目已有的测试风格生成测试文件。
- 测试文件落在
tests/目录下,命名规则为test_模块名.py。 - 不修改被测模块源码。
为了让这个 Skill 具备通用性,我不会把技能限定在一个语言上,而是让模型先探测项目配置文件,再决定测试写法。在下面的示例中,我会以 Python + pytest 作为主场景,同时在流程里加入对其他框架的判断。
5.2 编写测试生成 SKILL.md
创建目录:
mkdir -p .claude/skills/test-generator编辑.claude/skills/test-generator/SKILL.md:
--- name: test-generator description: 自动为项目中的业务模块生成单元测试。当用户要求“生成测试”“补测试”“测试生成”时使用。支持 pytest、JUnit 等常见测试框架。 --- # Test Generator Skill 当收到生成测试的任务时,请严格按以下流程执行。 ## 1. 识别测试框架 先读取项目配置,判断技术栈: - Python 项目通常有 `pyproject.toml`、`requirements.txt` 或 `setup.py`,优先使用 pytest。 - Java 项目通常有 `pom.xml` 或 `build.gradle`,优先使用 JUnit。 - JavaScript/TypeScript 项目优先使用 Jest 或 Vitest。 ## 2. 找到被测模块 根据用户指定的文件路径定位被测模块。如果没有指定路径,先扫描 `src/` 或项目根目录,列出候选文件,并输出文件清单,等待用户确认。 ## 3. 分析模块接口 读取被测模块源码,提取以下信息: - 公开函数或方法的名称。 - 参数列表和类型注解。 - 返回值类型。 - 模块内部依赖。 - 需要 mock 的外部调用(例如网络请求、数据库读写)。 分析完成后,用简洁列表向用户说明测试计划,得到确认后再生成测试文件。 ## 4. 生成测试文件 测试文件放到 `tests/` 目录下,命名规则: - Python:`test_<模块名>.py` - Java:`<类名>Test.java` - JavaScript:`<模块名>.test.js` 测试代码要求: - 每个函数至少包含一个正常路径用例和一个边界条件用例。 - 对依赖外部服务的部分,使用 mock 或 fixture 隔离。 - 测试函数命名清晰,能够从名称看出测试意图。 - 不允许修改被测模块源码。 ## 5. 运行验证 如果当前环境允许执行命令,尝试运行测试并检查结果: - Python:`pytest tests/` - Java:`mvn test` 或 `gradle test` - JavaScript:`npm test` 如果测试运行失败,不要立刻放弃,先分析失败原因是测试问题还是被测代码问题,并向用户输出分析结论。 ## 6. 输出说明 完成后,用 Markdown 输出测试文件列表、测试覆盖点、未覆盖风险说明。这份SKILL.md的核心价值在于:它把生成测试这件事从“随机生成”变成了一套可复用的流程。模型不会凭感觉乱写测试,而是先识别框架、分析接口、制定计划、生成测试、运行验证。
5.3 让 Claude Code 验证 Skill
保存文件后,进入 Claude Code 交互终端,输入:
用 test-generator 给 src/calculator.py 生成测试如果触发成功,Claude Code 会先读取.claude/skills/test-generator/SKILL.md,然后按照里面的流程执行。你会看到它先展示对calculator.py的分析,再生成测试文件。
如果它没有自动触发,可以检查两个地方:
SKILL.md的 YAML front matter 格式是否正确,description是否包含“测试生成”等触发词。- 技能目录名和文件名是否完全匹配,
SKILL.md需要放在技能目录下。
5.4 运行效果与结果说明
假设项目里有下面这个计算器模块:
# 文件路径:src/calculator.py class Calculator: def add(self, a, b): return a + b def divide(self, a, b): if b == 0: raise ValueError("division by zero") return a / b按照 Skill 的流程,最终生成的测试文件可能如下:
# 文件路径:tests/test_calculator.py import pytest from src.calculator import Calculator def test_add_should_return_sum(): calc = Calculator() assert calc.add(2, 3) == 5 def test_add_with_negative_numbers(): calc = Calculator() assert calc.add(-2, 3) == 1 def test_divide_should_return_quotient(): calc = Calculator() assert calc.divide(10, 2) == 5 def test_divide_by_zero_should_raise_error(): calc = Calculator() with pytest.raises(ValueError): calc.divide(1, 0)这个示例说明了为什么需要 SKILL.md 而不是直接让模型生成代码:因为 skill 规定了“至少包含正常路径和边界条件”“对异常情况使用 pytest.raises 验证”这些原则,生成的测试质量会明显更稳定。
6. 在 VS Code 与桌面端高效使用
6.1 VS Code 插件安装
Claude Code 除了终端交互,还可以作为 VS Code 插件使用。在 VS Code 扩展市场搜索 Claude Code,安装后通常需要指向本地安装的 CLI。
安装完成后,一般可以在侧边栏打开 Claude Code 面板,在面板里直接输入指令。它的底层执行逻辑和终端是一样的,所以前面配置好的环境变量、权限、技能都会被复用。
如果你在 VS Code 中使用时提示找不到 Claude Code binary,可以检查 VS Code 是否继承了终端的环境变量,或者重启 VS Code 让它重新加载 PATH。
6.2 桌面端常见问题
Claude 桌面端也集成了 Claude Code 能力。有时候桌面端会报错:
Claude app host claude code binary not available. Check that the download completed successfully.这个报错的意思是桌面应用没有找到 Claude Code 的二进制文件,常见原因有:
- Claude Code CLI 没有安装成功。
- CLI 安装目录没有加入系统 PATH。
- 桌面应用启动时检测不到命令,需要重启应用或重新安装 CLI。
- 安装过程中下载不完整,需要卸载重装。
排查顺序建议是:
- 打开终端执行
claude --version,确认 CLI 本身可用。 - 确认 CLI 路径在系统 PATH 中。
- 重启 Claude 桌面应用。
- 如果仍然不行,重新安装 Claude Code CLI。
6.3 团队共享 .claude 目录
.claude/目录可以提交到 Git 仓库,这样团队成员共用同一套权限配置和技能。我建议把通用技能目录加入版本管理,例如.claude/skills/下的完整内容。同时注意不要把 API Key 写进.claude/目录下的任何配置文件中,特别是不要提交到 Git。
团队共享的好处很明显:新人第一次启动项目时,Claude Code 会自动加载团队预设的技能,生成代码的规范由团队统一把控,不再依赖个人提示词的水平。
7. 常见报错与排查思路
7.1 模型名不识别
现象:
"xx-model-name" is not a model this version of claude code recognizes原因:模型名不在 Claude Code 当前版本支持的模型列表中。常见于手动切换第三方 API 后,使用了错误的模型名。
排查步骤:
- 执行
claude --version确认当前版本。 - 查看服务商提供的 Anthropic 兼容接口文档,确认支持的模型名。
- 正确设置
ANTHROPIC_MODEL环境变量。 - 如果使用 cc-switch 等工具切换配置,切换后重启终端,确保环境变量已更新。
- 如果确认模型名正确仍然报错,考虑 Claude Code 版本是否过旧,升级到最新版本后重试。
7.2 529 请求失败
现象:请求过程中返回 HTTP 529,或者看到类似 “529 resource has been exhausted” 的提示。
原因:529 表示服务端过载,通常是 API 服务繁忙,或者请求频率超过账号限制。
排查思路:
- 等待几分钟后重试,高峰期容易触发。
- 检查是否同时运行了多个并发请求。
- 检查账号的请求额度是否耗尽。
- 适当降低任务复杂度,比如拆分大任务为多个小任务。
7.3 桌面端 binary not available
现象:
Claude app host claude code binary not available原因:桌面应用找不到 Claude Code 二进制文件,前面已经提到,基本上是安装问题或 PATH 问题。
排查步骤:
- 终端执行
claude --version,判断 CLI 是否可用。 - 检查 PATH 是否包含 Claude Code 的 bin 目录。
- 重启桌面应用。
- 如果仍然报错,重新安装 Claude Code CLI,或者在应用内设置里检查可执行文件路径。
7.4 组织禁用订阅访问
现象:
Your organization has disabled Claude subscription access for Claude Code原因:这个错误和账号的组织管理策略有关,当前组织不允许通过该账号使用 Claude 订阅来访问 Claude Code。
解决办法:
- 联系组织管理员,确认是否需要开通 Claude Code 权限。
- 如果你是管理员,登录管理后台检查订阅权限和成员策略。
- 如果个人开发,可以切换到个人账号,并确认账号有对应的订阅权限或 API Key。
7.5 其他高频问题
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
claude命令找不到 | npm 全局 bin 未加入 PATH | 执行npm prefix -g找到全局目录,加入 PATH |
| 安装后无法启动 | API Key 未配置或配置错误 | 检查ANTHROPIC_API_KEY环境变量 |
| 模型不响应 Skill | 技能描述写得太模糊 | 补充description中的触发词,重启 Claude Code |
| 生成测试风格不一致 | SKILL.md 没有明确规范 | 在 SKILL.md 中写清楚测试命名、目录和边界要求 |
| 日志过多刷屏 | 开启了 debug 模式 | 正常使用不需要加--debug |
8. 最佳实践与工程建议
8.1 SKILL.md 编写规范
写 SKILL.md 时,最重要的不是格式花哨,而是“可触发、可执行、可验证”。
我在实际使用中总结了几条原则:
- description 要写清楚触发场景,最好包含用户可能说出的指令词,例如“生成测试”“补测试”“测试生成”。
- 正文步骤要具体,不要只写“生成测试”,而是拆成“识别框架、分析函数、制定计划、生成文件、运行验证”这样的可执行步骤。
- 要明确边界,例如“不允许修改被测模块源码”“不使用 mock 外部依赖时先询问用户”。
- 要给出输出约束,比如测试文件放哪个目录、命名规则是什么、覆盖率要求是多少。
8.2 测试生成 Skill 的边界设计
给 Claude Code 写测试生成 Skill,要避免一个误区:让它一次性生成“全网最全测试”。测试太多,运行时间变长,维护成本也会上升。
更合理的边界设计是:
- 每个函数至少一个正常用例和一个边界用例。
- 核心业务逻辑覆盖异常分支。
- 外部依赖统一 mock,保证测试可重复运行。
- 不追求 100% 覆盖率,而是优先覆盖最关键的业务逻辑。
这样的 Skill 在团队里使用,才能保证输出质量和可维护性之间的平衡。
8.3 安全与权限
Claude Code 可以执行命令,所以权限配置和安全意识非常重要。
我的建议是:
- 只在信任的项目目录中启用自动执行命令。
- 把
.env、密钥文件加入.gitignore和 Claude Code 的读取黑名单。 - 在
settings.json中明确 deny 危险命令,例如强制删除、数据库写入、生产环境发布等。 - 每次让 Claude Code 执行危险操作前,先检查它的执行计划。
如果你在数据库或生产环境相关目录中使用 Claude Code,一定要格外谨慎。任何涉及数据库变更、生产发布的操作,都要先经过评审,不应该让模型直接执行。
8.4 版本管理与团队协作
.claude/目录建议纳入 Git 管理,这样团队成员的技能和权限规则是一致的。每次修改 SKILL.md 之后,建议在提交信息里说明“修改了哪个技能的触发逻辑”,方便团队 review。
当然,不同项目可能需要不同的 SKILL.md 风格。可以把那些跨项目通用的技能提炼出来,作为团队模板;把特定业务的技能放在各自项目里,避免把大量无关技能复制到每个仓库。
9. 下一步还能玩什么
当你把基础安装、模型配置和测试生成 SKILL.md 跑通之后,还有几个方向值得继续探索。
第一个方向是扩展技能库。除了测试生成,还可以写代码审查技能、提交信息规范技能、API 文档生成技能。这些技能的写法都是一样的,区别只在于流程设计是否贴合你团队的实际情况。
第二个方向是优化现有 skill。比如在测试生成技能中加入“只生成最近变更文件的测试”的功能,或者让它根据覆盖率报告补测未覆盖的分支。这类需求本质上就是修改 SKILL.md 中的流程,让 Claude Code 多读一个覆盖率文件,再决定下一步动作。
第三个方向是观察模型调用日志,理解它在哪些环节容易判断失误。通过--debug日志,你可以看到模型读取了哪些文件、为什么选择了一个错误路径,然后通过调整 SKILL.md 或权限配置来修正。
工具最终是工具,真正决定工程质量的是流程设计和人的判断。希望这篇文章能帮你少踩一些安装和配置的坑,把时间花在更有价值的工程实践上。如果你也写了一些不错的 SKILL.md,欢迎在评论区分享你的技能设计思路。