调试技巧
本章汇总 Skill 开发和使用中的常见问题及解决方案,帮助你快速定位和解决问题。
Skill 不触发
Skill 未被自动激活是最常见的问题之一。
检查 description
description 是 Skill 触发的关键。确保它包含:
- 功能描述:清晰说明 Skill 做什么
- 触发条件:明确说明何时使用
- 关键词:包含用户可能使用的词汇
# 好的 description
description: "审查 Python 代码质量,检查 PEP 8 规范。当用户请求代码审查、代码检查、code review 或提交 Python 代码时触发。"
# 不好的 description(缺少触发条件)
description: "Python 代码审查工具"
检查关键词匹配
用户输入是否包含 description 中的关键词?尝试使用描述中的词汇重新表达需求:
用户尝试:帮我看看这段代码
修改为:请审查这段代码
用户尝试:修一下这个
修改为:检查这个 Python 文件的问题
显式调用
如果 Skill 未自动触发,可以使用显式调用方式:
/skill-name
# 或
$skill-name
检查目录位置
确认 Skill 位于正确的目录:
# Claude Code
.claude/skills/my-skill/SKILL.md
# OpenAI Codex
.codex/skills/my-skill/SKILL.md
# 跨客户端共享
.agents/skills/my-skill/SKILL.md
检查 disable-model-invocation
如果 Skill 设置了 disable-model-invocation: true,它不会自动触发:
---
name: "deploy"
description: "部署到生产环境"
disable-model-invocation: true # 禁止自动触发
---
这种 Skill 只能通过显式调用(/deploy)使用。
Skill 触发过于频繁
Skill 在不应该触发的时候被激活。
使 description 更具体
# 太宽泛
description: "处理代码相关的问题"
# 更具体
description: "审查 Python 代码质量。仅当用户明确请求代码审查时触发,不适用于代码编写或调试场景。"
添加排除条件
description: "审查 Python 代码质量。当用户请求代码审查时触发。注意:不适用于代码编写、调试或解释场景。"
使用 disable-model-invocation
如果只想手动调用,禁用自动触发:
---
name: "deploy"
disable-model-invocation: true
---
输出不符合预期
Skill 触发了但输出质量不佳。
检查指令清晰度
指令是否足够具体?添加更多细节:
# 不够具体
## 输出格式
输出审查结果。
# 更具体
## 输出格式
### 审查摘要
- 文件:[文件名]
- 问题总数:[数量]
### 严重问题
| 行号 | 问题 | 建议 |
|------|------|------|
### 总体评价
评分:x/10
添加示例
提供输出示例比抽象描述更有效:
## 输出示例
### 审查摘要
- 文件:user_service.py
- 问题总数:3
### 严重问题
| 行号 | 问题 | 建议 |
|------|------|------|
| 15 | 未处理 None | 添加检查 |
添加检查清单
使用检查清单确保不遗漏:
## 检查清单
- [ ] 命名规范
- [ ] 类型注解
- [ ] 文档字符串
- [ ] 错误处理
验证失败
使用 skills-ref validate 时报告错误。
常见错误及解决方案
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
Missing required field: name | 缺少 name 字段 | 添加 name: "skill-name" |
Missing required field: description | 缺少 description 字段 | 添加 description |
Invalid name format | name 包含非法字符 | 只使用小写字母、数字、连字符 |
Name does not match directory | name 与目录名不一致 | 修改 name 或重命名目录 |
Description exceeds 1024 characters | description 太长 | 缩短到 1024 字符内 |
Description is empty | description 为空 | 添加有意义的描述 |
Invalid YAML syntax | YAML 格式错误 | 检查缩进、引号、特殊字符 |
YAML 格式问题
常见 YAML 格式错误:
# 错误:未引用包含冒号的值
description: 处理 API: 连接问题
# 正确:使用引号
description: "处理 API: 连接问题"
# 错误:缩进不一致
metadata:
author: name
version: 1.0 # 缩进多了一个空格
# 正确:保持一致缩进
metadata:
author: name
version: 1.0
Skill 看不到/未加载
安装的 Skill 没有出现在可用列表中。
检查文件名
确保文件名正确:
✅ 正确
my-skill/SKILL.md # 大写 SKILL.md
❌ 错误
my-skill/skill.md # 小写
my-skill/SKILLS.md # 多了 S
检查目录结构
✅ 正确结构
.claude/skills/
└── my-skill/
└── SKILL.md
❌ 错误结构
.claude/skills/
└── my-skill.md # 直接是文件,没有目录
检查信任设置
某些工具要求将项目标记为受信任才加载项目级 Skills:
# 在 VS Code 中
# 点击"信任此文件夹"或修改设置
检查 Skills 数量限制
如果 Skills 太多,可能超出字符预算:
# Claude Code 查看上下文
/context
# 如果看到警告,考虑:
# 1. 减少不常用的 Skills
# 2. 设置环境变量调整限制
export SLASH_COMMAND_TOOL_CHAR_BUDGET=32000
资源文件加载问题
引用的脚本或参考文件无法加载。
检查路径
使用相对于 Skill 根目录的相对路径:
# 正确
执行 `scripts/analyze.py`
参考 `references/api-docs.md`
# 错误(绝对路径)
执行 `/Users/name/.claude/skills/my-skill/scripts/analyze.py`
检查文件存在
# 确认文件存在
ls .claude/skills/my-skill/scripts/
检查权限
脚本需要执行权限:
# 添加执行权限
chmod +x scripts/analyze.py
性能问题
Skill 执行缓慢或消耗过多资源。
优化 SKILL.md 大小
保持 SKILL.md 简洁:
- 建议 < 500 行
- 建议 < 5000 tokens
- 详细内容移到
references/
使用渐进式披露
# SKILL.md - 只包含核心指令
## 错误处理
如果遇到 API 错误,查阅 `references/error-codes.md`
# references/error-codes.md - 详细错误码表
# 只在需要时加载
减少重复加载
避免在每次对话中都重新加载 Skill:
- 某些工具支持去重激活
- 检查是否已激活再加载
多工具兼容问题
同一个 Skill 在不同工具中表现不一致。
使用标准格式
遵循 Agent Skills 开放标准,避免使用特定工具的专有功能:
# 标准字段(跨工具兼容)
---
name: "skill-name"
description: "描述"
---
# 特定工具字段(可能不兼容)
---
name: "skill-name"
description: "描述"
argument-hint: "[file]" # Claude Code 特有
allowed-tools: "read_file" # 部分工具支持
---
测试多个工具
在不同工具中测试 Skill:
# 复制到 Claude Code
cp -r my-skill .claude/skills/
# 复制到 OpenAI Codex
cp -r my-skill .codex/skills/
# 复制到跨客户端共享目录
cp -r my-skill .agents/skills/
检查目录位置
不同工具使用不同的目录:
| 工具 | 项目级目录 |
|---|---|
| Claude Code | .claude/skills/ |
| OpenAI Codex | .codex/skills/ |
| 跨客户端 | .agents/skills/ |
调试技巧
查看加载的 Skills
# Claude Code
# 在对话中询问
"列出所有可用的 skills"
# 或使用命令
/skills
检查 Skill 内容
# 直接查看 SKILL.md 内容
cat .claude/skills/my-skill/SKILL.md
分步测试
- 最小测试:创建只包含 name 和 description 的 Skill
- 逐步添加:一次添加一部分指令,测试效果
- 隔离问题:确定是触发问题还是执行问题
使用验证工具
# 验证单个 Skill
npx skills-ref validate ./my-skill
# 验证所有 Skills
npx skills-ref validate .claude/skills/*/
获取帮助
官方资源
社区资源
- Anthropic Skills 示例
- 搜索
agent-skills或claude-skills标签
小结
常见问题解决思路:
- 不触发 → 检查 description、关键词、目录位置
- 触发过多 → 使 description 更具体、添加排除条件
- 输出不佳 → 添加具体指令、示例、检查清单
- 验证失败 → 检查 YAML 格式、name 规范
- 看不到 Skill → 检查文件名、目录结构、信任设置
- 资源问题 → 检查路径、权限、文件存在
- 性能问题 → 优化大小、使用渐进式披露
- 兼容问题 → 使用标准格式、多工具测试