---
name: scope-check
description: "通过将当前范围与原始计划进行对比，分析功能或 Sprint 的范围蔓延（Scope Creep）。标记新增项，量化膨胀程度，并推荐裁剪方案。"
argument-hint: "[feature-name or sprint-N]"
user-invocable: true
allowed-tools: Read, Glob, Grep
context: |
  !git diff --stat HEAD~20 2>/dev/null
---

当此技能被调用时：

1. **读取原始计划** — 找到相关文档：
   - 如果是功能名称：从 `design/gdd/` 读取设计文档
   - 如果是 Sprint 编号：从 `production/sprints/` 读取 Sprint 计划
   - 如果是里程碑：从 `production/milestones/` 读取里程碑定义

2. **读取当前状态** — 检查实际已实现或正在进行的部分：
   - 扫描代码库中与该功能/Sprint 相关的文件
   - 读取 Git 日志中与此工作相关的提交
   - 检查指示未完成范围新增的 TODO 注释

3. **对比原始范围与当前范围**：

   ```markdown
   ## 范围检查: [Feature/Sprint Name]
   生成时间: [Date]

   ### 原始范围
   [原始计划中的项目列表]

   ### 当前范围
   [当前已实现或正在进行的项目列表]

   ### 新增范围（不在原始计划中）
   | 新增项 | 添加者 | 时间 | 有依据？ | 工作量 |
   |--------|--------|------|----------|--------|
   | [item] | [commit/person] | [date] | [是/否/不明确] | [小/中/大] |

   ### 移除范围（在原始计划中但已取消）
   | 移除项 | 原因 | 影响 |
   |--------|------|------|
   | [item] | [移除原因] | [受影响的内容] |

   ### 膨胀评分
   - 原始项目数: [N]
   - 当前项目数: [N]
   - 新增项目数: [N] (+[X]%)
   - 移除项目数: [N]
   - 净范围变化: [+/-N] ([X]%)

   ### 风险评估
   - **进度风险**: [低/中/高] — [说明]
   - **质量风险**: [低/中/高] — [说明]
   - **集成风险**: [低/中/高] — [说明]

   ### 建议
   1. **裁剪**: [为按时交付应移除的项目]
   2. **延期**: [可移至未来 Sprint/版本的项目]
   3. **保留**: [确实必要的新增项]
   4. **标记**: [需要制作人（Producer）/创意总监（Creative Director）决策的项目]
   ```

4. **输出范围检查结果**，附带明确结论：
   - **正常**: 范围在原始计划的 10% 以内
   - **轻微蔓延**: 范围增加 10-25% — 通过调整可管理
   - **显著蔓延**: 范围增加 25-50% — 需要裁剪或延长工期
   - **失控**: 范围增加 >50% — 停止并重新规划

### 规则
- 范围蔓延是指在没有相应裁剪或工期延长的情况下新增内容
- 并非所有新增都是坏事 — 有些是发现的需求。但必须被确认并纳入考量
- 在推荐裁剪时，优先保护核心玩家体验，而非锦上添花的功能
- 始终量化范围变化 — "感觉变大了"不可操作，"+35% 的项目数"才是
