很多人使用 AI 工具时都会遇到同一个问题:同样的需求,今天输出一个版本,明天换一种做法;同样的规范,已经解释过很多遍,下一轮对话又被忘掉;同样的工作流,每次都要重新写一长段提示词。
问题不在于 AI 不够聪明,而在于它缺少稳定的执行标准。
Qoder Skills 解决的就是这件事:把一套任务规范、执行步骤、参考材料、脚本和资源封装成一个可复用的能力包,让 AI 在遇到匹配任务时自动加载,并按预设流程完成工作。
可以把 Skill 理解成 AI 工作流里的“操作手册”。用户只描述目标,AI 根据 Skill 里的规则决定怎么拆解任务、调用哪些工具、检查哪些结果、输出什么格式。
1. Skill 到底解决什么问题
如果只靠普通提示词,AI 的执行方式通常依赖当前对话上下文。上下文写得详细,它就做得更接近预期;上下文写得粗略,它就会根据自己的默认习惯补全细节。
这会带来几个麻烦:
| 问题 | 典型表现 | Skill 的处理方式 |
|---|---|---|
| 需求解释成本高 | 每次都要重复说明规范、格式、禁忌和流程 | 把规范写进 SKILL.md,触发后自动加载 |
| 输出不稳定 | 同一个任务多次执行,步骤和结果差异很大 | 用固定步骤、模板和脚本约束执行过程 |
| 复杂流程容易漏步骤 | 例如写 API 时忘记同步文档、测试或变更记录 | 把检查项写成强制流程 |
| 团队规范难共享 | 每个人维护自己的提示词,标准不一致 | 项目级 Skill 可以提交到 Git |
| MCP 有工具但缺少方法 | AI 能访问 GitHub、Linear、Notion,却不知道按什么流程用 | Skill 定义工具使用顺序和业务规则 |
普通提示词像临时口头说明,Skill 像沉淀下来的标准作业流程。只要某个任务会重复出现、需要稳定质量、涉及多人协作或多步骤执行,就适合写成 Skill。
2. Skill、MCP、Slash Command、Rules 的关系
Qoder 以及类似 AI Agent 工具里,常见的扩展方式包括 Skill、MCP、Slash Command 和 Rules。它们看起来都能“影响 AI 行为”,但职责完全不同。
MCP(Model Context Protocol,模型上下文协议)负责把外部系统能力暴露给 AI,例如数据库、GitHub、Linear、Notion、日历、邮件系统等。它解决的是“AI 能访问什么工具”。
Skill 解决的是“AI 应该怎样完成某类任务”。
Slash Command 是用户手动输入的快捷指令,适合触发一次性动作。
Rules 是全局规则,通常一直放在上下文中,比如“全部用中文回答”“提交信息必须使用 Conventional Commits”。
| 维度 | Skill | MCP | Slash Command | Rules |
|---|---|---|---|---|
| 核心作用 | 封装标准工作流 | 连接外部工具和数据 | 快捷触发固定提示词 | 提供全局约束 |
| 触发方式 | AI 自动判断,也可手动 /skill-name 调用 | 工具调用时使用 | 用户主动输入 /xxx | 始终生效 |
| 适合复杂度 | 高,支持多步骤、脚本、参考资料 | 中,偏工具接口 | 低到中,偏短指令 | 低,偏行为约束 |
| 上下文占用 | 低,默认只加载元数据 | 取决于工具数量和定义 | 通常会加载整段提示 | 一直占用 |
| 团队共享 | 适合提交到项目仓库 | 通过服务端共享 | 不太适合规范化分发 | 常见于个人配置或项目配置 |
| 典型场景 | API 规范、报告生成、设计交付、审查流程 | 调 GitHub、查数据库、发消息 | /commit、/review | 语言、格式、编码风格 |
判断方式可以很简单:
需要访问外部系统数据或工具? → MCP
只是全局行为约束? → Rules
只是一次性快捷动作? → Slash Command
需要复用的多步骤标准流程? → Skill
需要外部工具 + 固定业务流程? → MCP + Skill
Skill 并不替代 MCP。更准确地说,MCP 给 AI 提供“手”和“眼睛”,Skill 告诉 AI 按什么顺序使用这些能力。
flowchart LR
U[用户需求] --> A[AI Agent]
A --> S[Skill<br/>任务流程与标准]
A --> R[Rules<br/>全局约束]
A --> M[MCP<br/>外部工具和数据]
S --> A
R --> A
M --> DB[(数据库)]
M --> GH[GitHub]
M --> LN[Linear / Notion]
A --> O[稳定输出]
3. Skill 的文件结构
Skill 本质上是一个约定好的文件夹。一个最小 Skill 只需要一个 SKILL.md 文件;复杂 Skill 可以额外放脚本、参考文档、模板和静态资源。
推荐结构如下:
your-skill-name/
├── SKILL.md
├── scripts/
│ ├── check_api_docs.py
│ └── validate.sh
├── references/
│ ├── api-guide.md
│ ├── examples.md
│ └── CHANGELOG.md
└── assets/
├── report-template.md
└── logo.svg
各目录职责:
| 路径 | 是否必须 | 用途 |
|---|---|---|
SKILL.md | 必须 | Skill 的元数据、触发条件、执行步骤和关键说明 |
scripts/ | 可选 | 放 Python、Shell、Node.js 等脚本,让某些步骤确定执行 |
references/ | 可选 | 放较长的规范、示例、接口文档、领域知识 |
assets/ | 可选 | 放模板、图标、字体、示例文件等资源 |
命名需要注意三点:
- Skill 文件夹名建议使用 kebab-case,例如
api-standard-check。 - 主文件名必须是
SKILL.md,大小写要完全一致。 SKILL.md顶部必须包含 YAML Frontmatter,用来告诉 AI 这个 Skill 什么时候该被使用。
4. Skill 的渐进式加载机制
Skill 能同时支持“很多技能共存”和“复杂知识封装”,关键在于渐进式加载,也就是 Progressive Disclosure。
AI 不会一开始就把每个 Skill 的全部内容塞进上下文,而是分层读取。
flowchart TD
A[启动会话] --> B[加载所有 Skill 的元数据]
B --> C{用户任务是否匹配某个 Skill}
C -- 否 --> D[按普通对话处理]
C -- 是 --> E[加载对应 SKILL.md 正文]
E --> F{执行中是否需要脚本或参考资料}
F -- 否 --> G[按 Skill 步骤执行]
F -- 是 --> H[按需读取 scripts references assets]
H --> G
G --> I[输出结果]
三层内容分别承担不同职责:
| 层级 | 加载时机 | 内容 | 作用 |
|---|---|---|---|
| YAML Frontmatter | 会话启动时 | name、description 等元数据 | 让 AI 判断 Skill 是否适合当前任务 |
SKILL.md 正文 | Skill 被触发时 | 执行步骤、示例、注意事项、错误处理 | 指导 AI 完成任务 |
| 脚本与参考文件 | 执行过程中按需读取 | 检查脚本、模板、长文档、示例 | 支撑复杂任务,避免主文件过长 |
这种设计有三个直接好处:
| 好处 | 说明 |
|---|---|
| 上下文占用低 | 同时安装很多 Skill 时,默认只加载简短描述 |
| 执行更稳定 | 关键流程提前写死,AI 不需要每次重新推理步骤 |
| 复杂任务可维护 | 长文档和脚本可以拆出去,主文件保持清晰 |
5. 安装第一个 Skill
Qoder 支持用户级和项目级两种安装位置。
| 安装级别 | 路径 | 适合场景 |
|---|---|---|
| 用户级 | ~/.qoder/skills/ | 个人长期使用、跨项目通用 |
| 项目级 | <项目根目录>/.qoder/skills/ | 团队规范、项目专用流程,适合提交到 Git |
5.1 使用命令行安装
可以通过 skills 工具安装开源 Skill:
npx skills add <skill-name>
安装过程通常会让你选择:
目标 Agent:Qoder
安装级别:Global 或 Project
安装模式:copy
例如安装一个前端设计相关 Skill:
npx skills add from-design
如果安装到用户级目录,文件会出现在:
~/.qoder/skills/from-design/
如果安装到项目级目录,文件会出现在:
<项目根目录>/.qoder/skills/from-design/
5.2 手动安装
只要目录结构正确,也可以直接复制文件夹:
# 用户级
mkdir -p ~/.qoder/skills
cp -r your-skill-name ~/.qoder/skills/
# 项目级
mkdir -p .qoder/skills
cp -r your-skill-name .qoder/skills/
5.3 在 Qoder 中生成 Skill
Qoder Quest 模式可以通过对话生成一个新的 Skill。适合从零开始固化自己的流程:
帮我创建一个 Skill,用于在新增、修改或删除 API 接口时,
同步更新 OpenAPI 文档,检查兼容性,生成单元测试框架,
并记录 change log。
AI 会引导你补充触发条件、步骤、目录位置和示例。
5.4 验证是否生效
打开 Qoder 对话框输入 /,如果能看到对应 Skill,说明安装成功。
也可以直接输入一个匹配任务,例如:
帮我新增一个用户登录接口,并检查接口文档和兼容性。
如果 AI 自动说明将按某个 Skill 的流程执行,触发配置基本可用。
需要注意:Qoder Skills 通常不支持热更新。新增或修改 Skill 后,建议重启会话再测试。
6. 编写一个最小可用 Skill
一个最小 Skill 可以只有 SKILL.md。
api-standard-check/
└── SKILL.md
SKILL.md 示例:
---
name: api-standard-check
description: |
当用户新增、修改或删除 API 接口时使用本 Skill。
本 Skill 会要求同步 OpenAPI 文档、检查向后兼容性、生成单元测试框架,
并以 change log 格式记录接口变更。
触发词:新增接口、修改接口、删除接口、API 文档、接口兼容性、单元测试、接口变更。
license: MIT
metadata:
version: 1.0.0
owner: backend-team
category: development
tags:
- api
- openapi
- testing
---
# API 标准变更流程
## 目标
当 API 发生新增、修改或删除时,确保代码、文档、兼容性检查、测试框架和变更记录同时完成。
## 重要约束
CRITICAL: 不允许只修改接口代码而不更新 OpenAPI 文档。
CRITICAL: 删除或修改已有接口前,必须检查是否破坏现有调用方。
## 执行步骤
### 1. 识别接口变更类型
判断当前任务属于以下哪一种:
- 新增 API
- 修改 API
- 删除 API
记录接口路径、HTTP 方法、请求参数、响应结构和错误码。
### 2. 修改接口代码
按项目现有代码风格实现接口逻辑。不要引入与项目技术栈不一致的新框架。
### 3. 同步 OpenAPI 文档
在 OpenAPI 文件中添加或更新对应接口,包括:
- path
- method
- request body
- query/path 参数
- response schema
- error response
### 4. 检查兼容性
检查以下内容:
- 是否删除了已有字段
- 是否改变了字段类型
- 是否改变了必填规则
- 是否改变了错误码语义
- 是否改变了认证或权限要求
如存在破坏性变更,必须明确提示,并给出兼容方案。
### 5. 生成单元测试框架
为新增或修改的接口生成测试,包括:
- 成功请求
- 参数缺失
- 参数非法
- 权限不足
- 典型业务异常
### 6. 记录 change log
按以下格式输出:
```text
## API Change Log
- Type: added | changed | removed
- Endpoint: METHOD /path
- Compatibility: compatible | breaking
- Document Updated: yes | no
- Tests Added: yes | no
- Notes:
示例
用户请求:
“新增一个用户登录接口,支持邮箱和密码登录。”
AI 需要完成:
- 创建接口代码
- 更新 OpenAPI 文档
- 检查是否影响现有认证接口
- 生成单元测试框架
- 输出 change log
这个 Skill 已经具备可用形态:有清晰触发条件、有强制约束、有执行步骤、有输出格式、有示例。
---
## 7. YAML Frontmatter 怎么写
Frontmatter 是 AI 判断“是否使用 Skill”的核心依据。写得太宽泛,会导致 Skill 被乱触发;写得太模糊,又可能该触发时没有触发。
### 7.1 必填字段
```yaml
---
name: api-standard-check
description: |
当用户新增、修改或删除 API 接口时使用本 Skill。
本 Skill 会同步 OpenAPI 文档、检查向后兼容性并生成单元测试框架。
触发词:新增接口、接口文档、API 规范、兼容性检查、单元测试、接口变更。
---
name 要遵守:
只能使用小写字母、数字和短横线
不要使用空格
不要使用大写
不要使用保留词
正确示例:
name: api-standard-check
错误示例:
name: API Standard Check
name: api_standard_check
name: MySkill
7.2 可选字段
---
name: data-report-generator
description: |
当用户需要根据 CSV、数据库查询结果或业务指标生成分析报告时使用本 Skill。
本 Skill 会完成数据检查、指标计算、异常点识别和报告输出。
license: MIT
allowed-tools: "Bash(python:*) WebFetch"
metadata:
version: 1.0.0
owner: data-team
mcp-server: database
category: analytics
tags:
- report
- csv
- data-analysis
- dashboard
documentation: https://example.com/docs/data-report-generator
---
metadata 通常用于记录版本、维护团队、分类、依赖的 MCP 服务和文档地址。它不是触发的核心,触发主要依赖 description。
7.3 Description 的写法
一个好用的 description 要同时回答两个问题:
- 这个 Skill 做什么?
- 用户说什么话时应该触发?
不推荐:
description: 帮助处理项目。
问题是范围太大,AI 不知道哪些任务需要使用它。
也不推荐:
description: 创建复杂的多页面文档系统。
问题是只说了能力,没有说触发场景。
更好的写法:
description: |
分析 Figma 设计文件并生成前端开发交付文档。
当用户上传 .fig 文件,或提到“设计规范”“组件文档”“设计转代码”“前端切图”时使用。
可以把用户真实会说的话放进去。用户通常不会严格使用技术术语,所以触发词要同时覆盖专业表达和口语表达。
例如 Linear 项目管理 Skill:
description: |
管理 Linear 项目工作流,包括 Sprint 规划、任务创建、状态跟踪和风险同步。
当用户提到“冲刺”“项目计划”“创建工单”“排期”“任务状态”或“Linear 任务”时使用。
Description 不宜太长。它会常驻上下文,推荐控制在 2 到 4 句话内。
8. SKILL.md 正文怎么写
正文决定 AI 被触发后怎么执行任务。写正文时,目标不是写得“像说明书一样完整”,而是让 AI 不容易误解、不容易跳步。
推荐原则:
| 原则 | 做法 |
|---|---|
| 步骤编号化 | 每个步骤只做一件事 |
| 关键检查前置 | 高风险要求放到开头,用 CRITICAL: 标记 |
| 示例具体化 | 放 1 到 2 个真实任务示例 |
| 大文档外置 | 长规范放到 references/,主文件只保留路径 |
| 能脚本化就脚本化 | 检查、扫描、格式化等确定性工作交给脚本 |
例如,文档检查可以不要只写“检查接口是否有文档”,而是提供脚本:
python scripts/check_api_docs.py --project .
在 SKILL.md 中写清楚何时运行脚本、期望输出是什么:
## 文档一致性检查
在完成 API 代码修改后,运行:
```bash
python scripts/check_api_docs.py --project .
期望输出:
All API endpoints have matching OpenAPI documentation.
如果脚本报告缺失文档,必须先补齐文档,再继续生成测试代码。
语言描述可以被误解,脚本执行结果更确定。适合脚本化的工作包括:
- 扫描 API 和文档是否一致
- 检查文件命名规范
- 校验 JSON、YAML、OpenAPI 格式
- 统计测试覆盖情况
- 生成固定格式报告
- 运行 lint、test、build
---
## 9. 三个典型使用场景
### 9.1 前端设计生成
很多 AI 生成的前端页面会有明显模板感:蓝白配色、常规卡片、默认字体、缺少层次。问题是用户很难说清楚“更好看”到底意味着什么。
设计类 Skill 可以把审美规则、字体选择、配色策略、布局方法、组件细节写进去。用户只描述产品目标,AI 根据 Skill 主动确认设计方向,再生成更完整的界面方案。
安装示例:
```bash
npx skills add from-design
使用示例:
帮我设计一个 Todo 应用首页,需要适合年轻用户,支持任务分组和今日重点任务。
有设计 Skill 时,AI 通常会多做几件事:
- 确认产品定位和视觉方向。
- 选择字体、颜色、间距和信息层级。
- 避免直接套默认 UI 风格。
- 输出组件结构、页面布局和交互细节。
- 必要时生成可运行的前端代码。
这类 Skill 的价值在于补齐用户的知识盲区。用户不需要掌握完整设计方法,也能让 AI 按设计领域的标准工作。
9.2 产品宣传视频生成
视频生成属于典型的跨领域任务。用户可能只知道“我要一个宣传视频”,但不知道脚本结构、镜头节奏、字幕、动画技术栈和渲染方式。
如果安装了 Remotion 相关 Skill,可以让 AI 按固定流程创建可渲染的视频项目。
示例:
npx skills add remotion-best-practice
需求可以这样写:
帮我为一个 AI 电商图片处理工具制作中文宣传视频。
请先根据官网信息理解产品能力,再生成可下载的视频文件。
执行流程可以固化为:
flowchart TD
A[用户提出视频需求] --> B[读取产品信息]
B --> C[生成视频脚本]
C --> D[创建 Remotion 项目]
D --> E[实现分镜和动画]
E --> F[本地渲染视频]
F --> G[输出视频文件和修改建议]
这种 Skill 不只是告诉 AI “写视频脚本”,还会约束它选择合适技术栈、组织工程目录、处理依赖安装、生成分镜组件并完成渲染。
9.3 Java API 开发规范化
团队开发 API 时,经常会有一套标准要求:
- 代码要实现接口逻辑
- OpenAPI 文档要同步
- 不能破坏已有接口兼容性
- 测试框架要生成
- 变更记录要更新
如果只靠普通对话,AI 很容易只完成代码部分。API Skill 可以把这些动作变成强制步骤。
创建 Skill 的需求可以这样描述:
帮我创建一个 Skill。
当我新增、修改或删除 Java API 接口时,必须完成:
1. 同步更新 OpenAPI 格式的 API 文档
2. 检查新接口不破坏现有接口兼容性
3. 生成对应的单元测试框架
4. 以 change log 格式记录本次变更
再加入一个确定性检查脚本:
请在这个 Skill 中添加一个 Python 脚本,
扫描项目内所有 API 接口,检查每个接口是否都有对应 OpenAPI 文档,
并以报告形式输出结果。
目录可以变成:
.qoder/skills/api-standard-check/
├── SKILL.md
└── scripts/
└── check_api_docs.py
团队共享时,把项目级 Skill 提交到仓库:
git add .qoder/skills/api-standard-check
git commit -m "feat: add api standard skill"
git push
其他成员拉取后即可使用:
git pull
10. 复杂工作流的五种写法
简单 Skill 只需要列步骤。复杂 Skill 需要更明确的编排方式,否则 AI 可能无法稳定处理分支、循环和外部工具调用。
10.1 顺序工作流
适合必须按顺序执行的流程,例如客户接入、发布流程、审批流程。
## 工作流:新客户接入
### 1. 创建客户账户
调用客户系统 MCP,创建客户账户。
必须记录返回的 `customer_id`。
### 2. 设置支付方式
使用 `customer_id` 设置支付方式。
只有支付方式验证通过,才能进入下一步。
### 3. 创建订阅
基于 `customer_id` 和套餐类型创建订阅。
### 4. 发送欢迎邮件
调用邮件 MCP,使用 `welcome_email_template` 模板发送邮件。
### 失败处理
如果第 2 步失败,不允许创建订阅。
如果第 3 步失败,需要标记客户状态为 `pending_subscription`。
关键点是写清依赖关系和失败处理,不要只列动作。
10.2 跨 MCP 协调
适合一个流程涉及多个外部系统,例如 Figma、Drive、Linear、Slack。
sequenceDiagram
participant U as 用户
participant A as AI Agent
participant F as Figma MCP
participant D as Drive MCP
participant L as Linear MCP
participant S as Slack MCP
U->>A: 交付设计稿给开发团队
A->>F: 导出设计资产和规范
F-->>A: 返回资产清单
A->>D: 上传资产并创建共享链接
D-->>A: 返回文件夹链接
A->>L: 创建开发任务
L-->>A: 返回任务编号
A->>S: 通知工程频道
A-->>U: 返回交付摘要
Skill 中需要说明每个 MCP 的职责、输入输出和交接字段。例如 Drive 返回的链接要写入 Linear 任务,再放进 Slack 通知。
10.3 迭代优化循环
适合报告、设计稿、代码审查等需要反复检查和修正的任务。
## 报告生成流程
### 1. 生成初稿
根据数据源生成第一版报告,并保存为临时文件。
### 2. 运行质量检查
执行:
```bash
python scripts/check_report.py --file report.md
检查项包括:
- 是否缺少章节
- 数据是否为空
- 指标格式是否一致
- 是否存在未解释的异常值
3. 修复问题
逐项修复检查脚本报告的问题。
4. 再次验证
重新运行检查脚本。
如果仍有错误,重复第 3 步和第 4 步,直到检查通过。
5. 输出正式版本
生成最终报告和摘要。
循环要有退出条件,否则 AI 可能只修一次就结束。
### 10.4 上下文感知的工具选择
适合同一个目标在不同场景下使用不同工具。
```markdown
## 文件存储决策
### 1. 判断文件类型和大小
- 大于 10MB 的文件:使用云存储 MCP
- 协作文档:使用 Notion 或 Google Docs MCP
- 代码文件:使用 GitHub MCP
- 临时中间产物:使用本地存储
### 2. 执行存储
调用对应工具完成存储。
### 3. 说明原因
向用户说明为什么选择该存储方式。
这类 Skill 的重点不是“执行”,而是把决策树写清楚。
10.5 领域知识内嵌
适合合规、金融、医疗、法务、企业流程等强规则场景。
## 支付处理合规流程
### 1. 处理前检查
获取交易详情,并检查:
- 制裁名单
- 司法管辖区
- 交易金额风险
- 历史欺诈记录
### 2. 决策
如果合规检查通过,调用支付处理工具。
如果检查不通过,禁止继续支付流程,并创建人工审核记录。
### 3. 审计记录
记录全部检查项、判断依据和处理结果。
这类 Skill 要把“不能做什么”写得非常明确,尤其是需要人工审核或禁止自动执行的场景。
11. 测试 Skill 是否可靠
Skill 写完后不能只跑一次。需要测试三个方面:触发是否准确、执行是否稳定、相比普通提示词是否减少沟通成本。
11.1 触发测试
准备应该触发的请求:
帮我新增一个用户登录接口。
这个 API 和现有接口会不会冲突?
帮我写接口文档。
删除这个旧接口前帮我检查兼容性。
给这个接口补单元测试。
准备不应该触发的请求:
帮我写一首诗。
旧金山今天的天气怎么样?
帮我做一个旅行计划。
解释一下二叉树遍历。
把这段话翻译成英文。
如果相关请求不触发,通常是 description 太模糊或缺少触发词。
如果无关请求频繁触发,通常是 description 范围太大。
可以直接问 AI:
你什么时候会使用 api-standard-check 这个 Skill?
AI 的回答会暴露它对 description 的理解。根据回答调整触发词即可。
11.2 功能测试
对同一个任务运行 3 到 5 次,检查:
- 是否每次都执行关键步骤
- 输出格式是否一致
- 脚本是否能正常运行
- MCP 调用是否成功
- 错误处理是否符合预期
测试记录可以用表格保存:
| 测试项 | 第 1 次 | 第 2 次 | 第 3 次 | 结论 |
|---|---|---|---|---|
| 是否更新 OpenAPI | 是 | 是 | 是 | 通过 |
| 是否检查兼容性 | 是 | 是 | 否 | 需要强化步骤 |
| 是否生成测试框架 | 是 | 是 | 是 | 通过 |
| 是否输出 change log | 是 | 是 | 是 | 通过 |
11.3 与普通提示词对比
可以用同一个任务分别在无 Skill 和有 Skill 的情况下执行。
| 指标 | 无 Skill | 有 Skill |
|---|---|---|
| 用户需要补充说明的轮次 | 10 到 15 轮 | 1 到 3 轮 |
| 是否遗漏关键步骤 | 容易遗漏 | 可通过步骤约束降低遗漏 |
| 输出格式一致性 | 依赖提示词质量 | 由 Skill 固定 |
| 团队共享成本 | 每个人复制提示词 | 项目级目录统一维护 |
| 可脚本化程度 | 低 | 高 |
Skill 的目标不是让 AI “一次永远正确”,而是把问题修正沉淀到文件里。每次发现遗漏,都可以直接修改 Skill,让同类问题下次减少出现。
12. 迭代 Skill 的常见信号
| 现象 | 可能原因 | 修改方式 |
|---|---|---|
| 该触发时没有触发 | description 缺少用户真实表达 | 增加触发词,覆盖技术术语和口语说法 |
| 不相关任务也触发 | description 太宽泛 | 增加适用边界和排除场景 |
| 触发后没有按步骤执行 | 正文太长、步骤不清晰 | 缩短正文,关键步骤前置,给步骤编号 |
| 输出格式不稳定 | 没有明确模板 | 添加固定输出格式 |
| 检查结果不可靠 | 只靠自然语言描述 | 增加脚本或命令 |
| MCP 调用顺序混乱 | 依赖关系没写清 | 明确每步输入输出和失败处理 |
可以用自然语言要求 AI 修改 Skill:
刚才执行 api-standard-check 时遗漏了 DELETE 接口的兼容性检查。
请把这个要求固化到该 Skill 中:
当接口删除时,必须检查调用方、OpenAPI 文档、错误码和迁移说明。
然后检查 SKILL.md 是否真的被更新,并重启会话测试。
13. 团队协作与版本治理
个人 Skill 可以放在用户级目录,团队规范更适合放在项目级目录。
.qoder/
└── skills/
├── api-standard-check/
│ ├── SKILL.md
│ └── scripts/
│ └── check_api_docs.py
└── release-checklist/
└── SKILL.md
提交到 Git:
git add .qoder/skills
git commit -m "feat: add project skills"
git push
更新 Skill 时,提交信息要说明影响范围:
git commit -m "fix(skill/api-standard): check DELETE api compatibility"
版本号可以放在 metadata:
metadata:
version: 1.2.0
owner: backend-team
如果某次变更会明显改变 AI 行为,例如增加强制审批、禁止自动发布、修改输出格式,需要在 references/CHANGELOG.md 中记录:
# Changelog
## 1.2.0
- 增加 DELETE API 兼容性检查
- change log 输出增加 `Migration Required` 字段
- 删除接口时必须生成迁移说明
团队级 Skill 建议遵守三条规则:
- 项目级 Skill 必须经过代码评审。
- 影响 AI 行为的变更需要写清楚原因。
- 每个 Skill 至少保留触发测试和不触发测试样例。
14. 常见问题排查
Q1:提示找不到 SKILL.md
检查文件名大小写:
ls -la your-skill-folder/
必须看到:
SKILL.md
这些都不符合要求:
skill.md
SKILL.MD
Skill.md
Q2:提示 YAML Frontmatter 无效
常见错误包括缺少分隔符、缩进错误、引号未闭合。
错误示例:
name: my-skill
description: Does things
正确示例:
---
name: my-skill
description: Does things
---
多行描述推荐使用 |:
---
name: my-skill
description: |
当用户需要整理会议纪要时使用。
本 Skill 会提取决策、行动项、负责人和截止日期。
---
Q3:安装后没有自动调用
排查顺序:
1. 输入 `/`,确认 Skill 是否出现在列表中
2. 重启当前会话
3. 询问 AI 什么时候会使用该 Skill
4. 检查 description 是否包含当前任务的触发词
5. 临时使用 /skill-name 手动调用
Q4:Skill 触发太频繁
在 description 中加入边界条件。
description: |
用于 CSV 文件的高级数据分析,包括统计建模、回归分析和聚类分析。
不适用于简单表格查看、字段解释或普通数据查询。
Q5:Skill 被触发了,但 AI 没按步骤执行
处理方式:
- 把最关键要求移到正文开头。
- 使用
CRITICAL:标记不可跳过的检查。 - 删除冗长背景说明。
- 把复杂检查改成脚本。
- 给输出结果定义固定模板。
Q6:一个 Skill 能不能依赖另一个 Skill
可以,但要在说明中写清依赖关系。例如:
description: |
当用户完成 API 变更后生成发布说明时使用。
如果项目中安装了 api-standard-check Skill,应先读取其 change log 输出。
更稳妥的方式是让两个 Skill 通过文件产物协作,例如前一个 Skill 输出 api-change-log.md,后一个 Skill 读取这个文件生成发布说明。
Q7:参考文件是不是越大越好
不是。建议:
| 文件 | 建议 |
|---|---|
SKILL.md | 保持清晰,放核心流程和关键规则 |
references/ | 放长规范、示例、领域知识 |
scripts/ | 放确定性检查和生成逻辑 |
| 外部链接 | 只在确实需要联网读取时使用 |
如果所有内容都塞进 SKILL.md,AI 加载后上下文会变重,关键步骤反而容易被淹没。
15. 30 分钟最小实践路径
可以按这个顺序快速跑通闭环:
第 1 步:安装一个开源 Skill
npx skills add from-design
选择 Qoder、Global、copy。
第 2 步:测试触发
在 Qoder Quest 模式输入一个前端设计需求。
如果没有自动触发,使用 /from-design 手动调用。
第 3 步:修改 description
打开:
~/.qoder/skills/from-design/SKILL.md
增加符合自己常用场景的触发词,保存后重启会话。
第 4 步:创建项目级 Skill
mkdir -p .qoder/skills/my-first-skill
touch .qoder/skills/my-first-skill/SKILL.md
第 5 步:提交给团队
git add .qoder/skills/my-first-skill
git commit -m "feat: add first project skill"
git push
16. 上线前 Checklist
设计阶段
- 明确 2 到 3 个具体使用场景
- 确定 Skill 要解决的是工作流问题,而不是单次问答
- 判断是否需要 MCP、脚本或参考文档
- 规划好
scripts/、references/、assets/目录
开发阶段
- 文件夹名使用 kebab-case
- 主文件名严格为
SKILL.md - YAML Frontmatter 有开始和结束
--- -
name使用小写字母、数字和短横线 -
description同时说明做什么和什么时候用 -
description包含用户真实会说的触发词 - 正文步骤编号清晰
- 关键步骤放在前面
- 高风险要求使用
CRITICAL:标记 - 包含至少 1 个示例场景
- 长文档放到
references/ - 可确定执行的检查尽量脚本化
测试阶段
- 用至少 10 个相关请求测试触发
- 用至少 5 个不相关请求测试不触发
- 同一任务重复运行 3 到 5 次
- 检查关键步骤是否遗漏
- 检查脚本是否能正常运行
- 如果集成 MCP,确认调用顺序和失败处理
- 与普通提示词效果做一次对比
发布阶段
- 项目级 Skill 已提交到 Git
- 变更说明写清楚影响范围
-
metadata.version已更新 - 重大行为变化已记录到
CHANGELOG.md - 团队成员知道如何触发和反馈问题
17. 常用资源
| 资源 | 地址 | 用途 |
|---|---|---|
| 开放 Skill 市场 | https://skills.sh | 查找和安装社区 Skill |
| Anthropic Skills 示例库 | https://github.com/anthropics/skills | 学习 Skill 目录结构和写法 |
| Qoder 文档 | Qoder 官网文档 | 查看 Qoder 中 Skills 的安装和使用方式 |
Skill 的核心价值不是“写一个更长的提示词”,而是把可复用流程工程化。它把经验、规范、检查脚本和团队约定放进版本化文件中,让 AI 在合适的任务里按同一套标准执行。对于 API 开发、设计生成、报告产出、MCP 工具编排这类重复且容易出错的工作,Skill 是让 AI 从临时助手变成稳定执行单元的关键配置。