Remind Me
by @youpele52
Create, list, and cancel reminders and cron jobs scoped to the channel they were requested from. Use when: user says 'remind me', 'set an alarm', 'schedule a...
clawhub install remind-me-proπ About This Skill
name: remind-me description: "Create, list, and cancel reminders and cron jobs scoped to the channel they were requested from. Use when: user says 'remind me', 'set an alarm', 'schedule a cron', 'alert me when', 'every day at X do Y', 'cancel my reminder', 'list my reminders'. Auto-detects source channel and delivers back to it. Asks for clarification if schedule or intent is ambiguous before creating anything." metadata: {"clawdbot":{"emoji":"β°","requires":{"bins":["uv","openclaw"]}}}
Skill: Remind Me
When to use
When NOT to use
stock-price-checker-proβ οΈ CRITICAL: Always resolve these THREE things before creating a reminder
Before calling the script, you MUST have all three resolved:
| Field | Question to answer | Example | |---|---|---| | WHAT | What should happen / be said? | "Check NVDA stock price" | | WHEN / HOW OFTEN | One-time or recurring? At what time/interval? | "Every Monday at 9 AM" | | WHERE | Which channel + chat ID to deliver to? | Auto-detected from session |
Missing field rules
Do NOT create the job until all three are confirmed.
Step 1 β Auto-detect channel and chat ID from session context
The source channel and chat ID are available in your session context. Extract them before doing anything else.
telegram, discord))These two values are passed as --channel and --to to the script.
Never ask the user for these. Never hardcode them. Always read from session context.
Step 2 β Parse the user's intent
From the user's natural language request, extract:
Schedule type
Map what the user said to one of three prefixed schedule strings:| What user said | Schedule string to pass |
|---|---|
| "every 30 minutes" | every:30m |
| "every hour" | every:1h |
| "every day at 9 AM" | cron:0 9 * * * |
| "every Monday at 9 AM" | cron:0 9 * * 1 |
| "weekdays at 8 AM" | cron:0 8 * * 1-5 |
| "every Friday at 5 PM" | cron:0 17 * * 5 |
| "in 20 minutes" | at:20m |
| "in 2 hours" | at:2h |
| "at 3 PM today" | at: |
| "once at 9:30 AM tomorrow" | at: |
One-shot vs recurring
at: β always one-shot (--once is auto-set by the script)every: or cron: β recurring by defaultcron: or every: β pass --onceJob name
Generate a short, descriptive name from the user's request."NVDA Check - Monday 9AM""Alert - 20min""Groceries - Noon"Message
The message is what the agent will say or do when the job fires. Craft it clearly so the agent knows exactly what to do:"Reminder: Time to do groceries! π""Check the current NVDA stock price and send me a summary.""Send me an inspiring motivational quote to start the day."Step 3 β Clarification rules (ask before acting)
Ask when:
1. No schedule at all: "Remind me to call John" β no time/frequency given > Ask: "Sure! When would you like me to remind you β just once at a specific time, or on a recurring schedule?"2. Ambiguous frequency: "Remind me often" or "check regularly" > Ask: "How often? Every hour, every day, or something else?"
3. Conflicting signals: "Remind me every Monday but just once" > Ask: "Just to confirm β should this be a one-time reminder or repeat every Monday?"
Do NOT ask when:
Confirmation before creating (always):
Before calling the script, summarise what you're about to set up and get a quick confirmation:> "Got it! Here's what I'll set up: > β° Reminder: Check NVDA stock price > π Schedule: Every Monday at 9 AM > π± Delivered to: This chat > > Shall I go ahead?"
Only proceed after user confirms.
Commands
Create a reminder
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"" \
"" \
"" \
"" \
"" \
[once]
List reminders for this chat
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py list \
"" \
""
Cancel a reminder by name
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name ""
Cancel a reminder by ID
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel id ""
Examples
Example 1 β Clear request, no clarification needed
User: "Remind me every Monday at 9 AM to check NVDA"
1. Detect: channel=telegram, to=
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"NVDA Check - Monday 9AM" \
"Check the current NVDA stock price and send me a summary." \
"cron:0 9 * * 1" \
"telegram" \
""
Example 2 β Missing frequency, ask first
User: "Remind me to go do groceries by 12 PM"
1. Detect: channel=telegram, to=at:3h30m
6. Confirm, then run:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"Groceries - Noon" \
"Reminder: Time to go do groceries! π" \
"at:3h30m" \
"telegram" \
"" \
once
Example 3 β List reminders
User: "What reminders do I have?"
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py list \
"telegram" \
""
Format the output as a readable list, not raw JSON. Example response:
> You have 2 active reminders in this chat: > > 1. NVDA Check - Monday 9AM π Every Monday at 9 AM > _"Check the current NVDA stock price..."_ > Next run: Mon 10 Mar 2026, 09:00 > > 2. Groceries - Noon (one-time) > _"Time to go do groceries!"_ > Runs in: 3h 30m
Example 4 β Cancel a reminder
User: "Cancel my NVDA reminder"
1. List jobs for this channel/chat first (internally) 2. Find the matching job by name 3. Confirm: "Cancel NVDA Check - Monday 9AM? This will stop all future runs." 4. User confirms 5. Run:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name "NVDA Check - Monday 9AM"
Example 5 β One-shot in-chat reminder
User: "In 30 seconds send me a love letter"
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"Love Letter - 30s" \
"Write a beautiful, heartfelt love letter. Make it romantic and touching." \
"at:30s" \
"telegram" \
""
Channel scoping rules
[remind-me:channel:chatId] tag embedded in each job's descriptionOutput formatting
After running any command, always format the result in plain conversational language β never dump raw JSON to the user.
On create success:
> β Done! I've set up your reminder: > β° NVDA Check β Every Monday at 9 AM > π± Delivered to this chatOn list (empty):
> You have no active reminders in this chat.On cancel success:
> β Reminder "NVDA Check - Monday 9AM" has been cancelled.On error:
> β Something went wrong:
> Want me to try again?Notes
uv run auto-installs dependencies from the inline script header β no pip or venv needed.openclaw cron CLI internally β the gateway must be running.--channel "last" behaviour naturally: since --to is set to the originating chat ID, delivery is always back to the right place.at: schedule prefix does not support standard cron expressions β use cron: for those.β‘ When to Use
π‘ Examples
Example 1 β Clear request, no clarification needed
User: "Remind me every Monday at 9 AM to check NVDA"
1. Detect: channel=telegram, to=
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"NVDA Check - Monday 9AM" \
"Check the current NVDA stock price and send me a summary." \
"cron:0 9 * * 1" \
"telegram" \
""
Example 2 β Missing frequency, ask first
User: "Remind me to go do groceries by 12 PM"
1. Detect: channel=telegram, to=at:3h30m
6. Confirm, then run:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"Groceries - Noon" \
"Reminder: Time to go do groceries! π" \
"at:3h30m" \
"telegram" \
"" \
once
Example 3 β List reminders
User: "What reminders do I have?"
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py list \
"telegram" \
""
Format the output as a readable list, not raw JSON. Example response:
> You have 2 active reminders in this chat: > > 1. NVDA Check - Monday 9AM π Every Monday at 9 AM > _"Check the current NVDA stock price..."_ > Next run: Mon 10 Mar 2026, 09:00 > > 2. Groceries - Noon (one-time) > _"Time to go do groceries!"_ > Runs in: 3h 30m
Example 4 β Cancel a reminder
User: "Cancel my NVDA reminder"
1. List jobs for this channel/chat first (internally) 2. Find the matching job by name 3. Confirm: "Cancel NVDA Check - Monday 9AM? This will stop all future runs." 4. User confirms 5. Run:
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name "NVDA Check - Monday 9AM"
Example 5 β One-shot in-chat reminder
User: "In 30 seconds send me a love letter"
uv run /root/.openclaw/workspace/skills/remind-me/src/main.py create \
"Love Letter - 30s" \
"Write a beautiful, heartfelt love letter. Make it romantic and touching." \
"at:30s" \
"telegram" \
""
π Tips & Best Practices
uv run auto-installs dependencies from the inline script header β no pip or venv needed.openclaw cron CLI internally β the gateway must be running.--channel "last" behaviour naturally: since --to is set to the originating chat ID, delivery is always back to the right place.at: schedule prefix does not support standard cron expressions β use cron: for those.