用途
pack-submit 用于将本智能体已有的某个技能打包为一个独立的社区包(community pack),并提交到 aeon 社区注册表。它是 install-skill 的逆操作:install-skill 把社区包拉进来安装,而 pack-submit 把自己已有的技能推送出去,供其他 Aeon 智能体通过 bin/install-skill-pack 安装。
主要能力
- 读取 skills/<slug>/SKILL.md 的 frontmatter 元数据(标题、描述、分类、所需密钥、能力),不自行编造。
- 在本地构建包仓库:根目录放置 skills-pack.json 清单,完整复制技能目录(含辅助脚本与配置),并生成 README 与 MIT LICENSE。
- 使用仓库自带的 scripts/validate-pack.sh 对暂存目录做预检,校验清单 JSON、slug 合法性、路径中不含 ..、SKILL.md 是否存在、能力是否属于锁定分类。
- 创建并推送公开的 GitHub 包仓库(默认名 aeon-skill-pack-<slug>,可用 --repo 覆盖)。
- 向 aeonfun/aeon 提交注册 PR,在 docs/community-skill-packs.md 的 Listed packs 表格和 catalog/skill-packs.json 中同时添加条目,并用 node scripts/validate-skill-packs.mjs 做一致性校验。
- 记录日志到 memory/logs/${today}.md,并通过 ./notify 发送结果通知。
使用方式
调用时传入一个技能 slug(skills/ 下的目录名),可选地附加标志:
- token-movers — 将 skills/token-movers/ 打包为新公开仓库并提交到 aeon 注册表
- token-movers --repo myorg/aeon-token-movers — 覆盖包仓库名(默认 aeon-skill-pack-<slug>)
- token-movers --no-register — 创建并推送包仓库,但跳过针对 aeonfun/aeon 的注册 PR
- token-movers --dry-run — 仅在本地构建并验证包,不向 GitHub 写入任何内容
若 ${var} 为空,退出 PACK_SUBMIT_NO_VAR 并通知中止原因。slug 必须匹配 ^[a-z0-9][a-z0-9-]*$ 且对应真实目录,否则退出 PACK_SUBMIT_BAD_VAR。
适用场景
- 希望把自己智能体中的某个技能分享给其他 Aeon 智能体安装使用。
- 需要将技能发布为带版本清单的独立公开仓库,并登记到社区注册表以便被 bin/install-skill-pack --list 和仪表盘的 Community Packs 面板发现。
限制
- 只能发布 skills/ 中已存在的技能;本技能负责打包与分发,不负责创作新技能(创作新技能请使用 create-skill)。
- 包仓库必须为公开,因为安装器需要拉取其 tarball;私有包他人无法安装。
- 不得以 trust_level: trusted 注册,该级别需通过 skills/security/trusted-sources.txt 获得,校验器会拒绝自我声明的 trusted;社区包使用 trust_level: community。
- 不得在 validate-skill-packs.mjs 校验失败(红色)时提交注册 PR。
- 两个注册表表面(docs/community-skill-packs.md 的表格行与 skill-packs.json 条目)必须在同一 diff 中保持同步,技能数量一致。
- 清单只列出密钥名称(来自技能的 requires:),绝不泄露密钥值。
- 退出码分类包括:PACK_SUBMIT_OK、PACK_SUBMIT_NO_VAR、PACK_SUBMIT_BAD_VAR、PACK_SUBMIT_INVALID_PACK、PACK_SUBMIT_DRY_RUN、PACK_SUBMIT_REPO_FAILED、PACK_SUBMIT_REGISTRY_FAILED。
- 网络方面无沙箱,git 与 gh 直连 GitHub;gh 在 Actions 中通过 GH_GLOBAL 或环境 GITHUB_TOKEN 认证,后者无法创建仓库或跨仓库 PR,此类情况应报告为 PACK_SUBMIT_REPO_FAILED。