pm-prioritize — Rank requirements with RICE / ICE / MoSCoW / Kano
Part of the Personal Corp framework — running a one-person business through AI agents.
Rank a list of requirements using a structured framework. A built-in decision tree picks the right framework based on data availability and decision context. Output is transparent and traceable, so a team can argue with the scores instead of the recommendation.
Inputs
| Field |
Required |
Notes |
| Requirement list |
yes |
Name + brief description; ≥ 3 items. Can take a pain-point list from /pm-feedback or a feature list from /pm-prd |
| Framework |
no |
RICE / ICE / MoSCoW / Kano; auto-recommended if not given |
| Business goal |
no |
Current focus (growth / retention / revenue / efficiency); affects weighting |
| Resource constraint |
no |
Available dev capacity (person-days or Story Points) |
Optional config
Most of the skill works out-of-box. If you want stable defaults across runs, add an ## Prioritize Config section to your project's CLAUDE.md:
## Prioritize Config
### Default framework (optional)
If unset, the skill auto-recommends per the decision table below.
- default_framework: RICE | ICE | MoSCoW | Kano
### Default resource constraint (optional)
Used in the Sprint allocation step. Skip if you'd rather state it per run.
- sprint_capacity: 20 person-days per Sprint
### Backlog source (optional)
Where the skill should fetch the requirement list from when you don't paste one.
- backlog_source: gh-issues # gh-issues | github-project | tasks-file | paste
- gh_owner: your-github-handle
- gh_repo: your-main-repo
- gh_label: backlog
- tasks_file: docs/backlog.md
When a config field is set, the skill uses it silently. When unset, the skill asks (see "When input is incomplete").
Research commands (auto-discovery)
If the user points at a backlog source instead of pasting items, the skill can pull the list itself:
# GitHub issues by label
gh issue list -R $OWNER/$REPO --label $LABEL --state open \
--json number,title,body --limit 100
# GitHub Project items
gh project item-list $PROJECT_ID --owner $OWNER --format json
# Local backlog file
cat $TASKS_FILE
Step 1 — Pick a framework
If unspecified, recommend per this decision table:
| Condition |
Recommended |
Why |
| Have user-impact data per item (DAU, conversion), trustworthy |
RICE |
Most quantitative, traceable |
| Have intuition but no precise data |
ICE |
Quick scoring, tolerates subjectivity |
| Need 4-bucket alignment fast (e.g. team meeting) |
MoSCoW |
Forces "must" / "won't" consensus |
| Need to understand requirement nature, plan features |
Kano |
Identifies delight features |
Framework comparison:
| Framework |
Use case |
Strength |
Limit |
Time |
| RICE |
Data-supported quarterly planning |
Most objective, comparable |
Depends on data quality |
Medium |
| ICE |
Fast decisions, brainstorming |
Simple, fast |
Highly subjective |
Low |
| MoSCoW |
Release planning, stakeholder alignment |
Forces consensus |
Easy to put everything in Must |
Low |
| Kano |
Feature planning, satisfaction research |
Identifies delighters |
Needs user research data |
High |
Step 2 — Score requirements
RICE (default)
| Dimension |
Meaning |
Scoring |
Common error |
| Reach |
Users impacted in one cycle |
Concrete number ("5000 users/month") |
"All users theoretically" as Reach |
| Impact |
Per-user impact magnitude |
3 = massive, 2 = high, 1 = medium, 0.5 = low, 0.25 = minimal |
Everything gets 3 |
| Confidence |
Confidence in the estimate |
100% = data, 80% = indirect evidence, 50% = gut |
100% with no data |
| Effort |
Total person-months across all roles |
Includes design + dev + QA + integration |
Counting only dev |
RICE Score = (R × I × C) / E — higher = higher priority.
Calibration mechanism:
- Score the same dimension across all items first (all R, then all I) — avoids per-item anchoring bias
- R calibration: pick a baseline ("login: affects 100% of users"), score others relative
- I calibration: ≤ 50% of items can score 3 — forces differentiation
- E calibration: must include design (20%) + dev (50%) + QA (20%) + integration (10%)
ICE (fast)
Score 1-10 on each dimension. ICE Score = I × C × E / 10.
| Dimension |
Scoring |
| Impact |
1 = trivial, 5 = medium, 10 = transformational |
| Confidence |
1 = pure guess, 5 = indirect evidence, 10 = A/B test data |
| Ease |
1 = very hard (> 3 months), 5 = medium (2-4 weeks), 10 = trivial (< 1 day) |
MoSCoW
| Bucket |
Definition |
Suggested share |
| Must Have |
Without it, can't ship; users can't use core feature |
≤ 60% |
| Should Have |
Important but has workaround; one-Sprint delay non-fatal |
~ 20% |
| Could Have |
Nice-to-have; better with, fine without |
~ 10% |
| Won't Have (this time) |
Explicitly out of scope; possibly later |
~ 10% |
Common trap: everything ends up Must Have. Counter: cap Must Have at 60%, force trade-offs.
Kano
| Type |
Trait |
Detection |
Strategy |
| Must-be |
Absence → dissatisfaction; presence → taken for granted |
Users don't ask for it but rage when missing |
Reach passing grade, don't over-invest |
| One-dimensional |
More = more satisfaction (linear) |
Users actively request |
Core competitive area, top-tier execution |
| Attractive |
Absence → no dissatisfaction; presence → delight |
Unexpected, evokes "wow" |
Differentiator (decays to one-dimensional over years) |
| Indifferent |
Doesn't matter either way |
No user reaction |
Don't invest |
| Reverse |
Presence reduces satisfaction |
Adds complexity, annoys users |
Remove immediately |
Kano decay: today's Attractive feature becomes One-dimensional, then Must-be over 2-3 years (e.g. fingerprint unlock). Continuously create new delighters.
Step 3 — Output ranking
RICE results table:
| Rank |
Requirement |
R |
I |
C |
E |
RICE Score |
Recommendation |
| 1 |
{name} |
{n} |
{0.25-3} |
{50-100%} |
{pm} |
{score} |
This cycle |
Impact × Effort 2×2:
| Quadrant |
Impact |
Effort |
Strategy |
Items |
| Quick Wins |
High |
Low |
Do first |
{list} |
| Strategic |
High |
High |
Plan carefully |
{list} |
| Fill-ins |
Low |
Low |
When idle |
{list} |
| Avoid |
Low |
High |
Don't do |
{list} |
Sprint allocation:
- Allocate per
sprint_capacity (config) or stated resource constraint
- Quick Wins fill first; Strategic by RICE Score
- Reserve 10-20% per Sprint for unexpected work
Step 4 — Decision log
- Core trade-offs: why A over B this cycle
- Disputed items: which ranks may be contested, and why
- Confidence flags: which scores have C < 80% — propose validation experiments
- Next-cycle candidates: Won't-Have items most likely to promote next cycle
Quality bar
- Every score has a one-sentence rationale
- Effort includes design + dev + QA + integration
- C < 80% items get "validate via small experiment" tag
- Must Have ≤ 60% of total
- Calibration mechanism applied to avoid anchoring
Red lines
- Not a decision-maker — output is a recommendation; the final call is the team's
- No hidden assumptions — every score's assumption is explicit
- Never ignore Effort — no "must do" recommendation based on Impact alone
When input is incomplete
- No backlog source provided → ask: "Where is the list — paste, file path, or a GitHub issues filter (owner/repo + label or milestone)?"
- No business goal → ask: "Current focus this cycle — growth / retention / revenue / efficiency? Optional, but it tightens the recommendation."
- No resource constraint → ask: "Available capacity for the next cycle — person-days or Story Points? Optional, but needed for Sprint allocation."
- Framework unset → don't ask. Auto-recommend per the Step 1 decision table and propose it with a one-sentence rationale; user confirms or overrides.
- < 3 requirements → still rank, but flag "sample too small, add more for stability"
- No data at all → switch to ICE or MoSCoW; tag "qualitative ranking due to missing quantitative data"
Related skills
weekly-planning — uses the ranked backlog from this skill to pick weekly OKRs / outcomes. Prioritization feeds OKR selection, not replaces it.
weekly-retro — feeds the next backlog with retro findings and carry-over items
/pm-user-stories — top-priority requirements → break into Stories
/pm-prd — Must-Have requirements → write PRDs
1---2name: pm-prioritize3description: Use when ranking a list of requirements, features, or backlog items using RICE / ICE / MoSCoW / Kano. Built-in decision tree picks the right framework based on data availability and decision context. Output is a transparent matrix, 2×2 Impact/Effort quadrant, and a Sprint allocation proposal. User-invoked only — do NOT auto-trigger. Triggers on "/pm-prioritize", "/prioritize", "приоритизация", "ранжируй бэклог", "RICE-анализ", "prioritize requirements", "RICE", "ICE", "MoSCoW", "Kano", "rank backlog".4---5
6# pm-prioritize — Rank requirements with RICE / ICE / MoSCoW / Kano
7
8Part of the Personal Corp framework — running a one-person business through AI agents.
9
10Rank a list of requirements using a structured framework. A built-in decision tree picks the right framework based on data availability and decision context. Output is transparent and traceable, so a team can argue with the scores instead of the recommendation.
11
12## Inputs
13
14| Field | Required | Notes |
15|---|---|---|
16| Requirement list | yes | Name + brief description; ≥ 3 items. Can take a pain-point list from `/pm-feedback` or a feature list from `/pm-prd` |
17| Framework | no | RICE / ICE / MoSCoW / Kano; auto-recommended if not given |
18| Business goal | no | Current focus (growth / retention / revenue / efficiency); affects weighting |
19| Resource constraint | no | Available dev capacity (person-days or Story Points) |
20
21## Optional config
22
23Most of the skill works out-of-box. If you want stable defaults across runs, add an `## Prioritize Config` section to your project's `CLAUDE.md`:
24
25```markdown
26## Prioritize Config
27
28### Default framework (optional)
29If unset, the skill auto-recommends per the decision table below.
30- default_framework: RICE | ICE | MoSCoW | Kano
31
32### Default resource constraint (optional)
33Used in the Sprint allocation step. Skip if you'd rather state it per run.
34- sprint_capacity: 20 person-days per Sprint
35
36### Backlog source (optional)
37Where the skill should fetch the requirement list from when you don't paste one.
38- backlog_source: gh-issues # gh-issues | github-project | tasks-file | paste
39- gh_owner: your-github-handle
40- gh_repo: your-main-repo
41- gh_label: backlog
42- tasks_file: docs/backlog.md
43```
44
45When a config field is set, the skill uses it silently. When unset, the skill asks (see "When input is incomplete").
46
47## Research commands (auto-discovery)
48
49If the user points at a backlog source instead of pasting items, the skill can pull the list itself:
50
51```bash
52# GitHub issues by label
53gh issue list -R $OWNER/$REPO --label $LABEL --state open \
54 --json number,title,body --limit 100
55
56# GitHub Project items
57gh project item-list $PROJECT_ID --owner $OWNER --format json
58
59# Local backlog file
60cat $TASKS_FILE
61```
62
63## Step 1 — Pick a framework
64
65If unspecified, recommend per this decision table:
66
67| Condition | Recommended | Why |
68|---|---|---|
69| Have user-impact data per item (DAU, conversion), trustworthy | **RICE** | Most quantitative, traceable |
70| Have intuition but no precise data | **ICE** | Quick scoring, tolerates subjectivity |
71| Need 4-bucket alignment fast (e.g. team meeting) | **MoSCoW** | Forces "must" / "won't" consensus |
72| Need to understand requirement nature, plan features | **Kano** | Identifies delight features |
73
74**Framework comparison:**
75
76| Framework | Use case | Strength | Limit | Time |
77|---|---|---|---|---|
78| **RICE** | Data-supported quarterly planning | Most objective, comparable | Depends on data quality | Medium |
79| **ICE** | Fast decisions, brainstorming | Simple, fast | Highly subjective | Low |
80| **MoSCoW** | Release planning, stakeholder alignment | Forces consensus | Easy to put everything in Must | Low |
81| **Kano** | Feature planning, satisfaction research | Identifies delighters | Needs user research data | High |
82
83## Step 2 — Score requirements
84
85### RICE (default)
86
87| Dimension | Meaning | Scoring | Common error |
88|---|---|---|---|
89| **R**each | Users impacted in one cycle | Concrete number ("5000 users/month") | "All users theoretically" as Reach |
90| **I**mpact | Per-user impact magnitude | 3 = massive, 2 = high, 1 = medium, 0.5 = low, 0.25 = minimal | Everything gets 3 |
91| **C**onfidence | Confidence in the estimate | 100% = data, 80% = indirect evidence, 50% = gut | 100% with no data |
92| **E**ffort | Total person-months across all roles | Includes design + dev + QA + integration | Counting only dev |
93
94**RICE Score = (R × I × C) / E** — higher = higher priority.
95
96**Calibration mechanism:**
97- Score the same dimension across all items first (all R, then all I) — avoids per-item anchoring bias
98- R calibration: pick a baseline ("login: affects 100% of users"), score others relative
99- I calibration: ≤ 50% of items can score 3 — forces differentiation
100- E calibration: must include design (20%) + dev (50%) + QA (20%) + integration (10%)
101
102### ICE (fast)
103
104Score 1-10 on each dimension. **ICE Score = I × C × E / 10**.
105
106| Dimension | Scoring |
107|---|---|
108| **I**mpact | 1 = trivial, 5 = medium, 10 = transformational |
109| **C**onfidence | 1 = pure guess, 5 = indirect evidence, 10 = A/B test data |
110| **E**ase | 1 = very hard (> 3 months), 5 = medium (2-4 weeks), 10 = trivial (< 1 day) |
111
112### MoSCoW
113
114| Bucket | Definition | Suggested share |
115|---|---|---|
116| **Must Have** | Without it, can't ship; users can't use core feature | ≤ 60% |
117| **Should Have** | Important but has workaround; one-Sprint delay non-fatal | ~ 20% |
118| **Could Have** | Nice-to-have; better with, fine without | ~ 10% |
119| **Won't Have (this time)** | Explicitly out of scope; possibly later | ~ 10% |
120
121**Common trap:** everything ends up Must Have. Counter: cap Must Have at 60%, force trade-offs.
122
123### Kano
124
125| Type | Trait | Detection | Strategy |
126|---|---|---|---|
127| **Must-be** | Absence → dissatisfaction; presence → taken for granted | Users don't ask for it but rage when missing | Reach passing grade, don't over-invest |
128| **One-dimensional** | More = more satisfaction (linear) | Users actively request | Core competitive area, top-tier execution |
129| **Attractive** | Absence → no dissatisfaction; presence → delight | Unexpected, evokes "wow" | Differentiator (decays to one-dimensional over years) |
130| **Indifferent** | Doesn't matter either way | No user reaction | Don't invest |
131| **Reverse** | Presence reduces satisfaction | Adds complexity, annoys users | Remove immediately |
132
133**Kano decay:** today's Attractive feature becomes One-dimensional, then Must-be over 2-3 years (e.g. fingerprint unlock). Continuously create new delighters.
134
135## Step 3 — Output ranking
136
137**RICE results table:**
138
139| Rank | Requirement | R | I | C | E | RICE Score | Recommendation |
140|---|---|---|---|---|---|---|---|
141| 1 | {name} | {n} | {0.25-3} | {50-100%} | {pm} | {score} | This cycle |
142
143**Impact × Effort 2×2:**
144
145| Quadrant | Impact | Effort | Strategy | Items |
146|---|---|---|---|---|
147| **Quick Wins** | High | Low | Do first | {list} |
148| **Strategic** | High | High | Plan carefully | {list} |
149| **Fill-ins** | Low | Low | When idle | {list} |
150| **Avoid** | Low | High | Don't do | {list} |
151
152**Sprint allocation:**
153- Allocate per `sprint_capacity` (config) or stated resource constraint
154- Quick Wins fill first; Strategic by RICE Score
155- Reserve 10-20% per Sprint for unexpected work
156
157## Step 4 — Decision log
158
159- **Core trade-offs:** why A over B this cycle
160- **Disputed items:** which ranks may be contested, and why
161- **Confidence flags:** which scores have C < 80% — propose validation experiments
162- **Next-cycle candidates:** Won't-Have items most likely to promote next cycle
163
164## Quality bar
165
1661. Every score has a one-sentence rationale
1672. Effort includes design + dev + QA + integration
1683. C < 80% items get "validate via small experiment" tag
1694. Must Have ≤ 60% of total
1705. Calibration mechanism applied to avoid anchoring
171
172## Red lines
173
1741. **Not a decision-maker** — output is a recommendation; the final call is the team's
1752. **No hidden assumptions** — every score's assumption is explicit
1763. **Never ignore Effort** — no "must do" recommendation based on Impact alone
177
178## When input is incomplete
179
180- **No backlog source provided** → ask: "Where is the list — paste, file path, or a GitHub issues filter (owner/repo + label or milestone)?"
181- **No business goal** → ask: "Current focus this cycle — growth / retention / revenue / efficiency? Optional, but it tightens the recommendation."
182- **No resource constraint** → ask: "Available capacity for the next cycle — person-days or Story Points? Optional, but needed for Sprint allocation."
183- **Framework unset** → don't ask. Auto-recommend per the Step 1 decision table and propose it with a one-sentence rationale; user confirms or overrides.
184- **< 3 requirements** → still rank, but flag "sample too small, add more for stability"
185- **No data at all** → switch to ICE or MoSCoW; tag "qualitative ranking due to missing quantitative data"
186
187## Related skills
188
189- [`weekly-planning`](../weekly-planning/) — uses the ranked backlog from this skill to pick weekly OKRs / outcomes. Prioritization **feeds** OKR selection, not replaces it.
190- [`weekly-retro`](../weekly-retro/) — feeds the next backlog with retro findings and carry-over items
191- `/pm-user-stories` — top-priority requirements → break into Stories
192- `/pm-prd` — Must-Have requirements → write PRDs