{
  "schemaVersion": "1.0",
  "item": {
    "slug": "scheduler-for-discord",
    "name": "scheduler for discord",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/AaronWander/scheduler-for-discord",
    "canonicalUrl": "https://clawhub.ai/AaronWander/scheduler-for-discord",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/scheduler-for-discord",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=scheduler-for-discord",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "skills.md"
    ],
    "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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/scheduler-for-discord"
    },
    "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/scheduler-for-discord",
    "agentPageUrl": "https://openagent3.xyz/skills/scheduler-for-discord/agent",
    "manifestUrl": "https://openagent3.xyz/skills/scheduler-for-discord/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/scheduler-for-discord/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": "Scheduler (cron)",
        "body": "This skill schedules future actions using Moltbot’s cron CLI (via exec), defaulting to delivering the result back into the current Discord channel when available."
      },
      {
        "title": "What to collect",
        "body": "When: either a one-shot time (in 2 minutes, at 20:00) or a recurring schedule (every day at 20:00).\nTimezone: ask if ambiguous; otherwise prefer the gateway host’s timezone.\nWhat: what the message should say, or what should be generated.\nWhere:\n\nIf the request came from Discord, use the message context’s channel id and set delivery target to channel:<id>.\nIf the request came from another surface (webchat/terminal), ask for a destination (Discord channel ID, Telegram chat ID, etc)."
      },
      {
        "title": "Key rules",
        "body": "Cron jobs run in the background, so there is no “current channel” at execution time. Always capture the channel id at creation time and bake it into the cron job (--channel discord --to channel:<id>).\nUse an isolated agent job for scheduled messages (prevents the “Main jobs require --system-event” error).\nAvoid ambiguous Discord names like #test; always deliver to an explicit channel:<id> or user:<id>."
      },
      {
        "title": "One-shot message to the current Discord channel",
        "body": "If the user says “remind me in 2 minutes” (or similar), schedule a one-shot isolated agent job:\n\nmoltbot cron add \\\n  --name \"<short-name>\" \\\n  --session isolated \\\n  --at 2m \\\n  --agent main \\\n  --message \"<message text>\" \\\n  --deliver \\\n  --channel discord \\\n  --to channel:<DISCORD_CHANNEL_ID> \\\n  --delete-after-run\n\nNotes:\n\n--at accepts 2m, 20m, 1h, or an ISO timestamp. Do not use +2m."
      },
      {
        "title": "Daily “tomorrow plan” at 20:00 (recurring)",
        "body": "If the user says “every day at 8pm, send me tomorrow’s work plan”, create a recurring cron job that instructs the agent to generate the plan and deliver it:\n\nmoltbot cron add \\\n  --name \"tomorrow-plan\" \\\n  --session isolated \\\n  --cron \"0 20 * * *\" \\\n  --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"At execution time, write tomorrow's work plan. Keep it concise. Include: priorities, schedule blocks, risks, and a short checklist.\" \\\n  --deliver \\\n  --channel discord \\\n  --to channel:<DISCORD_CHANNEL_ID>"
      },
      {
        "title": "Verify",
        "body": "moltbot cron list\nmoltbot cron runs --id <JOB_ID>"
      },
      {
        "title": "How to find the current Discord channel id",
        "body": "When the user request comes from Discord, the message context includes channel identifiers (e.g. channel=... / discord channel id ...). Use that value for channel:<id>.\n\nIf the context does not include it, ask the user to provide a Discord message link (from which you can extract the channel id), or the channel id directly."
      }
    ],
    "body": "Scheduler (cron)\n\nThis skill schedules future actions using Moltbot’s cron CLI (via exec), defaulting to delivering the result back into the current Discord channel when available.\n\nWhat to collect\nWhen: either a one-shot time (in 2 minutes, at 20:00) or a recurring schedule (every day at 20:00).\nTimezone: ask if ambiguous; otherwise prefer the gateway host’s timezone.\nWhat: what the message should say, or what should be generated.\nWhere:\nIf the request came from Discord, use the message context’s channel id and set delivery target to channel:<id>.\nIf the request came from another surface (webchat/terminal), ask for a destination (Discord channel ID, Telegram chat ID, etc).\nKey rules\nCron jobs run in the background, so there is no “current channel” at execution time. Always capture the channel id at creation time and bake it into the cron job (--channel discord --to channel:<id>).\nUse an isolated agent job for scheduled messages (prevents the “Main jobs require --system-event” error).\nAvoid ambiguous Discord names like #test; always deliver to an explicit channel:<id> or user:<id>.\nImplementation (use exec)\nOne-shot message to the current Discord channel\n\nIf the user says “remind me in 2 minutes” (or similar), schedule a one-shot isolated agent job:\n\nmoltbot cron add \\\n  --name \"<short-name>\" \\\n  --session isolated \\\n  --at 2m \\\n  --agent main \\\n  --message \"<message text>\" \\\n  --deliver \\\n  --channel discord \\\n  --to channel:<DISCORD_CHANNEL_ID> \\\n  --delete-after-run\n\n\nNotes:\n\n--at accepts 2m, 20m, 1h, or an ISO timestamp. Do not use +2m.\nDaily “tomorrow plan” at 20:00 (recurring)\n\nIf the user says “every day at 8pm, send me tomorrow’s work plan”, create a recurring cron job that instructs the agent to generate the plan and deliver it:\n\nmoltbot cron add \\\n  --name \"tomorrow-plan\" \\\n  --session isolated \\\n  --cron \"0 20 * * *\" \\\n  --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"At execution time, write tomorrow's work plan. Keep it concise. Include: priorities, schedule blocks, risks, and a short checklist.\" \\\n  --deliver \\\n  --channel discord \\\n  --to channel:<DISCORD_CHANNEL_ID>\n\nVerify\nmoltbot cron list\nmoltbot cron runs --id <JOB_ID>\n\nHow to find the current Discord channel id\n\nWhen the user request comes from Discord, the message context includes channel identifiers (e.g. channel=... / discord channel id ...). Use that value for channel:<id>.\n\nIf the context does not include it, ask the user to provide a Discord message link (from which you can extract the channel id), or the channel id directly."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/AaronWander/scheduler-for-discord",
    "publisherUrl": "https://clawhub.ai/AaronWander/scheduler-for-discord",
    "owner": "AaronWander",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/scheduler-for-discord",
    "downloadUrl": "https://openagent3.xyz/downloads/scheduler-for-discord",
    "agentUrl": "https://openagent3.xyz/skills/scheduler-for-discord/agent",
    "manifestUrl": "https://openagent3.xyz/skills/scheduler-for-discord/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/scheduler-for-discord/agent.md"
  }
}