Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Plan and execute effective sprints using Agile methodologies. Define sprint goals, estimate user stories, manage sprint backlog, and facilitate daily standups to maximize team productivity and deliver value incrementally.
.claude/skills/nicepkg-agile-sprint-planning/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 89% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 133% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 165% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 398% | 0% |
Agile sprint planning provides a structured approach to organize work into time-boxed iterations, enabling teams to deliver value incrementally while maintaining flexibility and responding to change.
markdown# Sprint Planning Checklist ## 1-2 Days Before Planning Meeting - [ ] Groom product backlog (ensure top items are detailed) - [ ] Update user story acceptance criteria - [ ] Identify dependencies and blockers - [ ] Prepare estimates from previous sprints - [ ] Review team velocity (average story points per sprint) - [ ] Identify team availability/absences - [ ] Prepare sprint goals draft ## Information to Gather - Product Owner priorities - Team capacity (working hours available) - Previous sprint metrics - Upcoming holidays or interruptions - Technical debt items to address
javascript// Example sprint planning agenda and execution class SprintPlanner { constructor(team, sprintLength = 2) { this.team = team; this.sprintLength = sprintLength; // weeks this.userStories = []; this.sprintGoal = ''; this.capacity = 0; } calculateTeamCapacity() { // Capacity = available hours - meetings - buffer const workHours = 40; // per person per week const meetingHours = 5; // estimated standups, retros, etc. const bufferPercent = 0.2; // 20% buffer for interruptions const capacityPerPerson = (workHours - meetingHours) * (1 - bufferPercent); this.capacity = capacityPerPerson * this.team.length * this.sprintLength; return this.capacity; } conductPlanningMeeting() { return { part1: { duration: '15 minutes', activity: 'Product Owner presents sprint goal', deliverable: 'Team understands business objective' }, part2: { duration: '45-60 minutes', activity: 'Team discusses and estimates user stories', deliverable: 'Prioritized sprint backlog with story points' }, part3: { duration: '15 minutes', activity: 'Team commits to sprint goal', deliverable: 'Formal sprint backlog committed' } }; } createSprintBacklog(stories, capacity) { let currentCapacity = capacity; const sprintBacklog = []; for (let story of stories) { if (currentCapacity >= story.points) { sprintBacklog.push({ ...story, status: 'planned', sprint: this.currentSprint }); currentCapacity -= story.points; } } return { goal: this.sprintGoal, backlog: sprintBacklog, remainingCapacity: currentCapacity, utilization: ((capacity - currentCapacity) / capacity * 100).toFixed(1) + '%' }; } }
python# Story point estimation using Planning Poker approach class StoryEstimation: # Fibonacci sequence for estimation ESTIMATE_OPTIONS = [1, 2, 3, 5, 8, 13, 21, 34] @staticmethod def calculate_story_points(complexity, effort, risk): """ Estimate story points based on multiple factors Factors should be rated 1-5 """ base_points = (complexity * effort) / 5 risk_multiplier = 1 + (risk * 0.1) estimated_points = base_points * risk_multiplier # Round to nearest Fibonacci number for estimate in StoryEstimation.ESTIMATE_OPTIONS: if estimated_points <= estimate: return estimate return StoryEstimation.ESTIMATE_OPTIONS[-1] @staticmethod def conduct_planning_poker(team_estimates): """ Handle Planning Poker consensus process """ estimates = sorted(team_estimates) median = estimates[len(estimates) // 2] # If significant disagreement, discuss and re-estimate if estimates[-1] - estimates[0] > 5: return { 'consensus': False, 'median': median, 'low': estimates[0], 'high': estimates[-1], 'action': 'Discuss and re-estimate' } return {'consensus': True, 'estimate': median} # Example usage print(StoryEstimation.calculate_story_points( complexity=3, # Medium complexity effort=2, # Low effort risk=1 # Low risk )) # Output: 3 points
yamlSprint Goal Template: Sprint: Sprint 23 (Nov 7 - Nov 20) Goal Statement: | Enable users to manage multiple payment methods with a secure, intuitive interface that reduces checkout time by 40% Success Criteria: - Payment method management UI implemented - 95% test coverage on payment logic - Performance: <200ms payment processing - Zero critical security issues - Feature released to 20% of users for A/B testing Team Commitment: 89 story points Expected Velocity: 85-95 points Key Risks: - Payment gateway API changes - Security compliance requirements - Integration complexity Acceptance: - All criteria met - Feature deployed to staging - Security review approved - Team and PO sign-off
javascript// Daily standup structure and tracking class DailyStandup { constructor(team) { this.team = team; this.standups = []; } conductStandup(date) { const standup = { date, startTime: new Date(), participants: [], timeboxed: true, durationMinutes: 15 }; for (let member of this.team) { standup.participants.push({ name: member.name, yesterday: member.getYesterdayWork(), today: member.getPlanForToday(), blockers: member.getBlockers(), helpNeeded: member.getHelpNeeded() }); } return { standup, followUpActions: this.identifyFollowUps(standup), blockerResolutionOwners: this.assignBlockerOwners(standup) }; } identifyFollowUps(standup) { return standup.participants .filter(p => p.blockers.length > 0) .map(p => ({ owner: p.name, blockers: p.blockers, deadline: new Date(Date.now() + 24 * 60 * 60 * 1000) })); } }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 11,276 | 12,576 | +12% | 1 | 1 | 0% | 2,079 | 3,925 | +89% | 0 | 0 | — |
case-02 | fail→pass | 8,372 | 4,783 | -43% | 1 | 1 | 0% | 1,463 | 2,984 | +104% | 0 | 0 | — |
case-03 | pass→pass | 11,500 | 10,643 | -7% | 1 | 1 | 0% | 1,741 | 3,779 | +117% | 0 | 0 | — |
case-04 | fail→pass | 8,457 | 7,560 | -11% | 1 | 1 | 0% | 1,375 | 3,206 | +133% | 0 | 0 | — |
case-05 | fail→fail | 11,894 | 13,849 | +16% | 1 | 1 | 0% | 1,919 | 4,015 | +109% | 0 | 0 | — |
case-06 | pass→pass | 3,502 | 3,669 | +5% | 1 | 1 | 0% | 598 | 2,589 | +333% | 0 | 0 | — |
case-07 | pass→pass | 11,039 | 10,524 | -5% | 1 | 1 | 0% | 1,638 | 3,589 | +119% | 0 | 0 | — |
case-08 | pass→pass | 12,118 | 12,263 | +1% | 1 | 1 | 0% | 1,843 | 3,929 | +113% | 0 | 0 | — |
case-09 | fail→fail | 10,528 | 11,357 | +8% | 1 | 1 | 0% | 1,605 | 3,619 | +125% | 0 | 0 | — |
case-10 | pass→pass | 15,010 | 13,895 | -7% | 1 | 1 | 0% | 2,283 | 4,072 | +78% | 0 | 0 | — |
case-11 | pass→pass | 14,011 | 12,023 | -14% | 1 | 1 | 0% | 2,092 | 3,864 | +85% | 0 | 0 | — |
case-12 | pass→pass | 14,398 | 13,598 | -6% | 1 | 1 | 0% | 1,984 | 3,918 | +97% | 0 | 0 | — |
case-13 | pass→pass | 12,341 | 14,658 | +19% | 1 | 1 | 0% | 1,716 | 4,056 | +136% | 0 | 0 | — |
case-18 | pass→pass | 9,366 | 3,601 | -62% | 1 | 1 | 0% | 1,521 | 2,616 | +72% | 0 | 0 | — |
case-14 | fail→pass | 7,922 | 8,653 | +9% | 1 | 1 | 0% | 1,231 | 3,264 | +165% | 0 | 0 | — |
case-15 | fail→pass | 3,517 | 3,123 | -11% | 1 | 1 | 0% | 486 | 2,419 | +398% | 0 | 0 | — |
case-16 | pass→pass | 7,270 | 5,941 | -18% | 1 | 1 | 0% | 1,146 | 2,946 | +157% | 0 | 0 | — |
case-17 | fail→fail | 11,593 | 6,322 | -45% | 1 | 1 | 0% | 2,079 | 3,103 | +49% | 0 | 0 | — |
case-19 | pass→pass | 13,091 | 11,211 | -14% | 1 | 1 | 0% | 1,982 | 3,680 | +86% | 0 | 0 | — |
case-20 | pass→pass | 3,740 | 3,550 | -5% | 1 | 1 | 0% | 567 | 2,490 | +339% | 0 | 0 | — |
case-21 | fail→fail | 6,260 | 8,543 | +36% | 1 | 1 | 0% | 1,162 | 3,530 | +204% | 0 | 0 | — |
case-22 | fail→fail | 21,167 | 17,961 | -15% | 1 | 1 | 0% | 3,441 | 4,845 | +41% | 0 | 0 | — |
case-23 | fail→fail | 19,580 | 19,938 | +2% | 1 | 1 | 0% | 2,926 | 5,066 | +73% | 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. 23 cases were attempted. The headline lift of +22 percentage points is the difference between those two pass rates over the 23 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.