Skill Creator Proposals 是 OpenSquilla 项目中的一个内部工具,用于对元技能(meta-skill)提案候选进行 CRUD(创建、读取、更新、删除)管理。该工具不是面向用户直接调用的,而是由 meta-skill-creator 的持久化步骤以及 opensquilla meta accept CLI(第二阶段)调用。
用途
该工具的核心用途是管理元技能提案的生命周期。提案候选存储在 ~/.opensquilla/proposals/<id>/ 目录下,每个提案包含 SKILL.md 和 gates.json 等文件。通过该工具,可以写入新提案、列出已有提案并查看其资格标志,以及接受提案将其正式纳入技能库。
主要能力
该工具提供以下操作:
-
write_proposal:写入提案。参数包括 --skill-md path(SKILL.md 路径)、--lint-result json(lint 结果)、--smoke-result json(冒烟测试结果),以及可选的 --creator-mode FULL_GATED、--acceptance-result text、--runtime-e2e-result json。该操作以原子方式写入 ~/.opensquilla/proposals/<uuid8>/{SKILL.md,gates.json},并返回 {proposal_id, auto_enable_eligible}。在 FULL_GATED 模式下,运行时端到端测试必须显示元技能路由优于或持平于无元技能的最高层级基线,且无回归。
-
list:枚举所有提案及其资格标志。
-
accept:接受提案。参数包括 --proposal-id <id> 和可选的 --force。该操作将提案移动到 ~/.opensquilla/skills/<name>/,以便被 MANAGED 层加载。如果任一门槛失败,则拒绝接受(除非使用 --force)。
使用方式
该工具通常由 meta-skill-creator 的持久化步骤或 opensquilla meta accept CLI 调用,而非用户直接调用。如果从聊天中调用,需要手动创建 proposals 目录,复制 SKILL.md,并运行 skill-creator-linter 手动填充 gates.json。
原子性
write_proposal 采用原子写入机制:先写入 ~/.opensquilla/.tmp/proposal-<id>/,然后通过 os.rename() 移动到最终位置。这样即使写入过程中断,也不会留下孤立的提案目录。
适用场景
该工具适用于 OpenSquilla 生态中元技能的开发与管理流程,特别是在需要自动化管理提案候选、确保提案质量(通过 lint、冒烟测试、端到端测试等门槛)的场景中。
限制
该工具是内部工具,不是用户可调用的。其功能依赖于 OpenSquilla 的目录结构和相关组件(如 meta-skill-creator、skill-creator-linter)。在 FULL_GATED 模式下,对运行时端到端测试有严格要求。如果门槛失败,接受操作会被拒绝,除非使用 --force 强制接受。