mcpField
E
estimate-calibrator

estimate-calibrator

github.com/mathews-tom开发337111 次安装2 天前更新
代码仓库

关于 estimate-calibrator

estimate-calibrator 是用于软件工作估算的技能,将任务拆分为原子单元,并以三点估算和 PERT 汇总范围,同时标明不确定性与置信度。

主要功能

  1. 01拆分为可独立估算的任务
  2. 02评估最佳、可能和最差情景
  3. 03识别并分类未知因素
  4. 04使用 PERT 计算汇总范围
  5. 05说明置信度及其依据

适用场景

  1. 01规划功能或项目的工期范围
  2. 02为不确定任务列出假设与风险
  3. 03用历史经验校准团队估算

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mathews-tom/armory --skill estimate-calibrator

安装后在 Claude Code 中输入/estimate-calibrator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
cases.yaml
references/
calibration-tips.md
estimation-methods.md
sizing-heuristics.md
unknown-categories.md

详细介绍

估算校准器

将单点猜测替换为结构化的三点估算:将工作拆分为原子单元,为每个单元估算最佳、最可能和最坏情况,识别未知项和假设,使用 PERT 计算汇总范围,并给出有明确依据的置信度等级。

参考文件

文件内容加载时机
references/estimation-methods.mdPERT 公式、三点估算、蒙特卡洛基础知识始终
references/unknown-categories.md技术、范围、外部和组织层面的不确定性类型识别未知项
references/calibration-tips.md估算中的认知偏差、历史校准、缓冲策略始终
references/sizing-heuristics.md常见任务规模模式、复杂度指标、参考类别数据需要快速估算规模时

前置条件

  • 工作项说明(功能、任务、项目)
  • 已拆分的任务(或先使用 task-decomposer skill)
  • 上下文:团队熟悉程度、技术栈、现有代码库

工作流

阶段 1:拆分工作

如果工作项尚未拆分为原子单元:

  1. 拆分为任务 — 每项任务都应能独立估算。
  2. 合理的粒度 — 任务应为 1 小时至 3 天。更大的任务不确定性更高;应进一步拆分。
  3. 识别依赖关系 — 关键路径上的任务决定最短工期。
阶段 2:三点估算

为每项任务估算三种情景:

情景定义思路
最佳情况一切顺利,没有意外。“如果我以前做过完全相同的事情”
最可能情况正常阻力,有一些小障碍。“考虑到常见挫折后的现实预期”
最坏情况出现重大问题,但并非灾难性。“墨菲定律,但不至于酿成灾难”

关键规则: 最坏情况不等于“一切都出错”。它是现实中较差的情景(第 90 百分位),而不是末日般的情景(第 99 百分位)。

阶段 3:识别未知项

对影响估算的未知项进行分类:

类别示例影响
技术“以前从未用过这个库”最可能情况会更长,最坏情况则会长得多
范围“需求可能会变更”所有估算都可能发生变化
外部“依赖合作伙伴提供 API 访问权限”阻塞风险——可能导致完全延期
集成“尚未使用生产数据测试”集成时会出现隐藏的复杂性
组织“需要设计审批”占用日历时间,而非投入时间
阶段 4:计算范围

对于单项任务,使用 PERT 公式:

Expected = (Best + 4 × Likely + Worst) / 6
Std Dev = (Worst - Best) / 6

对于汇总(项目)估算:

  • 预期值之和表示总预期工期
  • 标准差平方和的平方根表示汇总不确定性
Phase 5:评估置信度
置信度含义适用情况
高可能情况在 ±20% 以内任务已充分了解,团队以前做过
中可能情况在 ±50% 以内存在一些未知因素,团队有一定熟悉度
低可能情况在 ±100% 以内或更高存在重大未知因素,涉及新技术

输出格式

## Estimate: {Work Item}

### Summary
| Scenario | Duration |
|----------|----------|
| Best case | {time} |
| Likely case | {time} |
| Worst case | {time} |
| **PERT expected** | **{time}** |
| **Confidence** | **{High/Medium/Low}** |

### Task-Level Estimates

| # | Task | Best | Likely | Worst | PERT | Unknowns |
|---|------|------|--------|-------|------|----------|
| 1 | {task} | {time} | {time} | {time} | {time} | {key unknown or "None"} |
| 2 | {task} | {time} | {time} | {time} | {time} | {key unknown} |
| | **Total** | **{sum}** | **{sum}** | **{sum}** | **{pert}** | |

### Key Unknowns

| # | Unknown | Category | Impact on Estimate | Mitigation |
|---|---------|----------|-------------------|------------|
| 1 | {unknown} | {Technical/Scope/External} | +{time} if realized | {spike, prototype, early test} |

### Assumptions
- {Assumption 1 — what must be true for this estimate to hold}
- {Assumption 2}

### Risk Factors
- {Risk}: If realized, adds {time}. Likelihood: {High/Medium/Low}.

### Confidence Rationale
**{High/Medium/Low}** because:
- {Specific reason — e.g., "Team has built 3 similar features"}
- {Specific reason — e.g., "External API is a new integration"}

### Recommendation
{Commit to PERT expected with {X}% buffer, or spike the top unknown first.}

校准规则

  1. 给出三个点,而非一个。 单点估算总是错误的。三个点能表达不确定性——这是任何估算中最重要的部分。
  2. 最坏情况是第 90 百分位,而非第 99 百分位。 “小行星撞上办公室”不是有用的最坏情况。“API 文档有误,我们需要逆向工程协议”才是现实的最坏情况。
  3. 未知因素比已知难点更会推高估算。 一个难但充分了解的任务,比一个简单但新颖的任务更容易预测。
  4. 估算不是承诺。 应传达范围,而非截止日期。如果利益相关方需要一个单一数字,就给出 PERT 期望值,并根据置信度加上缓冲。
  5. 尽早探查未知因素。 如果某个未知因素主导了估算范围,应先投入 1-2 天进行探查,再估算其余部分。

错误处理

问题解决方法
工作项尚未分解先将其分解为 3-8 个任务(或建议使用 task-decomposer 技能)。
没有历史参考相对于已知任务进行估算:“这大约是 auth 功能的 2 倍。”
利益相关方希望得到单一数字提供带有相应置信度缓冲的 PERT 期望值(高:+20%,中:+50%,低:+100%)。
估算看起来过大检查任务列表是否范围蔓延。移除非必要任务,并确定可以延期的内容。
团队从未做过这类工作将置信度标为低。建议在承诺估算之前先进行探查。

不应进行估算的情况

以下情况应提出异议:

  • 工作属于探索性质(研究、探查)——应设定时间上限,而非进行估算
  • 需求完全未定义——应先明确范围
  • 用户要求为大型项目精确到小时的估算——应提供范围,而非虚假的精确度
  • 估算会被当作承诺使用,却不承认其中的不确定性

评论

支持 Markdown