--- name: remind description: > Create, list, edit, enable, disable, and remove recurring or one-time reminders. Triggers on: "/remind", "remind me", "set a reminder". --- # /remind Reminders are stored in SQLite (`db/reminders.sqlite`) and delivered by the nanobot user crontab, directly to Telegram, outside the agent. Reply to the user in their own language. ## Commands ### Create ``` /remind every day at 9:00 /remind every weekday at 9:30 /remind at 2026-06-15T18:00 /remind randomly 2 times between 08:00 and 20:00 /remind once daily at random time between 8:00 and 21:00 ``` Parse natural language, then call `remind_edit.py add` with flags: - `--text "..."` - `--cron "0 9 * * *"` (repeatable) - `--at "2026-06-15T18:00:00"` (repeatable) - `--random-times-per-day N --random-window HH:MM-HH:MM [--random-days DOW] [--random-from YYYY-MM-DD] [--random-until YYYY-MM-DD]` ### List ``` /remind list ``` Call `remind_edit.py list` → JSON with all active reminders. ### Edit ``` /remind edit --text "new text" /remind edit --replace-schedules --cron "0 10 * * *" ``` Call `remind_edit.py edit --keyword `. Keyword matches case-insensitively against reminder text. `--replace-schedules` requires at least one new `--cron`/`--at`/`--random-*`. ### Enable / Disable ``` /remind disable /remind enable ``` ### Remove ``` /remind remove ``` Soft delete. Hard delete only via direct DB access. ### Selecting by keyword or id `edit`, `remove`, `enable`, `disable` accept either `--keyword` (case-insensitive substring) or `--id` (exact). A keyword matching two or more reminders returns `ambiguous` with each id — retry with `--id ` to disambiguate duplicate texts. Run `list` to see ids. ### Delivered (history) ``` /remind delivered /remind delivered --since 2026-06-01 ``` Answers "what reminders arrived today / since when?". Calls `remind_edit.py delivered`, which reads the `reminder_fires` table (delivered rows only, Prague local time). The agent never sees deliveries happen, so this is the only window into them. ## Scripts | Action | Command | |--------|---------| | list | `uv run skills/remind/scripts/remind_edit.py list` | | add | `uv run skills/remind/scripts/remind_edit.py add --text "..." ...` | | edit | `uv run skills/remind/scripts/remind_edit.py edit --keyword ...` | | remove | `uv run skills/remind/scripts/remind_edit.py remove --keyword ` | | enable | `uv run skills/remind/scripts/remind_edit.py enable --keyword ` | | disable | `uv run skills/remind/scripts/remind_edit.py disable --keyword ` | | delivered | `uv run skills/remind/scripts/remind_edit.py delivered [--since YYYY-MM-DD]` | Sender runs every minute from crontab: `uv run skills/remind/scripts/remind_send.py` ## Environment - `REMIND_DB` — override SQLite path (used in tests). - Scripts run via `uv run` (PEP 723 headers declare their dependencies).