zebbern/project-sizing-guide
Software project effort estimation assistant. Outputs three-point estimates (optimistic/most-likely/pessimistic values with confidence intervals), T-shirt sizes, or Function Point Analysis (FPA) counts. Triggered when users ask 'how long will this feature take,' need to assess project workload, perform PERT estimation, T-shirt sizing, FPA, sprint planning, or quote-based effort breakdowns.
npx skills add https://github.com/zebbern/claude-code-guide --skill project-sizing-guide
Helps teams produce scientifically grounded effort estimates for software projects, based on three major methodologies: Three-Point Estimation (PERT), T-shirt Sizing, and Function Point Analysis (FPA). Outputs optimistic, most-likely, and pessimistic values along with risk intervals.
A calculation helper is available:
python3 scripts/estimate_calculator.py --method pert --tasks '[{"name":"User Login","O":2,"M":3,"P":8}]'
| Scenario | Recommended Method | Rationale |
|----------|-------------------|-----------|
| Early feasibility study, rough budgeting | T-shirt Sizing | Little information available; quickly align on order of magnitude |
| Sprint planning, iteration estimation | Three-Point Estimation (PERT) | Good granularity with confidence intervals |
| Contract bidding, large-project RFPs | Function Point Analysis (FPA) | Most rigorous; industry-comparable |
| Team has historical data | PERT + historical calibration | Combines empirical correction with data |
| Metric | Formula | Meaning |
|--------|---------|---------|
| Expected Value E | (O + 4M + P) / 6 | Weighted average effort |
| Standard Deviation σ | (P − O) / 6 | Estimation uncertainty |
| Variance V | σ² | Used to aggregate across tasks |
| Project Total Expected | ΣE | Sum of individual expected values |
| Project Total Std Dev | √(ΣV) | Square root of summed variances |
Where:
| Confidence Level | Interval | Use Case |
|-----------------|----------|----------|
| 68.3% | E ± 1σ | Internal rough estimates |
| 90% | E ± 1.645σ | Project planning |
| 95% | E ± 2σ | External quotes |
| 99.7% | E ± 3σ | Contractual commitments |
| Size | Typical Range (person-days) | Typical Story Points | Suitable For |
|------|----------------------------|---------------------|--------------|
| XS | 0.25 – 0.5 | 1 | Config changes, copy edits, simple bug fixes |
| S | 0.5 – 2 | 2 – 3 | Single-component development, simple API, minor UI tweaks |
| M | 2 – 5 | 5 – 8 | Complete feature module, moderately complex API |
| L | 5 – 15 | 13 – 21 | Cross-module features requiring integration |
| XL | 15 – 40 | 34 – 55 | Subsystem-level development requiring architecture design |
| XXL | 40+ | 89+ | Should be split across multiple iterations; not recommended as a single estimation unit |
When more precise numbers are needed, T-shirt sizes can be converted to three-point estimates:
| Size | O (person-days) | M (person-days) | P (person-days) |
|------|-----------------|-----------------|-----------------|
| XS | 0.25 | 0.5 | 1 |
| S | 0.5 | 1 | 2.5 |
| M | 2 | 3.5 | 7 |
| L | 5 | 10 | 20 |
| XL | 15 | 25 | 50 |
| XXL | 40 | 70 | 150 |
| Component Type | Abbreviation | Definition | Example |
|---------------|-------------|-----------|---------|
| Internal Logical File | ILF | Logical data group maintained by the application | Users table, Orders table |
| External Interface File | EIF | Data group referenced but not maintained by the application | Third-party exchange rate data |
| External Input | EI | Data processing entering the system from outside | Form submission, API POST |
| External Output | EO | Data generated and sent outside the system | Report generation, exports |
| External Inquiry | EQ | Simple data retrieval + display | List queries, detail pages |
| Component Type | Low | Medium | High |
|---------------|-----|--------|------|
| ILF | 7 | 10 | 15 |
| EIF | 5 | 7 | 10 |
| EI | 3 | 4 | 6 |
| EO | 4 | 5 | 7 |
| EQ | 3 | 4 | 6 |
ILF / EIF Complexity (based on DET – Data Element Types and RET – Record Element Types):
| | DET 1-19 | DET 20-50 | DET 51+ |
|---|---------|-----------|---------|
| RET 1 | Low | Low | Medium |
| RET 2-5 | Low | Medium | High |
| RET 6+ | Medium | High | High |
EI Complexity (based on DET and FTR – File Types Referenced):
| | DET 1-4 | DET 5-15 | DET 16+ |
|---|---------|----------|---------|
| FTR 0-1 | Low | Low | Medium |
| FTR 2 | Low | Medium | High |
| FTR 3+ | Medium | High | High |
EO / EQ Complexity (based on DET and FTR):
| | DET 1-5 | DET 6-19 | DET 20+ |
|---|---------|----------|---------|
| FTR 0-1 | Low | Low | Medium |
| FTR 2-3 | Low | Medium | High |
| FTR 4+ | Medium | High | High |
After calculating Unadjusted Function Points (UFP):
| Technology Stack | Person-hours / FP | Notes |
|-----------------|-------------------|-------|
| Low-code / Mature Frameworks | 4 – 8 | Many reusable components available |
| Python / JS / Modern Web | 8 – 12 | Mainstream development productivity |
| Java / C# Enterprise | 10 – 15 | Includes architecture and standards overhead |
| Embedded / C / C++ | 15 – 25 | High debugging and testing cost |
| Legacy System Maintenance | 20 – 30 | Comprehension and regression cost |
After completing the estimation, verify that the following factors have been accounted for:
After the Agent completes the estimation, it should produce output in the following format:
## Estimation Report: [Project / Feature Name]
### Estimation Method: [PERT / T-shirt / FPA]
### Work Package Breakdown
| # | Work Package | O (person-days) | M (person-days) | P (person-days) | E (person-days) | σ |
|---|-------------|-----------------|-----------------|-----------------|-----------------|---|
| 1 | xxx | x | x | x | x.x | x.x |
| 2 | xxx | x | x | x | x.x | x.x |
### Summary
- Total expected effort: X person-days
- Total standard deviation: X person-days
- 68% confidence interval: X – X person-days
- 90% confidence interval: X – X person-days
- 95% confidence interval: X – X person-days
### Adjustment Factors
- [Factors considered and adjustments applied]
### Final Recommendation
- For internal planning: X person-days (90% confidence)
- For external quotes: X person-days (95% confidence)
### Risk Alerts
- [Key risk items and mitigation suggestions]
The scripts/estimate_calculator.py script supports numerical calculations for all three estimation methods:
# Three-Point Estimation (PERT)
python3 scripts/estimate_calculator.py --method pert \
--tasks '[{"name":"Login Module","O":2,"M":3,"P":8},{"name":"Payment Module","O":5,"M":10,"P":20}]'
# T-shirt Size Conversion
python3 scripts/estimate_calculator.py --method tshirt \
--tasks '[{"name":"Login Module","size":"M"},{"name":"Payment Module","size":"L"}]'
# Function Point Analysis
python3 scripts/estimate_calculator.py --method fpa \
--components '[{"type":"ILF","complexity":"medium","count":3},{"type":"EI","complexity":"low","count":5}]' \
--hours-per-fp 10
Take zebbern/project-sizing-guide from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.