remind-me

Set reminders using natural language. Automatically creates one-time cron jobs and logs to markdown.

Алексей Дворников

@dvornikov-dev

Install

$ openclaw skills install @dvornikov-dev/natural-language-reminder

Remind Me

Natural language reminders that fire automatically. Uses cron for scheduling, markdown for logging.

Usage

One-Time Reminders

Just ask naturally:

  • "Remind me to pay for Gumroad later today"
  • "Remind me to call mom tomorrow at 3pm"
  • "Remind me in 2 hours to check the oven"
  • "Remind me next Monday at 9am about the meeting"

Recurring Reminders

For repeating reminders:

  • "Remind me every hour to stretch"
  • "Remind me every day at 9am to check email"
  • "Remind me every Monday at 2pm about the meeting"
  • "Remind me weekly to submit timesheet"

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:

  • "in 5 minutes" / "in 2 hours" / "in 3 days"
  • "later today" → 17:00 today
  • "this afternoon" → 17:00 today
  • "tonight" → 20:00 today

Absolute:

  • "tomorrow" → tomorrow 9am
  • "tomorrow at 3pm" → tomorrow 15:00
  • "next Monday" → next Monday 9am
  • "next Monday at 2pm" → next Monday 14:00

Dates:

  • "January 15" → Jan 15 at 9am
  • "Jan 15 at 3pm" → Jan 15 at 15:00
  • "2026-01-15" → Jan 15 at 9am
  • "2026-01-15 14:30" → Jan 15 at 14:30

Recurring Reminders

Intervals:

  • "every 30 minutes"
  • "every 2 hours"

Daily:

  • "daily at 9am"
  • "every day at 3pm"

Weekly:

  • "weekly" → every Monday at 9am
  • "every Monday at 2pm"
  • "every Friday at 5pm"

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 delivered

Setup

During installation, the bot will auto-detect what it can and ask for the rest:

VariableAuto-detected?Description
CLAWDBOT_DIR✅ yesSet to the bot's own install directory
TIMEZONE❌ must askAffects cron scheduling — cannot be guessed reliably
REMINDERS_FILE✅ default ~/reminders.mdAsk only if user wants a custom path
CHANNEL✅ default telegramAsk only if user wants a different channel
TO❌ must askRecipient ID — cannot be guessed

Bot setup flow:

  1. Auto-set CLAWDBOT_DIR to its own directory
  2. Ask: "What is your timezone?" (e.g. Europe/Warsaw — see tz database)
  3. Ask: "What is your recipient ID?" (e.g. Telegram chat ID — user can get it via @userinfobot)
  4. Save all vars to skill config so scripts don't need flags each time

After setup, scripts are called without any flags:

CLAWDBOT_DIR=... TIMEZONE=... CHANNEL=telegram TO=<id> bash create-reminder.sh "message" "when"

Manual Commands

# List pending reminders
cron list

# View reminder log
cat ~/reminders.md

# Remove a scheduled reminder
cron rm <job-id>

Agent Implementation

Use the env vars set during setup — 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. Parse the time/schedule
  2. Create a cron job (one-time with --at or recurring with --every/--cron)
  3. Log to $REMINDERS_FILE
  4. Return confirmation with job ID

Top skills in this category