Skill 跨 agent 会静默失效
一、静默失效的根因:frontmatter 不兼容
同一个 SKILL.md 在不同 agent 里的解析规则不同。写入了某家专属字段(如 tools / argument-hint / user-invocable),别的 agent 解析 frontmatter 失败,处理方式是整个跳过该 skill,而不是忽略未知字段、降级加载。
排查顺序(先证伪再改):
- 确认文件/软链确实在目标 agent 的 skills 目录下;
- 对比同目录下能正常加载的 skill(如
grill-me)的 frontmatter —— 差异字段就是嫌疑; - 删掉非通用字段,重启 agent 再看
available_skills。
二、第二个坑:skill 内部路径写死到某个 agent 的目录
SKILL.md 里 SCRIPT=~/.claude/skills/<x>/scripts/... 这种绝对路径,一旦 skill 被分发到别的 agent 目录,路径就断了 —— 即使加载成功也跑不起来。
规则:skill 要共享,内部引用就必须相对自身目录(或由运行时注入),不能硬编码到某一个 agent 的配置目录。
三、为什么会同时踩两个坑:集中分发放大了兼容性
技能由 skillhub 集中管理(~/.skillshub/ 是仓库,各 agent 的 skills 目录里放软链指向它),一份技能同时挂在多个 agent 下。
好处是改一处全体生效;代价是任何一处兼容性问题会被复制到所有 agent,而且第一个暴露它的往往是「平时不用的那个 agent」。所以新增/迁移 skill 时,要在每个接入的 agent 里各验证一次加载,而不是只测写它的那家。
相关
- 多账号模型路由机制(同为「配置层错位导致静默失效」)
- 上下文按信任等级分层(skill 的定位:教为什么,不规定每一步)