feat: add Planning Poker skill (Phase 4)#2458
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis PR introduces ChangesPlanning Poker Skill Implementation
Sequence Diagramflowchart TD
Start([Start Story Estimation]) --> Discover["Step 1: Discover unestimated stories<br/>from sprint-status.yaml"]
Discover --> Loop{"More stories<br/>to estimate?"}
Loop -->|No| Report["Step 4: Generate<br/>session report"]
Loop -->|Yes| Present["Present story to user<br/>and agents"]
Present --> SilentVote["Step 2: Collect silent votes<br/>user estimate + agent estimates"]
SilentVote --> Reveal["Reveal all estimates<br/>(handle skip and ?)"]
Reveal --> CheckDivergence{"Divergence detected<br/>or any ? estimate?"}
CheckDivergence -->|No| Consensus["Step 2: Reach consensus<br/>via mode/median"]
CheckDivergence -->|Yes| Debate["Party Mode: Debate flow<br/>with agent argument exchange"]
Debate --> RoundCount{"Max rounds<br/>exhausted?"}
RoundCount -->|Yes| PMEstimate["Capture Party Mode<br/>final estimate"]
RoundCount -->|No| ReVote["Re-vote on estimate"]
ReVote --> RoundCount
PMEstimate --> Consensus
Consensus --> UserConfirm{"User confirms<br/>consensus?"}
UserConfirm -->|Yes| Save["Step 3: Save story_points<br/>to sprint-status.yaml"]
UserConfirm -->|No or Override| Save
UserConfirm -->|Skip| Save
Save --> Loop
Report --> Complete["Step 5: Emit completion stats<br/>and run on_complete hook"]
Complete --> End([Workflow Complete])
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thank you for your submission, interesting idea to keep with the agile execution theme, but I am not sure of the utility of it - how will this help the flow? I think this might work as a addition in an other existing skill of the upcoming change to epic and story planning with v7 where it will optionally allow pointing tickets. From what I have seen though, the models are relatively poor at estimating things based on their training data. Also - generally we are trying to get it so that the vertically slides smallest tickets are all about the same size for the llm. so a small epics size aside from any HitL becomes a function of how many sliced tickets the epic produces. Not implemented exactly this way now, but this is a main goal for the next version. |
|
@math0r-be I thought about this some more - I think a seed of the idea here can survive with changes coming. I do want to build in a mechanism that can autorank stories - potentially with or without HitL. This will serve two purposes - one might be estimation, not another can really serve as a criticality or risk pointing indication where higher pointed items indicate potential need for more critical HitL review or oversight if being implemented autonomously. I know this is not necessarily how pointing is used but its a similar idea and could be tied to the auto pointing so it serves a purpose. Not sure on this yet, but will keep this open as a reminder to consider this. let me know what you think also... |
Summary
Adds
bmad-planning-pokerskill to Phase 4 (Implementation) — a collaborative story point estimation workflow where AI agents and the human estimate stories together.How it works
sprint-status.yamlstory_pointssection tosprint-status.yaml+ generate session reportWhy
Planning Poker is a well-established agile estimation technique. BMAD has structured planning (epics, stories, sprints) but no collaborative estimation workflow. This fills that gap, letting users estimate stories collaboratively with their AI agents and participate as a full voting member — not just an observer.
Changes
src/bmm-skills/4-implementation/bmad-planning-poker/SKILL.mdsrc/bmm-skills/4-implementation/bmad-planning-poker/customize.tomlsrc/bmm-skills/module-help.csvPP/ Plan Poker entryOutput
sprint-status.yamlupdated with newstory_pointssection (backward compatible — does not modifydevelopment_status)planning-poker-YYYY-MM-DD.mdsession report with full trace (votes, debates, justifications)No new dependencies
All logic uses existing BMAD infrastructure:
bmad-party-mode) for debate phases — no code duplicationresolve_customization.py) for workflow customizationsprint-status.yamlformat (additivestory_pointssection)Tested
Manually tested against a mock BMAD project with 6 stories across 2 epics. Full workflow verified: discovery → silent vote → reveal → divergence detection (2 stories triggered debate) → re-vote → consensus → output generation.