/agf-deploy-uat
触发 product-lead 派 deploy-engineer 把合并后的 main 代码部署到隔离 UAT 栈并冒烟自检;冒烟通过后交接 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-deploy-uat
Context preview
What this command does when you run it.
触发 product-lead 派 deploy-engineer 把合并后的 main 代码部署到隔离 UAT 栈并冒烟自检;冒烟通过后交接 qa-engineer 跑 E2E/UAT
Command definition
agf-deploy-uat.mddescription: 触发 product-lead 派 deploy-engineer 把合并后的 main 代码部署到隔离 UAT 栈并冒烟自检;冒烟通过后交接 qa-engineer 跑 E2E/UAT
argument-hint: <feature-slug>(必须已通过 code review(含 SIT Audit)且已合并到 main)
任务
对 feature `$ARGUMENTS` 启动 **UAT 部署门**:把合并后的 main 代码部署到与所有 dev worktree 物理隔离的本地 UAT 栈,冒烟自检通过后交接 qa-engineer。
这是交付链路里 code review 与 E2E 之间新增的部署门,二元 gate(`✅ 部署成功(冒烟通过)` / `❌ 部署失败`),不是测试阶段。
执行步骤
1. **检查先决条件**:
- `docs/reviews/$ARGUMENTS-*.md` 存在(含单实例 `<feat>-<date>.md` 与 pool 实例 `<feat>-r<N>-<date>.md`);**所有** 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` 可见该 feature 的合并提交);记录待部署 commit SHA
- 目标为 **Web 全栈链路**(docker-compose 化);若是小程序 feature → **拒绝**:小程序"部署"= 上传体验版,归 miniapp-dev / miniapp-qa-engineer,不走本命令
- 任一不满足 → **拒绝启动部署**,告诉用户缺什么
2. **派单**(派 `deploy-engineer`;**Pool 上限 = 1,禁 fan-out**——只有一个 UAT 环境,并发部署必撞端口/状态):
- **用户授权归因(A-F4 / [ADR-019](../../docs/adr/019-deploy-release-auth-gate.md),hook `gate-deploy-release-auth` 强制)**:本 slash 命令由用户显式触发 = 用户授权。派单 task 描述**必须含**一行 `用户授权: /agf-deploy-uat $ARGUMENTS 已触发(用户显式调用)`,否则 TaskCreated 被 hook exit 2 阻断。
- `deploy-engineer` — initial task: 按 skill `agf-deploying-uat` 把合并后 main 部署到隔离 UAT 栈(独立 `COMPOSE_PROJECT_NAME=${APP_NAME}-uat` + `UAT_PORT_OFFSET=900`),容器内跑 `alembic upgrade head`,冒烟自检(真实 curl 输出,非 dry-run),落部署报告到 `docs/deploy/$ARGUMENTS-uat-[YYYY-MM-DD].md`,SendMessage product-lead 附 UAT 栈 URL
3. **部署门约束**:
- 部署源必须是**合并后的 main**,不是任何 dev worktree 未合并分支
- 必走隔离栈(独立 project name + 端口偏移 +900,避开 dev base / QA pool base+100..+700)
- 冒烟必须真实输出(前端可达 + 后端健康 + 核心 API 真实 200 + DB 连通),禁 dry-run
- **deploy-engineer 不修源码**:冒烟暴露代码问题 → 退回 product-lead → dev;环境/配置问题 → deploy-engineer 自己重部
4. **完成后**:
- ✅ 部署成功(冒烟通过)→ product-lead 据部署报告里的 UAT URL 触发 `/agf-uat $ARGUMENTS`(或先 E2E),qa-engineer 对**共享 UAT 栈**测,不再对 dev worktree
- ❌ 部署失败 → product-lead 决策:环境/配置问题让 deploy-engineer 重部;代码问题回实现层修复,重走后续工序
任务规模过小怎么办
- 部署门规模固定(起一个隔离栈 + 冒烟),不存在"过小"。
- 若 docker 不可用 / `.env.uat` 缺失 → 不硬启动,告诉用户先补齐前置(docker daemon、UAT 专用 env 文件),再重跑本命令。
- 若代码尚未合并到 main(仍在 review 或未 merge)→ 不启动部署,告诉用户:"UAT 部署门要求代码先合并到 main;当前请先完成 code review(含 SIT Audit)并合并。"
Read more
description: 触发 product-lead 派 deploy-engineer 把合并后的 main 代码部署到隔离 UAT 栈并冒烟自检;冒烟通过后交接 qa-engineer 跑 E2E/UAT argument-hint: <feature-slug>(必须已通过 code review(含 SIT Audit)且已合并到 main)
任务
对 feature `$ARGUMENTS` 启动 **UAT 部署门**:把合并后的 main 代码部署到与所有 dev worktree 物理隔离的本地 UAT 栈,冒烟自检通过后交接 qa-engineer。
这是交付链路里 code review 与 E2E 之间新增的部署门,二元 gate(`✅ 部署成功(冒烟通过)` / `❌ 部署失败`),不是测试阶段。
执行步骤
1. **检查先决条件**:
- `docs/reviews/$ARGUMENTS-*.md` 存在(含单实例 `<feat>-<date>.md` 与 pool 实例 `<feat>-r<N>-<date>.md`);**所有** 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` 可见该 feature 的合并提交);记录待部署 commit SHA
- 目标为 **Web 全栈链路**(docker-compose 化);若是小程序 feature → **拒绝**:小程序"部署"= 上传体验版,归 miniapp-dev / miniapp-qa-engineer,不走本命令
- 任一不满足 → **拒绝启动部署**,告诉用户缺什么
2. **派单**(派 `deploy-engineer`;**Pool 上限 = 1,禁 fan-out**——只有一个 UAT 环境,并发部署必撞端口/状态):
- **用户授权归因(A-F4 / [ADR-019](../../docs/adr/019-deploy-release-auth-gate.md),hook `gate-deploy-release-auth` 强制)**:本 slash 命令由用户显式触发 = 用户授权。派单 task 描述**必须含**一行 `用户授权: /agf-deploy-uat $ARGUMENTS 已触发(用户显式调用)`,否则 TaskCreated 被 hook exit 2 阻断。
- `deploy-engineer` — initial task: 按 skill `agf-deploying-uat` 把合并后 main 部署到隔离 UAT 栈(独立 `COMPOSE_PROJECT_NAME=${APP_NAME}-uat` + `UAT_PORT_OFFSET=900`),容器内跑 `alembic upgrade head`,冒烟自检(真实 curl 输出,非 dry-run),落部署报告到 `docs/deploy/$ARGUMENTS-uat-[YYYY-MM-DD].md`,SendMessage product-lead 附 UAT 栈 URL
3. **部署门约束**:
- 部署源必须是**合并后的 main**,不是任何 dev worktree 未合并分支
- 必走隔离栈(独立 project name + 端口偏移 +900,避开 dev base / QA pool base+100..+700)
- 冒烟必须真实输出(前端可达 + 后端健康 + 核心 API 真实 200 + DB 连通),禁 dry-run
- **deploy-engineer 不修源码**:冒烟暴露代码问题 → 退回 product-lead → dev;环境/配置问题 → deploy-engineer 自己重部
4. **完成后**:
- ✅ 部署成功(冒烟通过)→ product-lead 据部署报告里的 UAT URL 触发 `/agf-uat $ARGUMENTS`(或先 E2E),qa-engineer 对**共享 UAT 栈**测,不再对 dev worktree
- ❌ 部署失败 → product-lead 决策:环境/配置问题让 deploy-engineer 重部;代码问题回实现层修复,重走后续工序
任务规模过小怎么办
- 部署门规模固定(起一个隔离栈 + 冒烟),不存在"过小"。
- 若 docker 不可用 / `.env.uat` 缺失 → 不硬启动,告诉用户先补齐前置(docker daemon、UAT 专用 env 文件),再重跑本命令。
- 若代码尚未合并到 main(仍在 review 或未 merge)→ 不启动部署,告诉用户:"UAT 部署门要求代码先合并到 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-apple-release
触发 product-lead 派 apple-release-engineer 把合并后的 main 代码构建成签名分发包(TestFlight / 公证 DMG / 内部包)并冒烟自检;通过后交接 apple-qa-engineer 跑 E2E/UAT
Open command - /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-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

