用途:为 github.com/firebase/firebase-tools 的拉取请求做全面、高质量审查,供提交者或审查者按统一清单核对。
主要能力与审查要点:
- 类型安全:禁止 any 与 as any,使用泛型参数(如 client.request<T>())、显式接口、类型守卫;未修改的数组参数用 readonly;不用原生 enum,改用联合类型字面量;接口优先于 class;用 undefined 而非 null,去除多余的 = undefined 初始化。
- CLI 与工具设计:函数接收 options 对象而非长位置参数;命令接口使用显式 flag 而非交互式选择(CI 安全);CLI 启动阶段不得执行 npx、子进程等昂贵后台命令;避免为单个子功能创建独立工具,合并为参数化工具并统一 snake_case 命名;未发布功能用专门 experiment flag(如 kits、autheventarc)门控;通过 .env、JSON、YAML 配置,不修改用户 JS 文件。
- 错误与异步:错误应抛出 FirebaseError,说明失败原因与修复方式,并给出非零退出状态;异步重试(如 IAM 服务账号传播、Cloud Run 就绪)放在专用执行器/重试队列;子进程需监听异步 error 事件并排空 stdout/stderr 避免缓冲死锁。
- 测试:针对公开 API 写单测而非桩私有助手;覆盖完整状态矩阵(创建、更新 set、更新 remove、删除、空/缺失输入);afterEach 中清理桩与网络拦截(sinon.restore()、nock.cleanAll());不依赖外部网络或环境变量;暴露给 MCP 或 AI 助手的 Zod schema 需用真实 LLM API 做冒烟测试。
- 兼容与日志:指定 --json 时所有日志、警告、spinner 输出到 stderr,保证 stdout 为可被 jq 解析的合法 JSON;每个命令提供详细 .help() 文本;磁盘结构、模拟器 schema、项目配置保持向后兼容以支持降级;破坏性 flag 移除或 schema 变更需留到主版本。
- CHANGELOG:面向用户的修复与新功能需条目,以过去式动词开头,不含 [] 标注,末尾附 (#issue_number);内部重构、测试更新或未发布 experiment flag 背后的功能不加。
- 反馈语气:区分阻塞要求与非阻塞建议,非阻塞评论用 Nit: 或 Optional: 前缀并给出可应用建议块;清理 AI 代理残留的空注释块、样板代码或遗留 issue 编号。
使用方式:按模板输出审查 payload,含顶层 summary body 与针对文件路径、行号、side(新增为 RIGHT)的评论列表。提交审查用两步文件法:mkdir -p ~/.reviews,将 JSON 写入 ~/.reviews/pr_<PR_NUMBER>review.json,然后执行 gh api repos/firebase/firebase-tools/pulls/<PR_NUMBER>/reviews -X POST --input ~/.reviews/pr<PR_NUMBER>_review.json。
适用场景与限制:适用于该仓库的 PR 评审流程;资料未说明支持其他仓库、费用、平台或效果,实施细节以仓库实际规范为准。