/agf-team-stop
UAT 签字后关闭执行层 teammate(dev / reviewer / qa);PL 与单实例长期角色保留以接续后续需求
$ 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-team-stop
Context preview
What this command does when you run it.
UAT 签字后关闭执行层 teammate(dev / reviewer / qa);PL 与单实例长期角色保留以接续后续需求
Command definition
agf-team-stop.mddescription: UAT 签字后关闭执行层 teammate(dev / reviewer / qa);PL 与单实例长期角色保留以接续后续需求
argument-hint: 无参数(自动识别 alive teammate)
任务
关闭已完成本 feature 工作的执行层 teammate,释放 process / 上下文,保留 product-lead 与单实例长期角色待命。
> **与"过门即关"的关系([ADR-025](../../docs/adr/025-instance-lifecycle-eager-close.md))**:理想流程下 reviewer / qa 实例在 fan-in 后、dev 实例在 UAT 签字后已由 PL **逐个 `shutdown_request`** 关闭(见 `product-lead.md` Step 3.5 / Step 5)。本命令是 feature 收尾的**兜底批量关**——清掉一切仍 alive 的执行层实例(过门即关漏关 / 用户选暂留后再统一关)。逐实例关与本批量关**同一 `shutdown_request` 机制 + 同一 task 安全检查**,只是触发时机不同。
**默认关闭类型**(14 个执行层):`frontend-dev` / `backend-dev` / `ai-agent-dev` / `ml-engineer` / `miniapp-dev` / `apple-dev` / `code-reviewer` / `miniapp-code-reviewer` / `apple-code-reviewer` / `qa-engineer` / `miniapp-qa-engineer` / `apple-qa-engineer` / `deploy-engineer` / `apple-release-engineer`
**默认保留类型**(PL + 4 个单实例长期角色,共 5):`product-lead` / `tech-lead` / `uiux-designer` / `content-writer` / `growth-analyst`
> 范围设计依据:详见 `.claude/rules/verified-facts.md` 的 Pool 上限表 —— 按 feature 周期内 spawn 的执行层角色默认关闭(含 Pool ≥ 3 的 dev / reviewer / qa,以及 Pool=1 但仅在部署 / 发布阶段 spawn 的 `deploy-engineer` / `apple-release-engineer`;**Apple 轨 4 角色** `apple-dev` / `apple-code-reviewer` / `apple-qa-engineer` / `apple-release-engineer` 同属执行层,C-2 修复前漏列致 Apple feature UAT 后静默漏关、违反 ADR-025「过门即关」);PL 与跨 feature 待命的单实例长期角色(`tech-lead` / `uiux-designer` / `content-writer` / `growth-analyst`)保留。
执行步骤
1. **确认 UAT 已签字**:
- 确认最近 feature 的 UAT 业务签字态:变更文件夹 `docs/changes/<change>/proposal.md` 的签字记录 / qa UAT 报告 `docs/qa/<feature>-uat-*.md` frontmatter(PRD §10 Sign-offs 为 fallback)
- 业务侧 ≥ 1 个 `approve` → 继续
- 否则 **abort**:`"UAT 未签字(缺业务侧 approve),先 /agf-uat <feature> 完成验收。"`
2. **读 team config 列出待关 teammate**:
- team-name 取自当前 session 上下文(agent team 模式下 PL session 必有);无法确定时 `ls ~/.claude/teams/` 取最近修改
- Read `~/.claude/teams/<team-name>/config.json`,遍历 `members[]`
- 过滤 `agentType` ∈ 默认关闭类型清单(pool 实例 `<type>-<N>` 的 `agentType` 字段仍是原 type,自动覆盖)
- 输出预览:`共 N 个待关:<name1>(<type1>), <name2>(<type2>), ...;保留 M 个:<name>(<type>), ...`
3. **关闭前 task 安全检查**:
- `/agf-board`(或 `bash .claude/scripts/agf-board.sh`)查共享 task 看板
- 待关 teammate 名下 task 必须全部 `status ∈ {completed}`(其它状态都阻断)
- 若有 `pending` / `in_progress` / `blocked` 命中待关 owner → **abort**:列出残留任务 `T-NNN + owner + status`,要求 PL 先 `TaskUpdate` 完成或重派给保留角色
4. **逐个发 shutdown_request**(按 `name` 升序串行,避免响应错乱):
SendMessage({
to: "<teammate-name>",
message: {type: "shutdown_request", reason: "UAT 已签字,本 feature 工作完成"}
})- 等对方回 `shutdown_response` 带 `approve: true` 再发下一个
- 若 5 分钟内无响应 → 跳过该 teammate 并在最终报告标 `⚠️ timeout`,不阻断后续
5. **报告**(必须输出,作为闭环证据):
- ✅ 已关闭:`<name>`(<agentType>), ... ×N
- ⚠️ timeout / 拒绝:(如有,列名 + 原因)
- 🟢 剩余 alive:`<name>`(<agentType>), ...(至少含 `product-lead`)
- 下一步建议:
- 若 progress 未归档 → `bash .claude/scripts/archive-progress.sh <feature>`
- 若需求入口未归档 → `bash .claude/scripts/agf-spec-archive.sh <change> <YYYY-MM-DD>`(变更文件夹 delta merge 进活规格 + 移 archive;PRD fallback 才 `mv docs/prd/<feature>-*.md docs/prd/archive/`)
- 继续给 PL 派新需求即可
任务规模过小怎么办
- 没有命中类型的 teammate alive → `"无可关闭 teammate(PL / 单实例角色不在默认关闭范围)。"` 退出
- 不在 agent team 模式(无 `~/.claude/teams/<team-name>/` 目录)→ `"当前会话不是 agent team 模式,无 teammate 可关闭。"` 退出
- 用户想连 PL / 长期角色一起关 → 不在本命令范围;告诉用户:`"PL 默认保留以接续后续需求;如确需全 team 解散,先手动 SendMessage shutdown_request 给 PL,PL 退出后 team 目录随 session 结束自动清理(v2.1.178 起 TeamCreate / TeamDelete 工具已移除,无需手动操作)。"`
Read more
description: UAT 签字后关闭执行层 teammate(dev / reviewer / qa);PL 与单实例长期角色保留以接续后续需求 argument-hint: 无参数(自动识别 alive teammate)
任务
关闭已完成本 feature 工作的执行层 teammate,释放 process / 上下文,保留 product-lead 与单实例长期角色待命。
> **与"过门即关"的关系([ADR-025](../../docs/adr/025-instance-lifecycle-eager-close.md))**:理想流程下 reviewer / qa 实例在 fan-in 后、dev 实例在 UAT 签字后已由 PL **逐个 `shutdown_request`** 关闭(见 `product-lead.md` Step 3.5 / Step 5)。本命令是 feature 收尾的**兜底批量关**——清掉一切仍 alive 的执行层实例(过门即关漏关 / 用户选暂留后再统一关)。逐实例关与本批量关**同一 `shutdown_request` 机制 + 同一 task 安全检查**,只是触发时机不同。
**默认关闭类型**(14 个执行层):`frontend-dev` / `backend-dev` / `ai-agent-dev` / `ml-engineer` / `miniapp-dev` / `apple-dev` / `code-reviewer` / `miniapp-code-reviewer` / `apple-code-reviewer` / `qa-engineer` / `miniapp-qa-engineer` / `apple-qa-engineer` / `deploy-engineer` / `apple-release-engineer`
**默认保留类型**(PL + 4 个单实例长期角色,共 5):`product-lead` / `tech-lead` / `uiux-designer` / `content-writer` / `growth-analyst`
> 范围设计依据:详见 `.claude/rules/verified-facts.md` 的 Pool 上限表 —— 按 feature 周期内 spawn 的执行层角色默认关闭(含 Pool ≥ 3 的 dev / reviewer / qa,以及 Pool=1 但仅在部署 / 发布阶段 spawn 的 `deploy-engineer` / `apple-release-engineer`;**Apple 轨 4 角色** `apple-dev` / `apple-code-reviewer` / `apple-qa-engineer` / `apple-release-engineer` 同属执行层,C-2 修复前漏列致 Apple feature UAT 后静默漏关、违反 ADR-025「过门即关」);PL 与跨 feature 待命的单实例长期角色(`tech-lead` / `uiux-designer` / `content-writer` / `growth-analyst`)保留。
执行步骤
1. **确认 UAT 已签字**:
- 确认最近 feature 的 UAT 业务签字态:变更文件夹 `docs/changes/<change>/proposal.md` 的签字记录 / qa UAT 报告 `docs/qa/<feature>-uat-*.md` frontmatter(PRD §10 Sign-offs 为 fallback)
- 业务侧 ≥ 1 个 `approve` → 继续
- 否则 **abort**:`"UAT 未签字(缺业务侧 approve),先 /agf-uat <feature> 完成验收。"`
2. **读 team config 列出待关 teammate**:
- team-name 取自当前 session 上下文(agent team 模式下 PL session 必有);无法确定时 `ls ~/.claude/teams/` 取最近修改
- Read `~/.claude/teams/<team-name>/config.json`,遍历 `members[]`
- 过滤 `agentType` ∈ 默认关闭类型清单(pool 实例 `<type>-<N>` 的 `agentType` 字段仍是原 type,自动覆盖)
- 输出预览:`共 N 个待关:<name1>(<type1>), <name2>(<type2>), ...;保留 M 个:<name>(<type>), ...`
3. **关闭前 task 安全检查**:
- `/agf-board`(或 `bash .claude/scripts/agf-board.sh`)查共享 task 看板
- 待关 teammate 名下 task 必须全部 `status ∈ {completed}`(其它状态都阻断)
- 若有 `pending` / `in_progress` / `blocked` 命中待关 owner → **abort**:列出残留任务 `T-NNN + owner + status`,要求 PL 先 `TaskUpdate` 完成或重派给保留角色
4. **逐个发 shutdown_request**(按 `name` 升序串行,避免响应错乱):
SendMessage({
to: "<teammate-name>",
message: {type: "shutdown_request", reason: "UAT 已签字,本 feature 工作完成"}
})- 等对方回 `shutdown_response` 带 `approve: true` 再发下一个
- 若 5 分钟内无响应 → 跳过该 teammate 并在最终报告标 `⚠️ timeout`,不阻断后续
5. **报告**(必须输出,作为闭环证据):
- ✅ 已关闭:`<name>`(<agentType>), ... ×N
- ⚠️ timeout / 拒绝:(如有,列名 + 原因)
- 🟢 剩余 alive:`<name>`(<agentType>), ...(至少含 `product-lead`)
- 下一步建议:
- 若 progress 未归档 → `bash .claude/scripts/archive-progress.sh <feature>`
- 若需求入口未归档 → `bash .claude/scripts/agf-spec-archive.sh <change> <YYYY-MM-DD>`(变更文件夹 delta merge 进活规格 + 移 archive;PRD fallback 才 `mv docs/prd/<feature>-*.md docs/prd/archive/`)
- 继续给 PL 派新需求即可
任务规模过小怎么办
- 没有命中类型的 teammate alive → `"无可关闭 teammate(PL / 单实例角色不在默认关闭范围)。"` 退出
- 不在 agent team 模式(无 `~/.claude/teams/<team-name>/` 目录)→ `"当前会话不是 agent team 模式,无 teammate 可关闭。"` 退出
- 用户想连 PL / 长期角色一起关 → 不在本命令范围;告诉用户:`"PL 默认保留以接续后续需求;如确需全 team 解散,先手动 SendMessage shutdown_request 给 PL,PL 退出后 team 目录随 session 结束自动清理(v2.1.178 起 TeamCreate / TeamDelete 工具已移除,无需手动操作)。"`
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-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

