estimate

$npx mdskill add pixel-cellar/Claude-Code-Game-Studios/estimate

当此技能被调用时:

SKILL.md
.github/skills/estimateView on GitHub ↗
---
name: estimate
description: "通过分析复杂度、依赖关系、历史速度和风险因素来估算任务工作量。生成包含置信水平的结构化估算。"
argument-hint: "[任务描述]"
user-invocable: true
allowed-tools: Read, Glob, Grep
---

当此技能被调用时:

1. **读取任务描述**,来自参数。如果描述过于模糊以至于无法进行有意义的估算,请在继续之前要求澄清。

2. **读取 CLAUDE.md** 获取项目上下文:技术栈、编码标准、架构模式以及任何估算指南。

3. **读取相关设计文档**,来自 `design/gdd/`,如果任务与已记录的功能或系统相关。

4. **扫描代码库**,了解此任务影响的系统:
   - 识别需要变更的文件和模块
   - 评估这些文件的复杂度(大小、依赖数量、圈复杂度(Cyclomatic Complexity))
   - 识别与其他系统的集成点
   - 检查受影响区域的现有测试覆盖率

5. **读取过去的冲刺数据**,来自 `production/sprints/`(如果可用):
   - 查找类似的已完成任务及其实际工作量
   - 计算历史速度(计划 vs 实际)
   - 识别任何估算偏差模式(持续高估或低估)

6. **分析以下因素**:

   **代码复杂度**:
   - 受影响文件的代码行数
   - 依赖数量和耦合程度
   - 是否涉及核心/引擎代码 vs 叶节点/功能代码
   - 是否可以遵循现有模式,还是需要新模式

   **范围**:
   - 涉及的系统数量
   - 新代码 vs 修改现有代码的比例
   - 需要的新测试覆盖量
   - 需要的数据迁移或配置变更

   **风险**:
   - 新技术或不熟悉的库
   - 不明确或模糊的需求
   - 对未完成工作的依赖
   - 跨系统集成复杂度
   - 性能敏感度

7. **生成估算**:

```markdown
## 任务估算:[任务名称]
生成时间:[日期]

### 任务描述
[用 1-2 句话清楚地重述任务]

### 复杂度评估

| 因素 | 评估 | 备注 |
|--------|-----------|-------|
| 受影响系统 | [列表] | [核心、玩法、UI 等] |
| 可能修改的文件 | [数量] | [关键文件列在下方] |
| 新代码 vs 修改 | [比例,如 70% 新代码 / 30% 修改] | |
| 集成点 | [数量] | [哪些系统交互] |
| 需要的测试覆盖 | [低 / 中 / 高] | [单元测试、集成测试、手动测试] |
| 可用的现有模式 | [有 / 部分有 / 无] | [可遵循现有代码还是需要新探索] |

**可能受影响的关键文件:**
- `[path/to/file1]` -- [这里的变更内容]
- `[path/to/file2]` -- [这里的变更内容]
- `[path/to/file3]` -- [这里的变更内容]

### 工作量估算

| 场景 | 天数 | 假设条件 |
|----------|------|------------|
| 乐观 | [X] | 一切顺利,没有意外,需求明确 |
| 预期 | [Y] | 正常节奏,有少量问题,一轮审查反馈 |
| 悲观 | [Z] | 出现重大未知因素,被阻塞一天,需求变更 |

**建议预算:[Y 天]**

[如果有历史数据:"基于 [N] 个类似任务的平均实际 [X] 天 vs 预估 [Y] 天,已应用 [校正因子] 的调整。"]

### 置信水平:[高 / 中 / 低]

**高** -- 需求明确,系统熟悉,遵循现有模式,之前完成过类似任务。

**中** -- 存在一些未知因素,涉及中等复杂度的系统,有之前工作的部分先例。

**低** -- 存在重大未知因素,新技术,需求不明确,或涉及跨多个系统的横切关注点。

[说明哪些因素决定了此特定任务的置信水平。]

### 风险因素

| 风险 | 可能性 | 影响 | 缓解措施 |
|------|-----------|--------|------------|
| [具体风险] | [高/中/低] | [如果发生则增加的天数] | [如何降低风险] |
| [另一个风险] | [可能性] | [影响] | [缓解措施] |

### 依赖关系

| 依赖项 | 状态 | 延迟时的影响 |
|-----------|--------|-------------------|
| [必须先完成的工作] | [已完成 / 进行中 / 未开始] | [如何影响此任务] |

### 建议拆分

| # | 子任务 | 估算 | 备注 |
|---|----------|----------|-------|
| 1 | [调研 / 探索性实验(spike)] | [X 天] | [如果未知因素需要先调查] |
| 2 | [核心实现] | [X 天] | [主要工作] |
| 3 | [与系统 X 的集成] | [X 天] | [连接到现有代码] |
| 4 | [测试和验证] | [X 天] | [编写测试、手动验证] |
| 5 | [代码审查和迭代] | [X 天] | [审查反馈、修复] |
| | **合计** | **[Y 天]** | |

### 历史对比
[如果冲刺历史中存在类似任务:]

| 类似任务 | 预估 | 实际 | 相关差异 |
|-------------|-----------|--------|-------------------|
| [过去的任务 1] | [X 天] | [Y 天] | [使其相似/不同的原因] |
| [过去的任务 2] | [X 天] | [Y 天] | [使其相似/不同的原因] |

### 备注与假设
- [影响估算的关键假设]
- [另一个假设]
- [关于范围边界的任何注意事项 -- 包含什么 vs 排除什么]
- [建议:例如,"如果需求 X 不明确,建议先进行探索性实验"]
```

8. **向用户输出估算**,附带简短摘要:建议预算、置信水平和最大的单个风险因素。

### 指南

- 始终给出一个范围(乐观 / 预期 / 悲观),绝不要只给出一个数字。单点估算会造成虚假精确的错觉。
- 建议预算应为预期估算,而非乐观估算。留有余地并非不诚实 —— 这是务实的做法。
- 如果置信水平为低,建议在进行完整估算之前先进行限时探索性实验(spike)或原型验证。
- 明确说明包含和排除的内容。范围模糊是估算错误最常见的原因。
- 以半天为单位取整。对于超过一天的任务,以小时为单位估算会产生虚假精确的错觉。
- 如果任务太大无法自信估算(预期超过 10 天),建议将其拆分为更小的子任务并逐一估算。
- 不要暗中增加估算缓冲。如果存在风险,请在风险因素部分明确指出,以便团队决定如何应对。
More from pixel-cellar/Claude-Code-Game-Studios