SuperAPI AI 工具集

skill-creator

智能体与模型

查看项目

更新于 10-16 11:36

技能介绍

用途

skill-creator 用于搭建新的技能(skill)项目骨架。当你需要构建一个可复用的工作流,或将某个新 API 封装为技能时,可以使用它生成合法的 frontmatter、规范的目录结构和一份起始版 SKILL.md。

核心原则

简洁优先:上下文窗口是系统提示、技能、对话历史和推理过程共享的资源,SKILL.md 中每一行都与其他内容竞争空间。只补充你原本不知道的内容——不要记录系统提示中已可见的工具参数,也不要为可以自行推理的事情规定逐步流程。重点放在领域知识、解读指南、决策框架和注意事项上。

渐进式披露:技能分三个层级加载。

  • 始终在上下文中——名称、emoji 和描述会出现在每次对话的 <available_skills> 中,用于决定激活哪个技能,描述必须是一个强触发条件。
  • 激活时——当你判断技能相关时,通过 read_file 加载完整的 SKILL.md 主体,工作流、指南和决策树都放在这里。
  • 按需加载——scripts/、references/ 和 assets/ 只在明确需要时加载,重内容放在这里而非主体中。

因此应保持 SKILL.md 主体精简(少于 500 行),详细 API 文档放入 references/,自动化放入 scripts/。主体应是开始工作所需的内容,而不是百科全书。

自由度:根据任务脆弱程度匹配指令的具体程度。

  • 高自由度(文本指导)——当存在多种有效方法时,用自然语言说明做什么和为什么,而非逐步说明怎么做。
  • 中自由度(伪代码 + 参数)——当存在首选模式但细节可变时,描述方法及关键参数。
  • 低自由度(scripts/ 中的脚本)——当操作脆弱、需要精确语法或是重复的模板代码时,将代码放入独立脚本执行,而非加载到上下文中。

默认假设:你已经足够聪明,只补充你原本没有的上下文。

技能结构

一个技能目录包含:

  • SKILL.md(必需):frontmatter + 指令,激活时加载到上下文。
  • scripts/(可选):可执行代码,通过 bash 运行,不加载到上下文;用于脆弱操作、精确语法、模板代码。
  • references/(可选):按需加载的文档,通过 read_file 加载;用于详细 API 文档、长指南、查找表。
  • assets/(可选):模板、图片、数据文件,不加载到上下文,用于输出。

创建技能的步骤

第 1 步:理解需求。在搭建前先弄清:构建什么能力(API 集成、工作流自动化、知识领域)?什么触发它(这将成为描述)?什么自由度?需要哪些依赖(API 密钥、二进制、Python 包)?例如:“我想生成图表”对应带脚本的低自由度绘图技能;“帮我思考交易策略”对应高自由度的知识技能;“集成 Binance API”对应带环境要求和参考文档的 API 技能。

第 2 步:搭建骨架。使用 init 脚本:

python skills/skill-creator/scripts/init_skill.py my-new-skill --path ./workspace/skills

带资源目录:

python skills/skill-creator/scripts/init_skill.py api-helper --path ./workspace/skills --resources scripts,references

带示例文件:

python skills/skill-creator/scripts/init_skill.py my-skill --path ./workspace/skills --resources scripts --examples

第 3 步:规划可复用内容。写作前先决定内容归属:SKILL.md 主体放每次激活都需要的核心指令、决策树、解读指南;scripts/ 放必须严格按原样运行的代码;references/ 放偶尔需要的详细文档;assets/ 放输出模板、图片、配置。

第 4 步:编写 SKILL.md。先规划内容——frontmatter 触发条件、主体结构、自由度。然后更新 frontmatter(描述是关键触发条件,添加依赖要求,设置 emoji)。主体为代理而非用户而写,用短段落代替密集列表,给出明确观点。主体设计模式包括:基于工作流、基于任务、参考/指南、基于能力。

第 5 步:通过 skill_manage 创建/更新。skill_manage 是主要工作流,它会验证 frontmatter、运行安全扫描并自动重载缓存。不要用 write_file 作为主要路径。

创建新技能:

skill_manage(action="create", name="my-skill", content="---\nname: my-skill\n...")

修补现有技能(适用于针对性修改):

# 先用 read_file 获取精确空白和内容
skill_manage(action="patch", name="my-skill", old_string="exact old text", new_string="new text")

完全重写现有技能:

skill_manage(action="edit", name="my-skill", content="---\nname: my-skill\n...")

已知注意事项:create 在技能已存在时会报错,改用 edit 或 patch;edit/patch 在技能不存在时会报错,先用 create;patch 要求 old_string 精确匹配(含空白),修补前始终 read_file;execute() 必须接受 **kwargs,若出现 unexpected keyword argument 'action',是工具实现的 bug(修复:def execute(self, **kwargs))。仅在 skill_manage 不可用时,回退使用 write_file + skill_refresh()。

第 6 步:验证。

python skills/skill-creator/scripts/validate_skill.py ./workspace/skills/my-new-skill

使用 skill_manage 后验证是可选的(已自动重载),但运行它可及早发现 schema 问题。

Frontmatter 格式

frontmatter 使用 metadata.starchild 存放 Star Child 特定字段:

---
name: skill-name
version: 1.0.0
description: "What this skill does. Use when [specific trigger scenarios]."

metadata:
  starchild:
    emoji: "🔧"
    skillKey: skill-name
    requires:
      env: [API_KEY_NAME]
      bins: [python]
      anyBins: [curl, wget]
    install:
      - kind: pip
        package: pandas
      - kind: apt
        package: curl
        bins: [curl]

user-invocable: true
disable-model-invocation: false
---

字段说明:name(顶层,必需,技能标识,小写连字符格式);version(顶层,必需,语义化版本,发布必需,务必包含);description(顶层,必需,触发文本);emoji(metadata.starchild,可选,显示 emoji);skillKey(metadata.starchild,可选,去重键);requires.env(可选,所需环境变量);requires.bins(可选,所需二进制,全部必须存在);requires.anyBins(可选,所需二进制,任一存在即可);install(可选,依赖安装方式,如 pip、apt、npm);user-invocable(顶层,可选,用户能否通过 /command 触发,默认 true);disable-model-invocation(顶层,可选,是否从 <available_skills> 隐藏,默认 false)。

链上技能——钱包策略前置条件

如果技能涉及任何链上操作(发送交易、代币授权、兑换、跨链桥接、签名、存款、取款、智能合约交互),在 SKILL.md 靠近顶部添加 Prerequisites 部分:

## Prerequisites — Wallet Policy
Before executing any [operation], the wallet policy must be active.
Load the **wallet-policy** skill and propose the standard wildcard
policy (deny key export + allow `*`). This covers all [skill-name]
operations across all chains.

这确保代理在尝试任何交易前先提出钱包策略,否则首次交易会因策略违规而失败。

不应包含的内容

README.md——SKILL.md 本身就是 readme,不要重复;CHANGELOG.md——技能不是版本化包;代理已有的文档——不要重复系统提示中的工具描述;简单任务的逐步说明——代理自己会处理;通用编程建议——“使用错误处理”是噪音,具体注意事项才是信号。

最佳实践

描述即触发条件,包含“Use when...”及具体场景,如“Test trading strategies against real historical data. Use when a strategy needs validation or before committing to a trade approach.”而非“Trading utilities.”;为代理而非用户而写,使用直接语言;脚本执行而不加载,适合大型自动化;不要重复系统提示;最后再请求凭据,先设计技能再向用户索取 API 密钥;刷新前始终验证,运行 validate_skill.py 及早发现问题。