SuperAPI AI Directory

reminder

General & other

View repository

Updated 10-16 00:01

About this skill

Reminder and Calendar Event Skill

This skill can intelligently create reminders and calendar events from natural language input.

When to Use

Activate this skill when the user does the following:

  • Explicitly asks to set a reminder ("remind me...", "set a reminder...")
  • Mentions a future task with a time ("I have a meeting at 3 PM")
  • Expresses the need to remember something ("don't forget...", "I need to...")
  • Discusses an upcoming event or appointment with time information

When this skill is triggered, you are responsible for actually calling the shell script, not merely explaining how to do it.

How to Use

Step 1: Parse the user input

Analyze the user message to extract (possibly more than one set):

  1. Title: A short description of the thing to remember
  2. Message: Detailed information (optional, can be the same as the title)
  3. Time: When the reminder should trigger

Key point: After completing this parsing, immediately proceed to Step 2 (call the tool). Do not stop at the parsing stage only.

Step 2: Create the reminder

For each identified reminder,you mustuse the Bash tool to call node and have it call the ./create-reminder.js script to send the reminder and calendar event request.

Important: Do not merely explain that a reminder should be created; actually call this script.

Script path:

  • Relative to the skill directory:./create-reminder.js
  • Absolute path: needs to be determined based on where HeadlessKnight is installed

Script parameters:

  • --title: A concise summary (for example, "team meeting", "call mom")
  • --message: Additional details or context
  • --time:Must be one of the following English formats:
    • Relative time (English): "in 10 seconds", "in 30 minutes", "in 2 hours", "in 1 day", "in 2 weeks", "in 1 month", "in 1 year"
    • Absolute time: ISO format, such as "2025-11-24T15:30:00"
    • ⚠️ ForbiddenPassing Chinese time formats such as "十秒", "一小时", etc.; they must first be converted to English

Execution method:

  1. Use the Bash tool to call the script, rather than simulating or explaining
  2. Ensure that the --time parameter has been converted to English format(according to the conversion rules in the "Time Parsing Guide" below)
  3. Command format:node /path/to/create-reminder.js --title="标题" --message="消息" --time="时间"

Step 3: Actually call the script

After the call is complete, check the script output. The script will return confirmation information, including the reminder ID and scheduled time.

Step 4: Confirm creation

Based on the script output, confirm that the user's reminder has been created. Tell the user:

  • What was set
  • When it will trigger
  • The system notification will automatically appear at the specified time (handled by the CCCore daemon)

Example

Example 1: Single reminder

User: "Remind me to call John in 30 minutes"

What you should do:

  1. Parse the input: title="Call John", time="in 30 minutes"
  2. Actually call the script(not just explain):
    node ${CLAUDE_PLUGIN_ROOT}/skills/reminder/create-reminder.js --title="给 John 打电话" --message="给 John 打电话" --time="in 30 minutes"
    
  3. Wait for the script to return the result
  4. Tell the user: "✅ Reminder set, you will be notified in 30 minutes"

Example 2: Multiple events

User: "I have a meeting at 2 PM today, and I need to submit a report before 5 PM"

What you should do:

  1. Identify two events

  2. Actually call the scripttwice:

    First reminder:

    node ${CLAUDE_PLUGIN_ROOT}/skills/reminder/create-reminder.js --title="会议" --message="参加预定会议" --time="2025-11-24T14:00:00"
    

    Second reminder:

    node ${CLAUDE_PLUGIN_ROOT}/skills/reminder/create-reminder.js --title="提交报告" --message="提交报告" --time="2025-11-24T17:00:00"
    
  3. Wait for both scripts to return results

  4. Confirm that both reminders have been created

Example 3: Relative time

User: "Don't let me forget to take the cake out of the oven in 45 minutes!"

What you should do:

  1. Parse the input: title="Take the cake out of the oven", time="in 45 minutes"
  2. Actually call the script:
    node ${CLAUDE_PLUGIN_ROOT}/skills/reminder/create-reminder.js --title="把蛋糕从烤箱拿出来" --message="从烤箱取出蛋糕" --time="in 45 minutes"
    
  3. Wait for the script to return the result
  4. Tell the user: "✅ I will remind you in 45 minutes"

Time parsing guide

