name: task-decomposer description: 将复杂的用户请求分解为可执行的子任务,识别所需能力,在skills.sh搜索现有技能,并在没有解决方案时创建新技能。当用户提交复杂的多步骤请求、想要自动化工作流程或需要帮助将大型任务分解为可管理部分时,应使用此技能。
任务分解器与技能生成器
此技能帮助将复杂的用户请求分解为可执行的子任务,识别每个任务所需的能力,从开放技能生态系统中搜索现有技能,并在没有现有解决方案时自动创建新技能。
核心工作流程
用户请求 → 任务分解 → 能力识别 → 技能搜索 → 差距分析 → 技能创建 → 执行计划
阶段1:任务分析与分解
接收用户请求时,遵循以下步骤:
步骤1:理解用户意图
分析请求以识别:
- 核心目标:最终目标是什么?
- 涉及领域:需要哪些专业领域?
- 触发机制:一次性、计划性还是事件驱动?
示例分析:
用户输入:"每天早上帮我获取邮件摘要并发送到Slack"
分析:
- 核心目标:自动化的邮件摘要发送到Slack
- 领域:邮件访问、内容摘要、消息传递
- 触发:计划性(每天早晨)
步骤2:分解为原子任务
将复杂任务分解为最小的可执行单元:
任务分解:
- task_id: 1
name: "访问并检索邮件列表"
type: "数据检索"
input: "邮件凭据/会话"
output: "带元数据的邮件列表"
dependencies: []
- task_id: 2
name: "从邮件中提取关键信息"
type: "数据提取"
input: "邮件列表"
output: "结构化的邮件数据"
dependencies: [1]
- task_id: 3
name: "生成邮件摘要"
type: "内容生成"
input: "结构化的邮件数据"
output: "格式化的摘要文本"
dependencies: [2]
- task_id: 4
name: "发送消息到Slack"
type: "消息传递"
input: "摘要文本、Slack webhook/令牌"
output: "传递确认"
dependencies: [3]
- task_id: 5
name: "配置计划执行"
type: "调度"
input: "工作流脚本、计划配置"
output: "活跃的计划任务"
dependencies: [4]
阶段2:能力识别
将每个子任务映射到通用能力分类中的能力类型。
通用能力类型
| 能力 | 描述 | 搜索关键词 |
|---|---|---|
browser_automation |
网页导航、交互、爬取 | browser, selenium, puppeteer, playwright, scrape |
web_search |
互联网搜索和信息检索 | search, google, bing, duckduckgo |
api_integration |
第三方API通信 | api, rest, graphql, webhook, {服务名称} |
data_extraction |
解析和提取结构化数据 | parse, extract, scrape, ocr, pdf |
data_transformation |
转换、清理、变换数据 | transform, convert, format, clean, etl |
content_generation |
创建文本、图像或其他内容 | generate, write, create, summarize, translate |
file_operations |
读取、写入、操作文件 | file, read, write, csv, excel, json, pdf |
message_delivery |
发送通知或消息 | notify, send, email, slack, discord, telegram |
scheduling |
基于时间的任务执行 | schedule, cron, timer, daily, weekly |
authentication |
身份和访问管理 | auth, oauth, login, token, credentials |
database_operations |
数据库CRUD操作 | database, sql, mongodb, query, store |
code_execution |
运行脚本或程序 | execute, run, script, shell, python |
version_control |
Git和代码仓库操作 | git, github, gitlab, commit, pr, review |
testing |
自动化测试和QA | test, jest, pytest, e2e, unit |
deployment |
应用程序部署和CI/CD | deploy, docker, kubernetes, ci-cd, release |
monitoring |
系统和应用程序监控 | monitor, alert, log, metrics, health |
能力识别流程
对于每个子任务:
- 分析任务描述和要求
- 匹配到一个或多个能力类型
- 为技能发现生成搜索关键词
示例:
任务:"发送消息到Slack"
能力:message_delivery
搜索关键词:["slack", "notification", "message", "webhook"]
阶段3:技能搜索
使用Skills CLI在https://skills.sh/搜索现有技能。
搜索流程
对于每个能力需求,使用相关关键词搜索:
# 搜索匹配能力的技能
npx skills find <关键词>
# 示例:
npx skills find slack notification
npx skills find browser automation
npx skills find pdf extract
npx skills find github api
评估搜索结果
当返回结果时:
使用 npx skills add <owner/repo@skill> 安装
owner/repo@skill-name
└ https://skills.sh/owner/repo/skill-name
评估每个结果的:
- 相关性:是否匹配所需能力?
- 完整性:是否覆盖所有需要的功能?
- 质量:是否文档完善且维护良好?
生成能力映射
能力映射:
- task_id: 1
capability: browser_automation
search_query: "browser email automation"
found_skills:
- name: "anthropic/claude-skills@browser-use"
url: "https://skills.sh/anthropic/claude-skills/browser-use"
match_score: high
recommendation: "安装 browser-use 技能"
- task_id: 4
capability: message_delivery
search_query: "slack notification"
found_skills: []
recommendation: "创建新技能:slack-notification"
阶段4:差距分析
识别没有匹配技能的任务:
内置能力(无需技能)
这些能力通常由代理的原生能力处理:
content_generation- LLM的原生文本生成data_transformation- 通过代码进行基本数据操作code_execution- 直接脚本执行scheduling- 系统级cron/调度器配置
所需技能
对于没有内置支持的能力,确定:
- 技能存在:从skills.sh安装
- 技能未找到:创建新技能
阶段5:技能创建
当没有现有技能匹配所需能力时,创建新技能。
技能创建流程
- 定义范围:确定技能应该做什么
- 设计接口:定义输入、输出和使用模式
- 创建SKILL.md:编写技能定义文件
- 添加资源:根据需要包含脚本、参考或资产
技能模板
---
name: {技能名称}
description: {清晰描述技能做什么以及何时使用。用第三人称书写。}
---
# {技能标题}
{简要介绍解释技能的目的。}
## 何时使用
{描述应触发此技能的场景。}
## 先决条件
{列出任何所需的安装、配置或凭据。}
## 使用方式
{带有示例的详细使用说明。}
### 基本使用
```bash
{基本命令或代码示例}
高级使用
{更复杂的示例和选项。}
配置
{任何配置选项或环境变量。}
示例
示例1:{使用案例}
{带代码的分步示例。}
故障排除
{常见问题及解决方案。}
### 初始化新技能
```bash
# 使用skills CLI创建技能
npx skills init <技能名称>
# 或手动创建结构:
# skill-name/
# ├── SKILL.md (必需)
# ├── scripts/ (可选)
# ├── references/ (可选)
# └── assets/ (可选)
阶段6:生成执行计划
将所有信息编译成结构化的执行计划:
执行计划:
title: "{任务描述}"
prerequisites:
- "{先决条件1}"
- "{先决条件2}"
skills_to_install:
- skill: "owner/repo@skill-name"
command: "npx skills add owner/repo@skill-name -g -y"
url: "https://skills.sh/owner/repo/skill-name"
skills_to_create:
- name: "{新技能名称}"
capability: "{能力类型}"
description: "{它做什么}"
execution_steps:
- step: 1
task: "{任务名称}"
skill: "{技能名称 | 内置}"
action: "{要采取的具体行动}"
- step: 2
task: "{任务名称}"
skill: "{技能名称 | 内置}"
action: "{要采取的具体行动}"
verification:
- "{如何验证步骤1成功}"
- "{如何验证步骤2成功}"
任务分解原则
原则1:原子性
每个子任务应是最小的可执行单元,具有清晰的输入和输出。
原则2:独立性
尽量减少任务之间的依赖关系,以允许可能的并行执行。
原则3:可验证性
每个任务应有明确的方法来验证成功完成。
原则4:可重用性
识别可重用模式,并优先创建通用技能。
原则5:单一职责
每个任务应做好一件事。
输出格式
以结构化格式呈现分解结果:
════════════════════════════════════════════════════════════════
📋 任务分解报告
════════════════════════════════════════════════════════════════
🎯 原始请求:
{用户的原始请求}
────────────────────────────────────────────────────────────────
📊 子任务
────────────────────────────────────────────────────────────────
┌─────┬────────────────────────┬───────────────────┬───────────┐
│ ID │ 任务 │ 能力 │ 状态 │
├─────┼────────────────────────┼───────────────────┼───────────┤
│ 1 │ {任务名称} │ {能力} │ 已找到 │
│ 2 │ {任务名称} │ {能力} │ 内置 │
│ 3 │ {任务名称} │ {能力} │ 创建 │
└─────┴────────────────────────┴───────────────────┴───────────┘
────────────────────────────────────────────────────────────────
🔍 技能搜索结果
────────────────────────────────────────────────────────────────
任务1:{任务名称}
搜索:npx skills find {关键词}
找到:owner/repo@skill-name
URL:https://skills.sh/owner/repo/skill-name
任务3:{任务名称}
搜索:npx skills find {关键词}
找到:无匹配技能
操作:创建新技能
────────────────────────────────────────────────────────────────
🛠️ 要创建的技能
────────────────────────────────────────────────────────────────
1. {技能名称}
能力:{能力类型}
描述:{它做什么}
────────────────────────────────────────────────────────────────
📝 执行计划
────────────────────────────────────────────────────────────────
先决条件:
• {先决条件1}
• {先决条件2}
步骤:
1. {行动} 使用 {技能}
2. {行动} 使用 {技能}
3. {行动} 使用 {技能}
════════════════════════════════════════════════════════════════
示例
示例1:工作流自动化
用户请求:
创建一个监控GitHub问题、总结新问题并将通知发布到Discord的工作流
分解:
子任务:
1. 监控GitHub仓库的新问题
能力:api_integration
搜索:"npx skills find github issues"
2. 提取问题内容和元数据
能力:data_extraction
状态:内置(代码)
3. 生成问题摘要
能力:content_generation
状态:内置(LLM)
4. 发送通知到Discord
能力:message_delivery
搜索:"npx skills find discord notification"
5. 配置webhook或轮询触发器
能力:scheduling
状态:内置(系统)
示例2:数据管道
用户请求:
搜索AI研究论文,下载PDF,提取关键发现,并保存到Notion
分解:
子任务:
1. 搜索AI研究论文
能力:web_search
搜索:"npx skills find academic search"
2. 下载PDF文件
能力:browser_automation
搜索:"npx skills find browser download"
3. 从PDF提取文本
能力:data_extraction
搜索:"npx skills find pdf extract"
4. 生成关键发现摘要
能力:content_generation
状态:内置(LLM)
5. 保存到Notion数据库
能力:api_integration
搜索:"npx skills find notion"
最佳实践
- 从技能搜索开始:在创建新技能之前始终检查https://skills.sh/
- 使用具体搜索词:将能力关键词与领域术语结合
- 利用内置能力:不要为代理可以原生完成的事情创建技能
- 创建可重用技能:尽可能设计通用技能
- 充分文档化:新技能应有清晰的使用说明
- 在执行前验证:在执行任务前确认技能安装
- 优雅处理错误:在执行计划中包含备用策略
与find-skills集成
此技能与find-skills技能配合使用以发现现有解决方案:
# 搜索技能生态系统
npx skills find <查询>
# 安装发现的技能
npx skills add <owner/repo@skill> -g -y
# 浏览所有可用技能
# 访问:https://skills.sh/
注意事项
- 在创建新技能之前始终搜索现有技能
- 内置能力(LLM、基本代码)不需要技能
- 技能创建需要用户确认后才能继续
- 复杂工作流可能需要多个技能协同工作