skills-catalog/ln-230-story-prioritizer/SKILL.md
RICE-scores Stories with market research and generates prioritization table. Use when Stories need business priority ranking for sprint planning.
npx skillsauth add levnikolaevich/claude-code-skills ln-230-story-prioritizerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L3 Worker Category: 2XX Planning
Evaluate Stories using RICE scoring with market research. Generate consolidated prioritization table for Epic.
Use this skill when:
Do NOT use when:
| Parameter | Required | Description | Default | |-----------|----------|-------------|---------| | epic | Yes | Epic ID or "Epic N" format | - | | stories | No | Specific Story IDs to prioritize | All in Epic | | depth | No | Research depth (quick/standard/deep) | "standard" |
depth options:
quick - 2-3 min/Story, 1 WebSearch per typestandard - 5-7 min/Story, 2-3 WebSearches per typedeep - 8-10 min/Story, comprehensive researchdocs/market/[epic-slug]/
└── prioritization.md # Consolidated table + RICE details + sources
MANDATORY READ: Load shared/references/planning_worker_runtime_contract.md, shared/references/coordinator_summary_contract.md
Runtime family: planning-worker-runtime
Identifier:
epic-{epicId}Phases:
PHASE_0_CONFIGPHASE_1_DISCOVERYPHASE_2_LOAD_STORY_METADATAPHASE_3_ANALYZE_STORIESPHASE_4_GENERATE_PRIORITIZATIONPHASE_5_WRITE_SUMMARYPHASE_6_SELF_CHECKSummary contract:
summary_kind=story-prioritization-workerepic_id, depth, stories_analyzed, priority_distribution, top_story_ids, prioritization_path, warningssummaryArtifactPath.hex-skills/runtime-artifacts/runs/{parent_run_id}/story-prioritization-worker/ln-230--{identifier}.jsonTable columns (from user requirements):
| Priority | Customer Problem | Feature | Solution | Rationale | Impact | Market | Sources | Competition | |----------|------------------|---------|----------|-----------|--------|--------|---------|-------------| | P0 | User pain point | Story title | Technical approach | Why important | Business impact | $XB | [Link] | Blue 1-3 / Red 4-5 |
| Input | Required | Source | Description |
|-------|----------|--------|-------------|
| epicId | Yes | args, kanban, user | Epic to process |
Resolution: Epic Resolution Chain. Status filter: Active (planned/started)
MANDATORY READ: Load shared/references/environment_state_contract.md, shared/references/storage_mode_detection.md, shared/references/input_resolution_pattern.md
Extract: task_provider = Task Management → Provider
| Tool | Purpose | Example Query | |------|---------|---------------| | WebSearch | Market size, competitors | "[domain] market size {current_year}" | | mcp__Ref | Industry reports | "[domain] market analysis report" | | Task provider | Load Stories | IF linear: list_issues / ELSE: Glob story.md | | Glob | Check existing | "docs/market/[epic]/*" |
Objective: Validate input and prepare context.
Process:
Resolve epicId: Run Epic Resolution Chain per guide.
Load Epic details:
get_project(query=epicId)gh issue view {epicId} -R {REPO} --json number,title,bodyRead("docs/tasks/epics/epic-{N}-*/epic.md")Auto-discover configuration:
docs/tasks/kanban_board.md for Team IDCheck existing prioritization:
Glob: docs/market/[epic-slug]/prioritization.md
Create output directory:
mkdir -p docs/market/[epic-slug]/
Output: Epic metadata, output path, existing check result
Objective: Build Story queue with metadata only and prepare rough scoring inputs for all Stories.
Process:
Query Stories from Epic: IF task_provider == "linear":
list_issues(project=Epic.id, label="user-story")
ELSE IF task_provider == "github":
gh api /repos/{O}/{R}/issues/{epic_num}/sub_issues --jq '.[].number'
→ for each: gh issue view {num} -R {REPO} --json number,title,state,labels
→ filter: label "user-story"
ELSE (file mode):
Glob("docs/tasks/epics/epic-{N}-*/stories/*/story.md")
Extract metadata only:
Filter Stories:
Build processing queue:
Output: Story queue (ID + title + minimal context), ~50-80 tokens/Story
Objective: Score all Stories cheaply first, then spend deep research only on candidates where it changes the decision.
Critical: Keep maximum context to one full Story at a time even during deep research.
For each Story, load only enough detail to estimate:
IF task_provider == "linear":
get_issue(id=storyId, includeRelations=false)
ELSE IF task_provider == "github":
gh issue view {storyId} -R {REPO} --json number,title,body,state,labels
ELSE (file mode):
Read("docs/tasks/epics/epic-{N}-*/stories/us{NNN}-*/story.md")
Extract from Story:
Use Story + Epic context to assign:
ReachImpactEffortConfidenceMark one of:
full_research_requiredrough_estimate_okborderline_needs_reviewSend to Pass B only if:
Only for Stories selected in Pass A, run full external research.
WebSearch queries (based on depth):
"[customer problem domain] market size TAM {current_year}"
"[feature type] industry market forecast"
mcp__Ref query:
"[domain] market analysis Gartner Statista"
Extract:
Confidence mapping:
WebSearch queries:
"[feature] competitors alternatives {current_year}"
"[solution approach] market leaders"
Count competitors and classify:
| Competitors Found | Competition Index | Ocean Type | |-------------------|-------------------|------------| | 0 | 1 | Blue Ocean | | 1-2 | 2 | Emerging | | 3-5 | 3 | Growing | | 6-10 | 4 | Mature | | >10 | 5 | Red Ocean |
RICE = (Reach x Impact x Confidence) / Effort
Reach (1-10): Users affected per quarter | Score | Users | Indicators | |-------|-------|------------| | 1-2 | <500 | Niche, single persona | | 3-4 | 500-2K | Department-level | | 5-6 | 2K-5K | Organization-wide | | 7-8 | 5K-10K | Multi-org | | 9-10 | >10K | Platform-wide |
Impact (0.25-3.0): Business value | Score | Level | Indicators | |-------|-------|------------| | 0.25 | Minimal | Nice-to-have | | 0.5 | Low | QoL improvement | | 1.0 | Medium | Efficiency gain | | 2.0 | High | Revenue driver | | 3.0 | Massive | Strategic differentiator |
Confidence (0.5-1.0): Data quality (from Step 3.2)
Data Confidence Assessment:
For each RICE factor, assess data confidence level:
| Confidence | Criteria | Score Modifier | |------------|----------|----------------| | HIGH | Multiple authoritative sources (Gartner, Statista, SEC filings) | Factor used as-is | | MEDIUM | 1-2 sources, mixed quality (blog + report) | Factor ±25% range shown | | LOW | No sources, team estimate only | Factor ±50% range shown |
Output: Show confidence per factor in prioritization table + RICE range (optimistic/pessimistic) to make uncertainty explicit.
Effort (1-10): Person-months | Score | Time | Story Indicators | |-------|------|------------------| | 1-2 | <2 weeks | 3 AC, simple CRUD | | 3-4 | 2-4 weeks | 4 AC, integration | | 5-6 | 1-2 months | 5 AC, complex logic | | 7-8 | 2-3 months | External dependencies | | 9-10 | 3+ months | New infrastructure |
| Priority | RICE Threshold | Competition Override | |----------|----------------|---------------------| | P0 (Critical) | >= 30 | OR Competition = 1 (Blue Ocean monopoly) | | P1 (High) | >= 15 | OR Competition <= 2 (Emerging market) | | P2 (Medium) | >= 5 | - | | P3 (Low) | < 5 | Competition = 5 (Red Ocean) forces P3 |
full-research or rough-estimateOutput per Story: Complete row for prioritization table with confidence tier
Objective: Create consolidated markdown output.
Process:
Sort results:
Generate markdown:
Save file:
Write: docs/market/[epic-slug]/prioritization.md
Output: Saved prioritization.md
Objective: Display results and recommendations.
Output format:
## Prioritization Complete
**Epic:** [Epic N - Name]
**Stories analyzed:** X
**Time elapsed:** Y minutes
### Priority Distribution:
- P0 (Critical): X Stories - Implement ASAP
- P1 (High): X Stories - Next sprint
- P2 (Medium): X Stories - Backlog
- P3 (Low): X Stories - Consider deferring
### Top 3 Priorities:
1. [Story Title] - RICE: X, Market: $XB, Competition: Blue/Red
### Saved to:
docs/market/[epic-slug]/prioritization.md
### Next Steps:
1. Review table with stakeholders
2. Run ln-300 for P0/P1 Stories first
3. Consider cutting P3 Stories
| Depth | Per-Story | Total (10 Stories) | |-------|-----------|-------------------| | quick | 2-3 min | 20-30 min | | standard | 5-7 min | 50-70 min | | deep | 8-10 min | 80-100 min |
Time management rules:
Loading pattern:
Memory management:
Position in workflow:
ln-210 (Scope → Epics)
↓
ln-220 (Epic → Stories)
↓
ln-230 (RICE per Story → prioritization table) ← THIS SKILL
↓
ln-300 (Story → Tasks)
Dependencies:
Downstream usage:
Structured worker output:
summaryArtifactPath is providedstory-prioritization-worker summary returnedsummaryArtifactPath is providedBasic usage:
ln-230-story-prioritizer epic="Epic 7"
With parameters:
ln-230-story-prioritizer epic="Epic 7: Translation API" depth="deep"
Specific Stories:
ln-230-story-prioritizer epic="Epic 7" stories="US001,US002,US003"
Example output (docs/market/translation-api/prioritization.md):
| Priority | Customer Problem | Feature | Solution | Rationale | Impact | Market | Sources | Competition | |----------|------------------|---------|----------|-----------|--------|--------|---------|-------------| | P0 | "Repeat translations cost GPU" | Translation Memory | Redis cache, 5ms lookup | 70-90% GPU cost reduction | High | $2B+ | M&M | 3 | | P0 | "Can't translate PDF" | PDF Support | PDF parsing + layout | Enterprise blocker | High | $10B+ | Eden | 5 | | P1 | "Need video subtitles" | SRT/VTT Support | Timing preservation | Blue Ocean opportunity | Medium | $5.7B | GMI | 2 |
MANDATORY READ: Load shared/references/meta_analysis_protocol.md
Skill type: planning-worker. Run after all phases complete. Output to chat using the planning-worker format.
shared/references/environment_state_contract.mdshared/references/storage_mode_detection.mdshared/references/research_tool_fallback.md| File | Purpose | |------|---------| | prioritization_template.md | Output markdown template | | rice_scoring_guide.md | RICE factor scales and examples | | research_queries.md | WebSearch query templates by domain | | competition_index.md | Blue/Red Ocean classification rules |
Version: 2.0.0 Last Updated: 2026-04-05
testing
Drafts and publishes fact-checked GitHub Discussions announcements. Use for releases, updates, or project news; not for release creation or issue responses.
testing
Prepares and publishes a tagged GitHub release from repository evidence. Use for an explicit release request; not for ordinary commits, packages, or community news.
testing
Validates, commits, pushes, and remotely verifies approved repository changes. Use when publication is requested; not for releases, package publishing, or announcements.
development
Reviews standalone skills and their configured distribution surfaces before publication. Use for skill release readiness; not for product code or implementation-plan review.