Per-workspace SQLite todo manager (./todo.db) with groups and task statuses (pending/in_progress/done/skipped), operated via {baseDir}/scripts/todo.sh for adding, listing, editing, moving, and removing entries and managing groups.
A per-workspace SQLite database:
./todo.dbTODO_DB=/path/to/todo.dbAll changes MUST happen through the CLI:
bash {baseDir}/scripts/todo.sh ...
pending (default), in_progress, done, skipped
Default list hides done and skipped unless --all or --status=....
todos.md, notes, markdown, exports).todos.md (...).todo.dbtodo.shAllowed confirmations (English examples; translate as needed):
If the user requests a destructive action but does not specify an ID (e.g., “remove the milk task”):
entry list (optionally with --group=...)This is the only case where you may show the list without the user explicitly requesting it.
group remove "X" moves entries to Inbox (default).--delete-entries.bash {baseDir}/scripts/todo.sh entry create "Buy milk"bash {baseDir}/scripts/todo.sh entry create "Ship feature X" --group="Work" --status=in_progressbash {baseDir}/scripts/todo.sh entry listbash {baseDir}/scripts/todo.sh entry list --group="Work"bash {baseDir}/scripts/todo.sh entry list --allbash {baseDir}/scripts/todo.sh entry list --status=donebash {baseDir}/scripts/todo.sh entry show 12bash {baseDir}/scripts/todo.sh entry edit 12 "Buy oat milk instead"bash {baseDir}/scripts/todo.sh entry move 12 --group="Inbox"bash {baseDir}/scripts/todo.sh entry status 12 --status=donebash {baseDir}/scripts/todo.sh entry status 12 --status=skippedbash {baseDir}/scripts/todo.sh entry remove 12bash {baseDir}/scripts/todo.sh group create "Work"bash {baseDir}/scripts/todo.sh group listbash {baseDir}/scripts/todo.sh group rename "Work" "Work (Project A)"bash {baseDir}/scripts/todo.sh group edit "Work" "Work (Project A)"bash {baseDir}/scripts/todo.sh group remove "Work"bash {baseDir}/scripts/todo.sh group remove "Work" --delete-entriesTo clear the todo list:
entry list --all to get IDs (do NOT paste the results)entry remove IDIf the user then asks to see the list, run entry list and show it.
User: "I need to buy milk, add it to my todo list" Agent: "Done."
User: "Oh, and I also need to clean the room" Agent: "Added to the list."
User: "Show my todos" Agent: (prints the list)
User: "Remove the milk one" Agent: (lists matching tasks + asks for ID, then removes when ID is provided)