技能不该绑死在某个项目里
用 Claude Code 这类 Agent 久了,你会攒下一些“怎么把事情做对”的经验:操作 Supabase 时先查 changelog、写 Postgres 迁移时的安全清单、提交前怎么跑测试……这些经验如果只活在你的记忆和聊天记录里,换个项目就得重新交代一遍。
Agent Skills 就是用来沉淀这类经验的。一个 Skill 本质上是一个目录,核心是一份 SKILL.md:
frontmatter 里只有两样东西最关键:name 和 description。Agent 在决定“这次任务要不要加载这个技能”时,读的就是 description。所以 description 要写清楚触发条件(Triggers),而不是泛泛地说“和 Supabase 有关”。
description 是技能被检索到的唯一入口。写得越具体、触发词越全,Agent 越能在对的时机想起它;写得太笼统,它就只是躺在目录里。
渐进式披露:别让上下文一次性爆掉
一个成熟的技能往往不止一份 SKILL.md。以本站用的 supabase 技能为例:
这里有个容易被忽略的设计:SKILL.md 是入口,但它不需要把所有细节都塞进去。它更像一份目录,告诉 Agent“详细规则在 references/ 里,模板在 assets/ 里,需要时再去读”。
这对吗?对。Agent 的上下文窗口是有限的,一上来就灌进几千行规则,既浪费 token 又稀释注意力。让技能按需展开——先读入口,命中相关任务再加载子文档——才是可持续的做法。
复用的关键:一份源,多处链接
技能要“可复用”,核心问题是:同一份技能,怎么同时被不同的工具、不同的项目用上?
不同 Agent 工具约定的技能目录不一样。Claude Code 读 .claude/skills/,更通用的约定是 。如果每个目录都塞一份拷贝,维护就成了灾难——改一处规则要同步好几份。

Comments