# R14 任务报告

## 结论

已解决 [agent_skills #16](https://github.com/pikasTech/agent_skills/issues/16)。`humanizer-zh` 不再是无法由 `.gitmodules` 物化的空 gitlink，而是 agent skills resource bundle 中可直接 checkout 的普通 skill；其 `SKILL.md` 与用户指定的 `/root/.codex/skills/humanizer-zh/SKILL.md` SHA-256 均为 `e0edbdbc9008644263d5573fb59beac95794e188fd99c35012bfd79e9ae4beeb`。

PR [pikasTech/agent_skills#17](https://github.com/pikasTech/agent_skills/pull/17) 已合并，merge commit 为 `2427413e19883e414861b47a67b7685593e38aaf`。与现有普通 `moltbook` skill 重复、同样无法物化的 `moltbook-skill` gitlink 已删除；合法 `napkin` submodule 继续由 `.gitmodules` 作为唯一来源。

## 发布前预检

新增 `scripts/preflight-resource-bundle.sh`，对普通 skill 和 gitlink 执行一次有界预检：

- 普通 skill 必须包含可读的顶层 `SKILL.md`。
- gitlink 必须有 `.gitmodules` 路径映射和 URL。
- submodule 必须已经物化，checkout 必须与父仓固定 gitlink commit 一致。
- 声明 URL 必须可访问，固定 commit 必须能从该 URL 获取。
- 物化后的 skill submodule 必须包含可读 `SKILL.md`。
- 失败输出包含 `path`、`gitlink` 和具体 `reason`，避免执行者再用多轮 `find`、`rg`、Git tree 和 submodule 探测定位空 skill。

## Smoke

`scripts/smoke-resource-bundle-preflight.sh` 的一次最小 smoke 已通过，覆盖：

- 普通 skill 和合法已物化 submodule 通过。
- 未物化 submodule、不可解析 URL、缺少 `SKILL.md` 和未声明 gitlink 被拒绝。
- 递归物化 `napkin` 后，仓库预检结果为 `resource-bundle-preflight: ok ordinary_skills=51 gitlinks=1`。
- `sh -n`、`git diff --check` 和提交前 `git diff --cached --check` 均通过。

## 边界

- 预检是发布前入口，会访问 `.gitmodules` 声明的远端；网络或凭据不可用时按资源不可解析处理并阻止发布。
- 本任务未修改 AgentRun、SelfMedia、release、生产、部署或 CI/CD 公共服务。
- SelfMedia 的 `humanizer-zh` 内置、文案和视频重生成已由独立 R11 系列报告收口；本任务只修复后续 resource bundle 复用时的空 skill 与重复探测问题。
