Reminder
by @dvornikov-dev
Set reminders using natural language. Automatically creates one-time cron jobs and logs to markdown.
clawhub install natural-language-reminderπ About This Skill
name: remind-me description: Set reminders using natural language. Automatically creates one-time cron jobs and logs to markdown. metadata: {"clawdbot":{"emoji":"β°","requires":{"bins":["bash","date","jq","openclaw"]},"config":{"TO":{"required":true,"prompt":"What is your recipient ID? (e.g. Telegram chat ID β send /start to @userinfobot to find it)"},"CHANNEL":{"required":false,"default":"telegram","prompt":"Delivery channel? (telegram / slack / etc.)"},"TIMEZONE":{"required":true,"prompt":"What is your timezone? (e.g. Europe/Kyiv, America/New_York β see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)"},"REMINDERS_FILE":{"required":false,"default":"~/reminders.md","prompt":"Where to store the reminder log? (default: ~/reminders.md)"}}}}
Remind Me
Natural language reminders that fire automatically. Uses cron for scheduling, markdown for logging.
Usage
One-Time Reminders
Just ask naturally:Recurring Reminders
For repeating reminders:How It Works
1. Parse the time from your message
2. Create a one-time cron job with --at
3. Log to $REMINDERS_FILE (default: ~/reminders.md) for history
4. At the scheduled time, you get a message
Time Parsing
One-Time Reminders
Relative:
Absolute:
Dates:
Recurring Reminders
Intervals:
Daily:
Weekly:
Reminder Log
All reminders are logged to $REMINDERS_FILE (default: ~/reminders.md):
- [scheduled] 2026-01-06 17:00 | Pay for Gumroad (id: abc123)
[recurring] every 2h | Stand up and stretch (id: def456)
[recurring] cron: 0 9 * * 1 | Weekly meeting (id: ghi789)
Status:
[scheduled] β one-time reminder waiting to fire[recurring] β repeating reminder (active)[sent] β one-time reminder already deliveredSetup
During installation, the bot will auto-detect what it can and ask for the rest:
| Variable | Auto-detected? | Description |
|----------|---------------|-------------|
| TIMEZONE | β must ask | Affects cron scheduling β cannot be guessed reliably |
| TO | β must ask | Recipient ID β cannot be guessed |
| CHANNEL | β
default telegram | Ask only if user wants a different channel |
| REMINDERS_FILE | β
default ~/reminders.md | Ask only if user wants a custom path |
Bot setup flow:
1. Ask: *"What is your timezone?"* (e.g. Europe/Kyiv β see tz database)
2. Ask: *"What is your recipient ID?"* (e.g. Telegram chat ID β user can get it via @userinfobot)
3. Write answers into config.env in the skill directory
4. Scripts source config.env automatically on every run
config.env (generated during setup):
TIMEZONE="Europe/Kyiv"
TO="463113011"
CHANNEL="telegram"
REMINDERS_FILE="/home/clawd/reminders.md"
Manual Commands
# List pending reminders
cron listView reminder log
cat ~/reminders.mdRemove a scheduled reminder
cron rm
Agent Implementation
Scripts load config.env automatically β no flags needed at runtime.
One-Time Reminders
When the user says "remind me to X at Y":
bash "$SKILL_DIR/create-reminder.sh" "X" "Y"
Recurring Reminders
When the user says "remind me every X to Y":
bash "$SKILL_DIR/create-recurring.sh" "Y" "every X"
Both scripts automatically:
1. Source config.env from the skill directory
2. Parse the time/schedule (always outputs ISO 8601 timestamp for --at)
3. Call openclaw cron add with the parsed schedule
4. Log to $REMINDERS_FILE
5. Return confirmation with job ID
π‘ Examples
One-Time Reminders
Just ask naturally:Recurring Reminders
For repeating reminders:βοΈ Configuration
During installation, the bot will auto-detect what it can and ask for the rest:
| Variable | Auto-detected? | Description |
|----------|---------------|-------------|
| TIMEZONE | β must ask | Affects cron scheduling β cannot be guessed reliably |
| TO | β must ask | Recipient ID β cannot be guessed |
| CHANNEL | β
default telegram | Ask only if user wants a different channel |
| REMINDERS_FILE | β
default ~/reminders.md | Ask only if user wants a custom path |
Bot setup flow:
1. Ask: *"What is your timezone?"* (e.g. Europe/Kyiv β see tz database)
2. Ask: *"What is your recipient ID?"* (e.g. Telegram chat ID β user can get it via @userinfobot)
3. Write answers into config.env in the skill directory
4. Scripts source config.env automatically on every run
config.env (generated during setup):
TIMEZONE="Europe/Kyiv"
TO="463113011"
CHANNEL="telegram"
REMINDERS_FILE="/home/clawd/reminders.md"