Skill Builder

Dev Tools

技能构建工厂(Meta-Skill Factory)。使用苏格拉底诘问法 + 第一性原理分析,通过多轮对话迭代细化需求,帮助用户从零到一构建一个完整的新技能。当用户说"创造一个技能"、"创建一个 skill"、"帮我设计一个 xxx 技能"、或表达任何需要构建新技能的需求时激活。

Install

openclaw skills install socratic-skill-builder

Skill Builder — 技能构建工厂

工作流程

第 0 步:理解原始需求

用一句话复述用户的需求,确认理解正确,并提出第一个元问题:

"你想创建一个用于 [需求简述] 的技能。在开始细化之前,我需要先了解这个技能的复杂度。请回答:做一个能做 X 的技能,它大概需要多长时间?如果做出来,你预计会多久用一次?"

根据用户回答,评估复杂度并告知对话轮数:

复杂度判断标准对话轮数示例
🌱 简单单一步骤、单一工具、无分支逻辑2~3 轮发送消息、格式化文本
🌿 中等2~4 个步骤、需要判断分支、有外部依赖3~5 轮爬虫+摘要、邮件处理
🌳 复杂多步骤、多工具、长链条、需容错5~8 轮全栈开发、自动化工作流
🌲 超复杂需架构设计、跨系统集成、不确定性强8 轮以上商业智能系统、推荐引擎

第 1 步:第一性原理拆解(第一轮)

"让我们从最底层开始。做任何技能之前,最重要的问题是:它解决的是什么根本问题?

请回答:

  1. 这个技能要替代或扩展你现在的什么手动工作
  2. 如果这个技能完美运行,你第一次用它时会输入什么?输出什么?
  3. 它的失败模式是什么?哪些情况它不应该做?"

第 2 步:触发条件映射(第二轮)

"好,现在我们知道这个技能做什么了。接下来要精确界定何时触发

请描述:一个用户可能会怎样表达这个需求?(比如:用户会说'...'、'...'、'...')"

整理触发词,映射到 Skill 的 description 字段。

第 3 步:工具与依赖分析(第三轮)

"现在来拆解执行路径。这个技能运行时,会用到哪些工具或系统?

请列出:

  1. 它需要调用哪些 API/工具?(如:搜索、文件读写、数据库、网页抓取…)
  2. 它需要输入什么数据?这些数据从哪里来?
  3. 是否有外部依赖(需要用户提供 API Key、账号等)?"

第 4 步:输出与边界定义(第四轮)

"接下来定义输出边界。技能完成工作后,结果呈现为什么形式?

请回答:

  1. 输出是:文件文字结构化数据?还是直接执行动作
  2. 是否有格式要求?(如:必须是什么文件类型、表格格式、markdown 结构…)
  3. 技能在什么条件下应该主动说'做不到'?"

第 5 步:错误处理与容错(第五轮)

"我们已经定义了正常路径。现在来思考异常情况

请回答:

  1. 如果外部 API 超时或返回错误,技能应该如何优雅降级
  2. 如果用户输入了完全无法处理的内容,应该返回什么?
  3. 是否有敏感操作需要二次确认(如:删除、发送、付费)?"

第 6 步:实现路径确认(第六轮)

"好的,逻辑框架已经完整。现在来做实现决策

请回答:

  1. 这个技能主要是让我(AI)调用工具自动完成,还是生成内容/代码让你自己执行
  2. 是否有参考文档需要我提前学习?(如:API 文档、模板文件)
  3. 你希望技能完成后是立即可用,还是留有可配置参数让你自己调整?"

第 7 步:命名与打包(第七轮)

基于以上所有对话,为技能生成:

  1. 候选名称(2~3 个选项,供用户挑选)
  2. SKILL.md 草稿(完整内容)
  3. 目录结构(需要哪些 scripts/references/assets)
  4. 一句话描述(用于 ClawHub 发布)

"根据我们的对话,我为这个技能起了几个名字,请选一个:

  • xxx — 强调...
  • xxx — 强调... 选好后我生成完整技能包。"

第 8 步:确认与收尾(最终轮)

生成完整技能后,展示:

  • 完整的 SKILL.md
  • 所需脚本/文件清单
  • 下一步操作指引

"✅ 技能已构建完成! 请检查以上内容:

  • 如果满意,我可以将它安装到你的 workspace 立即使用
  • 如果需要调整,告诉我具体哪里改
  • 如果你想发布到 ClawHub,告诉我你的 token"

复杂度评估算法

complexity_score = 0

# 按以下维度打分(每项 0~2 分)
dimensions = {
    "步骤数量": 0,       # 1步=0, 2-3步=1, 4步+=2
    "外部依赖": 0,        # 无=0, 1个=1, 2个+=2
    "分支判断": 0,        # 无=0, 少量=1, 复杂=2
    "容错需求": 0,        # 无=0, 需要=1, 复杂=2
    "状态管理": 0,        # 无状态=0, 简单=1, 复杂=2
}

total = sum(dimensions.values())
if total <= 3: complexity = "简单"
elif total <= 6: complexity = "中等"
elif total <= 9: complexity = "复杂"
else: complexity = "超复杂"

苏格拉底问题库

详见 references/socratic-questions.md(按技能类型分类的问题模板)

第一性原理分析框架

详见 references/first-principles.md(拆解技能本质的系统框架)

复杂度评估矩阵

详见 references/complexity-matrix.md(评估量表与轮数对照表)