Skill 开发入门:把“反复说的那段话”变成可复用的 AI 能力
【摘要】 Skill 开发入门:把“反复说的那段话”变成可复用的 AI 能力在今天的 AI Agent 生态里,Skill(技能)已经变成一种很常见的扩展方式。它不像 MCP 那样解决“模型怎么连外部系统”,也不像普通 Prompt 那样用完即弃;Skill 更像是一本“给 AI 看的操作手册”:把某类任务的流程、规范、脚本、模板打包成一个文件夹,让 Agent 在合适的时候自动照做。一句话:MCP ...
Skill 开发入门:把“反复说的那段话”变成可复用的 AI 能力
在今天的 AI Agent 生态里,Skill(技能)已经变成一种很常见的扩展方式。它不像 MCP 那样解决“模型怎么连外部系统”,也不像普通 Prompt 那样用完即弃;Skill 更像是一本“给 AI 看的操作手册”:把某类任务的流程、规范、脚本、模板打包成一个文件夹,让 Agent 在合适的时候自动照做。
一句话:MCP = 让 Agent 能连系统;Skill = 教 Agent 怎么把事做好。
一、Skill 到底是什么
一个 Skill 本质上是一个目录,最少只需要一个文件:
my-skill/
├── SKILL.md # 必需:元数据 + 工作流指令
├── scripts/ # 可选:Python / Bash / Node 脚本
├── references/ # 可选:规范文档、API 说明、知识库
└── assets/ # 可选:模板、图片、配置、样例数据
其中
SKILL.md 是灵魂,通常长这样:---
name: pr-review
description: 审查 Pull Request 的 bug、安全风险和代码风格。当用户要求 review 代码、diff 或 PR 时使用。
---
# PR Review
1. 先完整读取 diff,不要只看片段。
2. 按优先级反馈:正确性 > 安全 > 性能 > 风格。
3. 每条问题给出 `file:line` 和修复建议。
4. 最后输出:approve / request-changes + 一句话总结。
Agent 启动时不把全部 Skill 读进上下文,而是先看
name + description;任务匹配上了,再读 SKILL.md;真要跑代码或查资料时,才加载 scripts/、references/。这叫渐进式加载(Progressive Disclosure)。二、Skill 适合解决什么问题
适合写 Skill 的场景,通常有三个特征:
- 重复发生:每个月、每周、每次提交都在做
- 有固定套路:先干啥、再干啥、输出什么格式
- 人工总在补指令:你老是对 AI 说“别忘了加测试用例”“按我们团队规范来”
典型例子:
- 代码评审 / Commit 规范 / Changelog 生成
- PDF 抽取、合同校对、报表格式化
- 工单分类、PR 描述撰写、发布前检查
- 团队自有流程:上线 Checklist、安全自查、文案风格约束
不适合 Skill 的场景:
- 需要实时查数据库 → 用 MCP / 工具
- 纯一次性问题 → 直接聊天就行
- 逻辑太泛、什么都能干 → 说明还没想清楚边界
三、Skill 开发六步法
1. 找痛点:先有真实任务,再写 Skill
不要一上来就“我要做一个 Skill”。
先问自己:
最近我反复教 AI 做的那件事是什么?
比如:
- “每次 AI 写 PR 描述都太水”
- “每次处理合同都漏看违约责任条款”
- “每次生成接口文档都不符合公司 OpenAPI 规范”
好 Skill 来自真实纠偏记录。
2. 定边界:只做一件事
好 Skill 的原则就一条:
一个 Skill 只解决一类问题。
坏例子:
dev-assistant:
- 写代码
- 审 PR
- 发邮件
- 做周报
- 查数据库
好例子:
pr-description-writer
pdf-invoice-extractor
contract-risk-checker
release-checklist-runner
3. 写 SKILL.md:先写“何时触发”,再写“怎么做”
description 比正文还重要,因为 Agent 靠它决定是否调用。推荐写法:
description: >
从暂存区 git diff 生成 PR 标题和描述。
当用户说“写个 PR 描述 / draft a PR / 帮我把这次改动总结一下”时使用。
不要用于已合并分支、不要编造未出现的改动。
正文用命令式短句:
- 先读什么
- 再调什么命令
- 输出什么格式
- 禁止做什么
- 完成前检查什么
别把 SKILL.md 写成论文。500–2000 字通常够用;太长就拆到
references/。4. 把“不稳定步骤”写成脚本
如果某件事:
- 涉及精确计算
- 要解析 JSON / PDF / Excel
- 要调 Git、正则、日期、文件路径
- 说错一次就会出事故
那就别让模型“凭感觉做”,写成脚本:
scripts/
├── extract_diff.py
├── rank_review_comments.py
└── render_pr_body.py
SKILL.md 里写:
运行:
python scripts/extract_diff.py --staged
用它的输出来生成 PR 描述,不要自己伪造 diff 内容。
这样 Skill = 模型负责理解意图,脚本负责保底准确。
5. 放参考资料,而不是堆正文
大段规范放
references/:references/
├── pr-rules.md
├── api-style-guide.md
└── forbidden-patterns.md
SKILL.md 里只说:
如果需要判断代码风格是否合规,读取 references/pr-rules.md。
上下文更省,维护也更舒服。
6. 测试:别只“看着像对的”
最小测试集:
- 3 个应该触发的请求
- 3 个长得像但不该触发的请求
- 1 个边界 case(信息不足、权限不够、文件不存在)
例如 PR 描述 Skill:
|
输入
|
期望
|
|---|---|
|
“帮我把这次改动写个 PR”
|
触发
|
|
“总结一下牛顿第二定律”
|
不触发
|
|
“review 下这个 PR”
|
可能走 review skill,不写描述
|
|
diff 为空
|
明确说没有暂存改动
|
团队级 Skill 还可以做 A/B 测试:有 Skill vs 没 Skill,看输出是否更稳定。
四、一个完整小例子:PR 描述 Skill
pr-description-writer/
├── SKILL.md
├── scripts/
│ └── get_staged_diff.sh
└── references/
└── pr-style.md
SKILL.md:---
name: pr-description-writer
description: 根据 git 暂存区改动生成 PR 标题和描述。当用户要求写 PR 描述、draft PR、总结本次改动时使用。不要用于未暂存改动,不要编造 diff 中没有的内容。
---
# PR Description Writer
1. 运行 scripts/get_staged_diff.sh 获取暂存改动。
2. 如果没有暂存内容,停止并提示用户先 git add。
3. 按 references/pr-style.md 的格式输出:
- Title:祈使句,≤ 70 字符
- Summary
- Changes
- Testing
4. 只写 diff 里能验证到的内容。
5. 输出前检查:有没有编造文件?有没有漏掉破坏性改动?
get_staged_diff.sh:#!/usr/bin/env bash
git diff --staged
pr-style.md:# PR 风格规范
- 标题用祈使句:Add / Fix / Refactor / Remove
- 不写 “Updated code”
- Changes 按 功能 / 配置 / 测试 分组
- 若含 DB 变更,必须写 Migration 说明
五、Skill 的分发与安装
不同 Agent 路径不同,但 Skill 文件本身基本通用:
|
Agent
|
常见目录
|
|---|---|
|
Claude Code
|
~/.claude/skills/ 或 .claude/skills/ |
|
OpenAI Codex
|
~/.agents/skills/ 或 .agents/skills/ |
|
Gemini CLI
|
~/.gemini/skills/ |
|
仓库级共享
|
项目内
.agents/skills/ |
也可以:
- 用
npx skills add owner/repo --skill xxx安装 - 打成 Plugin 分发多个 Skill
- 在 ChatGPT / Codex / Copilot 等支持的平台里共享到工作区
⚠️ Skill 不是“文本”,而是“给 Agent 看的指令 + 可运行脚本”。装别人 Skill 前,要像装依赖一样看:SKILL.md、scripts、权限、网络访问、敏感信息。
六、好 Skill 的 8 条检查清单
- [ ] 名字和文件夹一致,用 kebab-case
- [ ] description 写清“做什么 + 什么时候用 + 不做什么”
- [ ] 只解决一类问题
- [ ] SKILL.md 短、具体、可执行
- [ ] 稳定逻辑进 scripts/
- [ ] 大段知识进 references/
- [ ] 有触发用例和负例
- [ ] 不索要多余权限
- [ ] 能进 Git、能版本化、能 review
七、Skill 与 MCP、Tool、Agent 的关系
Agent
├─ 决策:该不该做、先做哪步
├─ Tool / Function Calling:调一个函数
├─ MCP:连数据库、邮件、内部系统
└─ Skill:把“公司/团队/个人的干法”固化下来
最稳的组合是:
Skill 定流程,MCP 取实时数据,Tool 执行动作,Agent 做编排。
八、结语
Skill 开发并不神秘,它本质是:
把老员工脑子里的“经验”、团队文档里的“规范”、脚本里的“保底逻辑”,变成 Agent 能稳定执行的文件夹。
你不需要先成为 Agent 框架专家。
先从一个小东西开始:
“我这周第 3 次跟 AI 解释同一套流程了——那就把它写成 Skill。”
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)