A comprehensive guide to TaskFlow, your terminal-based task management application.
- Introduction
- Getting Started
- The Interface
- Task Management
- Organization
- Views & Filtering
- Time Management
- Analytics & Reports
- Data Management
- Customization
- Advanced Features
- Appendices
TaskFlow is a powerful, keyboard-driven task management application that runs entirely in your terminal. Inspired by tools like Taskwarrior and Todoist, TaskFlow combines the speed of a CLI with the visual clarity of a TUI (Terminal User Interface).
Whether you're managing personal todos, tracking work projects, or organizing complex workflows with dependencies, TaskFlow provides the features you need without ever leaving your terminal.
- Fast keyboard navigation - Vim-style keybindings for efficient task management
- Project organization - Group tasks into projects with sidebar navigation
- Flexible tagging - Categorize tasks with tags and filter dynamically
- Time tracking - Built-in timer with start/stop and detailed logging
- Pomodoro technique - Integrated focus timer with work/break cycles
- Multiple views - Today, Upcoming, Calendar, Dashboard, and more
- Task dependencies - Block tasks until prerequisites are complete
- Recurring tasks - Daily, weekly, monthly, or yearly repetition
- Subtasks - Break down complex tasks into hierarchies
- Undo/redo - Safely experiment with full history support
- Multiple backends - Store data as JSON, YAML, SQLite, or Markdown
- Customizable - Themes, keybindings, and settings via config files
- Import/Export - CSV and iCalendar format support
- Operating System: Linux, macOS, or Windows (with a terminal supporting ANSI colors)
- Terminal: Any modern terminal with UTF-8 support
- Rust: Version 1.87+ (for building from source)
# Clone the repository
git clone <repository-url>
cd taskflow
# Build the release version
cargo build --release
# The binary is at ./target/release/taskflow
# Optionally, copy it to your PATH:
sudo cp ./target/release/taskflow /usr/local/bin/taskflow --versionRun TaskFlow with default settings:
taskflowOn first launch, TaskFlow creates a data file in the default location (~/.local/share/taskflow/tasks.json) and displays an empty task list.
To explore TaskFlow with sample tasks:
taskflow --demoThis loads example projects, tasks, and time entries so you can immediately try the interface.
Before diving in, understand these core concepts:
The fundamental unit in TaskFlow. Each task has:
- Title - What needs to be done
- Status - Todo, In Progress, Blocked, Done, or Cancelled
- Priority - None, Low, Medium, High, or Urgent
- Due date - When it should be completed (optional)
- Tags - Labels for categorization (optional)
- Description - Additional notes (optional)
Containers for related tasks. Projects help you:
- Group tasks by area (Work, Personal, Home)
- Filter to see only relevant tasks
- Track progress across related items
Flexible labels that cut across projects:
- A task can have multiple tags
- Filter by one or more tags
- Examples:
#bug,#meeting,#research,#urgent
Let's create your first task and explore the basics.
Step 1: Create a Task
- Press
ato add a new task - Type:
Buy groceries #errands due:tomorrow - Press
Enter
You've created a task with a tag and due date using Quick Add syntax!
Step 2: Navigate
- Press
jto move down (or↓) - Press
kto move up (or↑) - Press
gto jump to the first task - Press
Gto jump to the last task
Step 3: Complete a Task
- Select a task and press
xorSpaceto mark it complete
Step 4: Change Priority
- Press
pto cycle through priority levels - Watch the
!indicators change on the left
Step 5: Create a Project
- Press
Pto create a project - Type a project name (e.g., "Home")
- Press
Enter
Step 6: Assign to Project
- Select a task
- Press
mto move it - Select your project and press
Enter
Step 7: Explore Views
- Press
hto focus the sidebar - Use
j/kto navigate between views - Press
Enterto select a view
Step 8: Get Help
- Press
?to show the help popup with all keybindings - Press
?again orEscto close it
Step 9: Quit
- Press
qto exit TaskFlow - Your data is saved automatically!
Congratulations! You've learned the basics. Continue reading for in-depth coverage of every feature.
TaskFlow's interface is divided into distinct areas:
┌─────────────────────────────────────────────────────────────────┐
│ TaskFlow │ ← Header
├──────────────┬──────────────────────────────────────────────────┤
│ │ │
│ Sidebar │ Task List │
│ │ │
│ ┌─────────┐ │ ┌─────────────────────────────────────────────┐ │
│ │ Views │ │ │ !!!! [ ] Fix critical bug due:today │ │
│ │ ─────── │ │ │ !!! [~] Implement feature #backend │ │
│ │ All │ │ │ !! [ ] Write tests #testing │ │
│ │ Today │ │ │ ! [ ] Update documentation │ │
│ │ Upcoming│ │ │ [x] Initial setup completed │ │
│ │ Overdue │ │ └─────────────────────────────────────────────┘ │
│ │ Calendar│ │ │
│ │ │ │ │
│ │ Projects│ │ │
│ │ ─────── │ │ │
│ │ Work │ │ │
│ │ Personal│ │ │
│ └─────────┘ │ │
├──────────────┴──────────────────────────────────────────────────┤
│ 5 tasks (1 completed) │ showing all │ ? for help │ ← Footer
└─────────────────────────────────────────────────────────────────┘
The top bar displays:
- Application name ("TaskFlow")
- Current view or search query
- Active Pomodoro timer (when running)
The left panel contains:
Views Section
- All Tasks - Every task regardless of status
- Today - Tasks due today
- Upcoming - Tasks with future due dates
- Overdue - Tasks past their due date
- Calendar - Monthly calendar view
- Dashboard - Statistics overview
- Reports - Detailed analytics
- Scheduled - Tasks with scheduled dates
- Blocked - Tasks waiting on dependencies
- Untagged - Tasks without tags
- No Project - Unassigned tasks
- Recent - Recently modified tasks
Projects Section
- Lists all your projects
- Shows task count per project
- Selecting a project filters the task list
The main content area showing tasks with:
Priority Status Title Tags Due Date
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
!!!! [ ] Fix critical bug #urgent [12/15]
Priority Indicators (leftmost):
| Symbol | Level |
|---|---|
!!!! |
Urgent |
!!! |
High |
!! |
Medium |
! |
Low |
| (blank) | None |
Status Symbols:
| Symbol | Status |
|---|---|
[ ] |
Todo |
[~] |
In Progress |
[!] |
Blocked |
[x] |
Done |
[-] |
Cancelled |
Additional Indicators:
↻- Recurring task[B]- Has blocking dependencies▶- Has subtasks⏱- Time is being tracked
The bottom bar shows:
- Task count: "5 tasks (1 completed)"
- Filter state: "showing all" or current filter
- Mode indicators: Search, Multi-select, etc.
- Help reminder: "? for help"
- Pomodoro status when active
TaskFlow uses popups for:
- Input dialogs - Creating/editing tasks, setting dates
- Confirmation dialogs - Delete confirmation
- Help popup - Keybinding reference
- Template picker - Quick task creation
- Time log editor - Managing time entries
Press Esc to close any dialog without saving.
- Press
ato open the task input - Type your task title
- Press
Enterto create
Create tasks with metadata in a single line:
Buy groceries #errands !high due:tomorrow @Personal
| Syntax | Meaning | Example |
|---|---|---|
#tag |
Add a tag | #work, #bug |
!priority |
Set priority | !urgent, !high, !med, !low |
due:date |
Set due date | due:tomorrow, due:2025-01-15 |
sched:date |
Set scheduled date | sched:monday |
@project |
Assign to project | @Work, @Personal |
Date Keywords:
today,tod- Today's datetomorrow,tom- Tomorrowmonday,mon,tuesday,tue, etc. - Next occurrence of weekdaynext week- Same day next weeknext month- Same day next monthin 3 days- Three days from nowin 2 weeks- Two weeks from noweow- End of week (Sunday)eom- End of montheoy- End of year1st,15th,22nd- Day of current monthYYYY-MM-DD- Specific date (ISO format)
Examples:
Fix login bug #bug !urgent due:today @Backend
Write report due:friday #work
Call dentist sched:next monday @Personal
Review PR #code-review !high due:in 2 days
- Select a task
- Press
e - Modify the title
- Press
Enterto save orEscto cancel
- Select a task
- Press
D - Enter date (YYYY-MM-DD format or keywords)
- Press
Enteror leave blank to clear
- Select a task
- Press
T - Enter comma-separated tags:
work, urgent, meeting - Press
Enter(empty clears tags)
- Select a task
- Press
n - Type or modify the description
- Press
Enterto save
Cycle priority with p:
None → Low → Medium → High → Urgent → None
Priority affects:
- Visual indicator (! symbols)
- Sort order when sorting by priority
- Dashboard statistics
The task status lifecycle:
┌─────────────────────┐
│ │
▼ │
┌──────┐ toggle ┌───────┐
│ Todo │────────────▶│ Done │
└──────┘ └───────┘
│ ▲
│ (manual) │ (manual)
▼ │
┌────────────┐ ┌────────────┐
│In Progress │ │ Cancelled │
└────────────┘ └────────────┘
│
│ (manual)
▼
┌─────────┐
│ Blocked │
└─────────┘
- Press
xorSpaceto toggle between Todo ↔ Done - Other statuses can be set via editing
- Select the task and press
xorSpace - The task moves to "Done" status
- If hiding completed, it disappears from view
When you complete a recurring task:
- The current task is marked Done
- A new task is created with the next due date
- The new task appears in your list
- Select the task
- Press
d - Confirm deletion in the popup
Note: Deletion is permanent but can be undone with u or Ctrl+z.
Deletion Restrictions:
- Tasks with subtasks cannot be deleted directly
- Delete subtasks first, then the parent
For operations on multiple tasks:
- Press
vto enter multi-select mode - Navigate and press
Spaceto toggle selection on each task - Selected tasks show a
●indicator - Perform bulk operations:
d- Delete all selectedm- Move all to a project
- Press
vorCtrl+vto exit multi-select
Quick Select All:
- Press
Vto select all visible tasks at once
Create tasks quickly from predefined templates:
- Press
Ctrl+nto open template picker - Navigate with
j/kor press the template number - Press
Enterto create from template - Edit the generated task title as needed
Built-in Templates:
| Template | Priority | Tags | Due |
|---|---|---|---|
| Bug Fix | High | #bug | - |
| Feature | Medium | #feature | - |
| Review | Medium | - | Tomorrow |
| Meeting Notes | Low | #meeting | - |
| Daily Task | Low | - | Today |
| Weekly Task | Low | - | +7 days |
| Urgent | Urgent | #urgent | Today |
| Research | Low | #research | - |
Projects group related tasks and appear in the sidebar.
- Press
P - Enter the project name
- Press
Enter
- Focus the sidebar (
h) - Select the project
- Press
E - Modify the name
- Press
Enter
- Focus the sidebar (
h) - Select the project
- Press
X - Confirm deletion
Note: Deleting a project unassigns its tasks (tasks are not deleted).
Projects have their own lifecycle:
- Active - Currently being worked on
- On Hold - Temporarily paused
- Completed - All work finished
- Archived - No longer relevant
- Select a task
- Press
m(move) - Choose the destination project
- Press
Enter
Tags are flexible labels for cross-cutting concerns.
- Select the task
- Press
T - Enter comma-separated tags:
work, urgent, q4 - Press
Enter
New feature #frontend #priority
- Press
# - Enter tag(s) to filter by
- Press
Enter
Tasks matching any of the tags are shown.
Press Ctrl+t to remove the tag filter.
Break complex tasks into smaller pieces:
- Select the parent task
- Press
A(capital A) - Enter the subtask title
- Press
Enter
The subtask appears indented under its parent.
▶ [ ] Main project task
[ ] Subtask 1
[ ] Subtask 2
[ ] Sub-subtask
When you complete a parent task:
- All subtasks are also marked complete
- This cascades down the entire hierarchy
When you uncomplete a parent:
- Only the parent changes
- Subtasks remain in their current state
Block a task until others are complete:
- Select the task to block
- Press
B - Enter the IDs of blocking tasks (comma-separated)
- Press
Enter
Blocked tasks show [!] status and cannot be completed until blockers are done.
Select "Blocked" from the sidebar to see all blocked tasks.
Link tasks in sequence for workflows:
- Select a task
- Press
Ctrl+lto link to next task - Select the task that should follow
- Press
Enter
Chains visualize work sequences and can be exported as diagrams.
- Select a chained task
- Press
Ctrl+uto unlink
Set up tasks that repeat automatically:
- Select a task
- Press
R - Choose pattern:
d- Dailyw- Weekly (same day of week)m- Monthly (same day of month)y- Yearly (same date)0- Clear recurrence
Recurring tasks show ↻ indicator.
- You complete a recurring task
- TaskFlow creates a new task automatically
- The new task has the next due date based on the pattern
- Original task stays in completed state
Access views from the sidebar (h to focus, j/k to navigate, Enter to select):
| View | Shows |
|---|---|
| All Tasks | Every task in the system |
| Today | Tasks due today |
| Upcoming | Tasks with future due dates |
| Overdue | Tasks past their due date |
| Calendar | Monthly calendar with tasks |
| Dashboard | Statistics and overview |
| Reports | Detailed analytics |
| Scheduled | Tasks with scheduled dates |
| Blocked | Tasks waiting on dependencies |
| Untagged | Tasks without any tags |
| No Project | Tasks not assigned to a project |
| Recent | Tasks modified in last 7 days |
The calendar provides a monthly overview:
┌─────────────────────────────────────────┐
│ December 2025 │
├─────┬─────┬─────┬─────┬─────┬─────┬─────┤
│ Sun │ Mon │ Tue │ Wed │ Thu │ Fri │ Sat │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ 1 │ 2 │ 3• │ 4 │ 5• │ 6 │
│ 7 │ 8• │ 9 │ 10 │ 11 │ 12 │ 13 │
│ 14 │ 15 │[16]•│ 17 │ 18 │ 19 │ 20 │
│ 21 │ 22 │ 23 │ 24• │ 25 │ 26 │ 27 │
│ 28 │ 29 │ 30 │ 31 │ │ │ │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┘
•indicates days with tasks[16]is the selected day- Overdue days are highlighted in red
| Key | Action |
|---|---|
h/l or ←/→ |
Previous/next day |
j/k or ↓/↑ |
Previous/next week |
</> |
Previous/next month |
Enter |
Focus task list for selected day |
Esc |
Return focus to calendar grid |
- Press
/ - Type your search query
- Press
Enter
The task list filters to show matching tasks.
- Searches task titles and descriptions
- Case-insensitive matching
- Partial word matches
Press Ctrl+l to clear the search and show all tasks.
- Press
# - Enter one or more tags (comma-separated)
- Press
Enter
Example: #work, urgent shows tasks with either tag.
Press Ctrl+t to remove the filter.
Press s to cycle through:
Created → Updated → Due Date → Priority → Title → Status
Press S to switch between:
- Ascending (A→Z, oldest first, lowest priority first)
- Descending (Z→A, newest first, highest priority first)
Press c to toggle visibility of completed tasks.
- Showing completed: All tasks visible, completed tasks show
[x] - Hiding completed: Only incomplete tasks shown
The footer indicates the current mode.
Track how long you spend on tasks with the built-in timer.
- Select a task
- Press
tto start the timer - A
⏱appears next to the task - The footer shows elapsed time
- Press
tagain on the tracked task - Time is recorded and added to the task's total
Starting tracking on a new task automatically stops the previous timer.
Important: The timer persists across application restarts. If you close TaskFlow while tracking, the timer continues. When you reopen, it picks up where you left off.
View and edit all time entries for a task:
- Select a task
- Press
Lto open the time log
The editor shows:
┌─────────────────────────────────────────┐
│ Time Log - Fix login bug │
├─────────────────────────────────────────┤
│ Dec 15, 2025 │
│ 09:30 - 11:15 (1h 45m) │
│ 14:00 - 15:30 (1h 30m) │
│ │
│ Dec 14, 2025 │
│ 10:00 - 12:30 (2h 30m) │
├─────────────────────────────────────────┤
│ Total: 5h 45m │
└─────────────────────────────────────────┘
| Key | Action |
|---|---|
a |
Add new time entry |
e |
Edit selected entry |
d |
Delete selected entry |
j/k |
Navigate entries |
Esc |
Close log |
The Pomodoro Technique helps maintain focus through timed work sessions.
- Work phase: 25 minutes of focused work
- Short break: 5 minutes rest
- Repeat: After 4 cycles, take a long break (15 minutes)
- Select a task (optional)
- Press
F5to start - The timer appears in the header/footer
🍅 23:45 [2/4]
- 🍅 = Work phase (☕ = short break, 🌴 = long break)
- 23:45 = Time remaining
- [2/4] = Completed cycles / goal
| Key | Action |
|---|---|
F5 |
Start session |
F6 |
Pause/Resume |
F7 |
Skip current phase |
F8 |
Stop session |
+ |
Increase cycle goal |
- |
Decrease cycle goal |
Customize timings in ~/.config/taskflow/config.toml:
[pomodoro]
work_minutes = 25
short_break_minutes = 5
long_break_minutes = 15
cycles_before_long_break = 4Minimize distractions with a single-task view:
- Select a task
- Press
fto enter focus mode
Focus mode displays:
- Only the selected task (large, centered)
- Active timer (if tracking time)
- Pomodoro status (if running)
- Minimal UI
Press f or Esc to exit focus mode.
Access the Dashboard from the sidebar to see at-a-glance statistics:
┌────────────────────────────────────────────────────────────────┐
│ Dashboard │
├─────────────────────┬─────────────────────┬────────────────────┤
│ Completion │ Time Tracking │ This Week │
│ ──────────── │ ───────────── │ ────────── │
│ Total: 47 │ Tracked: 12h 30m │ Created: 8 │
│ Done: 23 (49%) │ Avg/task: 32m │ Completed: 12 │
│ Overdue: 3 │ Currently: — │ Active: 24 │
├─────────────────────┴─────────────────────┴────────────────────┤
│ Status Distribution │
│ ───────────────────────────────────────────────────────── │
│ Todo ████████████████████░░░░░ 18 │
│ In Progress ██████░░░░░░░░░░░░░░░░░░░ 5 │
│ Blocked ██░░░░░░░░░░░░░░░░░░░░░░░ 1 │
│ Done ████████████████████████░ 23 │
├────────────────────────────────────────────────────────────────┤
│ Projects │
│ Work ████████████░░░░ 65% (13/20) │
│ Personal ██████████████░░ 78% (7/9) │
│ Home ████░░░░░░░░░░░░ 22% (2/9) │
└────────────────────────────────────────────────────────────────┘
Access detailed analytics from the sidebar → Reports.
The Reports view has multiple panels (navigate with Tab/Shift+Tab):
Summary statistics:
- Total tasks created
- Completion rate
- Tasks by status
- Tasks by priority
Track your productivity trends:
- Weekly completion rate
- Monthly trends
- Completion velocity (tasks/week)
- Trend direction (improving/declining)
Tag usage statistics:
- Most used tags
- Completion rate per tag
- Tag frequency chart
Tags are sorted by count, with alphabetical sorting for equal counts.
Time tracking analysis:
- Total time tracked
- Time per project
- Peak productivity hours
- Most productive day of week
Productivity patterns:
- Current streak (consecutive days completing tasks)
- Longest streak
- Best day of week
- Peak productivity hour
- Average tasks per day
If you use estimated times:
- Accuracy of estimates
- Over/under estimation patterns
- Variance analysis
Press Ctrl+p to export a report as Markdown (.md file).
Press Ctrl+h to export a formatted HTML report.
Both formats include:
- Summary statistics
- Charts and graphs (ASCII in MD, visual in HTML)
- Task breakdown
- Time tracking summary
TaskFlow supports multiple storage formats:
| Backend | Format | File | Best For |
|---|---|---|---|
| JSON | Single file | .json |
Default, fast, compact |
| YAML | Single file | .yaml |
Human-readable, easy editing |
| SQLite | Database | .db |
Large datasets, queries |
| Markdown | Directory | folder | Git integration, external editing |
# JSON (default)
taskflow --backend json --data ~/tasks.json
# YAML
taskflow --backend yaml --data ~/tasks.yaml
# SQLite
taskflow --backend sqlite --data ~/tasks.db
# Markdown
taskflow --backend markdown --data ~/tasks/Use JSON if:
- You want the default, hassle-free option
- Your task count is under 1000
- You don't need to edit data externally
Use YAML if:
- You want human-readable data files
- You might edit tasks manually
- You're comfortable with YAML syntax
Use SQLite if:
- You have 1000+ tasks
- Performance is critical
- You want robust data integrity
Use Markdown if:
- You want to track tasks in Git
- You use tools like Obsidian
- You prefer one file per task
Default locations by platform:
- Linux:
~/.local/share/taskflow/ - macOS:
~/Library/Application Support/taskflow/ - Windows:
%APPDATA%\taskflow\
Configuration is always in:
- Linux/macOS:
~/.config/taskflow/ - Windows:
%APPDATA%\taskflow\config\
- Press
I - Enter the file path
- Review the import preview
- Confirm import
CSV format expected:
title,status,priority,due_date,tags
"Buy groceries",todo,low,2025-01-15,"errands,personal"- Press
Alt+I - Enter the file path
- Review and confirm
ICS import brings in VTODO items from calendar files.
- Press
Ctrl+e - Enter the destination path
- File is created with all tasks
- Press
Ctrl+i - Enter the destination path
- Use in calendar applications
Graphviz DOT format:
Press Ctrl+g to export task chains as DOT format for visualization.
Mermaid format:
Press Ctrl+m to export as Mermaid diagram syntax.
- Regular backups: Copy your data file periodically
- Git tracking: Use Markdown backend with a Git repository
- Cloud sync: Store data in a synced folder (Dropbox, etc.)
- Export: Periodically export to CSV as a backup
TaskFlow's configuration lives at ~/.config/taskflow/config.toml:
# Storage settings
backend = "json" # json, yaml, sqlite, markdown
data_path = "tasks.json" # relative to config or absolute
# UI defaults
show_sidebar = true # Show sidebar on startup
show_completed = false # Hide completed tasks by default
default_priority = "none" # Default priority for new tasks
# Auto-save
auto_save_interval = 300 # Seconds between auto-saves (0 = disabled)
# Theme
theme = "default" # Theme name
# Pomodoro settings
[pomodoro]
work_minutes = 25
short_break_minutes = 5
long_break_minutes = 15
cycles_before_long_break = 4Customize any keybinding:
- Press
Ctrl+kto open the keybindings editor - Navigate to the action you want to change
- Press
Enterto edit - Press the new key combination
- Press
Enterto confirm - Press
Ctrl+sto save changes
- Reset single binding: Select and press
r - Reset all bindings: Press
R
Keybindings are stored in ~/.config/taskflow/keybindings.toml:
[bindings]
# Navigation
move_down = "j"
move_up = "k"
focus_sidebar = "h"
focus_list = "l"
# Task actions
toggle_complete = "x"
create_task = "a"
delete_task = "d"
edit_title = "e"
# Add your customizations hereCreate custom themes in ~/.config/taskflow/themes/:
# ~/.config/taskflow/themes/dark.toml
[colors]
background = "#1a1a2e"
foreground = "#eaeaea"
accent = "#00d4ff"
secondary = "#7b68ee"
success = "#00ff7f"
warning = "#ffd700"
danger = "#ff4757"
muted = "#4a4a6a"
border = "#3a3a5a"
[priority]
urgent = "#ff0000"
high = "#ff6b6b"
medium = "#ffd93d"
low = "#6bcb77"
none = "#808080"
[status]
todo = "#808080"
in_progress = "#00d4ff"
blocked = "#ff4757"
done = "#00ff7f"
cancelled = "#4a4a6a"Specify colors using:
- Named:
red,blue,cyan,green,yellow,magenta,white,black - Hex:
#ff5500,#3498db - RGB:
{ r = 100, g = 150, b = 200 }
In config.toml:
theme = "dark" # Uses themes/dark.tomlGenerate tab completions for your shell:
Bash:
taskflow completion bash > ~/.local/share/bash-completion/completions/taskflow
source ~/.local/share/bash-completion/completions/taskflowZsh:
mkdir -p ~/.zsh/completions
taskflow completion zsh > ~/.zsh/completions/_taskflow
# Add to ~/.zshrc: fpath=(~/.zsh/completions $fpath)Fish:
taskflow completion fish > ~/.config/fish/completions/taskflow.fishRecord and replay action sequences:
- Press
Ctrl+qto start recording - Press a digit (
0-9) to select the storage slot - Perform the actions you want to record
- Press
Ctrl+qagain to stop recording - Press the same digit to save
The footer shows [REC] while recording.
Press @ followed by the slot number (@0, @1, etc.)
@1: Create a bug report task with standard tags@2: Move selected tasks to "Archive" project@3: Set priority to high and add #urgent tag
TaskFlow maintains a history of your actions:
| Key | Action |
|---|---|
u or Ctrl+z |
Undo last action |
U or Ctrl+r |
Redo undone action |
Undoable actions include:
- Creating/deleting tasks
- Editing task properties
- Creating/deleting projects
- Time tracking operations
- Moving tasks between projects
History limit: 50 actions (configurable)
taskflow [OPTIONS] [COMMAND]
Options:
--data <PATH> Path to data file/directory
--backend <TYPE> Storage backend (json, yaml, sqlite, markdown)
--demo Load sample data for exploration
--debug Enable debug logging (writes to taskflow.log)
Subcommands:
add <TASK> Quick add a task from the command line
list List tasks (without launching TUI)
done <QUERY> Mark a task as done by searching for it
git-todos Extract TODO/FIXME comments from git repository
completion <SHELL> Generate shell completions (bash, zsh, fish)Examples:
# Custom data location
taskflow --data ~/Dropbox/tasks.json
# Use SQLite for large datasets
taskflow --backend sqlite --data ~/tasks.db
# Try TaskFlow with demo data
taskflow --demo
# Quick add a task
taskflow add "Review PR #123 #code !high due:tomorrow"
# List tasks from command line
taskflow list --view today
taskflow list --tags bug,urgent --limit 10
# Mark a task as done
taskflow done "Review PR"
# Extract TODOs from code (see Git Integration section)
taskflow git-todos --dry-run
# Generate completions
taskflow completion bash > ~/.local/share/bash-completion/completions/taskflowTaskFlow can extract TODO and FIXME comments from your codebase and create tasks from them.
# Scan current directory for TODOs
taskflow git-todos
# Preview what would be created (dry run)
taskflow git-todos --dry-run
# Scan a specific repository
taskflow git-todos --repo ~/projects/myapp
# Custom patterns (comma-separated)
taskflow git-todos --patterns "TODO,FIXME,HACK,BUG"
# Assign to a project and add tags
taskflow git-todos --project backend --tags "tech-debt,code-review"
# Set priority for extracted tasks
taskflow git-todos --priority highFeatures:
- Uses
git grepfor fast scanning - Smart parsing: only matches actual code comments (ignores false positives)
- Supports common comment styles:
//,#,/*,--,<!--, etc. - Handles annotated TODOs:
TODO(user): messageandTODO[issue-123]: message - Creates/updates tasks (deduplicates by file:line on rescan)
- Tags tasks with
git-todo+ pattern name (e.g.,todo,fixme)
TUI View:
- Navigate to "Git TODOs" in the sidebar to view all extracted TODOs
- Or press
Alt+Gto jump directly to the Git TODOs view - Tasks are grouped by source file with line numbers
- Tasks are filtered by the
git-todotag
View comprehensive information about any task in a scrollable popup:
Opening the Modal:
- Press
ion any task to open the detail view - Or press
Enterwhen the task list is focused
Modal Contents:
- Header: Title, status, and priority indicators
- Metadata: Project, tags, and task ID
- Dates: Created, updated, due, scheduled, completed, snooze, and recurrence info
- Description: Full task description with word wrap
- Time Tracking: Estimated vs actual time with variance display
- Subtasks: List with completion status and progress bar
- Dependencies: Tasks that block this one, with their status
- Task Chain: Previous/next linked tasks in a sequence
- Time Entries: Recent time tracking sessions (last 5)
- Work Logs: Recent notes with timestamps (last 3)
Navigation in Modal:
| Key | Action |
|---|---|
j / ↓ |
Scroll down |
k / ↑ |
Scroll up |
g |
Jump to top |
G |
Jump to bottom |
PgUp |
Page up |
PgDn |
Page down |
Esc / q |
Close modal |
TaskFlow includes three review workflows for planning and reflection:
Morning planning workflow:
- Overdue Tasks: Review and reschedule or complete overdue items
- Today's Tasks: See what's scheduled for today
- Quick Capture: Add any new tasks that come to mind
Weekly planning workflow:
- Last Week: Review completed tasks from the past week
- This Week: Plan tasks for the current week
- Upcoming: Look ahead at future deadlines
End-of-day reflection workflow:
- Today's Progress: Review what was accomplished
- Incomplete Tasks: Decide what to carry forward
- Tomorrow Planning: Set priorities for the next day
Navigation in Reviews:
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
Enter / l |
Next phase |
h |
Previous phase |
x / Space |
Complete task |
Esc / q |
Exit review |
Build a queue of tasks for focused work sessions:
| Key | Action |
|---|---|
f |
Toggle focus mode (single task view) |
F |
Toggle full-screen focus mode |
Q |
Add current task to focus queue |
Alt+Q |
Clear the focus queue |
Alt+J |
Advance to next task in queue |
Workflow:
- Navigate through your tasks and press
Qto add important ones to the queue - Press
Fto enter full-screen focus mode - Work on the current task
- Press
Alt+Jto advance to the next queued task - Press
Escto exit focus mode
TaskFlow supports JSON input/output for scripting and external tool integration:
# Pipe JSON commands to TaskFlow
echo '{"command": "add", "title": "New task"}' | taskflow pipe
# Get task list as JSON
taskflow pipe --list
# Filter and export
taskflow pipe --filter "status:todo AND priority:high"See taskflow pipe --help for full documentation.
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
g |
Go to first item |
G |
Go to last item |
Ctrl+u / Page Up |
Page up |
Ctrl+d / Page Down |
Page down |
h / ← |
Focus sidebar |
l / → |
Focus task list |
Enter |
Select/confirm |
Esc |
Cancel/close |
| Key | Action |
|---|---|
a |
Add new task |
A |
Add subtask |
e |
Edit task title |
i |
View task details |
Enter |
View task details / Select |
d |
Delete task |
x / Space |
Toggle complete |
p |
Cycle priority |
D |
Edit due date |
T |
Edit tags |
n |
Edit description |
m |
Move to project |
B |
Edit dependencies |
R |
Set recurrence |
| Key | Action |
|---|---|
P |
Create project |
E |
Edit project (sidebar) |
X |
Delete project (sidebar) |
| Key | Action |
|---|---|
t |
Toggle time tracking |
L |
Open time log |
| Key | Action |
|---|---|
F5 |
Start Pomodoro |
F6 |
Pause/Resume |
F7 |
Skip phase |
F8 |
Stop Pomodoro |
| Key | Action |
|---|---|
/ |
Search tasks |
Ctrl+l |
Clear search |
# |
Filter by tag |
Ctrl+t |
Clear tag filter |
s |
Cycle sort field |
S |
Toggle sort order |
| Key | Action |
|---|---|
b |
Toggle sidebar |
c |
Toggle completed |
f |
Toggle focus mode |
F |
Toggle full-screen focus |
Q |
Add to focus queue |
Alt+Q |
Clear focus queue |
Alt+J |
Advance focus queue |
Alt+d |
Daily Review |
Alt+w |
Weekly Review |
Alt+e |
Evening Review |
Alt+g |
Git TODOs view |
? |
Show help |
| Key | Action |
|---|---|
v |
Toggle multi-select mode |
V |
Select all |
Space |
Toggle selection (in mode) |
Ctrl+v |
Clear selection |
| Key | Action |
|---|---|
Ctrl+e |
Export CSV |
Ctrl+i |
Export ICS |
I |
Import CSV |
Alt+I |
Import ICS |
Ctrl+g |
Export chains (DOT) |
Ctrl+m |
Export chains (Mermaid) |
Ctrl+p |
Export report (Markdown) |
Ctrl+h |
Export report (HTML) |
| Key | Action |
|---|---|
Ctrl+q |
Start/stop recording |
@0-@9 |
Play macro |
| Key | Action |
|---|---|
u / Ctrl+z |
Undo |
U / Ctrl+r |
Redo |
Ctrl+s |
Save |
Ctrl+k |
Keybindings editor |
Ctrl+n |
Template picker |
q |
Quit |
| Syntax | Meaning | Example |
|---|---|---|
#tag |
Add tag | #work, #bug, #urgent |
!priority |
Set priority | !urgent, !high, !med, !low |
due:date |
Set due date | due:tomorrow, due:friday |
sched:date |
Set scheduled date | sched:monday |
@project |
Assign project | @Work, @Personal |
Complete Example:
Fix login bug #bug #security !urgent due:today @Backend
| Input | Interpretation |
|---|---|
today, tod |
Today |
tomorrow, tom |
Tomorrow |
yesterday |
Yesterday |
monday, mon |
Next Monday |
tuesday, tue |
Next Tuesday |
wednesday, wed |
Next Wednesday |
thursday, thu |
Next Thursday |
friday, fri |
Next Friday |
saturday, sat |
Next Saturday |
sunday, sun |
Next Sunday |
next week |
Same day, next week |
next month |
Same day, next month |
next year |
Same day, next year |
in 3 days |
3 days from now |
in 2 weeks |
2 weeks from now |
in 1 month |
1 month from now |
eow |
End of week (Sunday) |
eom |
End of month |
eoy |
End of year |
1st, 15th, 22nd |
Day of current month |
2025-01-15 |
Specific date (ISO) |
01/15, 01-15 |
Month/Day current year |
A: By default:
- Linux:
~/.local/share/taskflow/tasks.json - macOS:
~/Library/Application Support/taskflow/tasks.json - Windows:
%APPDATA%\taskflow\tasks.json
Use --data <path> to specify a custom location.
A: Options:
- Copy your data file to a backup location
- Export to CSV (
Ctrl+e) periodically - Use the Markdown backend with Git
- Store data in a cloud-synced folder
A: Try:
- Switch to SQLite backend for 1000+ tasks
- Hide completed tasks (
c) - Filter to specific projects
- Increase auto-save interval or disable it
A: TaskFlow doesn't have built-in sync, but you can:
- Store data in Dropbox/Google Drive/iCloud
- Use the Markdown backend with Git
- Use a shared SQLite database (careful of conflicts)
A: Check:
- Terminal key handling (some keys may be intercepted)
~/.config/taskflow/keybindings.tomlfor conflicts- Press
Ctrl+kto verify current bindings - Reset with
Rin keybindings editor
A:
- Export all tasks to CSV:
Ctrl+e - Start TaskFlow with new backend:
taskflow --backend sqlite --data tasks.db - Import CSV:
I
A: This is by design—the timer persists across restarts. Open the time log (L) and edit the entry to fix incorrect times.
A: Yes! TaskFlow works in any terminal, including remote sessions. Make sure your SSH connection supports UTF-8.
A: Open an issue at: https://github.com/anthropics/claude-code/issues
Last updated: December 2025 TaskFlow User Manual v1.0