# 技能提示词编写规范

## 1. 技能提示词五要素

每个完整的技能提示词（skill.md）必须包含以下5个要素：

| 要素 | 必填 | 说明 |
|:-----|:----:|:------|
| **执行步骤（steps）** | ✅ | Step1→Step2→Step3 的清晰流程 |
| **输出成果（outputs）** | ✅ | 明确列出所有产出物文件名和路径 |
| **失败回退（fallback）** | ✅ | 明确各种失败情况的处理方案 |
| **禁止行为（forbidden）** | ✅ | 明确不能做的事 |
| **触发条件（triggers）** | ✅ | 什么场景下触发此技能 |

## 2. 步骤编写规范

| 规范项 | 要求 |
|:-------|:-----|
| **编号格式** | 使用 `### 步骤N：标题` 格式 |
| **工具引用** | 每个步骤写明调用的具体工具，如 `使用 write_text 写入文件` |
| **路径规范** | 写明文件的完整相对路径，如 `./skill/{group}/{name}/skill.md` |
| **参数说明** | 写明关键参数，如 `mode='overwrite'` |
| **动作动词** | 使用明确的动作词：读取、写入、创建、调用、赋予、通知 |

## 3. 输出规范

| 文件 | 路径规则 | 说明 |
|:-----|:---------|:------|
| `skill.md` | `./skill/{group}/{name}/skill.md` | 技能提示词主体文件 |
| `skill.json` | `./skill/{group}/{name}/skill.json` | 技能配置文件 |

## 4. 七种反模式清单

编写技能提示词时必须逐项扫描，**禁止出现**以下反模式：

| # | 反模式 | 说明 | ✅ 正确做法 |
|:-:|:-------|:------|:------------|
| 1 | **大纲步骤** | 步骤只有标题没有具体内容 | 每个步骤有详细的操作说明 |
| 2 | **无名文件** | 提到"输出文件"但不写文件名 | 明确写出文件名如 `skill.md` |
| 3 | **无路径文件** | 写了文件名但不写保存路径 | 写明完整路径如 `./skill/xxx/skill.md` |
| 4 | **模糊表述** | 使用"适当""合理""酌情"等模糊词 | 使用具体明确的表述 |
| 5 | **占位示例** | 使用示例数据而非真实数据 | 直接使用真实数据和参数 |
| 6 | **套话回退** | 写"如果失败则回退"但不说明怎么回退 | 写清楚具体的回退步骤和方案 |
| 7 | **空话禁止** | 写"禁止出错"等无法执行的禁止项 | 写具体的禁止行为，如"禁止不读提示词就编写" |

## 5. 技能分组分类规范

| 分组 | 说明 | 示例技能 |
|:-----|:------|:----------|
| `agent` | 智能体核心技能 | `innovation_skill`, `write_prompt`, `write_knowledge` |
| `plan` | 规划分析类技能 | `skill_analysis`, `training_planning` |
| `design` | 设计类技能 | `ui_design`, `character_design` |
| `develop` | 开发类技能 | `frontend_development`, `vue_development` |
| `media` | 多媒体类技能 | `audio_creation`, `video_editing` |

## 6. 技能名称命名规范

| 规则 | 说明 | 示例 |
|:-----|:------|:------|
| **小写蛇形** | 全小写，单词间用下划线连接 | `skill_analysis` ✅ / `SkillAnalysis` ❌ |
| **语义清晰** | 名称能体现技能用途 | `svg_graphic_drawing` ✅ / `draw` ❌ |
| **避免后缀冗余** | 不要加 `_skill` 后缀 | `innovation_skill` 是历史遗留，新技能不加 |
| **按功能命名** | 用动词+名词的组合 | `create_skill`, `write_prompt` |
