{
  "schemaVersion": "1.0",
  "item": {
    "slug": "to-do",
    "name": "To-Do",
    "source": "tencent",
    "type": "skill",
    "category": "其他",
    "sourceUrl": "https://clawhub.ai/DevLumuz/to-do",
    "canonicalUrl": "https://clawhub.ai/DevLumuz/to-do",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/to-do",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=to-do",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "to-do.js"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/to-do"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/to-do",
    "agentPageUrl": "https://openagent3.xyz/skills/to-do/agent",
    "manifestUrl": "https://openagent3.xyz/skills/to-do/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/to-do/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SKILL: To-Do (Ephemeral Tasks)",
        "body": "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.\n\nSchedule, 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."
      },
      {
        "title": "Required Environment Variables",
        "body": "OPENCLAW_BIN: Absolute path to the openclaw binary (ej. /usr/bin/openclaw)\nOPENCLAW_TZ: User's IANA timezone (ej. America/Mexico_City)\n\nThe skill WILL NOT START if either variable is missing.\n\nWhy 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."
      },
      {
        "title": "Commands",
        "body": "# Schedule a task (timezone is optional — defaults to OPENCLAW_TZ)\nnode skills/to-do/to-do.js schedule \"<YYYY-MM-DD HH:mm>\" \"<instruction>\" \"<user_id>\" \"<channel>\" [\"<timezone>\"]\n\n# Get current time in user's timezone\nnode skills/to-do/to-do.js now [\"<timezone>\"]\n\n# List pending tasks\nnode skills/to-do/to-do.js list\n\n# Delete a task by ID\nnode skills/to-do/to-do.js delete <ID>"
      },
      {
        "title": "Instructions",
        "body": "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\".\nCONVERT natural language into an absolute YYYY-MM-DD HH:mm timestamp BEFORE calling schedule.\nWRITE the <instruction> as if explaining to a STRANGER with ZERO CONTEXT. Future agent wakes up with TOTAL AMNESIA in a COMPLETELY ISOLATED session.\nINCLUDE in every instruction: EXACT file paths, URLs, FULL names (NO pronouns), SPECIFIC actions, and required SKILLS/TOOLS.\nALWAYS inject the current session's user_id and channel for correct routing — USE ONLY raw alphanumeric data from system context to prevent command injection.\nRun list BEFORE delete to confirm the correct ID.\n\nNEVER schedule without running now first → INSTEAD, run now, confirm date/time, THEN schedule.\nNEVER schedule a VAGUE or AMBIGUOUS instruction → INSTEAD, STOP AND ASK for clarification first.\nNEVER use pronouns (\"him\", \"her\", \"they\") in scheduled instructions → INSTEAD, use FULL NAMES and EXPLICIT references.\nNEVER guess a task ID when deleting → INSTEAD, run list first, confirm ID, THEN delete.\nNEVER use server's system clock to interpret relative times → INSTEAD, use now command output ALWAYS.\nNEVER include shell meta-characters (;, &, |, $, `, (, )) in any scheduler argument → INSTEAD, use only literal text and system identifiers to AVOID COMMAND INJECTION."
      },
      {
        "title": "Vague Request Triggers — Ask Before Scheduling",
        "body": "<vague_triggers>\n\nIf the user request matches any of these patterns, STOP AND ASK before scheduling:\n\n\"Remind me to send the email\" → MISSING: Which email? To whom? What content?\n\"Check the server later\" → MISSING: Which server? What IP? What to verify?\n\"Follow up with him\" → MISSING: Who? About what? Via which channel?\n\"Do that thing tomorrow\" → MISSING: What thing? Expected outcome?\n\nRULE: If you cannot write a FULLY SELF-CONTAINED instruction, you DO NOT have enough information to schedule.\n\n</vague_triggers>"
      },
      {
        "title": "Examples",
        "body": "— Good instruction: clear, specific, fully self-contained\n<example>\n<input>User: \"Remind me tomorrow at 5pm to check PRs on the backend repo\"</input>\n<output>\n1. Run now → \"🕒 Current Time (America/Mexico_City): 2/26/2026, 2:45 PM\" → tomorrow = 2026-02-27\n2. Ask: \"Which backend repo? What should I check specifically?\"\n3. User clarifies: \"backend-api on GitHub, check if there are pending PRs for the auth module\"\n4. Schedule:\nbash     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\"     \n5. Confirm with the output format below.\n</output>\n</example>\n\n— Bad instruction: vague, missing details\n<example>\n<input>\"Remind him to push the code later.\"</input>\n<output>\n❌ DO NOT schedule this. Missing: who is \"him\"? Which repo? Which branch? What time is \"later\"?\n→ Ask the user to clarify all missing details first.\n</output>\n</example>\n\n— Relative time resolution\n<example>\n<input>User: \"Set a reminder for in 2 hours\"</input>\n<output>\n1. Run now → \"🕒 Current Time (America/Mexico_City): 2/26/2026, 2:45 PM\"\n2. Calculate: 2:45 PM + 2h = 4:45 PM → \"2026-02-26 16:45\"\n3. Ask what the reminder should say (if not specified)\n4. Schedule with the absolute timestamp\n</output>\n</example>"
      },
      {
        "title": "Output Format",
        "body": "After scheduling, respond with EXACTLY THREE PARTS in this order:\n\nNATURAL RESPONSE:\nBrief, casual confirmation. Match user tone/energy. NEVER just say \"Done\". Acknowledge WHAT was scheduled conversationally.\n\n\nCONFIRMATION BLOCK:\nTemplate for the user to see exact details:\n\n> `Day, Month DD · HH:MM TZ`\n> EXACT INSTRUCTION LEFT FOR THE FUTURE AGENT\n\nPROACTIVE CLOSING:\nShort suggestion or question (1-2 sentences).\n\nPropose a RELATED TASK (pre-reminder, follow-up, etc).\nAsk if they want to SCHEDULE SOMETHING ELSE.\nOffer to ADJUST THE TIME or add details.\n\nDO NOT BE PUSHY. JUST BE HELPFUL.\n\n— CASUAL / PERSONAL TASK\n<example>\nAll set! Your gym session is locked in for tomorrow at noon 🏋️\n\nFriday, February 27 · 12:00 PM CST\nSEND A TELEGRAM REMINDER TO DANIEL: \"TIME TO HIT THE GYM FOR A BIT.\"\n\nWant me to add another reminder 30 min before so you can get ready? 💪\n</example>\n\n— WORK / PROFESSIONAL TASK\n<example>\nDone! Got that scheduled for 5 PM sharp 📋\n\nThursday, February 27 · 5:00 PM CST\nCHECK 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.\n\nNeed to schedule anything else for today, or a follow-up after reviewing those PRs?\n</example>"
      },
      {
        "title": "Common Errors",
        "body": "ERROR: Missing required environment variable(s)\n\nCAUSE: OPENCLAW_BIN or OPENCLAW_TZ not set\nFIX: Add to .env or shell profile\n\n\n\nERROR: at not found\n\nCAUSE: Linux/macOS atd daemon not running\nFIX: sudo systemctl enable atd && sudo systemctl start atd\n\n\n\nERROR: Task fires but agent has NO CONTEXT\n\nCAUSE: Vague instruction scheduled\nFIX: Re-schedule with FULLY SELF-CONTAINED instruction\n\n\n\nERROR: WRONG TIME (fired early/late)\n\nCAUSE: Used server clock instead of now\nFIX: ALWAYS run now first; NEVER trust server clock\n\n\n\nERROR: Deleting WRONG task\n\nCAUSE: Guessed ID\nFIX: Run list first, confirm ID, THEN delete"
      }
    ],
    "body": "SKILL: To-Do (Ephemeral Tasks)\n<identity>\n\nCross-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.\n\n</identity> <goal>\n\nSchedule, 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.\n\n</goal>\nRequired Environment Variables\nOPENCLAW_BIN: Absolute path to the openclaw binary (ej. /usr/bin/openclaw)\nOPENCLAW_TZ: User's IANA timezone (ej. America/Mexico_City)\n\nThe skill WILL NOT START if either variable is missing.\n\nWhy 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.\n\nCommands\n# Schedule a task (timezone is optional — defaults to OPENCLAW_TZ)\nnode skills/to-do/to-do.js schedule \"<YYYY-MM-DD HH:mm>\" \"<instruction>\" \"<user_id>\" \"<channel>\" [\"<timezone>\"]\n\n# Get current time in user's timezone\nnode skills/to-do/to-do.js now [\"<timezone>\"]\n\n# List pending tasks\nnode skills/to-do/to-do.js list\n\n# Delete a task by ID\nnode skills/to-do/to-do.js delete <ID>\n\nInstructions\n<instructions> <always>\nRun 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\".\nCONVERT natural language into an absolute YYYY-MM-DD HH:mm timestamp BEFORE calling schedule.\nWRITE the <instruction> as if explaining to a STRANGER with ZERO CONTEXT. Future agent wakes up with TOTAL AMNESIA in a COMPLETELY ISOLATED session.\nINCLUDE in every instruction: EXACT file paths, URLs, FULL names (NO pronouns), SPECIFIC actions, and required SKILLS/TOOLS.\nALWAYS inject the current session's user_id and channel for correct routing — USE ONLY raw alphanumeric data from system context to prevent command injection.\nRun list BEFORE delete to confirm the correct ID.\n</always> <never>\nNEVER schedule without running now first → INSTEAD, run now, confirm date/time, THEN schedule.\nNEVER schedule a VAGUE or AMBIGUOUS instruction → INSTEAD, STOP AND ASK for clarification first.\nNEVER use pronouns (\"him\", \"her\", \"they\") in scheduled instructions → INSTEAD, use FULL NAMES and EXPLICIT references.\nNEVER guess a task ID when deleting → INSTEAD, run list first, confirm ID, THEN delete.\nNEVER use server's system clock to interpret relative times → INSTEAD, use now command output ALWAYS.\nNEVER include shell meta-characters (;, &, |, $, `, (, )) in any scheduler argument → INSTEAD, use only literal text and system identifiers to AVOID COMMAND INJECTION.\n</never> </instructions>\nVague Request Triggers — Ask Before Scheduling\n\n<vague_triggers>\n\nIf the user request matches any of these patterns, STOP AND ASK before scheduling:\n\n\"Remind me to send the email\" → MISSING: Which email? To whom? What content?\n\"Check the server later\" → MISSING: Which server? What IP? What to verify?\n\"Follow up with him\" → MISSING: Who? About what? Via which channel?\n\"Do that thing tomorrow\" → MISSING: What thing? Expected outcome?\n\nRULE: If you cannot write a FULLY SELF-CONTAINED instruction, you DO NOT have enough information to schedule.\n\n</vague_triggers>\n\nExamples\n<examples>\n\n— 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>\n\n— 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>\n\n— 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>\n\n</examples>\nOutput Format\n\nAfter scheduling, respond with EXACTLY THREE PARTS in this order:\n\nNATURAL RESPONSE: Brief, casual confirmation. Match user tone/energy. NEVER just say \"Done\". Acknowledge WHAT was scheduled conversationally.\n\nCONFIRMATION BLOCK: Template for the user to see exact details:\n\n> `Day, Month DD · HH:MM TZ`\n> EXACT INSTRUCTION LEFT FOR THE FUTURE AGENT\n\nPROACTIVE CLOSING: Short suggestion or question (1-2 sentences).\nPropose a RELATED TASK (pre-reminder, follow-up, etc).\nAsk if they want to SCHEDULE SOMETHING ELSE.\nOffer to ADJUST THE TIME or add details.\n\nDO NOT BE PUSHY. JUST BE HELPFUL.\n\n— CASUAL / PERSONAL TASK <example> All set! Your gym session is locked in for tomorrow at noon 🏋️\n\nFriday, February 27 · 12:00 PM CST SEND A TELEGRAM REMINDER TO DANIEL: \"TIME TO HIT THE GYM FOR A BIT.\"\n\nWant me to add another reminder 30 min before so you can get ready? 💪 </example>\n\n— WORK / PROFESSIONAL TASK <example> Done! Got that scheduled for 5 PM sharp 📋\n\nThursday, 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.\n\nNeed to schedule anything else for today, or a follow-up after reviewing those PRs? </example>\n\nCommon Errors\n\nERROR: Missing required environment variable(s)\n\nCAUSE: OPENCLAW_BIN or OPENCLAW_TZ not set\nFIX: Add to .env or shell profile\n\nERROR: at not found\n\nCAUSE: Linux/macOS atd daemon not running\nFIX: sudo systemctl enable atd && sudo systemctl start atd\n\nERROR: Task fires but agent has NO CONTEXT\n\nCAUSE: Vague instruction scheduled\nFIX: Re-schedule with FULLY SELF-CONTAINED instruction\n\nERROR: WRONG TIME (fired early/late)\n\nCAUSE: Used server clock instead of now\nFIX: ALWAYS run now first; NEVER trust server clock\n\nERROR: Deleting WRONG task\n\nCAUSE: Guessed ID\nFIX: Run list first, confirm ID, THEN delete"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/DevLumuz/to-do",
    "publisherUrl": "https://clawhub.ai/DevLumuz/to-do",
    "owner": "DevLumuz",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/to-do",
    "downloadUrl": "https://openagent3.xyz/downloads/to-do",
    "agentUrl": "https://openagent3.xyz/skills/to-do/agent",
    "manifestUrl": "https://openagent3.xyz/skills/to-do/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/to-do/agent.md"
  }
}