摘要:本文系统讲解 Agent Skill 的核心概念、基础结构、五种设计模式及工程化开发流程,提供中英文对照的代码审查 Skill 模板,帮助读者从零掌握 Skill 编写与团队落地方法。
你是否遇到过这样的困境?
每次让 AI 帮助审查代码,都要重复说一遍"请检查安全性、可维护性、性能和代码风格"。每次让 AI 生成 API 文档,都要花时间解释文档的格式要求。每次让 AI 处理数据,都要叮嘱它不要修改原始数据、要保留处理日志。
这些重复的解释,本质上都是一次性 Prompt 的局限。
当我们把 AI 应用到真实工作中,会发现有些任务会反复出现,每次都要重新解释规则不仅耗时,还会导致输出不稳定——有时候 AI 审查得仔细,有时候又漏掉某些检查项。更糟糕的是,这些规则难以共享给团队成员,大家各自为战,风格不统一。
Agent Skill 正是为解决这些问题而生的。
Skill 不是单条 Prompt,而是一个可复用、可测试、可迭代的结构化能力包。它把任务相关的指令、流程、边界规则和输出标准封装在一起,让 AI 在需要时自动加载、按规范执行、产出稳定结果。
本文将带你从零理解 Skill 的核心概念,掌握编写高质量 Skill 的方法,并提供一个可直接复用的实战模板。读完本文,你将能够:
经过对多篇权威资料的分析,我们把 Agent Skill 定义为:
Skill 是一个可复用的、结构化的 Agent 行为包,用 SKILL.md 声明触发条件、执行流程、边界规则、输出标准,并可通过脚本、参考文档和资源文件增强确定性与复用性。
”
这个定义有几个关键点:
| 关键词 | 含义 |
|---|---|
| 可复用 | 一次编写,多次使用,不是每次都要重新解释 |
| 结构化 | 有固定格式、元数据、明确的组成部分 |
| 行为包 | 封装了"怎么做"的完整指导,而不仅仅是"做什么" |
| 可测试 | 可以设计测试用例验证其有效性 |
很多人容易把 Skill 和 Prompt 混为一谈,但它们有本质区别:
| 维度 | Prompt | Skill |
|---|---|---|
| 使用方式 | 一次性输入 | 可复用能力包 |
| 可维护性 | 低,容易散落在对话中 | 高,文件化管理 |
| 可测试性 | 弱,难以系统验证 | 可设计测试集 |
| 可共享性 | 复制粘贴,容易走样 | 目录/包/Git 版本化管理 |
| 可扩展性 | 有限 | 可接脚本、资源、参考文档 |
| 适合场景 | 临时任务 | 高频、复杂、团队化任务 |
举一个形象的例子:
Skill 的核心不是"写更好的提示词",而是围绕任务、工具、流程、资源和输出边界设计结构化行为单元。
这意味着一个好的 Skill 需要考虑:
一个 Skill 可以极其简单,只需要一个文件:
skill-name/
└── SKILL.md
SKILL.md 是 Skill 的核心入口,包含所有必要的指令和元数据。
对于更复杂的 Skill,常见的完整结构是:
skill-name/
├── SKILL.md # 必需:YAML frontmatter + Markdown 指令
├── sc ripts/ # 可选:可执行脚本(Python、Shell、Node 等)
├── references/ # 可选:按需加载的参考文档
└── assets/ # 可选:模板、资源文件
各部分的职责分工:
| 目录/文件 | 作用 | 适合放什么 |
|---|---|---|
| SKILL.md | Skill 的入口和主要指令 | 元数据、触发说明、执行步骤、输出格式、边界条件 |
| sc ripts/ | 确定性执行逻辑 | 验证器、转换器、自动化检查脚本 |
| references/ | 详细知识,不默认塞入上下文 | API 文档、规范、长清单、领域规则 |
| assets/ | 资源文件 | 模板、图片、配置样例、样式文件 |
SKILL.md 由两部分组成:
基础格式:
---
name: my-skill
desc ription: Use this skill when the user needs to do something...
---
# My Skill
## Purpose
This skill helps the agent achieve X.
## Steps
1. First step...
2. Second step...
| 字段 | 是否必填 | 作用 | 关键要求 |
|---|---|---|---|
| name | 是 | Skill 唯一标识 | 小写字母、数字、短横线;通常与目录名一致 |
| desc ription | 是 | 让模型判断什么时候用这个 Skill | 要写"做什么"和"何时用" |
| license | 否 | 许可证信息 | 如 MIT、Apache 2.0 |
| compatibility | 否 | 运行环境或依赖说明 | 平台相关信息 |
| me tadata | 否 | 作者、版本、分类、标签 | 便于治理和检索 |
好例子:
name: pdf-processingname: code-reviewname: data-analysisname: api-design-check坏例子:
name: PDF-Processing # 不要大写name: -pdf # 不要以短横线开头name: pdf--processing # 不要连续短横线name: my cool skill # 不要空格Skill 的触发不是靠硬编码关键词,而是让模型根据 desc ription 判断任务是否匹配。
这意味着:
desc ription 写得好不好,直接决定 Skill 能否被正确触发。
一个有效的 desc ription 应该包含:
好例子:
desc ription: |
Analyze CSV, TSV, Excel, and tabular data files. Use this skill when the
user wants to clean, summarize, transform, compare, visualize, or derive
insights from structured data, even if they do not explicitly say "data analysis".
Do not use for real-time streaming data or binary file formats.
坏例子:
desc ription: Helps with data.
| 原则 | 说明 |
|---|---|
| 使用用户会说的话 | 而不仅仅是内部术语 |
| 说明任务意图 | 而不是复述内部步骤 |
| 包含触发词但不要堆砌 | 适度覆盖,过多反而降低准确性 |
| 加上"不适用场景" | 对容易误触发的 Skill 尤为重要 |
数据分析类:
desc ription: |
Analyze CSV, TSV, Excel, and tabular data files. Use when the user wants
to clean, summarize, transform, compare, visualize, or derive insights
from structured data, even if they do not explicitly say "data analysis".
代码审查类:
desc ription: |
Review code changes, pull requests, diffs, or snippets for correctness,
security, maintainability, performance, and style. Use when the user asks
to review, check, audit, inspect, or give feedback on code.
API 规范类:
desc ription: |
Enforce API development standards when adding, modifying, or deleting API
endpoints. Use when the user mentions OpenAPI, endpoint changes, backward
compatibility, API documentation, contract tests, or unit test generation.
如果我们把所有 Skill 的完整内容都塞进 AI 的上下文,会发生什么?
Skill 的核心机制是渐进式加载(Progressive Disclosure),只在需要时加载对应层级的内容:
| 层级 | 加载内容 | 加载时机 | 价值 |
|---|---|---|---|
| L1 目录层 | name + desc ription | 会话开始或系统扫描时 | 让模型知道有哪些 Skill 可用 |
| L2 指令层 | 完整 SKILL.md body | 模型判断需要使用该 Skill 时 | 获得具体流程、边界和输出规则 |
| L3 资源层 | sc ripts/、references/、assets/ | 指令明确要求或任务需要时 | 按需读取长文档、脚本和模板 |
| 层级 | 建议大小 | 内容 |
|---|---|---|
| Frontmatter | 约 100 tokens | name + desc ription |
| 主文件 | 2K - 5K tokens | 核心流程、决策树、步骤 |
| 参考文档 | 单个 1K - 3K tokens | 详细规则、示例、清单 |
根据实际任务类型,Skill 应该采用不同的内部结构。以下是五种最常用的设计模式。
适用场景:部署、安装、导出、迁移等明确步骤的操作。
结构特点:按顺序执行,每步结果作为下一步输入。
## Workflow
### Step 1: 准备环境
- 检查依赖版本
- 验证权限
### Step 2: 执行部署
- 执行部署脚本
- 监控进度
### Step 3: 验证结果
- 运行健康检查
- 确认服务可用
适用场景:多产品选型、多路径诊断、需要根据条件分支的场景。
结构特点:条件分支 + 按需加载,每个分支处理一种情况。
## Decision Tree
### 用户的需求类型?
├─ 数据分析
│ └─ 进入数据分析流程
├─ 代码审查
│ └─ 进入代码审查流程
└─ 文档生成
└─ 进入文档生成流程
适用场景:写作、设计、代码改进等需要反复调整的任务。
结构特点:do → validate → refine → loop,直到满足质量标准或达到最大迭代次数。
## Workflow
### Iteration Loop
1. **Generate**: 根据要求生成初稿
2. **Validate**: 运行验证脚本检查质量
3. **Refine**: 根据验证结果改进
4. **Loop**: 如果未通过验证且还有迭代次数,返回步骤 1
### Exit Conditions
- 验证通过
- 达到最大迭代次数(默认 3 次)
- 用户手动确认完成
适用场景:长期项目、跨 session 持续推进的任务。
结构特点:每次处理一小部分,保存状态,下一次从断点继续。
## Workflow
### Session Start
1. 读取项目状态文件
2. 确定当前阶段和待办项
### Session Work
3. 处理当前阶段任务
4. 更新状态文件
5. 记录下次从哪里继续
### Session End
6. 保存上下文到状态文件
7. 生成进度报告
适用场景:咨询、研究、产品发现等有明确阶段和决策点的项目。
结构特点:阶段之间有门禁(Go/No-Go),只有满足条件才能进入下一阶段。
## Stages
### Stage 1: 需求理解
**Gate**: 是否有清晰的目标和约束?
### Stage 2: 方案设计
**Gate**: 方案是否覆盖所有关键需求?
### Stage 3: 实现规划
**Gate**: 实现计划是否可行?
### Stage 4: 执行与验证
**Gate**: 所有验收标准是否满足?
你的 Skill 需要做什么?
├─ 执行一个明确步骤的操作
│ └─ 线性流程
├─ 在大量选项中选正确方向
│ └─ 决策树 + 按需加载
├─ 在单次会话中反复做、验、改
│ └─ 循环迭代
├─ 跨多个 session 持续推进长期项目
│ └─ 接力棒循环
├─ 跨多天 / 多周,有阶段和 Go/No-Go 决策
│ └─ 多阶段 + 检查点
└─ 需要模型深度分析,而不是快速执行
└─ 思维框架(参考模式)
Skill 开发不是"写完 prompt 就完事了",而是一个需要测试、评估、迭代的工程过程。原因是:
Skill 开发可以借鉴 TDD 的思路:
| 阶段 | 行动 | 目标 |
|---|---|---|
| RED | 不带 Skill 运行,观察模型如何失败 | 理解当前问题所在 |
| GREEN | 写最小 Skill,让模型通过关键场景 | 快速验证假设 |
| REFACTOR | 添加反驳、边界、验证,堵住模型偷懒路径 | 提升鲁棒性 |
在开发 Skill 之前,需要准备测试用例:
| 测试类型 | 数量 | 说明 |
|---|---|---|
| 应触发请求 | 10 个 | 应该激活这个 Skill 的真实用户请求 |
| 不应触发请求 | 5 个 | 不应该激活这个 Skill 的请求 |
| 边界请求 | 3 个 | 模糊的、可能触发也可能不触发的请求 |
验证清单:
对于高价值 Skill,可以引入三类子 Agent 进行系统化评估:
| 角色 | 作用 | 关键价值 |
|---|---|---|
| Grader | 判断断言是否通过,并评估断言本身是否有价值 | 避免"弱断言带来的虚假信心" |
| Comparator | 盲评 with_skill 与 without_skill 的输出 | 降低偏见,判断实际提升 |
| Analyzer | 分析为什么某个版本更好、哪里需要改 | 把反馈转成可执行迭代建议 |
每次改进都问:
在 Agent 生态中,Skill 不是孤立存在的,它与多个相关概念相互配合。
| 概念 | 作用 | 关系 |
|---|---|---|
| MCP | 解决"连接能力" | AI 能访问数据库、GitHub、Slack 等外部系统 |
| Skill | 解决"使用方法" | AI 应该按什么步骤、什么标准、什么边界去使用这些能力 |
最强组合:
| 概念 | 作用 | 关系 |
|---|---|---|
| Rules | 全局约束 | 适用于所有任务的基本规则,如安全策略、伦理边界 |
| Skill | 任务特定指导 | 继承全局规则,并在特定任务范围内细化 |
| 概念 | 作用 | 关系 |
|---|---|---|
| Slash Command | 固定快捷动作 | 显式调用的快捷入口,如 /review、/deploy |
| Skill | 可复用能力包 | 可通过 desc ription 自动触发,也可显式调用 |
可以理解为:Slash Command 是 Skill 的显式入口之一。
好的 Agent 系统,需要把它们分工清楚。
| 特征 | 说明 |
|---|---|
| 触发明确 | desc ription 写得准,能正确判断何时使用 |
| 主体精简 | 只写必要步骤,不塞入低频信息 |
| 资源分层 | 长资料拆到 references/,按需加载 |
| 步骤可验证 | 关键环节有 checklist 或验证脚本 |
| 输出固定 | 结果结构可比较,格式稳定 |
| 边界清楚 | 知道何时不要用,有负面案例 |
| 可迭代 | 反馈能沉淀回文件,持续改进 |
| 可治理 | 团队能版本化和审查 |
开发前:
文件结构:
指令质量:
测试:
| 指标 | 说明 |
|---|---|
| 自动触发率 | 应触发请求中成功触发比例 |
| 误触发率 | 不应触发请求中错误触发比例 |
| 一次通过率 | 不经人工修正完成任务比例 |
| 验证通过率 | 脚本或 checklist 通过比例 |
| 输出一致性 | 同类任务输出是否稳定 |
---
name: code-review
desc ription: |
Review code changes, pull requests, diffs, or snippets for correctness,
security, maintainability, performance, and style. Use when the user asks
to review, check, audit, inspect, or give feedback on code. Trigger phrases
include "review this code", "check for bugs", "look at my PR", "audit the
changes", or "what do you think of this implementation".
Do not use for style-only requests without substance.
license: MIT
me tadata:
author: your-team
version: 0.1.0
---
# Code Review Skill
## Purpose
This skill helps the agent perform thorough, consistent code reviews by
following a structured review process and checklist.
## When to Use
Use when:
- User asks to review code, PR, or diff
- User wants feedback on implementation quality
- User requests bug hunting or security audit
- User asks to check code style and best practices
Do not use when:
- User asks for style-only changes without substance
- User just wants auto-formatting (not review)
- Request is about documentation only
## Review Process
### Step 1: Understand Context
- Identify the programming language and fr amework
- Note the purpose of the changed code
- Check if tests are included
### Step 2: Security Review
Check for:
- SQL injection vulnerabilities
- Command injection risks
- Sensitive data exposure
- Authentication/authorization issues
- Input validation
### Step 3: Correctness Review
Check for:
- Logic errors
- Off-by-one errors
- Null pointer / undefined handling
- Race conditions
- Resource leaks
### Step 4: Performance Review
Check for:
- N+1 query problems
- Unnecessary iterations
- Missing indexes
- Memory inefficiencies
### Step 5: Maintainability Review
Check for:
- Code duplication
- Naming clarity
- Function complexity (> 20 lines = red flag)
- Missing documentation
## Output Format
Return review in this structure:
```markdown
## Code Review Summary
**Overall**: [Pass / Needs Work / Needs Discussion]
## Issues Found
### Critical
1. [Issue desc ription] (line X)
- [Why it's a problem]
- [Suggested fix]
### Minor
...
## Recommendations
- [Optional improvements not blocking merge]
## Approvals Required
- [ ] Security review
- [ ] Performance review
- [ ] Maintainability review
User: “Can you review this PR? I’m concerned about the authentication flow.”
Assistant will: Load code-review skill and perform full security + correctness review.
User: “Format this code please.”
Assistant will: Decline and explain this is formatting, not review.
| Problem | Likely cause | Fix |
|---|---|---|
| Skips security checks | Step not explicit enough | Add explicit security checklist |
| Varies in depth | No output format | Enforce structured output format |
| Misses common bugs | No test requirement | Add “check if tests exist” to steps |
### 10.2 中文模板
```yaml
---
name: code-review
desc ription: |
审查代码变更、Pull Request、diff 或代码片段的正确性、安全性、可维护性、
性能和代码风格。当用户要求审查、检查、审计、检查代码或提供反馈时触发。
触发短语包括"帮我审查代码"、"检查一下bug"、"看看我这个PR"、"审计这些变更"、
或"你觉得这个实现怎么样"。
不适用于纯格式调整请求。
license: MIT
me tadata:
author: your-team
version: 0.1.0
---
下次写 Skill 之前,先回答这 5 个问题:
如果 3 个以上是"是",就值得写成一个 Skill。

扫码加好友,拉您进群



收藏
