Files
Popiai-skill/content-creation/skill-creator/SKILL.md
T

341 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: skill-creator
display-name-zh: 技能创建
summary-cn: 把当前对话流程保存成可复用的技能
summary-en: Save current flow as reusable skill
description: |
创建新 Skill、修改已有 Skill、将当前对话流程保存为可复用的 Skill,
以及引导用户从市场安装 Skill、理解目录结构。
触发词:创建skill、修改skill、保存为skill、把这个保存下来、
变成技能、固化流程、记住这个做法、下次还想这样做、
安装skill、下载skill、skill市场、管理skill、
create skill、save as skill、turn this into a skill、
make this reusable、update skill、install skill、setup skill。
Also trigger when the user reviews a completed creative output and expresses intent
to repeat the same process with different inputs.
version: 2.0.1
tags: [Tools, Meta, Skill]
tags-cn: [工具, 元, 技能]
guide-prompt: 帮我使用它来创建一个新的技能。首先询问我这个技能应该做什么。
guide-prompt-en: Help me use it to create a new skill. First ask me what this skill should do.
exported-by: MiniMax-hub
---
# Skill Creator & Manager
创建、修改、安装和管理 Skill。本应用有一个 orchestratormedia-agent
和多个子 agent**image**、**video**、**audio**、**editing**。
大部分 Skill 协调这些 agent 完成创意产出。
## 目录结构
| 目录 | 用途 | 谁管理 |
|------|------|--------|
| `~/.hub/skills/` | **市场安装的 Skill** | 应用自动管理,不要手动修改 |
| `~/Movies/Hub/skills/` | **用户创建/编辑的 Skill** | 用户完全控制 |
用户目录优先级更高:同名 Skill 时用户目录的版本生效。
## 从市场安装 Skill
引导用户通过应用内的 Skill 广场页面操作:
1. 打开应用 → 进入「Skill 广场」页面
2. 浏览 Market tab 中的可用 Skill
3. 点击「安装」按钮
4. 安装完成后在 Skill 列表中启用
安装的 Skill 存放在 `~/.hub/skills/`,由应用管理,支持自动更新。
---
## 创建 Skill 流程
```
1. Capture Intent -- 理解工作流
2. Write SKILL.md -- 编写 Skill
3. Review & Iterate -- 用户反馈循环
4. Validate -- 触发测试 + 工作流走查
5. Save & Reload -- 保存到用户目录 + 触发加载
6. Iterate (optional) -- 基于实际使用改进
```
### 三种使用场景
**场景 A:保存当前对话流程**
对话中已经完成了一个工作流,用户想把它固化为 Skill 以便复用。
→ 从对话历史提取工作流,进入 STEP 1。
**场景 B:从零创建新 Skill**
用户有一个想法但还没有执行过,想直接创建 Skill。
→ 通过问答了解需求,进入 STEP 1(从头创建分支)。
**场景 C:修改已有 Skill**
用户想调整一个已存在的 Skill(改步骤、改参数、改触发词等)。
→ 读取现有 SKILL.md,了解修改意图,直接进入 STEP 2 修改。
### 什么值得保存为 Skill
不是每个工作流都值得保存。至少满足以下两条时才建议保存:
- **复杂度**:3 步以上、涉及多个 agent、或有分支逻辑
- **可复用**:用户可能用不同输入重复做同样的事
- **隐性知识**:包含不显而易见的技巧——模型选择、参数调优、
失败时的应对方法、创意技法
- **纠错历史**:用户在流程中做了修正,这些修正适用于未来的执行
如果工作流是简单的一次性操作(如"生成一张图"),建议用户下次直接描述即可。
---
## STEP 1: Capture Intent
### 场景 A:从对话历史提取
对话中很可能已包含完整工作流。先从对话历史提取,不要问已有答案的问题。
#### 获取对话历史
如果当前上下文不包含完整工作流(发生在之前的会话),
通过 agent 自身的对话历史能力查询之前的会话记录。
**Skill 嵌套**:Skill 不能嵌套调用其他 Skill。如果对话历史中有 Skill 调用,
直接读取被引用 Skill 的 SKILL.md 了解它做了什么,不要尝试重新调用。
#### 从对话历史中提取:
1. **发生了什么**:使用了哪些能力,什么顺序
2. **媒体流转**:输入(音频、图片、文本)→ 中间产物 → 最终输出
3. **创意目的**:核心意图
4. **用户做的关键决策**:模型选择、参数调整、风格方向
5. **出错并修正的地方**:失败、重试、参数变更——这些是最有价值的知识
6. **用户没有改动的地方**:默认值正常工作也是信息,说明这些参数可以保持灵活
#### 确认理解
> "我从对话中提取了这些:[摘要]。这样对吗?"
如果用户纠正或提供自己的描述,以用户的为准。
### 场景 B:从零创建
如果没有现有工作流,通过问答了解需求:
- 输入是什么?最终输出是什么?
- 大致的步骤顺序?
- 有特定的模型或技术要求吗?
- 有什么约束(比例、时长、分辨率、风格一致性)?
- 最难的部分是什么——agent 在哪里容易出错?
### 场景 C:修改已有 Skill
1. 读取目标 Skill 的 SKILL.md
2. 了解用户想修改什么
3. 直接跳到 STEP 2 进行修改
---
## STEP 2: Write the SKILL.md
### 目录结构
```
skill-name/
├── SKILL.md (必须 — Skill 定义)
├── scripts/ (可选 — 可复用脚本)
└── references/ (可选 — 按需加载的参考文档)
```
### 三层加载机制
1. **元数据**name + description)— 始终在 agent 上下文中,用于触发匹配
2. **SKILL.md 正文** — Skill 触发后加载,控制在 500 行以内
3. **附带资源** — 按需加载。大文档放 `references/`,可执行脚本放 `scripts/`
### Frontmatter
必填字段:
```yaml
---
name: my-skill # kebab-case,和目录名一致
description: |
详细描述,第一行是摘要。
包含触发词,方便 agent 匹配。
触发词包括:关键词1、关键词2。
summary-cn: 中文摘要,不超过二十五个汉字
summary-en: English summary, up to thirty words
version: 0.1.0
tags: [Video, Creative]
trigger-words: [关键词1, 关键词2, keyword1, keyword2]
---
```
| 字段 | 必填 | 说明 |
|------|------|------|
| `name` | ✅ | kebab-case,和目录名一致 |
| `description` | ✅ | 详细描述 + 触发词(200-500 字符) |
| `summary-cn` | ✅ | 中文 UI 摘要(≤25 汉字) |
| `summary-en` | ✅ | 英文 UI 摘要(≤30 词) |
| `version` | ✅ | 语义化版本 |
| `tags` | 可选 | 分类标签 |
| `trigger-words` | 可选 | 触发词列表 |
| `allowed-tools` | 可选 | 依赖的 MCP 工具名 |
#### Description 写作要点
- **长度**200-500 字符
- **语气**:描述用户意图,不是实现细节
- **覆盖**:包含多种表述(正式/口语/中英文)
- **边界**:和相近 Skill 有歧义时,加简短区分说明
- **反模式**:不要在 description 里写实现步骤
### 正文结构
1. `# Skill Name` — 标题
2. 简介段 — 何时使用、涉及什么媒体类型
3. 分步骤 — `## STEP N: 步骤名`
使用 `references/SKILL-TEMPLATE.md` 作为起始模板。
### 写作原则
#### 描述任务,不描述路由
- Good: "生成一张 16:9 的主角肖像画——红裙年轻女性,电影感光线"
- Bad: "调用 image agent,使用 nano_banana 模型生成..."
#### 只在用户明确指定时提及模型
用户说"用 Kling 生成视频"就记录。agent 自动选的默认值不要写死。
#### 解释约束背后的原因
- Good: "最终合成前去掉对口型片段的音轨,因为合成步骤会加原曲,重复音轨会造成叠音"
- Bad: "必须用 `-an` flag"
#### 捕捉创意流程,不是实现细节
- Good: "分析音乐的情绪变化、节奏转折和人声段落"
- Bad: "调用 `read_media`,参数 question 设为..."
#### 批量处理,不要交替
- Good: "一次生成所有场景图,然后一次生成所有视频"
- Bad: "每个片段:先生图,再生视频,然后下一个"
#### 在创意决策点加用户确认
在高成本操作(视频生成、最终合成)前加确认步骤。不要每个小步骤都确认。
#### 编码用户的纠错,不只是成功路径
重试和修正是最有价值的知识。
#### 从具体中提炼通用
- Good: "分析音频确定段落边界"(通用)
- Bad: "在 0:45, 1:30, 2:15 处分割"(特定文件)
#### 所有输出都在会话项目目录
不要硬编码输出路径。使用工具返回的文件路径进行后续操作。
#### 正文 500 行以内
超出部分放 `references/`,可执行模式提取到 `scripts/`
---
## STEP 3: Review & Iterate
展示完整 SKILL.md 给用户:
> "这是我编写的 Skill,看看有什么需要调整的?"
常见修改:调整步骤顺序、改模型选择、调参数灵活度、加边界情况处理、
改触发词、去掉过度具体的指令。
---
## STEP 4: Validate
### 4a: 触发测试
1. **写 6 个测试查询** — 3 个应该触发,3 个不应该触发
2. **自测**:只看 name 和 description,问自己"会触发吗?"
3. **给用户看**:展示测试查询和预期结果
### 4b: 工作流走查
用一个不同于原始对话的假设场景,逐步走查:
- [ ] **完整性**:每一步的输出是下一步需要的输入吗?
- [ ] **通用性**:有没有步骤绑定了原始对话的具体内容?
- [ ] **确认点**:用户确认在高成本操作之前吗?
- [ ] **失败路径**:生成失败时 Skill 有指导吗?
- [ ] **批量策略**:同类资源是批量处理还是逐个交替?
---
## STEP 5: Save & Reload
用户确认后保存到用户 Skill 目录:
### 1. 创建目录并写入
```bash
mkdir -p ~/Movies/Hub/skills/<skill-name>
```
将 SKILL.md 保存到 `~/Movies/Hub/skills/<skill-name>/SKILL.md`
如有 references 或 scripts,创建对应子目录。
### 2. 验证引用完整
保存后确认 SKILL.md 中引用的所有文件都存在:
```bash
grep -oE '(references|scripts)/[^\s`"]+' ~/Movies/Hub/skills/<skill-name>/SKILL.md | \
while read f; do
[ -f ~/Movies/Hub/skills/<skill-name>/"$f" ] || echo "MISSING: $f"
done
```
### 3. 触发 Skill 重新加载
保存完成后,调用 `hub_reload_skills` 工具触发 OpenCode 重新加载 Skill 列表。
如果当前有活跃会话,用户会看到一个通知条提示确认重启;如果没有活跃会话,重载会自动静默完成。
### 4. 告知用户
- Skill 已保存到 `~/Movies/Hub/skills/<skill-name>/`
- 已触发重新加载,新 Skill 可在当前或下次会话中使用
- 列出 Step 4a 的 3 个触发测试查询作为示例
---
## STEP 6: Iterate & Improve (Optional)
Skill 的第一版很少是最好的。实际使用后再来改进。
### 观察信号
| 信号 | 含义 | 修复 |
|------|------|------|
| Agent 没触发 Skill | description 缺少用户的说法 | 扩充触发词 |
| 触发了但执行差 | 指令不清晰或有歧义 | 澄清步骤,加示例 |
| 不该触发时触发了 | description 太宽泛 | 加边界说明 |
| Agent 每次都写类似脚本 | 重复工作未打包 | 提取到 `scripts/` |
| 用户每次都改同一步 | 约束不够紧 | 加明确指导和原因 |
| Agent 做了多余的事 | 指令导致无效工作 | 删除或简化 |
### 改进流程
1. 收集 2-3 次使用的证据
2. 诊断:触发问题(description)、执行问题(正文)、还是缺资源?
3. 精准修复:只改有问题的部分
4. 重新验证(跑 Step 4 checklist
5. 修改后同样调用 `hub_reload_skills` 触发重新加载