Content
Claude Code 中的一种插件机制。本质上是一个包含 SKILL.md 文件的文件夹,里面写着特定任务的最佳实践和指令。Claude Code 在执行任务前会先读取相关 Skill 的说明,相当于给 AI 一份”操作手册”。
个人见解觉得它能让 Agent 尽可能稳定地干好一件事情。因为其在遇见符合技能描述场景时才被调用的特性,也能节省上下文的使用。
两个平台的 Skill
| Claude Code | OpenClaw | |
|---|---|---|
| 位置 | ~/.claude/skills/ 或项目内 skills/ | workspace 内 skills/ |
| 格式 | SKILL.md(frontmatter: name, description) | 同左 |
| 触发 | Claude Code 根据 description 自动匹配,或用 /skill-name 手动调用 | agent 在对话中根据 description 匹配,或 cron prompt 中显式引用 |
| 作用域 | ~/.claude/skills/ = 全局(所有项目),项目内 = 仅当前项目 | workspace 内 = 该 agent 专属 |
设计要点
description 是核心 — 它决定了 skill 何时被触发。好的 description 像搜索引擎的关键词,要覆盖用户可能说的各种表达方式。
Skill vs CLAUDE.md — CLAUDE.md 是”始终加载”的全局指令,Skill 是”按需加载”的专项指令。把所有东西塞进 CLAUDE.md 会浪费上下文窗口。
Skill 可以引用脚本 — Skill 不只是文字说明,可以指导 agent 调用具体的脚本(如 add.ts 记账脚本),实现”指令 + 工具”的组合。
实际案例(Ghost-in-the-Shell)
| Skill | 用途 | 特点 |
|---|---|---|
bookkeeping | 记账 | 指导 agent 调用 add.ts 脚本,而非手动编辑 .bean 文件 |
cron-manager | 管理定时任务 | 记录 schedules.json 结构、同步命令、踩坑记录 |
doctor | 健康检查 | 两阶段:Phase 1 跑脚本测试,Phase 2 LLM 语义分析 |
knowledge-distiller | 知识蒸馏 | 从对话中提炼 SlipBox 卡片草稿 |
hat:distill | 知识蒸馏(Claude Code 版) | 在 ~/.claude/skills/ 中,支持前置依赖检查和已有卡片编辑 |
Question
- Skill 的 description 匹配是精确匹配还是语义匹配?如果两个 skill 的 description 有交集会怎样?
- 有没有办法测试一个 skill 的触发准确率?(提示:superpowers 的 skill-creator 有 eval 功能)
- Skill 之间能否互相引用(A 的流程中调用 B)?
See Also
MCP
Claude Code
Hook
Agent
OpenClaw
Reference
- Extend Claude with skills - Claude Code Docs
- 来源:2026-03-20 创建 hat:distill skill,将知识蒸馏从瑶瑶的能力移植到 Claude Code
Answer
Q: description 匹配是精确还是语义?交集怎么办?
语义匹配。Claude Code 用 LLM 判断用户意图和 description 的相关性,不是关键词精确匹配。两个 skill 的 description 有交集时,LLM 会选它认为最相关的那个。如果不确定,可能两个都不触发。所以 description 要写得有区分度——避免两个 skill 用相似的触发词。
Q: 怎么测试触发准确率?
superpowers 的 skill-creator 插件有 eval 功能:给定一组测试用例(用户输入 + 期望触发的 skill),跑一遍看命中率。还能做 variance analysis 找出哪些输入容易误触发。
Q: Skill 之间能否互相引用?
可以。在 Skill A 的流程中写”调用 skill B”或”按 hat:distill 的格式写入”,LLM 会去加载并执行 B。实际案例:hat:task_complete 的 Step 2.5 调用 hat:distill 做知识蒸馏。不是硬编码的函数调用,是通过 prompt 指令实现的软引用。