| name | Backlog.md |
| description | Expert guidance for Backlog.md CLI project management tool including task creation, editing, status management, acceptance criteria, search, and board visualization. Use this when managing project tasks, creating task lists, updating task status, or organizing project work. |
Backlog.md
Expert assistance with Backlog.md CLI project management tool.
Overview
Backlog.md is a CLI-based project management tool that uses markdown files to track tasks, documentation, and decisions. All operations go through the backlog CLI command.
Key Principle: NEVER edit task files directly. Always use CLI commands.
Quick Start
backlog task list --plain
backlog task 42 --plain
backlog task create "Task title" -d "Description" --ac "Acceptance criterion"
backlog task edit 42 -s "In Progress" -a @me
backlog search "keyword" --plain
Task Creation
Basic Task Creation
backlog task create "Implement user login"
backlog task create "Implement user login" -d "Add authentication flow"
backlog task create "Implement user login" \
--ac "User can login with email and password" \
--ac "Invalid credentials show error message"
backlog task create "Implement user login" \
-d "Add authentication flow with session management" \
--ac "User can login with valid credentials" \
--ac "Session persists across page refreshes" \
-s "To Do" \
-a @developer \
-l backend,auth \
--priority high
Advanced Creation
backlog task create "Research options" --draft
backlog task create "Implement feature component" -p 42
backlog task create "Deploy to production" --dep task-40 --dep task-41
backlog task create "Fix bug" -l bug,urgent,frontend
Task Modification
Status Management
backlog task edit 42 -s "In Progress"
backlog task edit 42 -s "Done"
backlog task edit 42 -s "Blocked"
backlog task edit 42 -s "In Progress" -a @me
Basic Fields
backlog task edit 42 -t "New title"
backlog task edit 42 -d $'Multi-line\ndescription\nhere'
backlog task edit 42 -a @username
backlog task edit 42 -l backend,api,v2
backlog task edit 42 --priority high
backlog task edit 42 --priority medium
backlog task edit 42 --priority low
Acceptance Criteria Management
IMPORTANT: Each flag accepts multiple values
backlog task edit 42 --ac "User can login" --ac "Session persists"
backlog task edit 42 --check-ac 1 --check-ac 2 --check-ac 3
backlog task edit 42 --uncheck-ac 2
backlog task edit 42 --remove-ac 3 --remove-ac 2
backlog task edit 42 \
--check-ac 1 \
--uncheck-ac 2 \
--remove-ac 4 \
--ac "New criterion"
Note:
- ✅ Use multiple flags:
--check-ac 1 --check-ac 2
- ❌ Don't use commas:
--check-ac 1,2,3
- ❌ Don't use ranges:
--check-ac 1-3
Implementation Plan & Notes
backlog task edit 42 --plan $'1. Research codebase\n2. Implement solution\n3. Write tests\n4. Update docs'
backlog task edit 42 --plan "$(printf '1. Step one\n2. Step two')"
backlog task edit 42 --notes $'Implemented using strategy pattern\nUpdated all tests\nReady for review'
backlog task edit 42 --append-notes $'- Fixed edge case\n- Added validation'
backlog task edit 42 --notes $'## Changes\n- Implemented X\n- Fixed Y\n\n## Testing\n- Added unit tests\n- Manual testing complete'
Dependencies
backlog task edit 42 --dep task-1 --dep task-2
Viewing Tasks
List Tasks
backlog task list --plain
backlog task list -s "To Do" --plain
backlog task list -s "In Progress" --plain
backlog task list -s "Done" --plain
backlog task list -a @username --plain
backlog task list -a @me --plain
backlog task list --tag backend --plain
backlog task list --tag bug --plain
backlog task list -s "In Progress" -a @me --plain
View Task Details
backlog task 42 --plain
backlog task 42 --web
Search
backlog search "authentication" --plain
backlog search "login" --type task --plain
backlog search "api" --status "To Do" --plain
backlog search "bug" --priority high --plain
backlog search "database" --in title --plain
Task Workflow
Complete Task Lifecycle
backlog task create "Implement feature X" \
-d "Add new feature to handle Y" \
--ac "Feature works as expected" \
--ac "Tests are passing" \
--ac "Documentation is updated"
backlog task edit 42 -s "In Progress" -a @me
backlog task edit 42 --plan $'1. Research existing code\n2. Implement core logic\n3. Add tests\n4. Update docs'
backlog task edit 42 --check-ac 1 --check-ac 2 --check-ac 3
backlog task edit 42 --notes $'## Changes\n- Implemented feature X using approach Y\n- Added comprehensive tests\n\n## Testing\n- Unit tests pass\n- Integration tests pass\n- Manual testing complete'
backlog task edit 42 -s Done
Starting a Task (Critical Steps)
backlog task edit 42 -s "In Progress" -a @me
backlog task 42 --plain
backlog task edit 42 --plan $'1. Analyze requirements\n2. Design solution\n3. Implement\n4. Test\n5. Document'
Board & Visualization
backlog board
backlog browser
backlog board --export board-snapshot.md
backlog report --output report.md
Task Operations
Archive & Promote
backlog task archive 42
backlog task demote 42
backlog task promote draft-5
Task History
backlog task history 42
backlog task diff 42
Documentation & Decisions
Documents
backlog doc create "API Documentation"
backlog doc list --plain
backlog doc edit 1 --content "Updated content"
Architectural Decisions
backlog decision create "Use PostgreSQL for data storage"
backlog decision list --plain
backlog decision 1 --plain
Best Practices
Writing Good Tasks
Title: Clear, concise, action-oriented
backlog task create "Implement user authentication"
backlog task create "Fix memory leak in image processor"
backlog task create "Users"
backlog task create "There's a problem with the app"
Description: Explain the "why" and context
backlog task create "Add rate limiting to API" \
-d "Current API has no rate limiting, causing server overload during peak hours. Need to implement per-user rate limiting to prevent abuse."
Acceptance Criteria: Focus on outcomes, not implementation
--ac "API rejects requests after 100 requests per minute per user"
--ac "User receives clear error message when rate limited"
--ac "Rate limit resets after 60 seconds"
--ac "Add a rate limiter middleware"
--ac "Use Redis for tracking"
Task Organization
Use Labels Effectively
backlog task create "Fix login bug" -l bug,urgent,auth
backlog task create "Optimize queries" -l enhancement,backend,performance
backlog task create "Update docs" -l documentation,frontend
Use Tags for Metadata
--tag "sprint:23"
--tag "epic:user-management"
--tag "team:backend"
Task Breakdown
Atomic Tasks: Each task should be independently deliverable
backlog task create "Add login endpoint"
backlog task create "Add logout endpoint"
backlog task create "Add session refresh endpoint"
backlog task create "Implement entire authentication system"
Avoid Future Dependencies: Never reference tasks that don't exist yet
backlog task create "Deploy auth API" --dep task-40 --dep task-41
backlog task create "Add feature A" -d "This will be used by future tasks"
Implementation Notes
Format as PR Description: Make notes ready for GitHub
backlog task edit 42 --notes $'## Summary
- Implemented user authentication with JWT
- Added password hashing with bcrypt
- Created login/logout endpoints
## Changes
- Added auth middleware
- Updated user model
- Added auth routes
## Testing
- Unit tests for auth functions
- Integration tests for endpoints
- Manual testing with Postman
## Breaking Changes
None
## Follow-up
- Add refresh token rotation
- Implement rate limiting'
Progressive Notes: Append as you work
backlog task edit 42 --append-notes "- Implemented core auth logic"
backlog task edit 42 --append-notes "- Added tests"
backlog task edit 42 --append-notes "- Updated documentation"
Definition of Done
A task is Done only when ALL of these are complete:
Via CLI:
- ✅ All acceptance criteria checked:
--check-ac 1 --check-ac 2 ...
- ✅ Implementation notes added:
--notes "..."
- ✅ Status set to Done:
-s Done
Via Code/Testing:
4. ✅ Tests pass
5. ✅ Documentation updated
6. ✅ Code reviewed
7. ✅ No regressions
Never mark task as Done without completing ALL items
Common Patterns
Daily Workflow
backlog task list -a @me -s "In Progress" --plain
backlog task edit 42 -s "In Progress" -a @me
backlog task 42 --plain
backlog task edit 42 --plan $'1. Analyze\n2. Implement\n3. Test'
backlog task edit 42 --check-ac 1
backlog task edit 42 --check-ac 2
backlog task edit 42 --append-notes "- Completed X, Y pending"
Sprint Planning
backlog task list -s "To Do" --plain
backlog task edit 42 --tag "sprint:23"
backlog task edit 43 --tag "sprint:23"
backlog task edit 42 -a @developer1
backlog task edit 43 -a @developer2
backlog board
Bug Fix Workflow
backlog task create "Fix login timeout issue" \
-d "Users report login times out after 30 seconds on slow connections" \
--ac "Login works on slow connections (tested with throttling)" \
--ac "Timeout increased to 60 seconds" \
--ac "User sees loading indicator during login" \
-l bug,urgent,auth \
--priority high
backlog task edit 42 -s "In Progress" -a @me
backlog task edit 42 --notes $'## Root Cause
Login timeout was set to 30s, causing issues on slow connections.
## Fix
- Increased timeout to 60s
- Added exponential backoff for retries
- Improved loading indicator visibility
## Testing
- Tested with Chrome network throttling (Slow 3G)
- Verified timeout works correctly
- All existing auth tests pass'
backlog task edit 42 --check-ac 1 --check-ac 2 --check-ac 3
backlog task edit 42 -s Done
Troubleshooting
Task Not Found
backlog task list --plain
backlog search "keyword" --type task --plain
Acceptance Criteria Issues
backlog task 42 --plain
backlog task edit 42 --check-ac 1
backlog task edit 42 --check-ac 1 --check-ac 2 --check-ac 3
Metadata Out of Sync
backlog task edit 42 -s "In Progress"
ls -la backlog/tasks/
Multiline Input
backlog task edit 42 --notes $'Line 1\nLine 2'
backlog task edit 42 --notes "$(printf 'Line 1\nLine 2')"
backlog task edit 42 --notes "Line 1`nLine 2"
Command Reference
Core Commands
backlog task create <title> [options]
backlog task list [filters] --plain
backlog task <id> --plain
backlog task edit <id> [options]
backlog task archive <id>
backlog task demote <id>
backlog search <query> [filters] --plain
backlog board
backlog browser
backlog report --output <file>
backlog doc create <title>
backlog doc list --plain
backlog doc edit <id>
backlog decision create <title>
backlog decision list --plain
backlog decision <id> --plain
Common Options
-t, --title Task title
-d, --description Task description
-s, --status Status (To Do, In Progress, Done, Blocked)
-a, --assignee Assignee (@username)
-l, --labels Comma-separated labels
--priority Priority (low, medium, high)
--ac Add acceptance criterion
--check-ac Check AC by index
--uncheck-ac Uncheck AC by index
--remove-ac Remove AC by index
--plan Implementation plan
--notes Implementation notes
--append-notes Append to notes
--dep Add dependency (task-id)
--draft Create as draft
-p, --parent Parent task ID
--plain Plain text output (AI-friendly)
--status Filter by status
--assignee Filter by assignee
--tag Filter by tag
--priority Filter by priority
--type Filter by type (task, doc, decision)
Tips
- Always use
--plain when listing or viewing for AI processing
- Start tasks properly: Set In Progress and assign to yourself
- Check AC as you go: Don't wait until end to mark them complete
- Use multiline properly: Use
$'...\n...' syntax for newlines
- Multiple flags work:
--check-ac 1 --check-ac 2 --check-ac 3
- Organize with labels: Use consistent labeling scheme
- Atomic tasks: One PR = One task
- PR-ready notes: Format notes as GitHub PR description
- Never edit files directly: Always use CLI commands
- Search is fuzzy: "auth" finds "authentication"
Integration with Git
git checkout -b task-42-implement-feature
backlog task edit 42 --check-ac 1 --check-ac 2
backlog task edit 42 --notes "Implementation complete"
backlog task edit 42 -s Done
git add .
git commit -m "Implement feature X
Refs: task-42"
git push
Remember
🎯 Golden Rule: Always use CLI commands. Never edit markdown files directly.
📋 Task Quality: Good AC = Testable outcomes, not implementation steps.
✅ Definition of Done: All AC checked + notes + tests passing + status Done.