Skill: bastos/topydo (version 1.0.5)

--- name: topydo description: Manage todo.txt tasks using topydo CLI. Add, list, complete, prioritize, tag, and organize tasks with dependencies, due dates, recurrence, and projects. Use for any task management, todo lists, or when the user mentions tasks, todos, or todo.txt. Requires Python 3 and pip. Works on macOS, Linux, and Windows. license: MIT metadata: author: github.com/bastos version: "2.0" --- # topydo - Todo.txt Task Manager topydo is a powerful CLI for managing tasks in the todo.txt format. It supports dependencies, due dates, start dates, recurrence, priorities, projects, and contexts. ## Task Format Reference ``` (A) 2025-01-11 Task text +Project @Context due:2025-01-15 t:2025-01-10 rec:1w star:1 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ Star marker │ │ │ │ │ │ │ └─ Recurrence │ │ │ │ │ │ └─ Start/threshold date │ │ │ │ │ └─ Due date │ │ │ │ └─ Context │ │ │ └─ Project │ │ └─ Task description │ └─ Creation date └─ Priority (A-Z) ``` ## Installation ### Homebrew (macOS, preferred) ```bash brew install topydo ``` ### pip (all platforms) ```bash pip3 install topydo ``` With optional features: ```bash pip3 install 'topydo[columns,prompt,ical]' ``` ### apt (Ubuntu/Debian) ```bash sudo apt install python3-pip && pip3 install topydo ``` ## Configuration Config file locations (in order of precedence): - `topydo.conf` or `.topydo` (current directory) - `~/.topydo` or `~/.config/topydo/config` - `/etc/topydo.conf` Example `~/.topydo`: ```ini [topydo] filename = ~/todo.txt archive_filename = ~/done.txt colors = 1 identifiers = text [add] auto_creation_date = 1 [sort] sort_string = desc:importance,due,desc:priority ignore_weekends = 1 ``` ## Adding Tasks Basic task: ```bash topydo add "Buy groceries" ``` With priority (A is highest): ```bash topydo add "(A) Urgent task" ``` With project and context: ```bash topydo add "Write report +ProjectX @office" ``` With due date (absolute): ```bash topydo add "Submit proposal due:2025-01-15" ``` With due date (relative): ```bash topydo add "Call mom due:tomorrow" ``` With due date (weekday): ```bash topydo add "Weekly review due:fri" ``` With start/threshold date: ```bash topydo add "Future task t:2025-02-01" ``` With recurrence (weekly): ```bash topydo add "Water plants due:sat rec:1w" ``` With strict recurrence (always on 1st of month): ```bash topydo add "Pay rent due:2025-02-01 rec:+1m" ``` With dependency (must complete before task 1): ```bash topydo add "Write tests before:1" ``` As subtask of task 1: ```bash topydo add "Review code partof:1" ``` ## Listing Tasks List all relevant tasks: ```bash topydo ls ``` Include hidden/blocked tasks: ```bash topydo ls -x ``` Filter by project: ```bash topydo ls +ProjectX ``` Filter by context: ```bash topydo ls @office ``` Filter by priority: ```bash topydo ls "(A)" ``` Filter by priority range: ```bash topydo ls "(>C)" ``` Filter tasks due today: ```bash topydo ls due:today ``` Filter overdue tasks: ```bash topydo ls "due:<today" ``` Filter tasks due by Friday: ```bash topydo ls "due:<=fri" ``` Combine multiple filters: ```bash topydo ls +ProjectX @office due:today ``` Exclude context: ```bash topydo ls -- -@waiting ``` Sort by priority: ```bash topydo ls -s priority ``` Sort descending by due date, then priority: ```bash topydo ls -s desc:due,priority ``` Group by project: ```bash topydo ls -g project ``` Limit to 5 results: ```bash topydo ls -n 5 ``` Custom output format: ```bash topydo ls -F "%I %p %s %{due:}d" ``` Output as JSON: ```bash topydo ls -f json ``` ## Completing Tasks Complete task by ID: ```bash topydo do 1 ``` Complete multiple tasks: ```bash topydo do 1 2 3 ``` Complete all tasks due today: ```bash topydo do -e due:today ``` Complete with custom date: ```bash topydo do -d yesterday 1 ``` ## Priority Management Set priority A: ```bash topydo pri 1 A ``` Set priority for multiple tasks: ```bash topydo pri 1 2 3 B ``` Remove priority: ```bash topydo depri 1 ``` ## Tagging Tasks Set due date: ```bash topydo tag 1 due tomorrow ``` Star a task: ```bash topydo tag 1 star 1 ``` Remove a tag: ```bash topydo tag 1 due ``` Set custom tag with relative date: ```bash topydo tag -r 1 review 2w ``` ## Modifying Tasks Append text to task: ```bash topydo append 1 "additional notes" ``` Append due date: ```bash topydo append 1 due:friday ``` Edit task in text editor: ```bash topydo edit 1 ``` Edit all tasks in project: ```bash topydo edit -e +ProjectX ``` ## Deleting Tasks Delete by ID: ```bash topydo del 1 ``` Delete multiple: ```bash topydo del 1 2 3 ``` Delete by expression: ```bash topydo del -e completed:today ``` ## Dependencies Add dependency (task 2 depends on task 1): ```bash topydo dep add 2 to 1 ``` Task 2 is part of task 1: ```bash topydo dep add 2 partof 1 ``` List what depends on task 1: ```bash topydo dep ls 1 to ``` List what task 1 depends on: ```bash topydo dep ls to 1 ``` Remove dependency: ```bash topydo dep rm 2 to 1 ``` Visualize dependencies (requires graphviz): ```bash topydo dep dot 1 | dot -Tpng -o deps.png ``` ## Postponing Tasks Postpone by 1 week: ```bash topydo postpone 1 1w ``` Postpone by 3 days: ```bash topydo postpone 1 3d ``` Postpone including start date: ```bash topydo postpone -s 1 1w ``` ## Other Commands Sort the todo.txt file: ```bash topydo sort ``` Revert last command: ```bash topydo revert ``` Show revert history: ```bash topydo revert ls ``` List all projects: ```bash topydo lsprj ``` List all contexts: ```bash topydo lscon ``` Archive completed tasks: ```bash topydo archive ``` ## Relative Dates - `today`, `tomorrow`, `yesterday` - Weekdays: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun` - Periods: `1d` (days), `2w` (weeks), `3m` (months), `1y` (years) - Business days: `5b` (excludes weekends) ## Sort/Group Fields - `priority`, `due`, `creation`, `completed` - `importance`, `importance-avg` - `project`, `context`, `text`, `length` Prefix with `desc:` for descending. Example: `desc:importance,due` ## Tips - Use a clean, human-readable format to present results to the user - Enable stable text IDs: set `identifiers = text` in config - Star important tasks: add `star:1` tag - Hidden tags by default: `id`, `p`, `ical` - Importance = priority + due date proximity + star status


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)