协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
skill-creator【开发与工程】创建和管理 Ethan Agent 技能:起草 SKILL.md、设计触发词、组织 references/scripts 目录结构。当用户要求「创建技能」「写个 skill」「沉淀成技能」「做成技能」「新建能力」时触发。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
帮助用户创建新的 Ethan 技能。技能是 Ethan 的可扩展能力单元,通过 SKILL.md 定义触发条件和执行指令。
~/.ethan/skills/<skill-name>/
├── SKILL.md # 必需:技能定义文件
├── references/ # 可选:大段参考文档、API 规范等
│ └── api-details.md
└── scripts/ # 可选:辅助脚本(Python/Shell/Node)
└── helper.py
~/.ethan/skills/ 下(自动加载,无需重启)ethan/defaults/skills/ 下---
name: my-skill-name
description: "一句话说明技能做什么 + 什么时候应该被触发。这是语义匹配的主要依据。"
trigger: "关键词1|关键词2|英文词|中文短语"
version: 0.1.0
fast_path: false
---
# 技能标题
正文:告诉 Ethan 拿到这个技能后该如何执行任务。
| 字段 | 必需 | 说明 |
|---|---|---|
name | ✅ | 技能 ID,与目录名一致,kebab-case |
description | ✅ | 最重要的字段——语义匹配的主要依据 |
trigger | 推荐 | 管道分隔的关键词/短语,用于快速精确匹配 |
version | 可选 | 语义化版本号 |
fast_path | 可选 | true 表示高优先级匹配,适用于通用策略类技能 |
description 决定技能能否被正确匹配,必须同时包含:
好的例子:
description: "通过 API 查询实时航班信息和票价。当用户问「查机票」「航班价格」「飞北京多少钱」时使用。"
差的例子:
description: "航班查询工具" # 太短,缺少场景描述
trigger 用于关键词快速匹配(优先于语义搜索):
| 分隔trigger: "查机票|航班查询|flight|机票价格|飞哪里|订机票|航班|票价"
SKILL.md 正文是 Ethan 执行任务时的指令手册:
references/当以下内容太长(>100 行)不适合内联在 SKILL.md 时,拆到 references/:
在 SKILL.md 中用简短描述 + 指引引用:
详细 API 参数见 `references/api-details.md`。
Ethan 会按需用 skill_read 工具加载 references 文件。
当技能需要执行复杂逻辑、数据处理或 API 调用时:
shell 工具执行在 SKILL.md 中说明调用方式:
执行分析脚本:
\`\`\`bash
python3 ~/.ethan/skills/my-skill/scripts/analyze.py --input "$FILE"
\`\`\`
问用户:
# 用 file_write 创建 SKILL.md
# 路径:~/.ethan/skills/<skill-name>/SKILL.md
技能名规则:
flight-query、weekly-report)skill_list 检查)按上述格式填写 frontmatter + 正文。正文重点写:
调用 skill_list 确认新技能出现在列表中
用一个真实的用户查询测试,看技能是否被正确匹配到。如果匹配不上:
---
name: example-skill
description: "简短说明做什么。当用户说「某某」「某某」时触发。"
trigger: "关键词1|关键词2|关键词3"
---
# 技能标题
## 使用场景
描述何时触发此技能。
## 执行步骤
1. 第一步做什么
2. 第二步做什么
3. 输出什么格式的结果
## 注意事项
- 约束条件
- 常见陷阱