Estimate Stories Skill
Purpose
Estimate story points for user stories using a structured, evidence-based formula: Story Points = (Complexity × Effort) + Risk
This provides consistent estimations that help with sprint planning, velocity tracking, and story comparison.
Core Principle: Estimation is not guessing—it's structured analysis of complexity, effort, and risk based on acceptance criteria and technical context.
Prerequisites
-
Story file exists in .claude/stories/ directory
-
Story has clear acceptance criteria
-
Understanding of project tech stack
-
Access to historical velocity data (optional)
Workflow
- Load Story Context
Read story file to understand:
-
User story narrative (As a... I want... So that...)
-
Acceptance criteria (what needs to be implemented)
-
Dependencies and technical notes
-
Current priority level
Load project context:
-
Team velocity baseline (from .claude/config.yaml )
-
Tech stack and known patterns
-
Historical estimation data (if available)
Example story:
User Story: As a new user, I want to create an account with email/password
Acceptance Criteria:
- AC-1: User can enter email and password on signup form
- AC-2: Email validated with Zod
- AC-3: Password hashed with bcrypt
- AC-4: Duplicate emails rejected with 409
- AC-5: Success returns JWT token
- AC-6: User record saved to PostgreSQL
- Analyze Complexity (1-5 Scale)
Complexity measures technical difficulty and cognitive load (NOT time/effort).
Quick Guide:
-
1 (Trivial): Single file, copy-paste from existing, no edge cases
-
2 (Simple): 2-3 files, existing patterns, minimal edge cases
-
3 (Moderate): 4-6 files, may need new library, multiple edge cases
-
4 (Complex): 7-12 files, multiple patterns, many error paths
-
5 (Very Complex): 12+ files, new architecture, extensive edge cases
Consider:
-
Number of integration points (APIs, databases, services)
-
Error handling paths required
-
State management complexity
-
Data transformation complexity
For example story:
Complexity: 3 (Moderate)
- 6 files affected (form, validation, controller, service, model, tests)
- Multiple integration points (DB, JWT, bcrypt)
- Several error paths (validation, duplicates, DB errors)
- Moderate state management
See: references/complexity-scale.md for detailed scale with examples
- Analyze Effort (1-5 Scale)
Effort measures the volume of work regardless of difficulty.
Quick Guide:
-
1 (Minimal): <1 hour, <50 LOC, 2-3 tests
-
2 (Small): 1-2 hours, 50-150 LOC, 4-6 tests
-
3 (Medium): 3-4 hours, 150-300 LOC, 7-10 tests
-
4 (Large): 5-6 hours, 300-500 LOC, 11-15 tests
-
5 (Very Large): >6 hours, >500 LOC, 15+ tests
Consider:
-
Number of acceptance criteria (more AC = more work)
-
Lines of code to write
-
Number of tests required
-
Documentation needs
For example story:
Effort: 3 (Medium)
- 6 acceptance criteria
- ~250 LOC (controller, service, validation, model)
- ~10 tests (unit + integration)
- 3-4 hours estimated work
See: references/effort-scale.md for detailed scale with examples
- Analyze Risk (0-3 Adjustment)
Risk is an adjustment factor for unknowns and potential issues.
Quick Guide:
-
0: No significant risks
-
+1: Minor risks (unfamiliar library, some unknowns)
-
+2: Moderate risks (new pattern, integration uncertainty)
-
+3: High risks (new architecture, external dependencies, R&D needed)
Consider:
-
Team familiarity with required tech
-
External dependencies (third-party APIs)
-
Requirements clarity (vague requirements = higher risk)
-
Performance/security concerns
For example story:
Risk: +1
- Team familiar with all tech (Zod, bcrypt, JWT, PostgreSQL)
- Requirements clear and testable
- Minor risk: ensuring proper bcrypt cost and JWT security
See: references/risk-factors.md for detailed risk analysis
- Calculate Story Points
Formula: Story Points = (Complexity × Effort) + Risk
For example story:
Complexity: 3 Effort: 3 Risk: +1
Story Points = (3 × 3) + 1 = 10 points
Story Point Scale Interpretation:
-
1-2 points: Trivial, can complete in < 1 hour
-
3-5 points: Small, can complete in 1-3 hours
-
6-10 points: Medium, can complete in half day
-
11-15 points: Large, can complete in 1 day
-
16-20 points: Very large, consider splitting
-
21+ points: Too large, MUST split into smaller stories
If story > 13 points: Consider splitting into smaller stories.
See: references/calculation-guide.md for examples and edge cases
- Provide Estimation Rationale
Document WHY this estimate:
Estimation Rationale
Story Points: 10
Complexity (3/5): Moderate
- 6 files to modify/create
- Multiple integration points (validation, hashing, DB, JWT)
- Multiple error paths to handle
Effort (3/5): Medium
- 6 acceptance criteria
- ~250 lines of code
- ~10 tests required
- Estimated 3-4 hours
Risk (+1/3): Minor
- Team familiar with tech stack
- Requirements clear and testable
- Minor security considerations for bcrypt/JWT
Confidence: High (80%)
- Clear requirements
- Standard patterns
- No unknowns
- Update Story File
Add estimation block to story file:
Estimation
Story Points: 10 Estimated By: Alex (Planner) Date: 2025-01-15 Confidence: High (80%)
Breakdown:
- Complexity: 3/5 (Moderate - 6 files, multiple integrations)
- Effort: 3/5 (Medium - 6 AC, ~250 LOC, ~10 tests, 3-4 hours)
- Risk: +1/3 (Minor - familiar tech, clear requirements)
Formula: (3 × 3) + 1 = 10 points
Assumptions:
- Team familiar with Zod, bcrypt, JWT, PostgreSQL
- Clear acceptance criteria remain stable
- No major architectural changes needed
- Generate Estimation Report (Optional)
For formal estimation reviews or audits, generate comprehensive report:
Story Estimation Report
Executive Summary
- Story: User Signup with Email/Password
- Story Points: 10
- Confidence: High (80%)
- Recommendation: Ready for sprint planning
Detailed Analysis
[Complexity, Effort, Risk breakdown]
Comparable Stories
- story-auth-002-login: 8 points (similar complexity, slightly less effort)
- story-auth-003-password-reset: 13 points (more complex flow)
Assumptions & Risks
[List key assumptions]
Sprint Planning Notes
- Can be completed in 1 sprint (assuming 2-week sprint)
- No blocking dependencies
- Suitable for mid-level developer
See: references/report-templates.md for full report format
Batch Estimation
For multiple stories:
-
Load all stories
-
Estimate each using same process
-
Compare estimates for consistency
-
Adjust if similar stories have very different estimates
-
Generate summary report
Tips for consistency:
-
Use same reference points
-
Compare with recently estimated similar stories
-
Document rationale for each estimate
-
Flag outliers for review
Calibration and Adjustment
After sprint completes:
-
Compare estimated vs actual story points
-
Identify patterns in over/under-estimation
-
Adjust future estimates based on learnings
-
Update complexity/effort/risk scales if needed
Example:
Story estimated: 10 points Actual velocity: 13 points (30% under-estimated)
Reason: Underestimated integration complexity
Learning: Increase complexity score for multi-API integrations
Common Scenarios
Story Seems Too Large (>13 points)
Approach:
-
Identify if complexity, effort, or both are high
-
Look for natural split points in acceptance criteria
-
Split into multiple smaller stories
-
Re-estimate each smaller story
Example:
Original: User Profile (21 points) Split into:
- User Profile - Basic Info (8 points)
- User Profile - Avatar Upload (8 points)
- User Profile - Preferences (5 points)
Uncertainty in Estimation
If confidence < 60%:
-
Identify sources of uncertainty
-
Add risk adjustment
-
Consider spike story for research
-
Document assumptions clearly
Team Disagreement on Estimate
Approach:
-
Each person explains their reasoning
-
Identify where views differ (complexity/effort/risk)
-
Discuss until consensus or average estimates
-
Document the final rationale
See: references/estimation-scenarios.md for complex cases
Best Practices
-
Be consistent - Use same criteria for all stories
-
Compare similar stories - Check recent similar estimates
-
Document rationale - Explain WHY, not just WHAT
-
Calibrate regularly - Adjust based on actual velocity
-
Split large stories - > 13 points should be split
-
Include the team - Discuss estimates with implementers
-
Track confidence - Low confidence = higher risk adjustment
Reference Files
-
references/complexity-scale.md
-
Detailed 1-5 complexity scale with examples
-
references/effort-scale.md
-
Detailed 1-5 effort scale with examples
-
references/risk-factors.md
-
Risk analysis framework (0-3)
-
references/calculation-guide.md
-
Formula examples and edge cases
-
references/report-templates.md
-
Comprehensive report formats
-
references/estimation-scenarios.md
-
Complex scenarios and solutions
When to Escalate
-
Story is very large (>20 points) and can't be split
-
High uncertainty even after analysis (confidence < 40%)
-
Team has no experience with required technology
-
Requires significant architectural changes
-
Story depends on many external factors
Part of BMAD Enhanced Planning Suite