๐ŸŽ Get the FREE AI Skills Starter Guide โ€” Subscribe โ†’
BytesAgainBytesAgain
๐Ÿฆ€ ClawHub

Ping Me

by @ethan-shen-individual-lab

One-shot reminders via natural language. Auto-detects channel and timezone. Say 'remind me...' in any language and get pinged when it's time. Works with ever...

Versionv1.0.3
Downloads576
Starsโญ 1
TERMINAL
clawhub install ping-me

๐Ÿ“– About This Skill


name: ping-me description: "One-shot reminders via natural language. Auto-detects channel and timezone. Say 'remind me...' in any language and get pinged when it's time. Works with every channel." metadata: {"openclaw":{"emoji":"โฐ","requires":{"bins":["openclaw","python3"]}}}

ping-me โฐ

Set one-shot reminders through natural language. The reminder fires once, delivers to the user's current chat channel, then auto-deletes.

Response flow: Call the script first, then confirm with one short sentence. Keep it concise โ€” no preamble, no time calculations, just the confirmation.

How It Works

User says something like:

  • "Remind me in 30 minutes to take a break"
  • "ๆ้†’ๆˆ‘ๆ˜Žๅคฉไธ‹ๅˆ3็‚นไบคไฝœไธš"
  • "3ๅˆ†ๅพŒใซใŠ้ขจๅ‘‚ใซๅ…ฅใ‚‹ใ“ใจใ‚’ๆ€ใ„ๅ‡บใ•ใ›ใฆ"
  • "rappelle-moi dans 2 heures de rappeler Marie"
  • You parse the time and message, then call the script SILENTLY.

    Channel & Delivery Target

    The script auto-detects which channel the user is chatting from.

  • You do NOT need to pass --channel unless the user explicitly asks for a different channel
  • Only pass --channel when the user explicitly says "remind me on telegram" / "ๅ‘ๅˆฐ้ฃžไนฆ" / etc.
  • Delivery target (--to)

    Some channels (e.g. QQ Bot) require a full delivery target for announce mode. The script resolves --to automatically from:

    1. $OPENCLAW_TO environment variable (if gateway sets it) 2. $OPENCLAW_SESSION_KEY (extracts target from session key format) 3. config.json โ†’ "to" field (user-configured)

    If reminders fail with "requires target" error, the user needs to configure their target once:

    bash {baseDir}/scripts/ping-me-config.sh --set to=qqbot:c2c:
    

    You can also pass --to explicitly when calling the script.

    Commands

    Set a reminder

    bash {baseDir}/scripts/ping-me.sh [options] 

    Time formats:

    | User says | You pass as | |-----------|---------------------| | "3ๅˆ†้’ŸๅŽ" / "in 3 minutes" | 3m | | "30ๅˆ†้’ŸๅŽ" / "in 30 minutes" | 30m | | "2ๅฐๆ—ถๅŽ" / "in 2 hours" | 2h | | "ๆ˜Žๅคฉ" / "tomorrow" | 1d | | "ๆ˜Žๅคฉไธ‹ๅˆ3็‚น" / "tomorrow at 3pm" | ISO 8601: 2026-03-11T15:00 (no tz offset needed, script uses configured tz) | | "ๅ‘จไบ”ๆ™šไธŠ8็‚น" / "Friday 8pm" | ISO 8601 with calculated date |

    IMPORTANT: For relative times (Nๅˆ†้’ŸๅŽ, Nๅฐๆ—ถๅŽ, in N minutes/hours), ALWAYS use the short form (3m, 2h, 1d). Do NOT convert to ISO timestamp.

    Options:

  • --channel โ€” override delivery channel (only when user explicitly requests)
  • --to โ€” override delivery target (e.g. qqbot:c2c:)
  • --tz โ€” override timezone for this reminder
  • --emoji โ€” custom emoji prefix
  • Examples:

    bash {baseDir}/scripts/ping-me.sh 30m "Take a break"
    bash {baseDir}/scripts/ping-me.sh 2h "Team meeting"
    bash {baseDir}/scripts/ping-me.sh "2026-03-11T15:00" "Submit homework"
    bash {baseDir}/scripts/ping-me.sh --channel telegram 1d "Renew subscription"
    

    List active reminders

    bash {baseDir}/scripts/ping-me-list.sh
    

    Cancel a reminder

    bash {baseDir}/scripts/ping-me-cancel.sh 
    

    View / change settings

    bash {baseDir}/scripts/ping-me-config.sh                        # Show settings
    bash {baseDir}/scripts/ping-me-config.sh --set tz=Asia/Tokyo     # Change timezone
    bash {baseDir}/scripts/ping-me-config.sh --set channel=qqbot     # Change default channel
    bash {baseDir}/scripts/ping-me-config.sh --set to=qqbot:c2c:  # Set delivery target
    bash {baseDir}/scripts/ping-me-config.sh --set emoji=๐Ÿ””          # Change emoji
    bash {baseDir}/scripts/ping-me-config.sh --set lang=zh           # Change language
    bash {baseDir}/scripts/ping-me-config.sh --reset                 # Reset to defaults
    

    Your Job (Agent Instructions)

    Creating Reminders

    1. Detect reminder intent in any language 2. Extract time and message 3. For relative times โ†’ use short form (3m, 2h, 1d). For absolute times โ†’ ISO 8601 without tz offset 4. Do NOT pass --channel or --to unless user explicitly requests a specific channel, or the script fails without it 5. Call ping-me.sh with the parsed arguments 6. After the script succeeds, confirm with one short sentence in the user's language

    Response Style

    Keep responses concise. Call the script first, then confirm briefly:

  • "โฐ Got it, pinging you in 30 minutes to take a break."
  • "โฐ ๅฅฝ็š„๏ผŒ3ๅˆ†้’ŸๅŽๆ้†’ไฝ ๆด—ๆพกใ€‚"
  • "โฐ ๅทฒ่ฎพ็ฝฎ๏ผŒๆ˜Žๅคฉไธ‹ๅˆ3็‚นๆ้†’ไฝ ไบคไฝœไธšใ€‚"
  • "โฐ 3ๅˆ†ๅพŒใซใƒชใƒžใ‚คใƒณใƒ‰ใ—ใพใ™ใ€‚"
  • No need to explain time conversion or timezone logic to the user โ€” just confirm the reminder.

    Listing & Cancelling

  • "what reminders do I have" / "ๆˆ‘ๆœ‰ๅ“ชไบ›ๆ้†’" โ†’ run ping-me-list.sh
  • "cancel reminder X" / "ๅ–ๆถˆๆ้†’" โ†’ run ping-me-cancel.sh (get ID from list first)
  • Changing Settings (Interactive)

    When user wants to change settings, use ping-me-config.sh:

  • "change timezone to Tokyo" / "ๆ”นๆ—ถๅŒบๅˆฐไธœไบฌ" โ†’ --set tz=Asia/Tokyo
  • "้ป˜่ฎคๅ‘ๅˆฐ้ฃžไนฆ" / "send reminders to feishu by default" โ†’ --set channel=feishu
  • "่ฎพ็ฝฎQQๆŠ•้€’็›ฎๆ ‡" โ†’ --set to=qqbot:c2c:
  • "show my settings" / "็œ‹็œ‹่ฎพ็ฝฎ" โ†’ run without args
  • "reset settings" / "้‡็ฝฎ่ฎพ็ฝฎ" โ†’ --reset
  • After changing settings, confirm with ONE sentence.

    First-Time Setup Hint

    If the first reminder fails with a "requires target" or "multiple channels" error, guide the user to configure: 1. Default channel: ping-me-config.sh --set channel=qqbot 2. Delivery target: ping-me-config.sh --set to=qqbot:c2c:

    The user's openid can be found in their QQ Bot session key or gateway logs.

    Notes

  • Reminders auto-delete after firing (--delete-after-run)
  • Channel auto-detection: $OPENCLAW_CHANNEL โ†’ config โ†’ empty
  • Delivery target auto-detection: $OPENCLAW_TO โ†’ session key extraction โ†’ config โ†’ empty
  • Timezone auto-detection: config.tz โ†’ system tz โ†’ UTC
  • No API keys or external services needed
  • Settings stored in {baseDir}/config.json
  • ๐Ÿ“‹ Tips & Best Practices

  • Reminders auto-delete after firing (--delete-after-run)
  • Channel auto-detection: $OPENCLAW_CHANNEL โ†’ config โ†’ empty
  • Delivery target auto-detection: $OPENCLAW_TO โ†’ session key extraction โ†’ config โ†’ empty
  • Timezone auto-detection: config.tz โ†’ system tz โ†’ UTC
  • No API keys or external services needed
  • Settings stored in {baseDir}/config.json