Expert guidance for managing tasks using the Backlog.md CLI tool.
This skill provides comprehensive guidance for using the Backlog.md CLI tool to manage project tasks effectively.
⚠️ CRITICAL RULE: NEVER EDIT TASK FILES DIRECTLY
All task operations MUST use the Backlog.md CLI commands:
backlog task edit and other CLI commandsbacklog task create to create new tasksbacklog task edit <id> --check-ac <index> to mark acceptance criteriaWhy? Direct file editing breaks metadata synchronization, Git tracking, and task relationships.
Use CLI to create tasks with proper metadata:
# Basic task
backlog task create "Task title" -d "Description"
# With acceptance criteria
backlog task create "Task title" \
-d "Description" \
--ac "First criterion" \
--ac "Second criterion"
# With full metadata
backlog task create "Task title" \
-d "Description" \
-a @assignee \
-s "To Do" \
-l backend,api \
--priority high
Task Components:
Good AC Examples:
FIRST STEPS when taking over a task:
# Set status and assign yourself
backlog task edit 42 -s "In Progress" -a @myself
# View task details
backlog task 42 --plain
# Create implementation plan (The "how")
backlog task edit 42 --plan $'1. Research codebase\n2. Implement solution\n3. Add tests\n4. Update docs'
Mark acceptance criteria as complete when done:
# Check single AC
backlog task edit 42 --check-ac 1
# Check multiple ACs at once
backlog task edit 42 --check-ac 1 --check-ac 2 --check-ac 3
# Mixed operations
backlog task edit 42 --check-ac 1 --uncheck-ac 2 --remove-ac 3
Important: Only implement what's in the Acceptance Criteria. If you need to do more:
backlog task edit 42 --ac "New requirement"backlog task create "Additional feature"Add implementation notes (PR description):
# Replace notes
backlog task edit 42 --notes $'Implemented using pattern X\n- Modified files Y and Z\n- Added comprehensive tests'
# Append notes progressively
backlog task edit 42 --append-notes $'- Added tests\n- Updated docs'
Mark task as done:
backlog task edit 42 -s Done
# List all tasks (AI-friendly output)
backlog task list --plain
# List by status
backlog task list -s "To Do" --plain
backlog task list -s "In Progress" --plain
# List by assignee
backlog task list -a @sara --plain
# View specific task
backlog task 42 --plain
# Search tasks (fuzzy matching)
backlog search "auth" --plain
backlog search "api" --type task --status "In Progress" --plain
# Change title
backlog task edit 42 -t "New Title"
# Change status
backlog task edit 42 -s "In Progress"
# Assign task
backlog task edit 42 -a @sara
# Add/change labels
backlog task edit 42 -l backend,api,urgent
# Set priority
backlog task edit 42 --priority high
# Multiple changes at once
backlog task edit 42 -s "In Progress" -a @myself -l backend
# Add new criteria
backlog task edit 42 --ac "New criterion" --ac "Another criterion"
# Check criteria (mark as complete)
backlog task edit 42 --check-ac 1
backlog task edit 42 --check-ac 1 --check-ac 2 # Multiple at once
# Uncheck criteria
backlog task edit 42 --uncheck-ac 3
# Remove criteria
backlog task edit 42 --remove-ac 2
# Mixed operations
backlog task edit 42 --ac "New" --check-ac 1 --remove-ac 4
For descriptions, plans, and notes with newlines, use shell-specific syntax:
Bash/Zsh (ANSI-C quoting):
backlog task edit 42 --desc $'Line 1\nLine 2\n\nLine 3'
backlog task edit 42 --plan $'1. Step one\n2. Step two'
backlog task edit 42 --notes $'Implemented A\nTested B'
PowerShell:
backlog task edit 42 --notes "Line 1`nLine 2"
POSIX portable:
backlog task edit 42 --notes "$(printf 'Line 1\nLine 2')"
A task is Done only when ALL of the following are complete:
Via CLI:
--check-ac)--notes)-s Done)Via Code/Testing: 4. Tests pass 5. Documentation updated 6. Code reviewed 7. No regressions
| ✅ DO | ❌ DON'T |
|---|---|
backlog task 42 --plain |
Open .md file directly |
backlog task list --plain |
Browse backlog/tasks folder |
backlog search "topic" --plain |
Manually grep files |
| ✅ DO | ❌ DON'T |
|---|---|
backlog task edit 42 --check-ac 1 |
Change - [ ] to - [x] in file |
backlog task edit 42 --notes "..." |
Type notes into .md file |
backlog task edit 42 -s Done |
Edit status in frontmatter |
backlog task edit 42 --ac "New" |
Add - [ ] New to file |
Phase Discipline:
Task Quality:
Implementation Notes Formatting:
Always use --plain flag when viewing/listing for AI-friendly output
# 1. Find work
backlog task list -s "To Do" --plain
# 2. Read task
backlog task 42 --plain
# 3. Start work
backlog task edit 42 -s "In Progress" -a @myself
# 4. Add plan
backlog task edit 42 --plan $'1. Research\n2. Implement\n3. Test'
# 5. Work on the task (write code, test)
# 6. Mark criteria complete
backlog task edit 42 --check-ac 1 --check-ac 2 --check-ac 3
# 7. Add notes
backlog task edit 42 --notes $'Implemented feature X\n- Modified files A, B\n- Added tests'
# 8. Mark done
backlog task edit 42 -s Done
Tasks live in backlog/tasks/ as task-<id> - <title>.md files. Never edit these directly!
Task Structure (for viewing only):
---
id: task-42
title: Add GraphQL resolver
status: To Do
assignee: [@sara]
labels: [backend, api]
---
## Description
Brief explanation of the task purpose.
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 First criterion
- [x] #2 Second criterion (completed)
- [ ] #3 Third criterion
<!-- AC:END -->
## Implementation Plan
1. Research approach
2. Implement solution
## Implementation Notes
Summary of what was done.
🎯 The Golden Rule: If you want to change ANYTHING in a task, use backlog task edit.
📖 CLI is the interface - it handles Git, metadata, relationships, and file naming.
For complete help: backlog --help