⚠️ Key reminder: The create-reminder.js scriptonly accepts English time formats. If you pass a Chinese time format, the script will return an error.

Relative time conversion

Must do: The user may express time in Chinese, and youmustconvert it to English format before calling the script.

Chinese-to-English conversion rules (must be followed)

Step 1: Convert Chinese numerals to Arabic numerals:

  • "十" → 10, "一" → 1, "二" → 2, "三" → 3, "四" → 4, "五" → 5, "六" → 6, "七" → 7, "八" → 8, "九" → 9
  • "两" / "二" → 2, "半" → 0.5 (30 when it is 30 minutes)
  • "十秒" → 10 seconds, "一分钟" → 1 minute, "两小时" → 2 hours, "三周" → 3 weeks, "四个月" → 4 months, "五年" → 5 years

Step 2: Convert Chinese time units to English words:

  • "秒" / "秒后" → "seconds"
  • "分钟" / "分钟后" / "分" → "minutes"
  • "小时" / "小时后" / "钟头" → "hours"
  • "天" / "天后" → "days"
  • "周" / "星期" / "周后" → "weeks" (note: 1 week = 7 days)
  • "月" / "个月" / "月后" → "months" (note: 1 month is calculated as 30 days)
  • "年" / "年后" → "years" (note: 1 year is calculated as 365 days)

Step 3: Combine into the format required by the script:"in {数字} {英文单位}"

  • Chinese: "十秒后" → Arabic numerals: "10秒" → English: "seconds" → Final format:"in 10 seconds"
  • Chinese: "半小时后" → Arabic numerals: "30分钟" → English: "minutes" → Final format:"in 30 minutes"

Specific conversion example (showing the full process)

  • User says: "Remind me in ten seconds"

    1. Parse: time part = "十秒后"
    2. Convert number: "十" → 10
    3. Convert unit: "秒" → "seconds"
    4. Finally passed to script:--time="in 10 seconds"
  • User says: "remind me in half an hour"

    1. Parse: time part = "half an hour later"
    2. Convert number: "半" → 30 (minutes)
    3. Convert unit: "小时" → "minutes"
    4. Finally passed to script:--time="in 30 minutes"
  • User says: "remind me in 2 hours"

    1. Parse: time part = "2 hours later"
    2. Convert number: 2 (already a number)
    3. Convert unit: "小时" → "hours"
    4. Finally passed to script:--time="in 2 hours"
  • User says: "remind me in a week"

    1. Parse: time part = "a week later"
    2. Convert number: "一" → 1
    3. Convert unit: "周" → "weeks"
    4. Finally passed to script:--time="in 1 week"
  • User says: "remind me in three months"

    1. Parse: time part = "three months later"
    2. Convert number: "三" → 3
    3. Convert unit: "个月" → "months"
    4. Finally passed to script:--time="in 3 months"
  • User says: "remind me at this time next year"

    1. Parse: time part = "one year later"
    2. Convert number: "一" → 1
    3. Convert unit: "年" → "years"
    4. Finally passed to script:--time="in 1 year"
  • User says: "tomorrow at 3 PM"

    • This is not a relative time format,use the absolute time rules below, convert to ISO format

Relative time

  • "in X seconds": second-level reminders
  • "in X minutes": minute-level reminders
  • "in X hours": hour-level reminders
  • "in X days": day-level reminders
  • "in X weeks": week-level reminders (1 week = 7 days)
  • "in X months": month-level reminders (1 month = 30 days)
  • "in X years": year-level reminders (1 year = 365 days)

Absolute time

Convert natural language to ISO format:

  • "today at 3 PM" → calculate the ISO datetime for 3 PM on the current date
  • "tomorrow at 9 AM" → calculate the ISO datetime for 9 AM on the next day
  • "next Monday at 2 PM" → calculate the ISO datetime for 2 PM next Monday

Current context

Always consider:

  • Today's date: check the system context to get the current date/time
  • The user's time zone: use local time for calculations
  • Default time: if no time is specified, ask the user or suggest a reasonable default

Other features

List active reminders

When the user asks "What reminders do I have?" or "Show my upcoming events", they can be viewed in the following ways:

  • Use CCCore's client command:cccore-client list-reminders
  • Or inform the user that the reminder has been created and saved in CCCore

