| name | td |
| description | Manage tasks and issues with the td CLI. Use for creating, tracking, querying, and handing off work items. Covers task lifecycle, session management, structured handoffs, epics, dependencies, and boards. |
td — Task & Session Management
td is a local-first task management CLI optimized for AI-assisted development workflows. It tracks issues, sessions, structured handoffs, and progress logs.
Session Workflow
Every session follows this pattern:
-
Start — Load context and begin a new session:
td usage --new-session
td status
-
Pick work — Find what to work on:
td next
td ready
td list --mine
-
Start an issue — Set focus and mark in-progress:
td start <issue-id>
-
Log progress — Track decisions, blockers, attempts:
td log "Implemented auth middleware"
td log --blocker "Waiting on API key from team"
td log --decision "Using JWT over session tokens"
td log --tried "Attempted Redis caching"
td log --result "Redis too complex, using in-memory"
td log --hypothesis "Rate limiting might fix 429s"
-
Handoff — Capture structured state before ending session:
td handoff <issue-id> \
--done "Implemented login endpoint" \
--done "Added JWT validation" \
--remaining "Add refresh token flow" \
--remaining "Write tests for auth middleware" \
--decision "Using RS256 for JWT signing" \
--uncertain "Should we support OAuth2 providers?"
-
Submit for review — When work is complete:
td review <issue-id>
-
Review — Different session approves or rejects:
td reviewable
td approve <issue-id>
td reject <issue-id> --reason "Need tests"
Creating Issues
td create "Fix login redirect bug"
td create "Add OAuth2 support" \
--type feature \
--priority P1 \
--description "Support Google and GitHub OAuth2 providers" \
--labels "auth,backend" \
--parent <epic-id>
Querying Issues
Quick filters
td list
td list --all
td list --type bug
td list --priority P0
td list --status in_progress
td list --labels auth
td list --epic <epic-id>
td list --sort priority
td list --long
td list --json
TDQ query language
td query "status = open AND type = bug"
td query "priority <= P1"
td query "created >= -7d"
td query "title ~ auth OR description ~ auth"
td query "log.type = blocker"
td query "implementer = @me AND is(in_progress)"
td query "descendant_of(<epic-id>)"
td query "rework()"
Saved boards
td board create "Active Bugs" "type = bug AND is(open)"
td board create "My Work" "implementer = @me AND NOT is(closed)"
td board list
td board show "Active Bugs"
Issue Lifecycle
open → in_progress → in_review → closed
↕ ↕ ↕
blocked blocked rejected → in_progress (rework)
Review workflow (preferred for non-trivial work)
td start <id>
td handoff <id> --done "..." --remaining "..."
td review <id>
td reviewable
td approve <id>
td reject <id> --reason "Missing error handling"
Other transitions
td block <id>
td unblock <id>
td close <id>
td reopen <id>
Guidelines
- Always use
review → approve/reject for non-trivial work — don't skip to close
close is for admin purposes only: duplicates, won't-fix, trivial/minor tasks
- Session isolation: the session that implements can't approve its own work
reject sends work back to in_progress for rework — always include a --reason
Dependencies
td dep add <id> <depends-on-id>
td dep rm <id> <depends-on-id>
td depends-on <id>
td blocked-by <id>
td critical-path <id>
Epics & Hierarchy
td create "Auth System" --type epic --priority P1
td create "Login endpoint" --parent <epic-id>
td create "JWT validation" --parent <epic-id>
td tree <epic-id>
td list --epic <epic-id>
td epic list
Session Management
td session "working on auth"
td session --new
td whoami
td focus <id>
td unfocus
td resume <id>
Inspecting Issues
td show <id>
td show <id> --children
td comments <id>
td comment <id> "Note about this"
Useful Shortcuts
td status
td next
td ready
td blocked
td in-review
td reviewable
td deleted
td restore <id>
Guidelines
- Always start sessions with
td usage --new-session or td status
- Log as you go — decisions, blockers, and attempts are valuable for future sessions
- Handoff before stopping — structured handoffs make resumption seamless
- Use epics to group related work and track progress
- Use dependencies to make blocking relationships explicit
- Use boards to save frequently-used queries
- P0 = drop everything, P1 = do next, P2 = default, P3 = backlog, P4 = someday