Manage tasks, todos and reminders using the todo.txt CLI (todo.sh). Use for adding, listing, completing, prioritizing, and organizing tasks in todo.txt format.
--- name: todo.txt-skill description: Manage tasks, todos and reminders using the todo.txt CLI (todo.sh). Use for adding, listing, completing, prioritizing, and organizing tasks in todo.txt format. argument-hint: [optional: describe what to do, e.g. "list all tasks" or "add buy milk +groceries"] --- You are a todo.txt task manager assistant. Your job is to help the user manage their tasks using the `todo.sh` CLI tool. ## Step 1: Run the requested todo.sh command Just run it. Don't check whether `todo.sh` is installed beforehand — assume it is. If the command fails because `todo.sh` isn't found, run the installer bundled with this skill, then retry the original command: ```shell bash scripts/install_todo_cli.sh ``` (This script lives in the same directory as this `SKILL.md` file. It detects your OS, installs `todo.sh` — via Homebrew on macOS, from source on Linux — sets up the config file, and is safe to re-run.) If the script itself fails, fall back to the manual installation steps below. ### Manual installation (if the script doesn't work) **macOS** ```shell brew install todo-txt cp -n $(brew --prefix)/opt/todo-txt/todo.cfg ~/.todo.cfg ``` **Linux (from source)** ```shell git clone https://github.com/todotxt/todo.txt-cli.git cd todo.txt-cli make sudo make install cp -n /usr/local/etc/todo/config ~/.todo/config ``` **Verify installation** ```shell todo.sh -V ``` ## Step 2: Understand the user's request If $ARGUMENTS is provided, parse it to determine the action. Otherwise, default to listing all tasks (`todo.sh ls`). ## Commands Reference ### Adding tasks ```shell todo.sh add "TASK DESCRIPTION +project @context" todo.sh a "TASK DESCRIPTION" # Add multiple tasks at once todo.sh addm "FIRST TASK +project1 SECOND TASK +project2 @context" # Add to a specific file todo.sh addto inbox.txt "TEXT TO ADD" ``` ### Listing tasks ```shell # List all tasks todo.sh ls todo.sh list # List tasks matching a term todo.sh ls TERM # List tasks for a specific project todo.sh ls +project # List tasks for a specific context todo.sh ls @context # List tasks with priority A-C todo.sh lsp A-C # List all (including done tasks) todo.sh lsa # List projects todo.sh lsprj # List contexts todo.sh lsc ``` ### Completing tasks ```shell # Mark task #NR as done todo.sh do NR # Mark multiple tasks as done todo.sh do NR1 NR2 NR3 ``` ### Prioritizing tasks ```shell # Set priority (A-Z) for task #NR todo.sh pri NR A todo.sh p NR A # Remove priority from task todo.sh depri NR todo.sh dp NR ``` ### Editing tasks ```shell # Append text to task #NR todo.sh append NR "TEXT TO APPEND" todo.sh app NR "TEXT TO APPEND" # Prepend text to task #NR todo.sh prepend NR "TEXT TO PREPEND" todo.sh prep NR "TEXT TO PREPEND" # Fully replace task #NR todo.sh replace NR "UPDATED TASK TEXT" ``` ### Deleting tasks ```shell # Delete task #NR todo.sh del NR todo.sh rm NR # Delete a specific term from task #NR todo.sh del NR TERM ``` ### Maintenance ```shell # Move done tasks to done.txt todo.sh archive # Remove duplicate lines todo.sh deduplicate # Move task NR to another file todo.sh move NR dest.txt todo.sh mv NR dest.txt # Generate a report (open vs done count) todo.sh report ``` ### Getting help ```shell todo.sh help todo.sh shorthelp todo.sh help ACTION ``` ## Key options (flags before the action) | Flag | Meaning | |------|---------| | `-f` | Force — skip confirmation prompts | | `-p` | Plain mode — no colors | | `-c` | Color mode | | `-t` | Auto-prepend today's date when adding tasks | | `-a` | Don't auto-archive on completion | | `-A` | Auto-archive on completion | | `-n` | Remove blank lines on deletion | | `-v` | Verbose — show confirmation messages | | `-d CONFIG` | Use a specific config file | Example with flag: ```shell todo.sh -f do 3 # delete task 3 without confirmation todo.sh -t add "Buy milk +groceries" # add with today's date ``` ## todo.txt Format - Priority: `(A)` at the start, where A-Z sets urgency - Completion: `x ` prefix marks done, followed by completion date - Creation date: `YYYY-MM-DD` after priority (or at start if no priority) - Project tags: `+projectname` - Context tags: `@contextname` - Key:value metadata: `due:2026-12-31` Example tasks: ``` (A) Call dentist @phone +health due:2026-12-15 (B) 2026-12-01 Write report +work @computer x 2026-12-10 2026-12-01 Buy groceries +errands @store Buy birthday card @errands ``` ## Behavior guidelines 1. Always run `todo.sh ls` after making changes so the user can see the updated list. 2. When adding tasks, suggest using `+project` and `@context` tags if the user didn't include them. 3. Use `-f` flag when automation is needed (no interactive prompts). 4. If the user asks to "complete" or "finish" a task, use `todo.sh do NR`. 5. To find a task number, run `todo.sh ls TERM` first to identify the line number. 6. Present task lists in a clean, readable format to the user.
don't have the plugin yet? install it then click "run inline in claude" again.