Neomano TODO
by @elandivar
Enhanced TODO/task manager backed by a local SQLite database (instead of flat text files) with priorities (1-3), tags, due dates, reminder timestamps, explic...
clawhub install neomano-todoπ About This Skill
name: neomano-todo description: Enhanced TODO/task manager backed by a local SQLite database (instead of flat text files) with priorities (1-3), tags, due dates, reminder timestamps, explicit task lifecycle statuses (open/done/blocked/expired/forgotten), and stale-task detection to prevent backlog accumulation. Use when the user wants to add, list, filter, prioritize, update, complete, expire/forget, or review stale tasks; or when they want reminder scheduling metadata to be stored for OpenClaw cron delivery.
neomano-todo
An improved personal TODO system that uses SQLite as the backend (not text files).
Why SQLite:
Features
due_at (when it should be done)
- remind_at (when to notify)
open, done, blocked, expired, forgotten
remind_at + cron_job_id so reminders can be created/updated/cancelled by the agent
last_touched_at and priority thresholdsConfiguration (environment variables)
Recommended: set in ~/.openclaw/.env on the gateway machine.
Storage
NEOMANO_TODO_DB_PATH~/.openclaw/workspace/data/neomano-todo.sqlite3Reminder delivery defaults
Used by the agent when scheduling a reminder (cron delivery).
NEOMANO_TODO_DEFAULT_CHANNELwhatsapp, telegram, etc.
NEOMANO_TODO_DEFAULT_TARGET+593987233203 for WhatsApp.
NEOMANO_TODO_TZAmerica/GuayaquilData model (SQLite)
The helper script auto-creates tables on first run.
Main fields stored per task:
title, notespriority (1β3)status (open|done|blocked|expired|forgotten)created_at, updated_at, last_touched_at, completed_atdue_at, remind_atcron_job_id (optional, set after creating a cron job)tags + task_tagsHelper script
Use the bundled deterministic helper script:
skills/neomano-todo/scripts/todo.pyIt outputs JSON to make it easy for an agent to parse.
Commands
Add a task:
python3 skills/neomano-todo/scripts/todo.py add "Install Starlink antenna" --priority 2 --tags "starlink,truck" --notes "This weekend"
Get a task:
python3 skills/neomano-todo/scripts/todo.py get 12
List tasks:
python3 skills/neomano-todo/scripts/todo.py list --status open --order priority
python3 skills/neomano-todo/scripts/todo.py list --status open --order due
python3 skills/neomano-todo/scripts/todo.py list --tag sales --order priority
Complete / reopen:
python3 skills/neomano-todo/scripts/todo.py done 12
python3 skills/neomano-todo/scripts/todo.py reopen 12
Change status (blocked/expired/forgotten/etc):
python3 skills/neomano-todo/scripts/todo.py set-status 12 blocked
python3 skills/neomano-todo/scripts/todo.py set-status 12 forgotten
Change priority:
python3 skills/neomano-todo/scripts/todo.py set-priority 12 1
Update tags:
python3 skills/neomano-todo/scripts/todo.py set-tags 12 "sales,followup"
Update due/reminder timestamps:
python3 skills/neomano-todo/scripts/todo.py set-dates 12 --due-at "2026-03-29T09:00:00-05:00" --remind-at "2026-03-29T08:30:00-05:00"
Store cron job id (after scheduling a reminder with OpenClaw cron):
python3 skills/neomano-todo/scripts/todo.py set-cron-job 12
Delete:
python3 skills/neomano-todo/scripts/todo.py delete 12
Reminder scheduling (OpenClaw cron)
The script stores reminder timestamps; the agent is responsible for scheduling.
Workflow:
1) If remind_at is set and status is open, create/update a cron job scheduled at remind_at.
2) After creating the cron job, store its id in the task using set-cron-job.
3) When the task becomes terminal (done, expired, forgotten), cancel the cron job (if any).
Backlog control: stale candidates
Policy:
List stale candidates:
python3 skills/neomano-todo/scripts/todo.py stale-candidates