83 lines
2.9 KiB
Markdown
83 lines
2.9 KiB
Markdown
---
|
|
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 <text> every day at 9:00
|
|
/remind <text> every weekday at 9:30
|
|
/remind <text> at 2026-06-15T18:00
|
|
/remind <text> randomly 2 times between 08:00 and 20:00
|
|
/remind <text> 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 <keyword> --text "new text"
|
|
/remind edit <keyword> --replace-schedules --cron "0 10 * * *"
|
|
```
|
|
Call `remind_edit.py edit --keyword <keyword>`. Keyword matches case-insensitively against reminder text. `--replace-schedules` requires at least one new `--cron`/`--at`/`--random-*`.
|
|
|
|
### Enable / Disable
|
|
```
|
|
/remind disable <keyword>
|
|
/remind enable <keyword>
|
|
```
|
|
|
|
### Remove
|
|
```
|
|
/remind remove <keyword>
|
|
```
|
|
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 <n>` 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 <kw> ...` |
|
|
| remove | `uv run skills/remind/scripts/remind_edit.py remove --keyword <kw>` |
|
|
| enable | `uv run skills/remind/scripts/remind_edit.py enable --keyword <kw>` |
|
|
| disable | `uv run skills/remind/scripts/remind_edit.py disable --keyword <kw>` |
|
|
| 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).
|