Remind Me

v0.1.0

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...

0· 2k·10 current·10 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for youpele52/remind-me-pro.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Remind Me" (youpele52/remind-me-pro) from ClawHub.
Skill page: https://clawhub.ai/youpele52/remind-me-pro
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: uv, openclaw
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install remind-me-pro

ClawHub CLI

Package manager switcher

npx clawhub@latest install remind-me-pro
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description, required binaries (uv, openclaw), and the included Python scripts consistently implement scheduling via the OpenClaw CLI (cron add/list/rm). Asking for channel + chatId from session context is consistent with delivering reminders to the originating chat.
Instruction Scope
SKILL.md clearly instructs the agent to auto-detect channel/chatId from session context and to call the included script via 'uv run' with those values. This stays within the stated purpose. Minor caution: the skill calls the gateway to 'cron list --all' and then filters results; if the gateway returns other jobs or verbose output, error messages could include unrelated data. The instructions also use an absolute workspace path (/root/.openclaw/...) which is platform-specific but not malicious.
Install Mechanism
No install spec or external downloads are present; the skill is instruction-plus-source and runs the bundled Python script via the platform 'uv' runner. No remote code fetch or archive extraction is requested.
Credentials
The skill requires no environment variables or external credentials. It does require access to the session context (channel/chatId) which is appropriate for scoped reminders. This is proportional, but you should be aware the agent is instructed to read session context values (not to ask the user) — verify your platform's session object only exposes the expected chat metadata.
Persistence & Privilege
The skill does not request 'always: true', does not persist or modify other skills' configs, and requires only normal runtime invocation. Autonomous invocation remains enabled (platform default) which is expected for skills of this type.
Assessment
This skill appears to be what it claims: a channel-scoped reminder/cron helper that uses the OpenClaw CLI. Before installing, confirm the host environment actually provides the 'openclaw' CLI and that the agent is permitted to call it. Note two practical considerations: (1) the service lists all cron jobs (cron list --all) then filters by a tag — if the gateway returns other jobs or verbose errors the skill might surface unrelated data in error messages, so check what the gateway's cron list output contains in your environment; (2) the SKILL.md insists the agent auto-read channel/chatId from session context and never ask the user — ensure your platform's session object exposes only the expected identifiers and you’re comfortable with the agent accessing them. If those points are acceptable, the skill is coherent and proportionate to its stated purpose.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Clawdis
Binsuv, openclaw
latestvk97e29e71hvqksp6zag4qgkyd582ms9d
2kdownloads
0stars
1versions
Updated 1mo ago
v0.1.0
MIT-0

Skill: Remind Me

When to use

  • User says "remind me to...", "set a reminder", "set an alarm"
  • User says "every Monday at 9 AM...", "every 30 minutes check..."
  • User says "in 20 minutes tell me...", "at 3 PM send me..."
  • User wants to schedule a recurring cron job via chat
  • User says "cancel my reminder", "delete that cron", "stop the alert"
  • User says "list my reminders", "what reminders do I have?"
  • User wants to know what cron jobs are active in this chat

When NOT to use

  • User wants to check a stock price right now (not scheduled) → use stock-price-checker-pro
  • User wants to run a one-time task immediately (no scheduling involved)

⚠️ CRITICAL: Always resolve these THREE things before creating a reminder

Before calling the script, you MUST have all three resolved:

FieldQuestion to answerExample
WHATWhat should happen / be said?"Check NVDA stock price"
WHEN / HOW OFTENOne-time or recurring? At what time/interval?"Every Monday at 9 AM"
WHEREWhich channel + chat ID to deliver to?Auto-detected from session

Missing field rules

  • WHAT is missing → Ask: "What would you like me to remind you about?"
  • WHEN is missing AND cannot be reasonably assumed → Ask: "How often, or at what time?"
  • WHEN is missing BUT can be reasonably assumed as once → Assume one-shot, but confirm: "Just once, right?"
  • WHERE is always auto-detected → Never ask the user for this. Read it from session context (see below).

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.

  • channel: the platform the message arrived on (e.g. telegram, discord)
  • chatId / to: the specific chat or user ID within that platform (e.g. <chatId>)

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 saidSchedule 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:<computed duration from now>
"once at 9:30 AM tomorrow"at:<computed duration from now>

One-shot vs recurring

  • at: → always one-shot (--once is auto-set by the script)
  • every: or cron: → recurring by default
  • If user says "just once" or "one time" with a cron: or every: → pass --once

Job name

Generate a short, descriptive name from the user's request.

  • "Remind me to check NVDA every Monday" → "NVDA Check - Monday 9AM"
  • "Alert me in 20 minutes" → "Alert - 20min"
  • "Grocery reminder at noon" → "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:

  • "Remind me to do groceries" → "Reminder: Time to do groceries! 🛒"
  • "Check NVDA every Monday at 9 AM" → "Check the current NVDA stock price and send me a summary."
  • "Send me a motivational quote every morning" → "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:

  • Everything is clear: "Remind me every Monday at 9 AM to check NVDA" → create immediately
  • One-shot is obvious from context: "Remind me in 20 minutes" → at:20m, once
  • User confirms after your clarification question → proceed immediately

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 \
  "<job name>" \
  "<what to say or do>" \
  "<every:duration | cron:expr | at:duration>" \
  "<channel>" \
  "<chatId>" \
  [once]

List reminders for this chat

uv run /root/.openclaw/workspace/skills/remind-me/src/main.py list \
  "<channel>" \
  "<chatId>"

Cancel a reminder by name

uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel name "<job name>"

Cancel a reminder by ID

uv run /root/.openclaw/workspace/skills/remind-me/src/main.py cancel id "<job 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=<chatId>
  2. Parse: WHAT="Check NVDA stock price", WHEN=cron:0 9 * * 1, one-shot=false
  3. Confirm with user
  4. Run:
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" \
  "<chatId>"

Example 2 — Missing frequency, ask first

User: "Remind me to go do groceries by 12 PM"

  1. Detect: channel=telegram, to=<chatId>
  2. Parse: WHAT="Do groceries", WHEN=12 PM but frequency unclear
  3. Ask: "Just to confirm — is this a one-time reminder for today at noon, or should I remind you every day at 12 PM?"
  4. User says: "Just today"
  5. Compute duration from now to today's noon → e.g. 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" \
  "<chatId>" \
  once

Example 3 — List reminders

User: "What reminders do I have?"

uv run /root/.openclaw/workspace/skills/remind-me/src/main.py list \
  "telegram" \
  "<chatId>"

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" \
  "<chatId>"

Channel scoping rules

  • Jobs created from Group A are only visible when listing from Group A
  • Jobs created from Group B are only visible when listing from Group B
  • Jobs created from the main/private chat are visible only in that main chat
  • The script handles this automatically via the [remind-me:channel:chatId] tag embedded in each job's description
  • Never show a user jobs that belong to a different chat

Output 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 chat

On 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: <error message> Want me to try again?


Notes

  • uv run auto-installs dependencies from the inline script header — no pip or venv needed.
  • The script calls openclaw cron CLI internally — the gateway must be running.
  • Always use --channel "last" behaviour naturally: since --to is set to the originating chat ID, delivery is always back to the right place.
  • Do NOT use sessions_spawn, web search, or any other tool to create cron jobs — always go through this script.
  • Do NOT hardcode channel IDs. Always read from session context.
  • The at: schedule prefix does not support standard cron expressions — use cron: for those.

Comments

Loading comments...