233 lines
5.8 KiB
Markdown
233 lines
5.8 KiB
Markdown
---
|
|
description: Groom Linear backlog to identify orphaned issues, incorrect project assignments, and health issues
|
|
category: pm
|
|
tools: Task, Read, Write
|
|
model: inherit
|
|
version: 1.0.0
|
|
---
|
|
|
|
# Groom Backlog Command
|
|
|
|
Comprehensive backlog health analysis that identifies:
|
|
- Issues without projects (orphaned)
|
|
- Issues in wrong projects (misclassified)
|
|
- Issues without estimates
|
|
- Stale issues (no activity >30 days)
|
|
- Duplicate issues (similar titles)
|
|
|
|
## Prerequisites Check
|
|
|
|
```bash
|
|
# 1. Validate thoughts system (REQUIRED)
|
|
if [[ -f "scripts/validate-thoughts-setup.sh" ]]; then
|
|
./scripts/validate-thoughts-setup.sh || exit 1
|
|
else
|
|
# Inline validation if script not found
|
|
if [[ ! -d "thoughts/shared" ]]; then
|
|
echo "❌ ERROR: Thoughts system not configured"
|
|
echo "Run: ./scripts/humanlayer/init-project.sh . {project-name}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# 2. Determine script directory with fallback
|
|
if [[ -n "${CLAUDE_PLUGIN_ROOT}" ]]; then
|
|
SCRIPT_DIR="${CLAUDE_PLUGIN_ROOT}/scripts"
|
|
else
|
|
# Fallback: resolve relative to this command file
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/scripts"
|
|
fi
|
|
|
|
# 3. Check PM plugin prerequisites
|
|
if [[ -f "${SCRIPT_DIR}/check-prerequisites.sh" ]]; then
|
|
"${SCRIPT_DIR}/check-prerequisites.sh" || exit 1
|
|
else
|
|
echo "⚠️ Prerequisites check skipped (script not found at: ${SCRIPT_DIR})"
|
|
fi
|
|
```
|
|
|
|
## Process
|
|
|
|
### Step 1: Spawn Research Agent
|
|
|
|
```bash
|
|
# Determine script directory with fallback
|
|
if [[ -n "${CLAUDE_PLUGIN_ROOT}" ]]; then
|
|
SCRIPT_DIR="${CLAUDE_PLUGIN_ROOT}/scripts"
|
|
else
|
|
# Fallback: resolve relative to this command file
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/scripts"
|
|
fi
|
|
|
|
source "${SCRIPT_DIR}/pm-utils.sh"
|
|
TEAM_KEY=$(get_team_key)
|
|
```
|
|
|
|
Use Task tool with `catalyst-dev:linear-research` agent:
|
|
|
|
```
|
|
Prompt: "Get all backlog issues for team ${TEAM_KEY} including issues with no cycle assignment"
|
|
Model: haiku
|
|
```
|
|
|
|
### Step 2: Spawn Analysis Agent
|
|
|
|
Use Task tool with `backlog-analyzer` agent:
|
|
|
|
**Input**: Backlog issues JSON from research
|
|
|
|
**Output**: Structured recommendations with:
|
|
- Orphaned issues (no project)
|
|
- Misplaced issues (wrong project)
|
|
- Stale issues (>30 days)
|
|
- Potential duplicates
|
|
- Missing estimates
|
|
|
|
### Step 3: Generate Grooming Report
|
|
|
|
Create markdown report with sections:
|
|
|
|
**Orphaned Issues** (no project):
|
|
```markdown
|
|
## 🏷️ Orphaned Issues (No Project Assignment)
|
|
|
|
### High Priority
|
|
- **TEAM-456**: "Add OAuth support"
|
|
- **Suggested Project**: Auth & Security
|
|
- **Reasoning**: Mentions authentication, OAuth, security tokens
|
|
- **Action**: Move to Auth project
|
|
|
|
[... more issues ...]
|
|
|
|
### Medium Priority
|
|
[... issues ...]
|
|
```
|
|
|
|
**Misplaced Issues** (wrong project):
|
|
```markdown
|
|
## 🔄 Misplaced Issues (Wrong Project)
|
|
|
|
- **TEAM-123**: "Fix dashboard bug" (currently in: API)
|
|
- **Should be in**: Frontend
|
|
- **Reasoning**: UI bug, no backend changes mentioned
|
|
- **Action**: Move to Frontend project
|
|
```
|
|
|
|
**Stale Issues** (>30 days inactive):
|
|
```markdown
|
|
## 🗓️ Stale Issues (No Activity >30 Days)
|
|
|
|
- **TEAM-789**: "Investigate caching" (last updated: 45 days ago)
|
|
- **Action**: Review and close, or assign to current cycle
|
|
```
|
|
|
|
**Duplicates** (similar titles):
|
|
```markdown
|
|
## 🔁 Potential Duplicates
|
|
|
|
- **TEAM-111**: "User authentication bug"
|
|
- **TEAM-222**: "Authentication not working"
|
|
- **Similarity**: 85%
|
|
- **Action**: Review and merge
|
|
```
|
|
|
|
**Missing Estimates**:
|
|
```markdown
|
|
## 📊 Issues Without Estimates
|
|
|
|
- TEAM-444: "Implement new feature"
|
|
- TEAM-555: "Refactor old code"
|
|
- **Action**: Add story point estimates
|
|
```
|
|
|
|
### Step 4: Interactive Review
|
|
|
|
Present recommendations and ask user:
|
|
|
|
```
|
|
📋 Backlog Grooming Report Generated
|
|
|
|
Summary:
|
|
🏷️ Orphaned: 12 issues
|
|
🔄 Misplaced: 5 issues
|
|
🗓️ Stale: 8 issues
|
|
🔁 Duplicates: 3 pairs
|
|
📊 No Estimates: 15 issues
|
|
|
|
Would you like to:
|
|
1. Review detailed report (opens in editor)
|
|
2. Apply high-confidence recommendations automatically
|
|
3. Generate Linear update commands for manual execution
|
|
4. Skip (report saved for later)
|
|
```
|
|
|
|
### Step 5: Generate Update Commands
|
|
|
|
If user chooses option 3, generate batch update script:
|
|
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
# Backlog grooming updates - Generated 2025-01-27
|
|
|
|
# Move TEAM-456 to Auth project
|
|
linearis issues update TEAM-456 --project "Auth & Security"
|
|
|
|
# Move TEAM-123 to Frontend project
|
|
linearis issues update TEAM-123 --project "Frontend"
|
|
|
|
# Close stale issue TEAM-789
|
|
linearis issues update TEAM-789 --state "Canceled"
|
|
linearis comments create TEAM-789 --body "Closing stale issue (>30 days inactive)"
|
|
|
|
# [... more commands ...]
|
|
|
|
echo "✅ Backlog grooming updates applied"
|
|
```
|
|
|
|
```bash
|
|
# Save update script
|
|
UPDATE_SCRIPT="thoughts/shared/reports/backlog/$(date +%Y-%m-%d)-grooming-updates.sh"
|
|
mkdir -p "$(dirname "$UPDATE_SCRIPT")"
|
|
# [script contents saved here]
|
|
chmod +x "$UPDATE_SCRIPT"
|
|
```
|
|
|
|
### Step 6: Save Report
|
|
|
|
```bash
|
|
REPORT_DIR="thoughts/shared/reports/backlog"
|
|
mkdir -p "$REPORT_DIR"
|
|
|
|
REPORT_FILE="$REPORT_DIR/$(date +%Y-%m-%d)-backlog-grooming.md"
|
|
|
|
# Write formatted report to file
|
|
cat > "$REPORT_FILE" << EOF
|
|
# Backlog Grooming Report - $(date +%Y-%m-%d)
|
|
|
|
[... formatted report content ...]
|
|
EOF
|
|
|
|
echo "✅ Report saved: $REPORT_FILE"
|
|
|
|
# Update workflow context
|
|
if [[ -f "${SCRIPT_DIR}/workflow-context.sh" ]]; then
|
|
"${SCRIPT_DIR}/workflow-context.sh" add reports "$REPORT_FILE" null
|
|
fi
|
|
```
|
|
|
|
## Success Criteria
|
|
|
|
### Automated Verification:
|
|
- [ ] All backlog issues fetched successfully
|
|
- [ ] Agent analysis completes without errors
|
|
- [ ] Report generated with all sections
|
|
- [ ] Update script is valid bash syntax
|
|
- [ ] Files saved to correct locations
|
|
|
|
### Manual Verification:
|
|
- [ ] Orphaned issues correctly identified
|
|
- [ ] Project recommendations make sense
|
|
- [ ] Stale issues are actually inactive
|
|
- [ ] Duplicate detection has few false positives
|
|
- [ ] Report is actionable and clear
|