Help us improve
Share bugs, ideas, or general feedback.
From retro
Manages the retrospective-actions kanban board — creating, reviewing, approving, deduplicating, and moving improvement cards in .beads/retro.db. Invoke when asked to "create a retro card", "approve an action card", "review retro cards", "scrum retro cards", "work the retro backlog", or "show retro board". Required reading before any operation on the retrospective board. Pairs with sprint:kanban for universal rules. Do not use for sprint-run board operations — those use sprint:kanban directly.
npx claudepluginhub cosmicdreams/claude-plugins --plugin retroHow this skill is triggered — by the user, by Claude, or both
Slash command
/retro:kanbanThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Board-specific rules for `.beads/retro.db`. Read `sprint:kanban` first for universal standards.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Board-specific rules for .beads/retro.db. Read sprint:kanban first for universal standards.
Board: .beads/retro.db (Beads database)
Purpose: Process improvement cards generated by retrospectives — proposed by the retro, reviewed by team-lead, approved by user, implemented by agents.
# All open cards by lane
bd list -l board-retro --json | jq 'group_by(.labels)'
# Cards awaiting review (backlog)
bd list -l board-retro -l lane-backlog --json
# Approved, ready for implementation
bd list -l board-retro -l lane-approved --json
# In progress
bd list -l board-retro -s in_progress --json
| Lane | Status | Label |
|---|---|---|
| Backlog | open (default) | lane-backlog |
| Approved | open | lane-approved |
| In Progress | in_progress (set by --claim) | lane-in-progress |
| Done | closed (via bd close) | (none) |
bd create "Improve X" \
--prefix retro \
-p 1 -t task \
--labels "board-retro,lane-backlog,target-skill,cat-improve,effort-m,session-YYYY-MM-DD" \
--description "$(cat <<'EOF'
## Finding
[1-2 sentences describing the observed problem or pattern]
## Sources
- [agent name]: [observation]
## Recommendation
[What to do]
## Effort
[S/M/L and explanation]
## Priority
[Critical/High/Medium/Low and rationale]
EOF
)"
Card IDs are assigned automatically by Beads (e.g., retro-a1b2). The session-YYYY-MM-DD label ties cards to their retrospective session.
| Priority | -p value |
|---|---|
| Critical | 0 |
| High | 1 |
| Medium | 2 |
| Low | 3 |
| Metadata | Label format |
|---|---|
| target: skill | target-skill |
| target: memory | target-memory |
| target: agent | target-agent |
| target: claude-md | target-claude-md |
| target: protocol | target-protocol |
| category: improve | cat-improve |
| category: keep-doing | cat-keep-doing |
| category: learn | cat-learn |
| effort: S | effort-s |
| effort: M | effort-m |
| effort: L | effort-l |
| session date | session-YYYY-MM-DD |
| source weight: High | weight-high |
| verification required | verification-required |
Before presenting cards to the user, run a dedup pass across all backlog cards:
# List all backlog cards
bd list -l board-retro -l lane-backlog --json | jq '[.[] | {id, title, labels}]'
# Search for near-duplicates on specific terms
bd search "agent shutdown"
bd close --reason "Merged into <id>", update the surviving card with bd update <id> --append-notes "Merged evidence from <closed-id>."Goal: present the user with a clean set of distinct, actionable cards. The scrum is an activity (a review pass), not a board status.
A card qualifies for "Apply Now" if ALL of the following are true:
Present each reviewed card to the user via AskUserQuestion with markdown previews (max 4 cards per call):
Question: "Action Card: [card title]"
Options:
- "Approve" (description: "Move to approved lane, ready for implementation")
markdown: |
**ID**: <card-id>
**Category**: keep-doing | improve | learn
**Target**: memory | skill | protocol | ...
**Priority**: Critical | High | Medium
**Finding**: [1-2 sentence summary]
**Recommendation**: [what to do]
**Effort**: S | M | L
- "Apply Now" (description: "Trivial fix -- apply immediately and close this session")
[Only offer this option when the card meets all fast-path criteria above]
- "Reject" (description: "Close card -- not aligned with current direction")
- "Modify" (description: "Discuss changes before deciding")
After user decisions:
# Approve: move from backlog to approved lane
bd update <id> --remove-label lane-backlog --add-label lane-approved
# Apply Now (trivial, immediate): apply change, then close
bd close <id> --reason "Applied immediately: [summary of change made]"
# Reject: close with reason
bd close <id> --reason "Rejected: [reason]"
# Modify: update description, then approve
bd update <id> --description "Updated description..."
bd update <id> --remove-label lane-backlog --add-label lane-approved
User may identify missing cards during review — create them directly with the lane-approved label.
After a card is in the approved lane:
bd update <id> --claim --add-label lane-in-progress (atomically sets assignee + status=in_progress)bd close <id> --reason "Implemented: [summary]"Closed cards are kept as institutional memory — they are not deleted.
Cards with the verification-required label cannot be closed until verification evidence is added:
# Add verification evidence
bd update <id> --append-notes "verification_evidence: [sprint, agent, observation]"
# Only then close it
bd close <id> --reason "Implemented and verified."
verification_evidence must contain: sprint name or date, agent name, and a transcript snippet or observation confirming the gate was followed at least once.
Without this evidence, the change may have been written but not adopted. Closing the card without evidence claims success you cannot support.
Per the universal rule (sprint:kanban), rejected cards are closed. Exception for retro cards:
Rejected cards may be kept open with a note documenting the rejection reason if the reason has strategic memory value (e.g., "We're removing jQuery, don't invest in understanding it — retro 2026-02-21"). Future retros can search rejection history to avoid re-proposing superseded ideas.
# Strategic rejection (keep for memory)
bd update <id> --append-notes "Rejection reason (strategic): [reason]"
bd update <id> --remove-label lane-backlog --add-label lane-rejected
# Default rejection (close)
bd close <id> --reason "Rejected: [reason]"
Default: close rejected cards unless the rejection reason reveals strategic direction worth preserving.
sprint:kanbanretro:session (references/action-card-template.md)retro:session (references/feedback-targets.md)/retro:session Phases 6-7