# Skill Creator

> 创建高效技能的指南。当用户想要创建一个新技能（或更新现有技能）以通过专业知识、工作流或工具集成来扩展 Agent 的能力时，应使用此技能。

- Skill: `chuanyue98/skill-creator` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add chuanyue98/skill-creator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chuanyue98/skill-creator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: Complete terms in LICENSE.txt
- Author: chuanyue98 (https://skillmd.com/u/chuanyue98)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/chuanyue98/skill-creator

---


# 技能创建者

此技能为创建高效技能提供指导。

## 关于技能

技能是模块化、独立的包，通过提供专业知识、工作流和工具来扩展 Agent 的能力。可以将它们视为特定领域或任务的“入职指南”——它们将通用代理转变为具备任何模型都无法完全拥有的程序性知识的专用 Agent。

### 技能提供什么

1.  **专业工作流** - 特定领域的多步骤程序
2.  **工具集成** - 使用特定文件格式或 API 的说明
3.  **领域专业知识** - 公司特定的知识、架构、业务逻辑
4.  **配套资源** - 用于复杂和重复任务的脚本、参考文档和静态资源

## 核心原则

### 简洁是关键

上下文窗口是一种公共资源。技能与 Agent 需要访问的其他所有内容共享上下文窗口：系统提示词、对话历史、其他技能的元数据以及实际的用户请求。

**默认假设：Agent 已经非常聪明。** 只添加 Agent 尚未拥有的上下文。评估每一条信息：“Agent 真的需要这个解释吗？”以及“这一段值得它的 token 成本吗？”

与其使用冗长的解释，不如使用简洁的示例。

### 设置适当的自由度

将具体程度与任务的脆弱性和多变性相匹配：

**高自由度（基于文本的说明）**：当多种方法都有效、决策取决于上下文或由启发式方法指导时使用。

**中等自由度（伪代码或带参数的脚本）**：当存在首选模式、可接受某些变化或配置影响行为时使用。

**低自由度（特定脚本，少量参数）**：当操作脆弱且容易出错、一致性至关重要或必须遵循特定顺序时使用。

把 Agent 想象成在探索一条路径：狭窄的悬崖桥梁需要特定的护栏（低自由度），而开阔的田野允许许多路线（高自由度）。

### 技能组成结构

每个技能都包含一个必需的 `SKILL.md` 文件和可选的配套资源：

```
skill-name/
├── SKILL.md (required)
│   ├── YAML frontmatter metadata (required)
│   │   ├── name: (required)
│   │   └── description: (required)
│   └── Markdown instructions (required)
└── Bundled Resources (optional)
    ├── scripts/          - Executable code (Python/Bash/etc.)
    ├── references/       - Documentation intended to be loaded into context as needed
    └── assets/           - Files used in output (templates, icons, fonts, etc.)
```

#### SKILL.md (必需)

每个 `SKILL.md` 包含：

-   **Frontmatter** (YAML)：包含 `name` 和 `description` 字段。这是 Agent 读取以确定何时使用技能的唯一字段，因此清楚全面地描述技能是什么以及何时使用它非常重要。
-   **正文** (Markdown)：使用技能的说明 and 指导。仅在技能触发后加载（如果有的话）。

#### 配套资源 (可选)

##### 脚本 (`scripts/`)

用于需要确定性可靠性或重复重写的任务的可执行代码（Python/Bash 等）。

-   **何时包含**：当相同的代码被重复重写或需要确定性可靠性时
-   **示例**：用于 PDF 旋转任务的 `scripts/rotate_pdf.py`
-   **好处**：Token 高效、确定性、可以在不加载到上下文中的情况下执行
-   **注意**：脚本可能仍需要被 Agent 读取以进行修补或特定环境的调整。

##### 参考文档 (`references/`)

旨在根据需要加载到上下文中以通知 Agent 的过程和思考的文档和参考材料。

-   **何时包含**：用于 Agent 在工作时应参考的文档
-   **示例**：用于财务架构的 `references/finance.md`，用于公司 NDA 模板的 `references/mnda.md`，用于公司政策的 `references/policies.md`，用于 API 规范（OpenAPI/Swagger 等）的 `references/api_docs.md`
-   **用例**：数据库架构、API 文档、领域知识、公司政策、详细工作流指南
-   **好处**：保持 `SKILL.md` 精简，仅在 Agent 确定需要时加载
-   **最佳实践**：如果文件很大（>10k 词），请在 `SKILL.md` 中包含 grep 搜索模式
-   **避免重复**：信息应存在于 `SKILL.md` 或参考文件中，而不是两者都存在。除非它是技能真正的核心，否则倾向于将详细信息放在参考文件中——这保持了 `SKILL.md` 的精简，同时使信息可被发现而不占用上下文窗口。在 `SKILL.md` 中仅保留必要的程序说明和工作流指导；将详细的参考材料、架构和示例移动到参考文件中。

##### 静态资源 (`assets/`)

不打算加载到上下文中，而是在 Agent 生成的输出中使用的文件。

-   **何时包含**：当技能需要将在最终输出中使用的文件时
-   **示例**：用于品牌视觉的 `assets/logo.png`，用于演示文稿的 `assets/slides.pptx`，用于代码框架的 `assets/frontend-template/`，用于排版的 `assets/font.ttf`
-   **用例**：模板、图像、图标、脚手架代码、字体、被复制或修改的示例文档
-   **好处**：将输出资源与文档分离，使 Agent 能够使用文件而不将它们加载到上下文中

#### 技能中不应包含的内容

技能应仅包含直接支持其功能的必要文件。不要创建无关的文档或辅助文件，包括：

-   README.md
-   INSTALLATION_GUIDE.md
-   QUICK_REFERENCE.md
-   CHANGELOG.md
-   等

技能应仅包含 Agent 完成手头工作所需的信息。它不应包含关于创建过程、设置和测试程序、面向用户的文档等的辅助上下文。创建额外的文档文件只会增加混乱和困惑。

### 渐进式披露设计原则

技能使用三级加载系统来有效地管理上下文：

1.  **元数据 (名称 + 描述)** - 始终在上下文中（~100 词）
2.  **SKILL.md 正文** - 当技能触发时 (<5k 词)
3.  **配套资源** - 根据 Agent 的需要（无限制，因为脚本可以在不读入上下文窗口的情况下执行）

#### 渐进式披露模式

保持 `SKILL.md` 正文为必需内容且在 500 行以内，以最小化上下文膨胀。接近此限制时将内容拆分到单独的文件中。当将内容拆分到其他文件时，务必在 `SKILL.md` 中引用它们并清楚地描述何时读取它们，以确保技能的读者知道它们的存在以及何时使用它们。

**关键原则：** 当一个技能支持多种变体、框架或选项时，在 `SKILL.md` 中仅保留核心工作流和选择指导。将特定于变体的细节（模式、示例、配置）移动到单独的参考文件中。

**模式 1：带参考的高级指南**

```markdown
# PDF 处理

## 快速开始

使用 pdfplumber 提取文本：
[代码示例]

## 高级功能

- **表单填充**：查看 [FORMS.md](FORMS.md) 获取完整指南
- **API 参考**：查看 [REFERENCE.md](REFERENCE.md) 获取所有方法
- **示例**：查看 [EXAMPLES.md](EXAMPLES.md) 获取常见模式
```

Agent 仅在需要时加载 `FORMS.md`、`REFERENCE.md` 或 `EXAMPLES.md`。

**模式 2：特定领域的组织**

对于具有多个领域的技能，按领域组织内容以避免加载不相关的上下文：

```
bigquery-skill/
├── SKILL.md (概览和导航)
└── reference/
    ├── finance.md (收入，账单指标)
    ├── sales.md (机会，管道)
    ├── product.md (API 使用，功能)
    └── marketing.md (活动，归因)
```

当用户询问销售指标时，Agent 仅读取 `sales.md`。

同样，对于支持多种框架或变体的技能，按变体组织：

```
cloud-deploy/
├── SKILL.md (工作流 + 提供商选择)
└── references/
    ├── aws.md (AWS 部署模式)
    ├── gcp.md (GCP 部署模式)
    └── azure.md (Azure 部署模式)
```

当用户选择 AWS 时，Agent 仅读取 `aws.md`。

**模式 3：条件性细节**

显示基本内容，链接到高级内容：

```markdown
# DOCX 处理

## 创建文档

使用 docx-js 创建新文档。参见 [DOCX-JS.md](DOCX-JS.md)。

## 编辑文档

对于简单的编辑，直接修改 XML。

**对于修订**：参见 [REDLINING.md](REDLINING.md)
**对于 OOXML 细节**：参见 [OOXML.md](OOXML.md)
```

Agent 仅在用户需要这些功能时读取 `REDLINING.md` 或 `OOXML.md`。

**重要指南：**

-   **避免深层嵌套引用** - 保持引用距离 `SKILL.md` 只有一层深度。所有参考文件应直接从 `SKILL.md` 链接。
-   **结构化较长的参考文件** - 对于超过 100 行的文件，在顶部包含目录，以便 Agent 在预览时可以看到完整范围。

## 技能创建流程

技能创建涉及这些步骤：

1.  用具体示例理解技能
2.  规划可重用的技能内容（脚本、参考文档、静态资源）
3.  初始化技能（运行 `init_skill.py`）
4.  编辑技能（实现资源并编写 `SKILL.md`）
5.  打包技能（运行 `package_skill.py`）
6.  基于实际使用进行迭代

按顺序遵循这些步骤，仅当有明确理由不适用时才跳过。

### 第一步：用具体示例理解技能

仅在技能的使用模式已经非常清楚时才跳过此步骤。即使是在处理现有技能时，它仍然很有价值。

要创建一个有效的技能，必须清楚地理解技能将如何被使用的具体示例。这种理解可以来自直接的用户示例，也可以来自经用户反馈验证的生成示例。

对于一个 Agent 技能，相关问题包括：

-   “该技能应该支持什么功能？编辑、旋转，还有其他吗？”
-   “你能举一些这个技能如何被使用的例子吗？”
-   “我可以想象用户要求像‘去除这张图片的红眼’或‘旋转这张图片’这样的事情。你还能想象这个技能被用于其他方式吗？”
-   “用户说什么应该触发这个技能？”

为了避免让用户不知所措，避免在一条消息中问太多问题。从最重要的问题开始，并根据需要跟进以获得更好的效果。

当对技能应支持的功能有清晰的认识时，结束此步骤。

### 第二步：规划可重用的技能内容

为了将具体示例转化为有效的技能，通过以下方式分析每个示例：

1.  考虑如何从头开始执行该示例
2.  确定在重复执行这些工作流时，哪些脚本、参考文档和静态资源会有帮助

示例：在构建 `pdf-editor` 技能以处理像“帮我旋转这个 PDF”这样的查询时，分析显示：

1.  旋转 PDF 需要每次重新编写相同的代码
2.  一个 `scripts/rotate_pdf.py` 脚本存储在技能中会有帮助

示例：在设计 `frontend-webapp-builder` 技能以处理像“给我做一个待办事项应用”或“给我做一个仪表板来跟踪我的步数”这样的查询时，分析显示：

1.  编写前端 webapp 需要每次都使用相同的样板 HTML/React
2.  一个包含样板 HTML/React 项目文件的 `assets/hello-world/` 模板存储在技能中会有帮助

示例：在构建 `big-query` 技能以处理像“今天有多少用户登录？”这样的查询时，分析显示：

1.  查询 BigQuery 需要每次重新发现表架构和关系
2.  一个记录表架构的 `references/schema.md` 文件存储在技能中会有帮助

为了建立技能的内容，分析每个具体示例以创建一个要包含的可重用资源列表：脚本、参考文档和静态资源。

### 第三步：初始化技能

此时，是时候实际创建技能了。

仅当正在开发的技能已经存在，且需要迭代或打包时才跳过此步骤。在这种情况下，继续下一步。

当从头开始创建一个新技能时，始终运行 `init_skill.py` 脚本。该脚本方便地生成一个新的模板技能目录，自动包含技能所需的一切，使技能创建过程更加高效和可靠。

用法：

```bash
scripts/init_skill.py <skill-name> --path <output-directory>
```

该脚本：

-   在指定路径创建技能目录
-   生成带有正确 frontmatter 和 TODO 占位符的 `SKILL.md` 模板
-   创建示例资源目录：`scripts/`、`references/` 和 `assets/`
-   在每个目录中添加可以自定义或删除的示例文件

初始化后，根据需要自定义或删除生成的 `SKILL.md` 和示例文件。

### 第四步：编辑技能

当编辑（新生成的或现有的）技能时，请记住该技能是为另一个 Agent 实例创建的。包含对 Agent 有益且非显而易见的信息。考虑哪些程序性知识、领域特定细节或可重用资产将帮助另一个 Agent 实例更有效地执行这些任务。

#### 学习经过验证的设计模式

根据你的技能需求查阅这些有用的指南：

##### 顺序工作流

对于复杂任务，将操作分解为清晰的顺序步骤。通常在 `SKILL.md` 的开头给 Agent 一个流程概述是很有帮助的：

```markdown
填充 PDF 表单涉及这些步骤：

1. 分析表单（运行 analyze_form.py）
2. 创建字段映射（编辑 fields.json）
3. 验证映射（运行 validate_fields.py）
4. 填充表单（运行 fill_form.py）
5. 验证输出（运行 verify_output.py）
```

##### 条件工作流

对于具有分支逻辑的任务，引导 Agent 通过决策点：

```markdown
1. 确定修改类型：
   **创建新内容？** → 遵循下方的“创建工作流”
   **编辑现有内容？** → 遵循下方的“编辑工作流”

2. 创建工作流：[步骤]
3. 编辑工作流：[步骤]
```

##### 模板模式

为输出格式提供模板。根据你的需求匹配严格程度。

**对于严格要求（如 API 响应或数据格式）：**

```markdown
## 报告结构

始终使用此确切的模板结构：

# [分析标题]

## 执行摘要
[一段关于关键发现的概述]

## 关键发现
- 发现 1 及支持数据
- 发现 2 及支持数据
- 发现 3 及支持数据

## 建议
1. 具体的行动建议
2. 具体的行动建议
```

**对于灵活指导（当适应性有用时）：**

```markdown
## 报告结构

这是一个合理的默认格式，但请运用你的最佳判断：

# [分析标题]

## 执行摘要
[概述]

## 关键发现
[根据你的发现调整部分]

## 建议
[根据具体情况调整]

根据具体分析类型按需调整部分。
```

##### 示例模式

对于输出质量取决于看到示例的技能，提供输入/输出对：

```markdown
## 提交信息格式

按照这些示例生成提交信息：

**示例 1：**
输入：添加了使用 JWT 令牌的用户身份验证
输出：
```
feat(auth): implement JWT-based authentication

Add login endpoint and token validation middleware
```

**示例 2：**
输入：修复了报告中日期显示错误的 bug
输出：
```
fix(reports): correct date formatting in timezone conversion

Use UTC timestamps consistently across report generation
```

遵循此风格：type(scope): 简短描述，然后是详细解释。
```

示例帮助 Agent 比仅凭描述更清楚地理解所需的风格和详细程度。

#### 从可重用的技能内容开始

要开始实现，从上面确定的可重用资源开始：`scripts/`、`references/` 和 `静态资源` 文件。注意，这一步可能需要用户输入。例如，当实现一个 `brand-guidelines` 技能时，用户可能需要提供品牌资产或模板存储在 `assets/` 中，或提供文档存储在 `references/` 中。

添加的脚本必须通过实际运行进行测试，以确保没有 bug 且输出符合预期。如果有许多类似的脚本，只需测试代表性样本，以确保对它们都能工作的信心，同时平衡完成时间。

任何技能不需要的示例文件和目录都应被删除。初始化脚本在 `scripts/`、`references/` 和 `assets/` 中创建示例文件以演示结构，但大多数技能不需要全部。

#### 更新 SKILL.md

**编写指南：** 始终使用祈使句/不定式形式。

##### Frontmatter

编写带有 `name` 和 `description` 的 YAML frontmatter：

-   `name`：技能名称
-   `description`：这是你的技能的主要触发机制，帮助 Agent 理解何时使用该技能。
    -   包含技能做什么以及何时使用它的具体触发器/上下文。
    -   在这里包含所有“何时使用”的信息——不要在正文中。正文仅在触发后加载，因此正文中的“何时使用此技能”部分对 Agent 没有帮助。
    -   `docx` 技能的示例描述：“支持修订、评论、格式保留和文本提取的综合文档创建、编辑和分析。当 Agent 需要处理专业文档（.docx 文件）用于以下情况时使用：(1) 创建新文档，(2) 修改或编辑内容，(3) 处理修订，(4) 添加评论，或任何其他文档任务”

不要在 YAML frontmatter 中包含任何其他字段。

##### 正文

编写使用技能及其配套资源的说明。

### 第五步：打包技能

一旦技能开发完成，必须将其打包成可分发的 `.skill` 文件与用户共享。打包过程首先自动验证技能，以确保其满足所有要求：

```bash
scripts/package_skill.py <path/to/skill-folder>
```

可选的输出目录规范：

```bash
scripts/package_skill.py <path/to/skill-folder> ./dist
```

打包脚本将：

1.  自动**验证**技能，检查：

    -   YAML frontmatter 格式和必填字段
    -   技能命名约定和目录结构
    -   描述的完整性和质量
    -   文件组织和资源引用

2.  如果验证通过，则**打包**技能，创建一个以技能命名的 `.skill` 文件（例如，`my-skill.skill`），其中包括所有文件并保持正确的分发目录结构。`.skill` 文件是一个扩展名为 `.skill` 的 zip 文件。

如果验证失败，脚本将报告错误并在不创建包的情况下退出。修复任何验证错误并再次运行打包命令。

### 第六步：迭代

测试技能后，用户可能会要求改进。这通常发生在刚使用完技能后，对技能的表现有新鲜的上下文。

**迭代工作流：**

1.  在实际任务中使用技能
2.  注意困难或低效之处
3.  确定应如何更新 `SKILL.md` 或配套资源
4.  实施更改并再次测试

