Skill 写好后,常常会遇到"没有触发"、"执行出错"、"输出不对"等问题。
本篇介绍排查这些问题的基本思路和方法。
调试的三类常见问题
调试问题一:Skill 未触发
这是最常见的问题,排查步骤如下:
第一步:确认 Skill 文件被正确加载
实例
-rw-r--r-- 1 user user 842 May 18 10:00 SKILL.md
第二步:检查 YAML frontmatter 格式
frontmatter 格式错误会导致 Skill 无法被识别。
--- name: my-skill description: 这是一个示例 Skill,处理用户上传的文本文件。 --- # My Skill ...
frontmatter 必须以 --- 开始和结束,name 和 description 字段名不能有多余空格,冒号后必须有一个空格。
---
name
description
第三步:使用更复杂的测试提示词
简单任务(如"读取这个文件")可能不会触发 Skill。
将测试提示词改为多步骤、有明确输出格式要求的复杂请求。
调试问题二:脚本执行错误
脚本出错时,错误信息会出现在命令行输出中。
在 Claude 会话里,可以直接让 Claude 运行脚本并查看输出:
常见错误类型与修复方法
快速语法检查
语法正确
调试问题三:输出结果不符合预期
这类问题通常源于 SKILL.md 中的指令不够清晰,或者存在歧义。
排查方法:逐步缩小范围
在 SKILL.md 中临时添加调试输出指令,观察 Claude 每一步的理解:
## 调试模式(开发时使用,发布前删除) 执行前,先输出以下信息供确认: 1. 识别到的输入文件路径 2. 用户期望的输出格式 3. 计划执行的步骤列表 等待用户确认后再继续执行。
常见的指令歧义问题
使用 print 进行脚本内调试
在脚本关键节点添加打印语句,是排查执行流程问题最直接的方式。
[DEBUG] 开始处理文件:/mnt/user-data/uploads/sample.txt [DEBUG] 文件读取成功,大小:1024 字节 [DEBUG] 总行数:32 [DEBUG] 处理后有效行数:28 --- 处理结果 --- 第一行内容 第二行内容 ...
调试完成后,记得删除 [DEBUG] 开头的 print 语句,避免正式输出中混入调试信息。
[DEBUG]