# WorkBuddy 调用炸弹人资源 CLI 2.0

本文用于让 WorkBuddy 在 Windows 项目目录中调用创作者 CLI，并构建可校验、可上传的独立资源包。

## 1. 准备

```powershell
python --version
New-Item -ItemType Directory -Force .tools\bomber-assets
Invoke-WebRequest https://boooooom.shop/school/cli/bomber_asset_cli.py `
  -OutFile .tools\bomber-assets\bomber_asset_cli.py
python .tools\bomber-assets\bomber_asset_cli.py --version
```

在[个人中心](https://boooooom.shop/account#dashboard)创建 Creator Token，然后由用户本人执行：

```powershell
python .tools\bomber-assets\bomber_asset_cli.py auth set-token
python .tools\bomber-assets\bomber_asset_cli.py auth whoami
```

WorkBuddy 不应读取、打印、复制或提交 `~/.boooooom/credentials.json`。

## 2. 可直接使用的提示词

```text
请使用炸弹人创作者 CLI 创建并发布一个原创怪物概念资源包。

CLI：.tools/bomber-assets/bomber_asset_cli.py
API：https://boooooom.shop
输出目录：packs/iron-grub 和 artifacts/monsters

执行要求：
1. 检查 Python >= 3.9、CLI --version 和 auth whoami。
2. 不读取或显示 Creator Token。
3. 使用 Manifest v2，packageType=concept，版本从 0.1.0 开始。
4. 先运行 new 创建包，再用 generate --attach 将生成图直接加入包。
5. 运行 validate、build 和 upload；任一步失败即停止，不绕过校验。
6. 上传后报告资源 ID、版本、SHA-256、资源包路径和公共展示区链接。

角色名称：铁头猪儿虫
资源 ID：使用 auth whoami 显示的 Creator namespace 加 .iron-grub
类别：small-monster
移动原型：ground
设计要求：头部有坚硬金属甲壳，移动速度为普通怪物0.5倍，生命值2格；轮廓在96像素下清楚；完整单角色、三分之四视角、无文字、标志和水印。

建议命令：
python .tools/bomber-assets/bomber_asset_cli.py new packs/iron-grub --id <creator-namespace>.iron-grub --version 0.1.0 --name "铁头猪儿虫" --category small_monster --package-type concept --description "速度0.5倍、生命值2格的铁头猪儿虫" --license CC-BY-4.0
python .tools/bomber-assets/bomber_asset_cli.py generate --category small-monster --archetype ground --name "铁头猪儿虫" --prompt "设计一只适用于炸弹人格子动作游戏的原创铁头猪儿虫。头部有坚硬金属甲壳，速度为普通怪物0.5倍，生命值2格，轮廓在96像素下仍清楚。完整单角色、三分之四视角、无文字、标志和水印。" --attach packs/iron-grub --request-id iron-grub-concept-v1
python .tools/bomber-assets/bomber_asset_cli.py validate packs/iron-grub
python .tools/bomber-assets/bomber_asset_cli.py build packs/iron-grub --output artifacts/monsters/iron-grub-0.1.0.zip
python .tools/bomber-assets/bomber_asset_cli.py upload artifacts/monsters/iron-grub-0.1.0.zip
```

新版 CLI 会自动创建输出父目录。`--request-id` 应在同一次创作重试时保持不变，避免重复计费。

## 3. 构建运行时资源包

概念图不能直接当作游戏动画。要创建 `packageType=runtime` 的包，需要准备精灵表，然后补全 Manifest：

```powershell
python .tools\bomber-assets\bomber_asset_cli.py new packs\iron-grub-runtime `
  --id <creator-namespace>.iron-grub-runtime `
  --version 1.0.0 --name "铁头猪儿虫" `
  --category small_monster --package-type runtime

python .tools\bomber-assets\bomber_asset_cli.py asset add packs\iron-grub-runtime `
  art\iron-grub-idle.png --id idle_sheet --role sprite_sheet `
  --path assets/sprites/idle.png
```

随后在 `manifest.json` 中设置：

```json
{
  "engine": {"minVersion": "1.0.0"},
  "gameplay": {"hitPoints": 2, "speedMultiplier": 0.5, "behavior": "wall_patrol"},
  "render": {"tileSize": 96, "directions": 4},
  "collision": {"shape": "circle", "radius": 28},
  "animations": {
    "idle": {"asset": "idle_sheet", "frames": 4, "fps": 6, "loop": true}
  }
}
```

只有通过 runtime 校验的资源包才应交给游戏加载器。

## 4. 安全与版本规则

- 不修改或重新上传 `official.*`、`read_only: true` 的示范包。
- 不复用其他创作者的资源 ID。
- 已发布版本内容不可覆盖，改图或改玩法参数必须提升版本。
- 不手工伪造或删除 `checksums.sha256`；由 `build` 重新生成。
- 下载后的包由 CLI 自动验证 SHA-256，不使用遗留 `.part` 文件。
- 作品展示摘要可在个人中心修改，但 ZIP 内 Manifest 保持不可变。

完整规范见 [CLI 文档](/school/docs/bomber-assets-cli.md)、[Manifest v2 Schema](/school/docs/asset-pack-v2.schema.json)和[Creator API OpenAPI](/school/docs/creator-api-openapi.yaml)。
