Back to Skills

manage-backlog

pjt222
Updated 2 days ago
6 views
17
2
17
View on GitHub
Metaai

About

This Claude Skill helps developers create and maintain a prioritized product backlog, handling user story writing, MoSCoW prioritization, and backlog grooming. It's used to convert project scope into actionable items, re-prioritize after feedback, and split oversized work items. Key features include managing acceptance criteria, estimates, and tracking item status.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/manage-backlog

Copy and paste this command in Claude Code to install this skill

Documentation

Manage Product Backlog

Create, prioritize, maintain backlog of work items serving as single source of truth for what needs to be done. Applies to both agile and classic project methodologies.

When Use

  • Starting new project, converting scope into actionable items
  • Ongoing backlog grooming before sprint planning
  • Re-prioritizing work after stakeholder feedback or scope changes
  • Splitting oversized items into implementable pieces
  • Reviewing and archiving completed or cancelled items

Inputs

  • Required: Project scope (from charter, WBS, or stakeholder input)
  • Optional: Existing backlog file (BACKLOG.md) to update
  • Optional: Prioritization framework preference (MoSCoW, value/effort, WSJF)
  • Optional: Estimation scale (story points, T-shirt sizes, person-days)
  • Optional: Sprint or iteration feedback requiring backlog updates

Steps

Step 1: Create or Load Backlog Structure

No backlog exists? Create BACKLOG.md with standard columns. Exists? Read and validate structure.

# Product Backlog: [Project Name]
## Last Updated: [YYYY-MM-DD]

### Summary
- **Total Items**: [N]
- **Ready for Sprint**: [N]
- **In Progress**: [N]
- **Done**: [N]
- **Cancelled**: [N]

### Backlog Items
| ID | Title | Type | Priority | Estimate | Status | Sprint |
|----|-------|------|----------|----------|--------|--------|
| B-001 | [Title] | Feature | Must | 5 | Ready | — |
| B-002 | [Title] | Bug | Should | 2 | Ready | — |
| B-003 | [Title] | Task | Could | 3 | New | — |

### Item Details

#### B-001: [Title]
- **Type**: Feature | Bug | Task | Spike | Tech Debt
- **Priority**: Must | Should | Could | Won't
- **Estimate**: [Points or size]
- **Status**: New | Ready | In Progress | Done | Cancelled
- **Acceptance Criteria**:
  - [ ] [Criterion 1]
  - [ ] [Criterion 2]
- **Notes**: [Context, links, dependencies]

#### B-002: [Title]
...

Got: BACKLOG.md exists with valid structure and summary statistics.

If fail: File malformed? Restructure preserving existing item data.

Step 2: Write or Refine Items

For each new item, write as user story or requirement:

  • User story format: "As a [role], I want [capability] so that [benefit]"
  • Requirement format: "[System/Component] shall [behavior] when [condition]"

Each item must have:

  • Unique ID (B-NNN, incrementing)
  • Clear title (imperative verb form)
  • Type classification
  • At least 2 acceptance criteria (testable, binary pass/fail)

Example:

#### B-005: Enable User Login with OAuth
- **Type**: Feature
- **Priority**: Must
- **Estimate**: 5
- **Status**: Ready
- **Acceptance Criteria**:
  - [ ] User can log in using GitHub OAuth
  - [ ] User session persists for 24 hours
  - [ ] Failed login shows clear error message
- **Notes**: Requires OAuth app registration in GitHub

Got: All items have titles, types, acceptance criteria.

If fail: Items without acceptance criteria marked Status: New (not Ready). Cannot enter sprint.

Step 3: Prioritize Using MoSCoW or Value/Effort

Apply chosen prioritization framework:

MoSCoW (default):

  • Must: Project fails without this. Non-negotiable.
  • Should: Important but project can succeed without it. Include if capacity allows.
  • Could: Nice to have. Include only if no impact on Must/Should items.
  • Won't: Explicitly excluded from current scope. Documented for future consideration.

