wx-game-publish — 微信小游戏发布预检
30秒检查,告别反复调试发布失败
替你把「小游戏开发完成 → 能发布」之间的脏活跑完:检查项目结构、验证配置、 扫描 monetization 设置、计算包大小,输出 publish-checklist.md。
为什么需要这个工具?
微信小游戏发布有严格要求:
- ❌ appid 错误 → 审核被拒
- ❌ compileType 不对 → 无法上传
- ❌ 包大小超 2MB → 必须分包
- ❌ 广告位占位符未替换 → 上线后广告不显示
手动检查容易遗漏,这个 skill 帮你一次性跑完所有检查。
Workflow
- 接收项目:接受游戏项目路径或 zip 文件(默认当前工作目录)
- 解压/读取:若为 zip,解压到临时目录;若为目录,直接读取
- 检查必要文件:project.config.json, game.json, src/ 目录
- 验证 project.config.json:
- appid 存在且非空(
test为测试环境,⚠️ 警告) - compileType === ‘game’(必须)
- setting 包含 es6: true
- appid 存在且非空(
- 验证 game.json:
- deviceOrientation 存在(⚠️ 警告若缺失)
- networkTimeout 合理(⚠️ 警告若缺失)
- 检查 monetization 配置:
- src/config.js 中的 AD 对象(广告位 ID 是否为占位符)
- src/ads.js 是否存在
- 计算包大小:
- 统计 src/ 目录总大小
- 检查是否超过 2MB(主包限制)
- 检查 node_modules 是否存在(⚠️ 警告,应排除)
- 检查 api.js:
- USE_MOCK 是否为 true(⚠️ 警告,上线前需改 false)
- 生成 publish-checklist.md:Markdown 报告,✅/⚠️/❌ 标记
- 打印摘要到 stdout:关键发现和建议
Clarification Protocol
- 一次性追问:确认项目路径 + monetization 配置位置(若用户不确定)
- 逐步澄清:不适用(需求边界清晰)
- 选项式:不适用(WeChat 配置要求是固定的)
- 关键假设确认:WeChat 包大小限制(主包 2MB,分包 20MB),若用户项目特殊可覆盖
Resource Routing
- 命中【项目结构/配置检查】→ 运行
scripts/validate.js <project-path>→ 产出publish-checklist.md - 命中【WeChat 发布要求】→ 加载【references/wechat-requirements.md】→ 产出【配置检查清单】
- 命中【monetization 配置】→ 加载【references/monetization-guide.md】→ 产出【广告位配置建议】
- 命中【报告模板】→ 加载【assets/template-checklist.md】→ 产出【格式化报告】
三层路由表(A-401)
- 正向决策表:见上
- 易混淆消歧表:
- 像「发布小游戏」但其实不是 → 别用「自动化发布」该用「预检检查」
- 像「检查配置」但其实不是 → 别用「修改配置」该用「仅输出报告」
- 跨模块顺序表:组合任务按「结构检查 → 配置验证 → monetization 检查 → 报告生成」顺序读
Failure Handling
四状态
| 状态 | 判定 | 处理 |
|---|---|---|
| Not started | 未开始 | 向用户说明障碍与替代路径 |
| In progress | 进行中 | 输出 partial checklist,标记已检查项 |
| Partial success | 部分成功 | 说清已完成哪几项、缺口在哪、从哪续 |
| Failed safely | 安全失败 | 保留中间产物 + 写 publish-error.log |
双层错误分类
| 级别 | 退出码 | 错误码 | 原因 | 建议处理 |
|---|---|---|---|---|
| 进程级 | 1 | — | Node.js 脚本执行失败 | 检查 Node.js 环境、依赖安装 |
| 业务级 | — | E001 | 项目目录不存在 | 检查路径是否正确 |
| 业务级 | — | E002 | project.config.json 不存在 | 确认项目结构是否正确 |
| 业务级 | — | E003 | appid 为空 | 在微信开发者工具中查看 appid |
| 业务级 | — | E004 | compileType 不为 game | 修改 project.config.json |
| 业务级 | — | E005 | 主包大小超过 2MB | 分包处理或压缩资源 |
拒绝类失败(fail-with-direction)
- 用户说「帮我发布到 WeChat」→ 提醒:「本 skill 只检查配置,发布需手动在微信开发者工具操作。请运行
wxgame publish或在 DevTools 中点击「上传」。」 - 用户说「帮我生成游戏代码」→ 拒绝:「本 skill 不生成游戏代码。请使用
skill-creator或wechat-miniprogramskill。」
Validation
完成前必查:
publish-checklist.md存在- 退出码 0(无 critical 错误)或用户已确认 ⚠️ 警告
- 报告包含 ✅/⚠️/❌ 状态标记
- 用户亲自跑一遍测试,AI 不能当唯一判官
约束(硬 → 检查项·机器判定)
- appid 必须非空且非 test →
!appid || appid === 'test'→ ⚠️ 警告(测试环境可继续) - compileType 必须为 game →
config.compileType !== 'game'→ ❌ 阻塞 - 主包大小 ≤2MB →
totalSize > 2 * 1024 * 1024→ ❌ 阻塞 - 不修改用户源文件 → 只读操作,写入仅限于生成报告文件
非目标清单
- ❌ 不自动发布到 WeChat(需人工在 DevTools 操作)
- ❌ 不处理 WeChat Developer Console 认证
- ❌ 不生成游戏代码或资产
- ❌ 不替代 WeChat DevTools 本身
- ❌ 不修改用户的 project.config.json 或 game.json