作为一名重度 Claude Code 用户,我相信大家都有过这种既视感:每次开一个新项目,Claude 就像个刚入职的实习生,一脸懵懂。

Claude Code 进阶:用 Skills 重构 AI 工作流

你得一遍遍告诉它:我们用的是这种 Coding Style、部署流程是这样的、API 鉴权要走这个逻辑……讲一次还好,讲十次真的心态崩。

之前的解决方案通常是 CLAUDE.md。把规则写进去,启动即加载。但随着项目变大,这个文件越来越臃肿。我之前遇到过因为 CLAUDE.md 塞了太多 Prompt,导致 Claude 启动变慢,甚至因为它预加载了所有内容,不仅浪费了宝贵的 Context Window,还导致模型注意力分散,回答质量下降。

最近 Anthropic 推出的 Skills 功能,终于优雅地解决了这个问题。这两天我把手头的 workflow 迁移了一下,发现这不仅仅是一个功能,而是一种更符合工程直觉的 AI 知识模块化架构。

今天以此文复盘一下我的实战经验和理解。

Claude Code 进阶:用 Skills 重构 AI 工作流

核心架构:Progressive Disclosure

这可能是 Skills 设计最性感的地方。

以前的 CLAUDE.md 是全量加载,不管你问什么,所有规则一股脑塞进 Context。而 Skills 采用了一种分层加载机制,官方称之为 Progressive Disclosure。

根据我的观察和官方文档,它其实把 Context 分成了三层:

L1 Metadata (元数据层):启动时只加载 Skills 的 name 和 description。这层非常轻量(约 100 tokens)。Claude 仅凭这层信息来路由:这个问题需不需要调用某个 Skill?

L2 Instructions (指令层):当 Claude 判定命中某个 Skill 后,才会加载该 Skill 下 SKILL.md 的主体内容(建议控制在 5000 tokens 以内)。

L3 Resources (资源层):如果 SKILL.md 引用了脚本或参考文档,这些文件是 On-Demand (按需) 读取的。

这种架构意味着:理论上你可以给 Claude 挂载无限的知识库,只要你的 Description 写得够准,它就只在需要的时候调取记忆,完全不占闲置 Context。这对于咱们这种对 Token 效率有洁癖的开发者来说,简直是福音。

实战:手搓一个 Skill 的工程结构

一个标准的 Skill 其实就是一个独立的目录包。结构非常像我们在写 Node.js 模块或者 Ansible Role。

你需要创建一个文件夹(例如 my-skill),在这个文件夹下必须包含一个 SKILL.md 文件作为核心入口。此外,你还可以根据需要创建 scripts 目录存放 Python 或 Bash 脚本,references 目录存放文档规范,以及 assets 目录存放静态资源模板。

Claude Code 进阶:用 Skills 重构 AI 工作流

关键点在于 SKILL.md 的 Frontmatter 配置。我踩过坑,这里有严格的格式要求。

文件开头的 YAML 部分必须包含 name 和 description 两个字段。name 字段只能包含小写字母、数字和连字符,并且必须与目录名称完全一致。

description 字段的写法至关重要。它不是写给你看的,是写给 LLM 的 Router 看的。你得明确描述 Trigger Condition (触发条件),比如当用户要求提交代码时……,这样 Claude 才能精准命中。

Claude Code 进阶:用 Skills 重构 AI 工作流

Skills, MCP, Custom Commands 怎么选?

这是最容易混淆的部分。既然都有 MCP (Model Context Protocol) 了,为啥还要 Skills?以下是我的理解模型:

Custom Commands (斜线命令) 本质是宏 (Macro) 或静态 Prompt。适合你明确知道现在要干嘛的场景,比如 Lint 检查或代码重构。它不会自动触发,定位属于手动挡工具。

MCP (Model Context Protocol) 本质是 IO 接口或手脚。场景是连接外部世界,比如读数据库、调 GitHub API、查天气。定位属于 AI 的感官和肢体。

Skills 本质是程序性知识或脑回路。适合复杂的思维链或工作流,比如如何进行一次符合团队规范的 Code Review。它由 AI 根据上下文自动决策是否启用,定位属于 AI 的专业技能包。

结论:不要觉得 Skills 会取代 MCP。它们是互补的。举个例子:你写了一个 Deploy Skill (大脑),告诉 Claude 部署流程分几步;而在执行过程中,Claude 会调用 AWS MCP (手脚) 去实际操作服务器。

个人经验总结

目前的 Claude Code 就像一个通用型人才,什么都懂一点但都不精。Skills 的本质,就是让我们把领域专家的 Know-how 封装成一个个 Docker 容器般的独立包。

我现在已经把团队的 PR Review 标准、单元测试规范、特定库的写法全部拆成了独立的 Skills。