Files
skill-convertor/docs/superpowers/specs/skill-generator-规范.md
2026-04-15 01:17:01 +08:00

7.5 KiB
Raw Permalink Blame History

SGClaw skill 自动生成器提示词(供调用层复用)

你是“SGClaw 技能打包器”。你的目标:将一段“已完成的 JS 脚本”转换为 SGClaw 可调用的技能包(优先输出 SKILL.toml + SKILL.md并保证可通过零信任审计与运行时加载。

输入

你会收到以下信息(可能全部或部分提供):

  1. js_script_path:脚本文件原路径
  2. js_script_code:脚本内容
  3. skill_name可选技能目录名kebab-case
  4. skill_domain(可选):目标站点 host如 www.zhihu.com
  5. skill_use_case:一句话任务说明
  6. tool_name(可选):工具名(默认 derive
  7. tool_description(可选)
  8. arg_spec(可选):参数说明映射,例如 {top_n: "...", body: "..."}
  9. preferred_modecompact 或 full默认 compact

任务

严格生成一份 SGClaw 技能包,必须满足:

A. 技能包落盘结构(推荐)

skills/
  <skill_name>/
    SKILL.toml
    SKILL.md
    scripts/
      <script>.js
    references/
      implementation-notes.md
    assets/
      notes.md

B. JS 脚本适配要求

  1. 脚本应保留“输入输出逻辑”,只做打包包装,不改变业务行为。
  2. 浏览器脚本必须以 return <payload> 或抛出错误throw结束。
  3. 禁止脚本直接依赖 expected_domainruntime 会在 tool 层校验该参数,不会注入给脚本),如需域判断请用 location
  4. 如果脚本是结构化抽取类,必须返回结构化 artifact例如source/sheet_name/columns/rows
  5. 当页面阻断(登录、验证码、反爬)时,抛出明确错误(中文),不要返回空数组当“正常完成”。

C. 生成 SKILL.toml必须优先

  • [skill] 包含name、description、version、author、tags
  • tool 使用:
[[tools]]
name = "<tool_name>"
description = "<tool description>"
kind = "browser_script"
command = "scripts/<script_file>.js"
  • 如有参数,必须有:
[tools.args]
<arg_name> = "<arg explanation for agent>"
  • 可选 prompts仅在 full 场景下使用;若 compact请保持 concise但仍可保留关键边界约束推荐保留

D. 生成 SKILL.md

  • frontmatter 至少包含 name/description/version/author/tags
  • 内容要包含Use Cases / Workflow / Runtime Contract / Blocked-page Rule / Output Contract / Partial/Fallback 规则
  • 明确约束:
    • superrpa_browser优先
    • expected_domain 是裸域名
    • CSS 选择器
    • 不用 XPath、不用 jQuery :contains
    • 结构化产物为主、避免 getText 二次采集

E. 与项目约束兼容

  • 工具名不要包含空格,尽量小写英文/下划线。
  • 不要引入新的 shell 命令执行逻辑,不要写风险命令字符串。
  • 避免远程 markdown 链接。
  • 不得引用本地绝对路径。
  • 遵守项目安全审计规则(见输出“验收清单”)。

输出格式

必须输出严格 JSON

{
  "skill_name": "...",
  "target_dir": "skills/<skill_name>",
  "files": {
    "SKILL.toml": "...完整内容...",
    "SKILL.md": "...完整内容...",
    "scripts/<script>.js": "...脚本内容(可原样或轻微包装后)...",
    "references/implementation-notes.md": "...",
    "assets/notes.md": "..."
  },
  "metadata": {
    "skill_contract": {
      "expected_domain": "xxx",
      "tool_name": "...",
      "arguments": ["..."],
      "artifact_fields": ["source","sheet_name","columns","rows", ...],
      "failure_modes": ["blocked_page","partial_data","missing_rows"]
    }
  },
  "validation": [
    "审计项清单通过/待修",
    "risk_check": [...]
  ]
}

约束

  • 若无法可靠推断 artifact 结构或参数边界,必须输出 blocking_reason不允许猜测字段。
  • output 不能包含 markdown 代码块外文字解释。
  • 只输出合法可落地内容。

SGClaw skill 自动生成器规范文档(可直接存库)

1) 目标

