/backlog — Project Backlog Management
Create, list, close, and triage todos as GitHub Issues.
Setup
The script lives at .claude/scripts/todo.sh. It wraps gh CLI to manage issues.
Label Filtering
By default, issues are tagged and filtered by claude-todo label. Override with global flags (before subcommand):
- •
--label=<name>— use a custom label - •
--no-label— skip label filtering entirely (operates on all issues)
Dispatch
Parse $ARGUMENTS to determine action:
No arguments → List all todos
bash
.claude/scripts/todo.sh list --all
First word is done → Close a todo
bash
.claude/scripts/todo.sh done <number> [--global]
First word is stale → Show old todos
bash
.claude/scripts/todo.sh stale
Show stale items and ask user which to close, keep, or reprioritize.
First word is review → Interactive triage
- •Run
.claude/scripts/todo.sh list --all --json, parse output - •Present each todo one by one
- •For each, ask: Keep, Close, Reprioritize?
- •Execute decisions
First word is group → Component label
bash
.claude/scripts/todo.sh group <component> <issue-numbers...>
Otherwise → Create a new todo
bash
.claude/scripts/todo.sh add $ARGUMENTS
After creating:
- •Extract issue number from output URL
- •If title > 70 chars, propose a clean title via
gh issue edit - •Ask 1 follow-up question about acceptance criteria using AskUserQuestion
- •If answered, update the issue body to replace TBD placeholder
Scope Rules
- •Default: Current project repo
- •
--global: Global backlog repo (<user>/cc-todos) - •
--project: Explicit current repo - •If not in a git repo, falls back to global
Display Format
Present as markdown table: #, Pri, Title, Created, Status. Truncate titles at ~60 chars.