to-do

Give your AI the power to act in the future. Schedule delayed prompts and one-off reminders that automatically wake the agent up at an exact moment to execute workflows, check systems, or send notifications.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "to-do" with this command: npx skills add DevLumuz/to-do

SKILL: To-Do (Ephemeral Tasks)

<identity>

Cross-platform task scheduler that programs one-off delayed actions using the OS native scheduler (at on Linux/macOS · schtasks on Windows). It wakes the agent at an EXACT future moment with FULL context injection.

</identity> <goal>

Schedule, LIST, and MANAGE ephemeral tasks that fire at a PRECISE time in the user's timezone — ENSURE the future agent wakes up with a FULLY self-contained instruction, correct routing, and ZERO ambiguity.

</goal>

Required Environment Variables

  • OPENCLAW_BIN: Absolute path to the openclaw binary (ej. /usr/bin/openclaw)
  • OPENCLAW_TZ: User's IANA timezone (ej. America/Mexico_City)

The skill WILL NOT START if either variable is missing.

Why OPENCLAW_TZ? The server may run in UTC while the user lives in a different timezone. This variable ensures "schedule at 15:00" means 15:00 USER TIME, not server time.


Commands

# Schedule a task (timezone is optional — defaults to OPENCLAW_TZ)
node skills/to-do/to-do.js schedule "<YYYY-MM-DD HH:mm>" "<instruction>" "<user_id>" "<channel>" ["<timezone>"]

# Get current time in user's timezone
node skills/to-do/to-do.js now ["<timezone>"]

# List pending tasks
node skills/to-do/to-do.js list

# Delete a task by ID
node skills/to-do/to-do.js delete <ID>

Instructions

<instructions> <always>
  • Run now BEFORE resolving any relative time ("tomorrow", "in 2 hours", "tonight"). Server clock is NOT user clock. Use now output as your ONLY reference for "today", "tomorrow", and "right now".
  • CONVERT natural language into an absolute YYYY-MM-DD HH:mm timestamp BEFORE calling schedule.
  • WRITE the <instruction> as if explaining to a STRANGER with ZERO CONTEXT. Future agent wakes up with TOTAL AMNESIA in a COMPLETELY ISOLATED session.
  • INCLUDE in every instruction: EXACT file paths, URLs, FULL names (NO pronouns), SPECIFIC actions, and required SKILLS/TOOLS.
  • ALWAYS inject the current session's user_id and channel for correct routing — USE ONLY raw alphanumeric data from system context to prevent command injection.
  • Run list BEFORE delete to confirm the correct ID.