Cancel a reminder

When the user wants to cancel a specific reminder, they can use CCCore's client command:

  • cccore-client cancel-reminder <reminder-id>
  • A specific reminder ID must be provided

Important notes

  1. The script must be called: This is not optional! When the user requests a reminder, youmustactually use the Bash tool to call the create-reminder.js script. If you only explain what you will do without actually calling the script, the user will not receive the reminder.

  2. The time format must be in English:⚠️ Key: Regardless of what language the user inputs in, the --time parameter passed to the scriptmust be in English format:

    • ✅ Correct format:"in 10 seconds"、"in 30 minutes"、"in 2 hours"、"in 1 day"、"in 2 weeks"、"in 1 month"、"in 1 year"、"2025-11-24T15:30:00"
    • ❌ Incorrect format:"十秒后"、"一小时"、"半小时后"、"一周后"、"三个月后"、"一年后"
    • If you pass a Chinese time format, the script will return an error and the reminder will not be created!
    • You must convert according to the "Time Parsing Guide"
  3. Depends on CCCore: This script communicates with the CCCore daemon via Socket IPC. Ensure:

    • The CCCore daemon is running
    • The Socket file exists and is accessible
    • If the script reports "CCCore daemon is not running", prompt the user to start CCCore
  4. System notification: The reminder will be displayed as a system-level alert, handled by the CCCore daemon. This process is fully automated, and you do not need to manually trigger the notification.

  5. Persistence: Reminders are stored in CCCore's data file (~/.cccore-reminders/reminders.json) and persist after restart.

  6. Multiple reminders: If the user mentions multiple events, call the script separately for each event to create a reminder.

  7. Confirmation: Wait for the script to return a result before confirming what was created and when it will trigger.

  8. Script path: The absolute path of the script is ${CLAUDE_PLUGIN_ROOT}/skills/reminder/create-reminder.js, use the node command to execute it.

Troubleshooting and Common Issues

Reminder not created?

If the user says they did not receive the reminder, possible reasons:

  1. The script was not called: Check whether Claude Code actually called the Bash tool to execute the script. If you do not see the script executing, this is the problem.

  2. The CCCore daemon is not running: The script depends on the CCCore daemon.

    • Check whether the Socket file exists
    • Prompt the user to start the CCCore daemon
    • Verify whether the Socket path is correct
  3. Incorrect time format (the most common reason): ⚠️ Check whether the --time parameter passed to the script is in English format:

    • ✅ Correct format (English):"in 10 seconds"、"in 30 minutes"、"in 2 hours"、"in 1 day"、"in 2 weeks"、"in 1 month"、"in 1 year"、"2025-11-24T15:30:00"
    • ❌ Incorrect format (Chinese):"十秒后"、"一小时"、"半小时"、"一周后"、"三个月后"、"一年后"
    • If the script returns an error message such as "invalid time format", the time format is definitely not in English
    • Solution: Convert according to the "Time Parsing Guide"
  4. Time conversion failed: If you cannot convert the Chinese time to English:

    • Ask the user for a clearer time expression
    • Provide examples: "Please say formats like 'in 10 seconds', 'in 30 minutes', 'in 2 hours', 'in 1 week', 'in 3 months', or 'in 1 year'"
    • Refer to the conversion rules in the "Time Parsing Guide"
  5. Missing parameters: ensure all required parameters are provided:--title、--message、--time

Time parsing failed

If the script returns an error (usually a time format error):

  • First check whether a Chinese time format was passed (this will cause an error)
  • It should already have been converted to English format according to the "Time Parsing Guide"
  • If conversion is difficult, ask the user for clarification
  • Suggest the user use an English format such as "in 30 minutes", "in 2 hours", "in 1 day", "in 2 weeks", "in 1 month", "in 1 year", or a specific time "2025-11-24T15:30:00"
  • Provide examples of valid time formats

Reminder created but no notification displayed

  • Check whether the CCCore daemon is running properly
  • Check whether system notification settings are enabled
  • macOS: System Settings > Notifications
  • Windows: Settings > System > Notifications
  • Linux: ensure notify-send is installed
  • View the reminder data file:~/.cccore-reminders/reminders.json