Value/Effort Matrix (alternative):

Low EffortHigh Effort
High ValueDo First (Quick Wins)Do Second (Big Bets)
Low ValueDo Third (Fill-ins)Don't Do (Money Pits)

Sort backlog table: Must items first (by value within Must), then Should, then Could.

Got: Every item has priority. Backlog sorted by priority.

If fail: Stakeholders disagree on priorities? Escalate Must vs Should decisions to project sponsor.

Step 4: Groom — Split, Estimate, Refine

Review items for sprint-readiness. For each item:

  1. Split if estimate > 8 points (or > 1 week effort): decompose into 2-4 smaller items
  2. Estimate using project's chosen scale
  3. Refine vague acceptance criteria into testable conditions
  4. Mark Ready when item has title, acceptance criteria, estimate, no blockers

Document splitting:

**Split**: B-003 split into B-003a, B-003b, B-003c (original archived)

#### B-003a: Set Up Database Schema
- **Type**: Task
- **Priority**: Must
- **Estimate**: 3
- **Status**: Ready
- **Acceptance Criteria**:
  - [ ] Users table created with email, name fields
  - [ ] Migrations run successfully on dev environment

#### B-003b: Implement User CRUD Operations
- **Type**: Task
- **Priority**: Must
- **Estimate**: 5
- **Status**: Ready
- **Acceptance Criteria**:
  - [ ] Create user endpoint returns 201 with user object
  - [ ] Update user endpoint validates required fields

Got: All Must and Should items in Ready status.

If fail: Items that can't be estimated need Spike (time-boxed research task) added to backlog.

Step 5: Update Summary and Archive

Update summary statistics. Move Done and Cancelled items to archive section:

### Archive
| ID | Title | Status | Sprint | Completed |
|----|-------|--------|--------|-----------|
| B-001 | Enable User Login with OAuth | Done | S-003 | 2025-03-15 |
| B-004 | Add Dark Mode Theme | Cancelled | — | 2025-03-10 |

Update summary by counting items in each status:

# Count Ready items
grep "| Ready |" BACKLOG.md | wc -l

# Count In Progress items
grep "| In Progress |" BACKLOG.md | wc -l

# Count Done items
grep "| Done |" BACKLOG.md | wc -l

Got: Summary statistics match actual item counts. Archive section contains all closed items.

If fail: Counts don't match? Recount by grepping Status values, update summary manually.

Checks

  • BACKLOG.md exists with standard structure
  • Every item has unique ID, title, type, priority, status
  • All Must and Should items have acceptance criteria
  • Items sorted by priority (Must first, then Should, then Could)
  • No item estimated at > 8 points without being split
  • Summary statistics accurate
  • Done/Cancelled items archived

Pitfalls

  • No acceptance criteria: Items without criteria can't be verified as done. Every item needs at least 2 testable criteria.
  • Everything is Must priority: >50% of items Must? Priorities not real. Force-rank within Must.
  • Zombie items: Items sitting in backlog for months without progress should be re-evaluated or cancelled.
  • Estimates without context: Story points relative — team must have reference item (e.g., "B-001 is our 3-point reference").
  • Splitting creates fragments: When splitting, ensure each child item independently deliverable and valuable.
  • Backlog as dumping ground: Backlog not wish list. Regularly prune items no longer aligning with project goals.
  • Missing dependencies: Note blocking items in Notes field. Blocked item should not be marked Ready.

See Also

  • draft-project-charter — charter scope feeds initial backlog creation
  • create-work-breakdown-structure — WBS work packages can become backlog items
  • plan-sprint — sprint planning selects from top of backlog
  • generate-status-report — backlog burn-down feeds status reports
  • conduct-retrospective — retrospective improvement items feed back into backlog

GitHub Repository

pjt222/agent-almanac
Path: i18n/caveman/skills/manage-backlog
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

content-collections

Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill

polymarket

Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill

creating-opencode-plugins

Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill

sglang

Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill