/agf-apple-release
触发 product-lead 派 apple-release-engineer 把合并后的 main 代码构建成签名分发包(TestFlight / 公证 DMG / 内部包)并冒烟自检;通过后交接 apple-qa-engineer 跑 E2E/UAT
$ npx -y skills add pcliangx/AppGenesisForge --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/agf-apple-release
Context preview
What this command does when you run it.
触发 product-lead 派 apple-release-engineer 把合并后的 main 代码构建成签名分发包(TestFlight / 公证 DMG / 内部包)并冒烟自检;通过后交接 apple-qa-engineer 跑 E2E/UAT
Command definition
agf-apple-release.mddescription: 触发 product-lead 派 apple-release-engineer 把合并后的 main 代码构建成签名分发包(TestFlight / 公证 DMG / 内部包)并冒烟自检;通过后交接 apple-qa-engineer 跑 E2E/UAT
argument-hint: <feature-slug>(必须已通过 apple code review(含 SIT Audit)且已合并到 main;PRD 已声明分发渠道)
任务
对 feature `$ARGUMENTS` 启动 **Apple 发布门**:把合并后的 main 代码构建成签名分发包,冒烟自检通过后交接 apple-qa-engineer。
这是 Apple 轨交付链路里 code review 与 E2E 之间的发布门(对应 Web 轨的 UAT 部署门),二元 gate(`✅ 构建成功(冒烟通过)` / `❌ 构建失败`),不是测试阶段。
执行步骤
1. **检查先决条件**:
- `docs/reviews/$ARGUMENTS-apple-*.md` 存在(含 pool 实例 `-r<N>-`);**所有** match 文件 frontmatter `code_verdict` ≠ `block` 且 `sit_audit_verdict` ∈ {`Pass`, `Pass with concerns`};用 `bash .claude/scripts/agf-matrix.sh --type=review --feature=$ARGUMENTS` 一眼看全部
- 对应代码**已合并到 main**(`git log main --oneline` 可见合并提交);记录构建 commit SHA
- 目标为 **Apple 原生链路**(`apple/` 工程);若是 Web feature → **拒绝**:走 `/agf-deploy-uat`;小程序 → 归 miniapp 轨
- PRD 已声明分发渠道(TestFlight / App Store / macOS 直发 DMG / 企业内部),映射 lane 见 [`deployment.md` §7.2](../standards/deployment.md)
- 任一不满足 → **拒绝启动**,告诉用户缺什么
2. **派单**(派 `apple-release-engineer`;**Pool 上限 = 1,禁 fan-out**——唯一签名身份 + App Store Connect,并发构建必撞 build number / match 仓):
- **用户授权归因(A-F4 / [ADR-019](../../docs/adr/019-deploy-release-auth-gate.md),hook `gate-deploy-release-auth` 强制)**:本 slash 命令由用户显式触发 = 用户授权。派单 task 描述**必须含**一行 `用户授权: /agf-apple-release $ARGUMENTS 已触发(用户显式调用)`,否则 TaskCreated 被 hook exit 2 阻断。
- `apple-release-engineer` — initial task: 按 skill `agf-releasing-apple` 从合并后 main 构建:match 同步签名材料 → 按渠道跑对应 lane(`beta` / `release_appstore` / `release_dmg` / `release_internal`)→ 公证 / TestFlight 处理**等到完成状态** → 冒烟自检(真实输出:`spctl -a -vv` / "Ready to Test" 状态 / 实际装包启动),落发布报告到 `docs/deploy/$ARGUMENTS-apple-[YYYY-MM-DD].md`,SendMessage product-lead 附分发包定位
3. **发布门约束**:
- 构建源必须是**合并后的 main**,不是任何未合并分支
- 签名材料(`.p8` / `.p12` / match 密码)走环境变量 / Keychain,**不入库**(scan-secrets / pre-commit 兜底)
- 冒烟必须真实输出,禁 "构建 exit 0 就算成功"
- **apple-release-engineer 不修业务源码**:冒烟暴露代码问题 → 退回 product-lead → apple-dev;签名/公证/打包配置问题 → 自己重跑(`apple/fastlane/` 是其可写域)
4. **完成后**:
- ✅ 构建成功(冒烟通过)→ product-lead 据发布报告里的分发包定位触发 apple-qa-engineer 跑 E2E(XCUITest 对分发包),随后 `/agf-uat $ARGUMENTS`
- ❌ 构建失败 → product-lead 决策:配置问题让 apple-release-engineer 重跑;代码问题回 apple-dev 修复,重走后续工序
任务规模过小怎么办
- 发布门规模固定(出一个签名分发包 + 冒烟),不存在"过小"。
- 若签名材料缺失(无 Apple Developer 会籍 / API key 未配 / match 仓不可达)→ 不硬启动,告诉用户先补齐前置(ADR-009「后续工作」列了清单),再重跑本命令。
- 若代码尚未合并到 main → 不启动,告诉用户:"Apple 发布门要求代码先合并到 main;当前请先完成 code review(含 SIT Audit)并合并。"
Read more
description: 触发 product-lead 派 apple-release-engineer 把合并后的 main 代码构建成签名分发包(TestFlight / 公证 DMG / 内部包)并冒烟自检;通过后交接 apple-qa-engineer 跑 E2E/UAT argument-hint: <feature-slug>(必须已通过 apple code review(含 SIT Audit)且已合并到 main;PRD 已声明分发渠道)
任务
对 feature `$ARGUMENTS` 启动 **Apple 发布门**:把合并后的 main 代码构建成签名分发包,冒烟自检通过后交接 apple-qa-engineer。
这是 Apple 轨交付链路里 code review 与 E2E 之间的发布门(对应 Web 轨的 UAT 部署门),二元 gate(`✅ 构建成功(冒烟通过)` / `❌ 构建失败`),不是测试阶段。
执行步骤
1. **检查先决条件**:
- `docs/reviews/$ARGUMENTS-apple-*.md` 存在(含 pool 实例 `-r<N>-`);**所有** match 文件 frontmatter `code_verdict` ≠ `block` 且 `sit_audit_verdict` ∈ {`Pass`, `Pass with concerns`};用 `bash .claude/scripts/agf-matrix.sh --type=review --feature=$ARGUMENTS` 一眼看全部
- 对应代码**已合并到 main**(`git log main --oneline` 可见合并提交);记录构建 commit SHA
- 目标为 **Apple 原生链路**(`apple/` 工程);若是 Web feature → **拒绝**:走 `/agf-deploy-uat`;小程序 → 归 miniapp 轨
- PRD 已声明分发渠道(TestFlight / App Store / macOS 直发 DMG / 企业内部),映射 lane 见 [`deployment.md` §7.2](../standards/deployment.md)
- 任一不满足 → **拒绝启动**,告诉用户缺什么
2. **派单**(派 `apple-release-engineer`;**Pool 上限 = 1,禁 fan-out**——唯一签名身份 + App Store Connect,并发构建必撞 build number / match 仓):
- **用户授权归因(A-F4 / [ADR-019](../../docs/adr/019-deploy-release-auth-gate.md),hook `gate-deploy-release-auth` 强制)**:本 slash 命令由用户显式触发 = 用户授权。派单 task 描述**必须含**一行 `用户授权: /agf-apple-release $ARGUMENTS 已触发(用户显式调用)`,否则 TaskCreated 被 hook exit 2 阻断。
- `apple-release-engineer` — initial task: 按 skill `agf-releasing-apple` 从合并后 main 构建:match 同步签名材料 → 按渠道跑对应 lane(`beta` / `release_appstore` / `release_dmg` / `release_internal`)→ 公证 / TestFlight 处理**等到完成状态** → 冒烟自检(真实输出:`spctl -a -vv` / "Ready to Test" 状态 / 实际装包启动),落发布报告到 `docs/deploy/$ARGUMENTS-apple-[YYYY-MM-DD].md`,SendMessage product-lead 附分发包定位
3. **发布门约束**:
- 构建源必须是**合并后的 main**,不是任何未合并分支
- 签名材料(`.p8` / `.p12` / match 密码)走环境变量 / Keychain,**不入库**(scan-secrets / pre-commit 兜底)
- 冒烟必须真实输出,禁 "构建 exit 0 就算成功"
- **apple-release-engineer 不修业务源码**:冒烟暴露代码问题 → 退回 product-lead → apple-dev;签名/公证/打包配置问题 → 自己重跑(`apple/fastlane/` 是其可写域)
4. **完成后**:
- ✅ 构建成功(冒烟通过)→ product-lead 据发布报告里的分发包定位触发 apple-qa-engineer 跑 E2E(XCUITest 对分发包),随后 `/agf-uat $ARGUMENTS`
- ❌ 构建失败 → product-lead 决策:配置问题让 apple-release-engineer 重跑;代码问题回 apple-dev 修复,重走后续工序
任务规模过小怎么办
- 发布门规模固定(出一个签名分发包 + 冒烟),不存在"过小"。
- 若签名材料缺失(无 Apple Developer 会籍 / API key 未配 / match 仓不可达)→ 不硬启动,告诉用户先补齐前置(ADR-009「后续工作」列了清单),再重跑本命令。
- 若代码尚未合并到 main → 不启动,告诉用户:"Apple 发布门要求代码先合并到 main;当前请先完成 code review(含 SIT Audit)并合并。"
Code the Origin, Forge the App. 给 Claude Code 装一支有流程治理的 AI 开发团队——不是更聪明的单 agent,更像一条精益产线:19 角色分工协作、层层把关,缺陷流不进下一道工序。 ↑ 一句话提需求 → AI 团队并行交付 → 看板实时点亮,全程一个终端 tab。 单个 AI agent 一把梭,长流程会失控——没人审、没人测,说「完成了」其实没跑通。AGF 不赌「更强的模型」,而是把 AI 当一支需要流程约束的团队来管——质量不靠更聪明的工人,靠更好的产线。
Repo: pcliangx/AppGenesisForge
Other commands on appgenesisforge.
- /agf-board
生成/实时刷新 AGF 开发看板(task 卡片三列 kanban + 成员栏 + 工序 chips 的自包含 HTML,浏览器 open 即用)。数据全来自现成落盘态(~/.claude/tasks + ~/.claude/teams config + docs 报告 frontmatter),零新状态。
Open command - /agf-code-map
Deeply Understand (codemap) 入口 — 代码图谱 / 变更影响分析 / 理解地图(ADR-021,替换 agf-understand)。在 tools/codemap/ 跑 codemap CLI
Open command - /agf-deploy-uat
触发 product-lead 派 deploy-engineer 把合并后的 main 代码部署到隔离 UAT 栈并冒烟自检;冒烟通过后交接 qa-engineer 跑 E2E/UAT
Open command - /agf-handoff
把某个变更(change)的执行层(写代码 + 自测)手动交接给 Codex / opencode 等外部工具:建隔离 worktree + 生成 stamped AGENTS.md + 出门/回门简报。治理(规格/审查/部署/签字)仍全留 Claude Code。
Open command - /agf-init
安装 AGF 后由 Claude Code 接管项目初始化(替代手敲 setup/init-team.sh + 手工合并 CLAUDE.md / 重写 ADR-000 / 建 gh label / preset 裁剪)。在刚用 setup/install-to-existing.sh 装好 AGF 的目标项目里运行。
Open command - /agf-release-retro
触发 product-lead 在 MAJOR / MINOR release 推完后做复盘;PATCH 自动 abort。沿用 skill agf-running-release-retro。
Open command

