# 技能提示词编写

## 执行步骤

### 步骤1：读取相关常识知识
使用 `read_knowledge` 读取以下常识知识，了解领域规范和标准：
- 使用 `read_knowledge knowledge_name='skill_prompt_standards'`
- 使用 `read_knowledge knowledge_name='skill_naming_conventions'`
- 使用 `read_knowledge knowledge_name='prompt_quality_criteria'`

### 步骤2：读取工作提示词
使用 `read_work` 读取以下工作提示词，按规范流程执行：
- 使用 `read_work work_name='write_skill'`

### 步骤3：读做事提示词
使用 `read_work work_name='write_skill_prompt'` 读取 skill.md 编写规范，使用 `read_work work_name='write_skill_json'` 读取 skill.json 编写规范。

### 步骤2：参考同类
使用 `search_dir dir='./skill/{分类}' pattern='*'` 查看同类技能目录，使用 `ls` 查看目录内容，了解同类技能的写法和粒度。留意上下游依赖。

### 步骤3：分析需求
明确四要素：使用场景、输入条件、输出产物、依赖工具。

### 步骤4：创建目录
使用 `make_dir dir='./skill/{分类}/{技能名}'` 创建技能目录。

### 步骤5：写skill.md
按模板逐章编写，使用 `write_text` 写入 `./skill/{分类}/{技能名}/skill.md`。

模板结构：
```
# 技能名称

## 执行步骤
### 步骤N：步骤标题
> 步骤标题 = 为什么要产出这个部分
1. 具体操作1
2. 具体操作2

**输出**: 产出物说明
**失败**: 失败处理说明

## 输出成果
1. 成果1

## 禁止行为
- ❌ 禁止...
```

> ⚠️ skill.md 中不写"基本信息"章节，所有元数据（名称、描述、工具等）写在 skill.json 中。

### 步骤6：写skill.json
使用 `read_work work_name='write_skill_json'` 读取规范，使用 `write_text` 写入 `./skill/{分类}/{技能名}/skill.json`。

skill.json 必须包含以下字段：
```json
{
  "name": "技能标识名（小写蛇形）",
  "title": "技能中文标题",
  "description": "一句话描述，50字以内，含用途和触发关键词",
  "version": "1.0.0",
  "prompt_file": "./skill.md",
  "tools": ["工具名1", "工具名2"]
}
```

关键规则：
- **tools 数组必须填写该技能依赖的所有工具名称**，不能为空数组
- 工具名来自系统已有的工具列表（通过 `get_tool_list` 查询）
- description 必须包含触发关键词

### 步骤7：检查
- 五要素是否齐全（描述、步骤、输出、失败）
- 是否有7种反模式（大纲步骤、无名文件、无路径文件、模糊表述、占位示例、套话回退、空话禁止）
- 字数是否在500-1000字范围内
- skill.md 中是否没有"基本信息"章节
- skill.json 中 tools 数组是否填写了依赖的工具名
- skill.json 是否可通过 JSON.parse 校验
- description 是否含触发关键词且50字以内

### 步骤8：赋予技能
使用 `endow_skills` 将技能赋予目标智能体。

### 步骤9：通知完成
使用 `notify_user` 告知技能创建完成。

## 输出成果
1. skill.md — 技能提示词文件
2. skill.json — 技能配置文件

## 失败回退
- **目录已存在**：使用 `ls` 确认已有文件，决定是否覆盖
- **技能名重复**：与需求方确认新名称
- **技能赋予失败**：检查智能体是否存在、技能是否已创建成功

## 禁止行为
- ❌ 禁止不读提示词就编写
- ❌ 禁止在 skill.md 中写"基本信息"章节（元数据在 skill.json 中）
- ❌ 禁止步骤中缺少具体工具和参数
- ❌ 禁止使用"根据需要处理"等模糊表述
- ❌ 禁止 skill.json 的 tools 留空数组（应填写具体工具名）
- ❌ 禁止 skill.json 中包含注释（// 或 /* */）
