discuss-phase · git:20260512.6523792 · 2026-05-12 · sha256 89f12bd42b35eeb8

discuss-phase git:20260512.6523792A

Immutable. This exact content is served forever at /api/v1/blob/89f12bd42b35eeb8.

---
name: discuss-phase
description: >
  融合 GSD discuss-phase 与 gstack office-hours 的预编码设计讨论技能。
  在 /team-intake 之后、/team-plan 之前,通过苏格拉底式质疑捕获灰色地带、
  用户偏好和关键假设,产出 CONTEXT.md 供后续规划和实现消费。
---

# Discuss Phase

## 用途

- 把"需求文字看起来清楚了就开干"改成"先把灰色地带和隐含假设摊开讨论"。
- 适合需求有模糊空间、存在多种可行路线、或用户偏好尚未表达的场景。
- 在 `/team-intake` 完成后、`/team-plan` 之前推荐触发。

## 两种模式

### discuss(交互质疑模式)

逐项质疑需求中的灰色地带,引导用户做出偏好选择。适用于用户在场、可以即时回答的场景。

### assumptions(代码分析优先模式)

先扫描代码库识别现有模式和约束,把代码中已有的事实作为假设基础,仅对代码无法回答的灰色地带提问。适用于代码库已有大量存量逻辑的迭代场景。

## 默认做法

1. **收集输入**:读取 `/team-intake` 的产出(PRD、需求简报),提取目标、范围、约束和待确认项。

2. **识别灰色地带**:按以下维度自动扫描未锁定的决策点:
   - **UI 交互**:状态管理方式、加载/空/错误态策略、动效取舍
   - **API/数据**:分页策略、错误码规范、缓存策略、数据保留周期
   - **架构**:同步/异步、推/拉、单体/微服务边界
   - **业务规则**:边界条件处理、权限粒度、审批流程节点
   - **质量**:性能预算、浏览器兼容基线、可访问性等级
   - **部署**:环境策略、Feature Flag、灰度比例

3. **Forcing Questions**(来自 gstack office-hours 方法论):
   - 如果这个功能只能做一件事,那件事是什么?
   - 这个功能的用户是谁?他们当前的替代方案是什么?
   - 半年后回看,什么情况下我们会认为这是浪费时间?
   - 最小可交付版本是什么?跟完整版的差距在哪?
   - 有哪些假设一旦不成立,方案就会完全不同?
   - 哪个决策如果做错了代价最大?

4. **逐项讨论**:每个灰色地带呈现为:
   - 背景:为什么这是一个需要讨论的点
   - 选项:可行方案列表,每个带利弊分析
   - 推荐:基于代码分析和最佳实践的建议
   - 等待用户确认或修改

5. **产出 CONTEXT.md**:将所有讨论结论写入 `docs/artifacts/{slug}/context.md`,包含:
   - 确认的技术偏好和约束
   - 灰色地带的最终决策
   - 待进一步验证的假设(标记为 `[ASSUMPTION]`)
   - 明确排除的选项及排除原因

## 触发信号

- `/team-intake` 产出中包含 3 个以上待确认项。
- 需求涉及新领域或新技术栈,团队缺乏先验经验。
- 存在多个合理的技术路线,无法在 intake 阶段直接锁定。
- 需求涉及跨团队或跨系统边界。
- 用户显式要求"先讨论一下再开始"。

## 配套约束

1. **不替代 intake**:discuss-phase 消费 intake 的输出,不重新做需求收集。
2. **不替代 plan**:discuss-phase 产出偏好和约束,不产出任务拆解和排期。
3. **时间控制**:单次 discuss 控制在 6-10 个灰色地带以内,超出时建议分批或升级给 `architect`。
4. **结论必须落盘**:所有讨论结论写入 `context.md`,不停留在对话上下文中。
5. **assumptions 模式红线**:代码分析得出的假设必须标注证据来源(文件路径 + 行号),不能凭直觉编造。