
1. 从“skills”这个标题说起它到底指什么第一次看到“skills”这个标题很多人会以为是某个泛泛而谈的能力清单或者一份简历上的技能罗列。但结合热搜词里的 Agent Skills、Google Cloud、npx、GKE、claude agent skills、codex skills 这些词来看这里的 skills 显然不是指人类的能力而是指给 AI Agent 使用的技能包——一种可安装、可复用、可组合的能力模块。简单说Agent Skills 就是一套约定好的目录结构和描述文件让 AI 助手在特定任务场景下能够加载对应的指令、脚本和资源从而完成它原本做不好或者做不了的事情。你可以把它理解成给 AI 装“插件”装一个“写论文”的 skill它就懂得按学术规范组织内容装一个“分镜”的 skill它就能按镜头语言拆解脚本装一个“自动挖洞”的 skill它就能按安全测试的流程去排查问题。这个内容适合谁来参考三类人最需要一是正在用 Claude、Codex 这类 AI 编程助手的开发者想让助手更懂自己的项目规范二是做 AI 应用集成的工程师需要把 Agent 能力封装成可分发模块三是对 AI 工作流感兴趣的产品和运营同学想搞清楚“技能包”这种形态到底怎么落地。不管你是哪一类下面我会从设计思路、目录结构、实操安装、常见报错到进阶开发一层层拆开讲。2. Agent Skills 的整体设计与思路拆解2.1 为什么是“技能包”而不是“提示词”早期大家用 AI 助手习惯把要求写在一段长长的提示词里比如“你是一个资深前端请按以下规范写代码……”。这种做法的问题很明显提示词越写越长维护成本高换个项目就得重写而且没法版本化管理。Agent Skills 的思路是把“能力”从“对话”里抽出来变成一个独立的、有目录结构的实体。一个 skill 通常包含一个描述文件说明这个技能叫什么、什么时候用、怎么用、若干指令文档、可选的脚本和资源文件。AI 助手在运行时根据当前任务去匹配并加载对应的 skill而不是把所有知识都塞进上下文。这样做的好处有三个。第一是可复用同一个 skill 可以在不同项目、不同会话里反复调用。第二是可组合一个复杂任务可以拆成多个 skill 串联执行比如先“需求分析”再“代码生成”再“测试用例”。第三是可维护skill 本身是文件能进 Git、能 review、能发版本跟管理代码库是一个逻辑。2.2 核心目录结构长什么样虽然不同平台对 skill 的具体约定略有差异但主流做法高度一致。一个典型的 skill 目录大致是这样my-skill/ ├── SKILL.md # 核心描述文件定义名称、触发条件、使用说明 ├── scripts/ # 可执行脚本比如 Python、Shell ├── resources/ # 参考文档、模板、示例数据 └── README.md # 给人看的说明其中SKILL.md是最关键的。它一般包含 frontmatter 元信息名称、描述、适用场景和正文指令。AI 助手读取这个文件后就知道“这个技能是干什么的、什么时候该用、用了之后按什么步骤执行”。注意SKILL.md 里的描述要写得像“给同事交代任务”而不是像“写产品文档”。越具体、越有场景感AI 匹配得越准。2.3 和 MCP、npx 的关系热搜里出现了 claude mcpservers npx、npx playwright install 失败这些词说明很多人把 skills 和 MCP、npx 混在一起理解。这里需要理清MCP是一种协议解决的是 AI 助手如何连接外部工具和数据源的问题偏“通道”层面。Skills更偏“知识和流程”层面解决的是 AI 在特定任务里该怎么做的问题。npx是 Node.js 生态里的包执行工具很多 skill 的安装和分发会借助 npx 来完成比如通过 npx 拉取某个 skill 包并注册到本地。三者不是替代关系而是配合关系。一个完整的 Agent 工作流可能是 MCP 负责连数据库skill 负责告诉 AI 怎么分析数据npx 负责把 skill 装进来。3. 核心细节解析与实操要点3.1 SKILL.md 的写法要点写 SKILL.md 最容易犯的错是把它写成一份“能力介绍”。AI 不需要你告诉它“这个技能很强大”它需要的是明确的触发条件和执行步骤。一个好的 SKILL.md 通常包含这几块name技能名称短而明确比如frontend-review、paper-writer。description一句话说明这个技能解决什么问题以及什么时候该触发它。when_to_use具体场景描述越贴近真实任务越好。instructions分步骤的执行指令可以包含检查清单、输出格式要求。examples输入输出示例帮助 AI 理解预期结果。我实测下来description和when_to_use这两个字段对触发准确率影响最大。如果写得太泛比如“用于前端开发”AI 几乎不会主动调用如果写成“当用户要求审查 React 组件的可访问性问题时使用”命中率会高很多。3.2 脚本和资源的组织方式skill 里的脚本不是必须的但一旦涉及确定性操作比如格式化、校验、调用外部命令脚本就很有价值。因为 AI 生成的内容有随机性而脚本执行是确定的。举个例子一个“代码规范检查”skill可以把 ESLint 的调用封装成脚本AI 只负责决定“什么时候跑”具体检查交给脚本。这样既保证了结果稳定又减少了 AI 的推理负担。资源文件则适合放模板、参考文档、示例数据。比如“写论文”skill 里放一份期刊格式模板“分镜”skill 里放一套镜头术语表。AI 在需要时会读取这些文件而不是靠记忆瞎编。提示脚本尽量用跨平台的方式写避免依赖特定 shell。Python 脚本比 Shell 脚本在 Windows 上更省心。3.3 安装路径与加载机制不同工具对 skill 的存放位置要求不同。常见做法是放在用户目录下的隐藏文件夹里比如~/.claude/skills/或项目根目录的.skills/。项目级的 skill 优先级通常高于全局 skill这样团队可以共享一套项目规范。加载机制上AI 助手一般会在会话开始时扫描 skill 目录读取每个 SKILL.md 的元信息建立一个“技能索引”。当用户提问时助手根据索引匹配最相关的 skill再把完整指令加载进上下文。这里有个细节索引阶段只读元信息不读全文。所以 SKILL.md 的元信息必须自包含不能写“详见正文第三节”这种话否则匹配阶段根本看不到。4. 实操过程与核心环节实现4.1 从零创建一个最小可用 skill下面以创建一个“前端代码审查”skill 为例走一遍完整流程。第一步建目录mkdir -p ~/.claude/skills/frontend-review cd ~/.claude/skills/frontend-review第二步写 SKILL.md--- name: frontend-review description: 审查前端代码的可访问性、性能和规范问题 when_to_use: 当用户提交 React/Vue 组件代码并要求审查时 --- ## 执行步骤 1. 检查语义化标签使用情况列出所有 div 滥用点。 2. 检查图片是否有 alt 属性表单是否有 label 关联。 3. 检查是否存在不必要的重渲染风险比如内联对象作为 props。 4. 按严重程度输出问题列表每条包含文件位置、问题描述、修复建议。第三步可选地加一个脚本scripts/check.sh封装 ESLint 调用。第四步重启 AI 助手或触发重新扫描让 skill 被索引。这套流程走下来一个最小 skill 就完成了。关键不在于文件多而在于描述准确、步骤清晰。4.2 用 npx 分发和安装 skill很多社区 skill 通过 npm 包的形式分发安装时用 npx 拉取。典型命令形态是npx some-skill-installer install frontend-review但热搜里出现了 npx playwright install 失败说明这类安装经常卡在依赖环节。常见原因有三个网络问题导致包下载中断、Node 版本不兼容、系统缺少浏览器依赖库。排查顺序建议是先确认 Node 版本符合要求再检查网络是否能访问包源最后看系统依赖是否齐全。如果是 Playwright 相关的 skill还需要额外安装浏览器二进制这一步在 Linux 服务器上尤其容易失败通常需要补装系统库。注意在 GKE 这类容器环境里跑 skill 安装要把依赖安装写进镜像构建阶段而不是运行时临时装否则每次启动都要重新下载既慢又不稳定。4.3 在 Google Cloud 和 GKE 上的部署思路如果要把带 skill 的 Agent 部署到云端Google Cloud 是常见选择。整体思路是把 skill 目录打进容器镜像Agent 运行时从固定路径加载。具体步骤大致是在项目里维护skills/目录跟代码一起进 Git。写 Dockerfile把 skills 复制到镜像内的约定路径。构建镜像并推送到 Artifact Registry。在 GKE 上部署通过 ConfigMap 或镜像层管理 skill 版本。这样做的好处是 skill 和 Agent 版本绑定回滚方便。坏处是每次改 skill 都要重新构建镜像。如果 skill 更新频繁可以考虑把 skill 放在持久化存储里运行时挂载但这样就要自己处理版本一致性。方案优点缺点适用场景打进镜像版本一致、回滚简单更新需重新构建skill 稳定、发布节奏慢挂载存储更新灵活版本管理复杂skill 频繁迭代运行时拉取最灵活依赖网络、启动慢实验性场景5. 常见问题与排查技巧实录5.1 skill 不触发怎么办这是最高频的问题。AI 助手明明装了 skill但提问时就是不调用。排查思路按优先级来第一检查 SKILL.md 的元信息是否被正确读取。可以手动问助手“你有哪些 skill”看列表里有没有。第二检查 description 和 when_to_use 是否太泛。把“用于代码审查”改成“当用户粘贴 React 组件代码并询问质量时使用”触发率会明显提升。第三检查是否有同名 skill 冲突。多个 skill 描述相近时助手可能选错。解决方法是让每个 skill 的适用场景尽量不重叠。第四检查 skill 目录层级是否正确。有些工具要求 skill 必须直接放在 skills 目录下不能多套一层。5.2 安装报错速查表报错现象可能原因解决方向npx 命令找不到Node 未安装或版本过低安装 LTS 版本 Node包下载超时网络不稳定或源不可达切换包源、重试浏览器依赖缺失系统库不全补装系统依赖权限拒绝目录无写权限检查目录权限或换路径skill 加载但无效SKILL.md 格式错误检查 frontmatter 语法5.3 几个踩过的坑第一个坑是把 skill 写成大杂烩。有人一个 skill 里塞了代码审查、文档生成、测试编写三件事结果 AI 匹配时很困惑。正确做法是一个 skill 只干一件事复杂流程用多个 skill 组合。第二个坑是忽略脚本的幂等性。skill 里的脚本如果每次执行都产生副作用比如重复写文件、重复发请求多次调用就会出问题。脚本要设计成可重复执行。第三个坑是在 SKILL.md 里写死路径。不同机器目录结构不同写死路径会导致 skill 换环境就失效。用相对路径或环境变量更稳。第四个坑是不写示例。AI 对示例的敏感度远高于抽象描述。一个输入输出示例胜过三段文字说明。6. 进阶skill 开发与生态观察6.1 从使用者到开发者当你用熟了别人的 skill自然会想写自己的。开发 skill 的核心能力不是编程而是把隐性知识显性化。你脑子里“审查代码时该看什么”的直觉要拆成一条条可执行的检查项。我的经验是先别急着写 SKILL.md而是拿一个真实任务自己完整做一遍边做边记录每一步在检查什么、判断标准是什么。记录完再整理成指令准确率会高很多。6.2 skill 推荐与选择思路社区里的 skill 越来越多怎么挑我的标准是三条描述是否具体、是否有示例、是否最近更新过。描述具体说明作者想清楚了场景有示例说明可验证最近更新说明还在维护。至于“skills 大全”“skills 下载平台”这类聚合站点可以逛但别贪多。装十个用不上的 skill不如装两个天天用的。skill 多了还会互相干扰匹配。6.3 这个方向后续能怎么扩展skill 目前主要解决“单次任务怎么做”的问题。往深了走可以做成技能链一个 skill 的输出作为下一个 skill 的输入形成自动化流水线。再往深了走可以结合评估机制让 AI 自己判断该用哪个 skill、用得对不对。另一个方向是团队共享。把团队的项目规范、代码风格、审查清单都做成 skill新人入职装一套AI 助手立刻懂规矩。这比写文档有效得多因为文档没人看skill 是 AI 在用。我个人在实际操作中的体会是skill 的价值不在于技术多复杂而在于它逼着你把“怎么做才对”这件事想清楚。写 skill 的过程其实是在梳理自己的方法论。最后分享一个小技巧每次 AI 用 skill 出了偏差别急着改指令先问自己“我是不是没把判断标准写清楚”。十有八九问题出在描述而不是 AI。