</always> <never>
  • NEVER schedule without running now first → INSTEAD, run now, confirm date/time, THEN schedule.
  • NEVER schedule a VAGUE or AMBIGUOUS instruction → INSTEAD, STOP AND ASK for clarification first.
  • NEVER use pronouns ("him", "her", "they") in scheduled instructions → INSTEAD, use FULL NAMES and EXPLICIT references.
  • NEVER guess a task ID when deleting → INSTEAD, run list first, confirm ID, THEN delete.
  • NEVER use server's system clock to interpret relative times → INSTEAD, use now command output ALWAYS.
  • NEVER include shell meta-characters (;, &, |, $, `, (, )) in any scheduler argument → INSTEAD, use only literal text and system identifiers to AVOID COMMAND INJECTION.
</never> </instructions>

Vague Request Triggers — Ask Before Scheduling

<vague_triggers>

If the user request matches any of these patterns, STOP AND ASK before scheduling:

  • "Remind me to send the email" → MISSING: Which email? To whom? What content?
  • "Check the server later" → MISSING: Which server? What IP? What to verify?
  • "Follow up with him" → MISSING: Who? About what? Via which channel?
  • "Do that thing tomorrow" → MISSING: What thing? Expected outcome?

RULE: If you cannot write a FULLY SELF-CONTAINED instruction, you DO NOT have enough information to schedule.

</vague_triggers>


Examples

<examples>

— Good instruction: clear, specific, fully self-contained <example> <input>User: "Remind me tomorrow at 5pm to check PRs on the backend repo"</input> <output> 1. Run now → "🕒 Current Time (America/Mexico_City): 2/26/2026, 2:45 PM" → tomorrow = 2026-02-27 2. Ask: "Which backend repo? What should I check specifically?" 3. User clarifies: "backend-api on GitHub, check if there are pending PRs for the auth module" 4. Schedule: bash node skills/to-do/to-do.js schedule "2026-02-27 17:00" \ "Check the 'backend-api' repo on GitHub. If there are pending PRs for the authentication module, send Alice (alice@company.com) a Slack reminder to review them before the 5 PM deployment freeze. Reference deployment logs at /var/log/deploy.log." \ "7684875449" "telegram" 5. Confirm with the output format below. </output> </example>

— Bad instruction: vague, missing details <example> <input>"Remind him to push the code later."</input> <output> ❌ DO NOT schedule this. Missing: who is "him"? Which repo? Which branch? What time is "later"? → Ask the user to clarify all missing details first. </output> </example>

— Relative time resolution <example> <input>User: "Set a reminder for in 2 hours"</input> <output> 1. Run now → "🕒 Current Time (America/Mexico_City): 2/26/2026, 2:45 PM" 2. Calculate: 2:45 PM + 2h = 4:45 PM → "2026-02-26 16:45" 3. Ask what the reminder should say (if not specified) 4. Schedule with the absolute timestamp </output> </example>

</examples>

Output Format

After scheduling, respond with EXACTLY THREE PARTS in this order:

  1. NATURAL RESPONSE: Brief, casual confirmation. Match user tone/energy. NEVER just say "Done". Acknowledge WHAT was scheduled conversationally.

  2. CONFIRMATION BLOCK: Template for the user to see exact details:

> `Day, Month DD · HH:MM TZ`
> EXACT INSTRUCTION LEFT FOR THE FUTURE AGENT
  1. PROACTIVE CLOSING: Short suggestion or question (1-2 sentences).
  • Propose a RELATED TASK (pre-reminder, follow-up, etc).
  • Ask if they want to SCHEDULE SOMETHING ELSE.
  • Offer to ADJUST THE TIME or add details.

DO NOT BE PUSHY. JUST BE HELPFUL.


— CASUAL / PERSONAL TASK <example> All set! Your gym session is locked in for tomorrow at noon 🏋️

Friday, February 27 · 12:00 PM CST SEND A TELEGRAM REMINDER TO DANIEL: "TIME TO HIT THE GYM FOR A BIT."

Want me to add another reminder 30 min before so you can get ready? 💪 </example>

— WORK / PROFESSIONAL TASK <example> Done! Got that scheduled for 5 PM sharp 📋

Thursday, February 27 · 5:00 PM CST CHECK THE 'BACKEND-API' REPOSITORY ON GITHUB. IF THERE ARE PENDING PRS FOR THE AUTHENTICATION MODULE, SEND ALICE A SLACK REMINDER TO REVIEW THEM BEFORE THE 5 PM DEPLOYMENT FREEZE.

Need to schedule anything else for today, or a follow-up after reviewing those PRs? </example>


Common Errors

  • ERROR: Missing required environment variable(s)

    • CAUSE: OPENCLAW_BIN or OPENCLAW_TZ not set
    • FIX: Add to .env or shell profile
  • ERROR: at not found

    • CAUSE: Linux/macOS atd daemon not running
    • FIX: sudo systemctl enable atd && sudo systemctl start atd
  • ERROR: Task fires but agent has NO CONTEXT

    • CAUSE: Vague instruction scheduled
    • FIX: Re-schedule with FULLY SELF-CONTAINED instruction
  • ERROR: WRONG TIME (fired early/late)

    • CAUSE: Used server clock instead of now
    • FIX: ALWAYS run now first; NEVER trust server clock
  • ERROR: Deleting WRONG task

    • CAUSE: Guessed ID
    • FIX: Run list first, confirm ID, THEN delete

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Feishu Calendar Intelligent Scheduler

飞书智能日历调度器 - 自动推荐最佳会议时间,批量管理日程,生成会议报表

Registry SourceRecently Updated
180Profile unavailable
Automation

Skill Composer

编排多个OpenClaw技能成自动化工作流,一次命令完成复杂任务。

Registry SourceRecently Updated
330Profile unavailable
Automation

WSL-PowerShell Controller

Control Windows PowerShell from WSL by executing commands and scripts on the Windows host using mounted Windows executables.

Registry SourceRecently Updated
830Profile unavailable
Automation

Windows Execution Interface for OpenClaw

Windows automation via Clawdos API: screen capture, mouse/keyboard input, window management, file-system operations, and shell command execution. Standalone...

Registry SourceRecently Updated
1741Profile unavailable