ワンクリックで
role-publish
发布 Role 到官方 RoleHub:将 role 代码托管到独立 GitHub 仓库,并通过 fork 向 fightheyyy/XiaoBa-RoleHub 提交 registry.json 增量 PR。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
发布 Role 到官方 RoleHub:将 role 代码托管到独立 GitHub 仓库,并通过 fork 向 fightheyyy/XiaoBa-RoleHub 提交 registry.json 增量 PR。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | role-publish |
| description | 发布 Role 到官方 RoleHub:将 role 代码托管到独立 GitHub 仓库,并通过 fork 向 fightheyyy/XiaoBa-RoleHub 提交 registry.json 增量 PR。 |
| invocable | user |
| autoInvocable | false |
| argument-hint | <role名称> |
| max-turns | 20 |
将本地已有的 role 发布到 XiaoBa 官方 RoleHub,让 XiaoBa 用户可以发现和安装角色。
官方 RoleHub 仓库:
https://github.com/fightheyyy/XiaoBa-RoleHub
RoleHub 只维护轻量索引,不托管 role 源码,也不托管桌宠 spritesheet。Role 源码必须放在独立公开 GitHub 仓库。仓库名不要求固定格式,例如:
https://github.com/<user>/xiaoba-role-<name>
https://github.com/<user>/<custom-role-repo>
RoleHub 发布规则:
registry.json。roles/<name> 到 RoleHub 仓库。pets/<pet-id> 或 spritesheet 到 RoleHub 仓库;自定义桌宠资源应该放在独立 role 仓库中。fightheyyy/XiaoBa-RoleHub,但 fork 中也只改 registry.json。git diff -- registry.json,确认 diff 只包含目标 role 的索引增量。fightheyyy 维护者如明确要求,也可以按仓库 ruleset bypass 直接推 main。pet 字段,XiaoBa runtime 使用默认 xiaoba runtimepet。用户提供 role 名称(即 $ARGUMENTS),你需要:
roles/$ARGUMENTS/role.json 是否存在;如果不存在,按 alias/normalized name 查找 roles/<role-name>/role.jsonrole.json,提取 name、displayName、description、promptFile、aliases、metadata.petId 和 status 等信息。blocked 必须拒绝发布;candidate 必须先经过 Arena/人工验收并由独立 Promote 动作变为 active;旧资产未写 status 时按 active 兼容promptFile 指向的 prompt 是否存在,优先检查 roles/<role-name>/prompts/<promptFile>,再检查 roles/<role-name>/<promptFile>metadata.petId 存在,检查本地是否有匹配桌宠资源,例如 dashboard/pets/<petId>/pet.json、$XIAOBA_PETS_DIR/<petId>/pet.json 或用户提供的 pet 目录pet 字段并说明会回退到默认 xiaoba runtimepet发布信息至少包含:
{
"name": "<name>",
"displayName": "<displayName>",
"description": "<desc>",
"category": "<cat>",
"recommended": false,
"repo": "<confirmed-role-repo-url>",
"rolePath": "."
}
如果用户确认上传桌宠资源,还应包含:
{
"pet": {
"id": "<petId>",
"repoPath": "pets/<petId>"
}
}
如果 role 已经有公开仓库,使用现有 repo URL。
如果还没有公开仓库,告诉用户先在 GitHub 创建一个公开仓库,建议命名:
xiaoba-role-<name>
然后把本地 roles/<name> 的内容推送到这个独立仓库。RoleHub 的 repo 字段必须指向这个独立仓库,而不是 RoleHub 仓库里的子目录。
独立 role 仓库至少应该包含:
role.jsonprompts/<promptFile> 或 role.json 中实际引用的 prompt 文件skills/ 可选运行时资产;当前 XiaoBa 仓库内不要创建 role-local README/SPEC/PLAN如果用户要发布自定义桌宠资源,独立 role 仓库还应该包含:
pets/<petId>/pet.jsonpets/<petId>/<spritesheet>,通常是 spritesheet.webp桌宠发布约束:
role.json.metadata.petId、registry 的 pet.id、pets/<petId>/pet.json 的 id 应一致。pet.json.spritesheetPath 必须指向同一 pet 目录内的文件。xiaoba pet;省略 registry 的 pet 字段即可。默认发布方式是 fork RoleHub,再向官方仓提交 registry-only PR。
优先用 gh 获取当前 GitHub 登录名,并创建 fork:
{"command":"login=$(gh api user --jq '.login') && echo \"$login\" && if [ \"$login\" = \"fightheyyy\" ]; then echo 'fightheyyy maintainer account: switch to contributor account for fork flow, or use maintainer shortcut only when explicitly requested'; else gh repo view \"$login/XiaoBa-RoleHub\" >/dev/null 2>&1 || gh repo fork fightheyyy/XiaoBa-RoleHub --clone=false; fi","description":"确认 GitHub 身份并 fork RoleHub"}
如果当前登录账号是 fightheyyy,不要把官方仓当作 fork。此时应该切换到 contributor 账号走 fork PR,或在用户明确要求时使用维护者快捷方式直接发布。
如果没有 gh,告诉用户在网页上手动 fork:
https://github.com/<user>/XiaoBa-RoleHub{"command":"mkdir -p /tmp/xiaoba-role-publish && cd /tmp/xiaoba-role-publish && rm -rf XiaoBa-RoleHub && git clone https://github.com/<user>/XiaoBa-RoleHub.git","description":"Clone RoleHub fork"}
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && git remote add upstream https://github.com/fightheyyy/XiaoBa-RoleHub.git 2>/dev/null || true && git fetch upstream main && git checkout -B add-role-<name> upstream/main","description":"从官方 main 新建发布分支"}
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && cat registry.json","description":"查看 RoleHub registry"}
只允许编辑 registry.json。不要复制 role 文件或 pet 文件到 RoleHub。
用脚本安全追加 JSON 条目:
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && python3 -c \"\nimport json\nfrom pathlib import Path\npath=Path('registry.json')\ndata=json.loads(path.read_text(encoding='utf-8'))\nname='<name>'\nrepo='<confirmed-role-repo-url>'\nif any(item.get('name') == name for item in data):\n raise SystemExit(f'role already exists in registry: {name}')\nentry={'name':name,'displayName':'<displayName>','description':'<desc>','category':'<cat>','recommended':False,'repo':repo,'rolePath':'.'}\n# 如果用户确认上传自定义 pet,再启用下一行并替换 petId:\n# entry['pet']={'id':'<petId>','repoPath':'pets/<petId>'}\ndata.append(entry)\npath.write_text(json.dumps(data,indent=2,ensure_ascii=False)+'\\n',encoding='utf-8')\nprint('registry.json updated')\n\"","description":"增量更新 registry.json"}
如果 git diff -- registry.json 显示已有条目被重排、删除或批量格式化,必须恢复后重新做最小增量编辑。
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && git diff -- registry.json && git status --short","description":"检查 registry 增量 diff"}
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && test \"$(git status --porcelain --untracked-files=all)\" = \" M registry.json\" && echo 'OK: only registry.json changed'","description":"确认只修改 registry.json"}
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && git add registry.json && git status --short","description":"只暂存 registry.json"}
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && git commit -m 'Add role: <name>'","description":"提交 registry 增量"}
推送到 fork 的发布分支:
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && git push -u origin add-role-<name>","description":"推送 fork 发布分支"}
向官方 RoleHub 创建 registry-only PR:
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && gh pr create --repo fightheyyy/XiaoBa-RoleHub --base main --head <user>:add-role-<name> --title 'Add role: <name>' --body '## New Role: <name>\\n\\n<description>\\n\\nRegistry-only incremental PR.'","description":"创建 RoleHub registry-only PR"}
维护者快捷方式:如果当前账号是 fightheyyy,且用户明确要求直接发布,可以跳过 fork,clone 官方仓后 fast-forward 到 main 并直接推送:
{"command":"cd /tmp/xiaoba-role-publish/XiaoBa-RoleHub && git checkout main && git merge --ff-only add-role-<name> && git push origin main","description":"fightheyyy 维护者直接推送 main"}
{"command":"rm -rf /tmp/xiaoba-role-publish","description":"清理临时目录"}
fightheyyy/XiaoBa-RoleHub:mainregistry.jsonregistry.json 是合法 JSON arrayname、displayName、description、category、recommended、reporepo 指向独立公开 GitHub 仓库role.jsonrole.json 引用的 prompt 文件pet,独立 role 仓库包含 pet.repoPath/pet.json 和对应 spritesheetpet,明确接受默认 xiaoba runtimepet 回退registry.json 增量%TEMP%gh auth status、fork 地址和 origin 是否指向自己的 forkxiaoba runtimepet准备独立 role 仓库 -> fork RoleHub -> clone fork -> 从官方 main 新建分支 -> 只增量更新 registry.json -> push fork 分支 -> 创建 registry-only PR
这样不需要官方仓写权限,也能保持 RoleHub registry PR 清晰、可审。
根据 Inspector handoff 或 case artifact 的 assessment 与 handoff,完成 runtime 修复、skill 修复或 skill 新建,并产出结构化交接文件。
根据 Inspector Replay Case 与 Engineer evidence,在干净 session 中执行正式回放,并返回 DAG 唯一 Reviewer v1 合同。
EvolutionCat 从真实任务或 Inspector finding 中沉淀 memory / skill / role 候选能力;夜间 DAG 只生成一个隔离 candidate。
发布 Skill 到官方 SkillHub:将 skill 代码托管到独立 GitHub 仓库,并通过 fork 向 fightheyyy/XiaoBa-SkillHub 提交 registry.json 增量 PR。
从日志中识别重复操作模式,生成证据化 Candidate Skill 草稿与 EvolutionCat handoff
从日志诊断重复模式,输出给 EvolutionCat 的候选 Skill handoff