Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automated calculation and scoring for product prioritization frameworks including RICE, ICE, MoSCoW, and custom weighted scoring. Normalizes scores, validates inputs, and generates priority rankings with confidence intervals.
.claude/skills/a5c-ai-prioritization-calculator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 105% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 112% | 0% |
Calculate and validate scores for multiple prioritization frameworks with weighted scoring, normalization, and confidence-adjusted rankings.
This skill provides robust calculation engines for popular prioritization frameworks used in product management. It handles score normalization, validation, custom weighting, and generates actionable priority rankings.
json{ "items": [ { "id": "FEAT-001", "name": "Feature name", "scores": { "reach": 5000, "impact": 2, "confidence": 0.8, "effort": 3 }, "metadata": { "theme": "growth", "requestedBy": "sales" } } ], "config": { "framework": "rice", "effortUnit": "person_weeks", "teamCapacity": 20 } }
markdown## RICE Formula RICE Score = (Reach * Impact * Confidence) / Effort ### Scale Definitions **Reach**: Number of users/customers affected per quarter - Estimate conservatively - Use data when available **Impact**: Expected effect on users | Score | Meaning | |-------|---------| | 3 | Massive impact | | 2 | High impact | | 1 | Medium impact | | 0.5 | Low impact | | 0.25 | Minimal impact | **Confidence**: How certain are we? | Score | Meaning | |-------|---------| | 1.0 | High confidence - solid data | | 0.8 | Medium confidence - some data | | 0.5 | Low confidence - educated guess | **Effort**: Person-months or person-weeks - Include all work: design, dev, QA, launch - Round up for unknowns
python# RICE Score Calculator def calculate_rice(reach, impact, confidence, effort): """ Calculate RICE score for prioritization. Args: reach: Users affected per quarter impact: Impact score (0.25, 0.5, 1, 2, or 3) confidence: Confidence level (0.5, 0.8, or 1.0) effort: Person-weeks of effort Returns: RICE score """ if effort <= 0: raise ValueError("Effort must be positive") rice_score = (reach * impact * confidence) / effort return rice_score # Example features features = [ {"name": "Search improvements", "reach": 10000, "impact": 2, "confidence": 0.8, "effort": 4}, {"name": "Export to PDF", "reach": 2000, "impact": 1, "confidence": 1.0, "effort": 2}, {"name": "AI suggestions", "reach": 5000, "impact": 3, "confidence": 0.5, "effort": 8}, ] # Calculate and rank for feature in features: feature["rice_score"] = calculate_rice( feature["reach"], feature["impact"], feature["confidence"], feature["effort"] ) ranked = sorted(features, key=lambda x: x["rice_score"], reverse=True)
markdown## ICE Formula ICE Score = Impact * Confidence * Ease ### Scale Definitions (1-10 for each) **Impact**: How much will this move the metric? - 10: Massive improvement - 5: Moderate improvement - 1: Minimal improvement **Confidence**: How sure are we it will work? - 10: Very confident (tested/proven) - 5: Somewhat confident (similar worked) - 1: Pure hypothesis **Ease**: How easy to implement? - 10: Trivial (hours) - 5: Moderate (days) - 1: Complex (weeks+)
pythondef calculate_ice(impact, confidence, ease): """ Calculate ICE score for growth prioritization. Args: impact: 1-10 impact on target metric confidence: 1-10 confidence level ease: 1-10 ease of implementation Returns: ICE score (1-1000) """ return impact * confidence * ease # Example experiments experiments = [ {"name": "New CTA color", "impact": 3, "confidence": 5, "ease": 10}, {"name": "Simplified checkout", "impact": 8, "confidence": 7, "ease": 4}, {"name": "Social proof", "impact": 5, "confidence": 8, "ease": 7}, ] for exp in experiments: exp["ice_score"] = calculate_ice(exp["impact"], exp["confidence"], exp["ease"]) ranked = sorted(experiments, key=lambda x: x["ice_score"], reverse=True)
markdown## MoSCoW Framework ### Must Have (M) - Non-negotiable for launch - Failure without it is unacceptable - Core to the value proposition ### Should Have (S) - Important but not critical - Workarounds exist - Next priority after Must ### Could Have (C) - Nice to have - Would enhance but not required - Do if time permits ### Won't Have (W) - Explicitly out of scope - Deferred to future - Agreed not to do now ## Classification Rules
def classify_moscow(item, constraints): """ Classify item into MoSCoW category.
Args: item: Feature/requirement constraints: Release constraints
Returns: MoSCoW category """ # Must Have criteria if item.is_regulatory or item.blocks_launch: return "M"
# Should Have criteria if item.impact_score >= 0.7 and item.fits_budget: return "S"
# Could Have criteria if item.impact_score >= 0.4: return "C"
# Won't Have return "W"
markdown## Custom Weighted Scoring ### Define Criteria | Criterion | Weight | Scale | |-----------|--------|-------| | Strategic Alignment | 25% | 1-5 | | Revenue Impact | 20% | 1-5 | | Customer Demand | 20% | 1-5 | | Technical Feasibility | 15% | 1-5 | | Competitive Pressure | 10% | 1-5 | | Risk Level (inverse) | 10% | 1-5 | ### Calculation
def weighted_score(item, criteria_weights): """ Calculate weighted prioritization score.
Args: item: Dict with scores for each criterion criteria_weights: Dict with weights (must sum to 1.0)
Returns: Weighted score """ total = 0 for criterion, weight in criteria_weights.items(): score = item.get(criterion, 0) total += score weight return total
javascriptconst prioritizationTask = defineTask({ name: 'feature-prioritization', description: 'Calculate prioritization scores for features', inputs: { features: { type: 'array', required: true }, framework: { type: 'string', default: 'rice' }, customWeights: { type: 'object', default: null }, teamCapacity: { type: 'number', default: null } }, outputs: { rankedFeatures: { type: 'array' }, scoreDistribution: { type: 'object' }, recommendations: { type: 'array' } }, async run(inputs, taskCtx) { return { kind: 'skill', title: `Calculate ${inputs.framework.toUpperCase()} scores`, skill: { name: 'prioritization-calculator', context: { operation: 'calculate_scores', features: inputs.features, framework: inputs.framework, customWeights: inputs.customWeights, teamCapacity: inputs.teamCapacity } }, io: { inputJsonPath: `tasks/${taskCtx.effectId}/input.json`, outputJsonPath: `tasks/${taskCtx.effectId}/result.json` } }; } });
markdown# Feature Prioritization Report ## Framework: RICE ## Date: 2026-01-24 ## Team Capacity: 20 person-weeks/quarter ## Rankings | Rank | Feature | RICE Score | Reach | Impact | Confidence | Effort | |------|---------|------------|-------|--------|------------|--------| | 1 | Search improvements | 4000 | 10000 | 2 | 0.8 | 4 | | 2 | Export to PDF | 1000 | 2000 | 1 | 1.0 | 2 | | 3 | AI suggestions | 937 | 5000 | 3 | 0.5 | 8 | ## Capacity Analysis - Total available: 20 person-weeks - Top 2 features: 6 person-weeks (fits) - All 3 features: 14 person-weeks (fits) ## Recommendations 1. **Execute**: Search improvements (highest score, proven impact) 2. **Execute**: Export to PDF (high confidence, low effort) 3. **Validate**: AI suggestions (high impact but low confidence - run experiment first)
json{ "framework": "rice", "items_scored": 15, "score_statistics": { "mean": 2450, "median": 1800, "std_dev": 1200, "min": 250, "max": 5800 }, "clusters": [ { "name": "high_priority", "threshold": ">3000", "count": 3 }, { "name": "medium_priority", "threshold": "1000-3000", "count": 7 }, { "name": "low_priority", "threshold": "<1000", "count": 5 } ] }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 36,885 | 28,410 | -23% | 1 | 1 | 0% | 7,240 | 7,612 | +5% | 0 | 0 | — |
case-02 | fail→pass | 8,513 | 19,084 | +124% | 1 | 1 | 0% | 1,838 | 3,777 | +105% | 0 | 0 | — |
case-03 | pass→pass | 2,313 | 2,053 | -11% | 1 | 1 | 0% | 469 | 3,371 | +619% | 0 | 0 | — |
case-04 | pass→pass | 6,514 | 7,193 | +10% | 1 | 1 | 0% | 1,219 | 3,958 | +225% | 0 | 0 | — |
case-05 | fail→fail | 15,643 | 18,438 | +18% | 1 | 1 | 0% | 3,182 | 6,861 | +116% | 0 | 0 | — |
case-06 | pass→pass | 16,357 | 2,895 | -82% | 1 | 1 | 0% | 1,212 | 3,555 | +193% | 0 | 0 | — |
case-07 | pass→pass | 4,295 | 2,609 | -39% | 1 | 1 | 0% | 758 | 3,491 | +361% | 0 | 0 | — |
case-08 | pass→pass | 3,866 | 2,796 | -28% | 1 | 1 | 0% | 760 | 3,619 | +376% | 0 | 0 | — |
case-09 | pass→pass | 5,647 | 3,250 | -42% | 1 | 1 | 0% | 1,189 | 3,677 | +209% | 0 | 0 | — |
case-10 | pass→pass | 6,673 | 3,473 | -48% | 1 | 1 | 0% | 1,283 | 3,742 | +192% | 0 | 0 | — |
case-11 | pass→pass | 11,679 | 2,217 | -81% | 1 | 1 | 0% | 2,178 | 3,438 | +58% | 0 | 0 | — |
case-12 | pass→pass | 5,301 | 5,666 | +7% | 1 | 1 | 0% | 1,301 | 4,250 | +227% | 0 | 0 | — |
case-13 | fail→pass | 15,759 | 4,977 | -68% | 1 | 1 | 0% | 2,934 | 3,986 | +36% | 0 | 0 | — |
case-14 | fail→pass | 9,566 | 2,523 | -74% | 1 | 1 | 0% | 1,789 | 3,426 | +92% | 0 | 0 | — |
case-15 | fail→pass | 9,767 | 5,529 | -43% | 1 | 1 | 0% | 1,968 | 4,164 | +112% | 0 | 0 | — |
case-16 | fail→fail | 5,335 | 5,443 | +2% | 1 | 1 | 0% | 898 | 3,970 | +342% | 0 | 0 | — |
case-17 | fail→pass | 12,345 | 3,519 | -71% | 1 | 1 | 0% | 2,825 | 3,708 | +31% | 0 | 0 | — |
case-18 | pass→pass | 4,294 | 4,364 | +2% | 1 | 1 | 0% | 974 | 3,991 | +310% | 0 | 0 | — |
case-19 | pass→pass | 3,840 | 5,670 | +48% | 1 | 1 | 0% | 902 | 3,997 | +343% | 0 | 0 | — |
case-20 | pass→pass | 7,261 | 3,314 | -54% | 1 | 1 | 0% | 1,472 | 3,615 | +146% | 0 | 0 | — |
case-21 | pass→pass | 7,444 | 2,243 | -70% | 1 | 1 | 0% | 1,381 | 3,361 | +143% | 0 | 0 | — |
case-22 | pass→pass | 9,462 | 13,628 | +44% | 1 | 1 | 0% | 1,633 | 5,730 | +251% | 0 | 0 | — |
case-23 | pass→pass | 23,955 | 23,239 | -3% | 1 | 1 | 0% | 4,244 | 7,774 | +83% | 0 | 0 | — |
case-24 | pass→pass | 11,982 | 15,716 | +31% | 1 | 1 | 0% | 1,923 | 5,409 | +181% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +25 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.