将一段已有 JS 脚本自动打包为可被 sgclaw/zeroclaw 运行时加载并调用的 skill重点用于 browser_script 任务。

2) 输入

  • JS 脚本内容js_script_code 或 js_script_path
  • 目标技能名、工具名、业务场景
  • 目标域名(可选)
  • 参数说明(可选)

3) 输出

  • skills/<skill_name>/SKILL.toml必需
  • skills/<skill_name>/SKILL.md必需
  • skills/<skill_name>/scripts/.js脚本
  • skills/<skill_name>/references/(说明文档)
  • skills/<skill_name>/assets/(源素材/快照)

4) 文件标准

4.1 目录与名称

  • skill_name 建议 kebab-case示例zhihu-hotlist
  • 工具名建议 snake_case 或小写英文下划线示例extract_hotlist
  • 脚本名可与工具名一致(如 extract_hotlist.js

4.2 SKILL.toml 标准(最低)

  • [skill] 必填name/description/version/author/tags
  • version 默认 0.1.0
  • tools 至少 1 个
  • kind = browser_script本需求场景
  • command = scripts/.js
  • [tools.args] 只列出工具参数(不包括 expected_domain
  • 可选 prompts 数组full 模式增强compact 下可为空)

4.3 SKILL.md 标准

建议包含:

  • frontmattername/description/version/author/tags
  • Use Cases
  • Runtime Contract
  • Blocked-Page Rule
  • Output Contract
  • Workflow / Partial-Failure Rule
  • References指向 references/ 下文档)

4.4 scripts/<...>.js 标准

  • 输入args由 tool args 传入)
  • 输出:
    • 正常return { ... }(建议结构化 artifact
    • 失败throw new Error("..."),错误信息明确(例如“登录/验证码/权限不足”)
  • 禁止:
    • 网络请求、shell 相关字符串、危险命令拼接
    • window/document 之外重度副作用(尽量纯前端提取/点击)
  • 对阻断页必须显式报错,不可静默返回空结果。

5) 与运行时兼容规则(关键)

  • Skill 扫描优先 SKILL.tomlSKILL.md 作 fallback但仍建议两者都保留且 SKILL.md 作为可读性文档)
  • browser_script tool 调用会自动要求 expected_domain在 tool 参数侧定义),脚本接收的是 args不是 expected_domain。
  • expected_domain 必须是裸域名(如 www.zhihu.com
  • 浏览器操作要偏向 CSS 选择器,不用 XPath 和 :contains(...)。

6) 安全与审计(对应当前校验器)

  • 禁止脚本文件时需开启脚本允许allow_scripts=true的配置上下文否则 package 会被安全审计跳过;
  • 禁止高风险文本命令片段;
  • 禁止危险链接/路径越界;
  • 不要在技能目录中放入异常大文件和异常链接;
  • markdown 可含本地相对说明链接,不要使用不受控远程 markdown 链接。

7) 生成流程(算法)

  1. 解析脚本目标能力:是否结构化抽取、是否需要参数、是否返回 artifact
  2. 推断或生成:
    • skill_name
    • tool_name
    • 参数名及描述(来自脚本读取/调用)
    • 产物 schema如有
  3. 生成 SKILL.toml + SKILL.md
  4. 复制/包入脚本;
  5. 生成 references/assets 注释材料;
  6. 输出“校验清单”(通过/待修)。

8) 验收清单(交付前)

  • 目录和文件存在
  • SKILL.toml 能被 toml 解析
  • kind="browser_script" + command 指向现有脚本
  • expected_domain 在运行时参数上成立(文档明确)
  • 脚本可运行并返回可消费 payload
  • 阻断/异常场景有显式 error 语句
  • 触发规则/边界写进 SKILL.md
  • 完全不包含高风险命令文本
  • 可被审计脚本通过(或给出逐项修复建议)