{
  "schemaVersion": "1.0",
  "item": {
    "slug": "task-resume",
    "name": "Task Resume",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/RichardSun700/task-resume",
    "canonicalUrl": "https://clawhub.ai/RichardSun700/task-resume",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/task-resume",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=task-resume",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/task_resume_queue.py"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/task-resume"
    },
    "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/task-resume",
    "agentPageUrl": "https://openagent3.xyz/skills/task-resume/agent",
    "manifestUrl": "https://openagent3.xyz/skills/task-resume/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/task-resume/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Task Resume",
        "body": "Use this skill to ensure interrupted tasks are recovered automatically."
      },
      {
        "title": "Defaults (MANDATORY)",
        "body": "Make interruption enqueue the default behavior.\nOn any non-explicit context switch, auto-enqueue the active unfinished task.\nEnqueue at message-time (immediately when interruption is detected), not only on periodic checks.\nUse one shared queue file for all sessions/clones so the view is unified."
      },
      {
        "title": "Rules",
        "body": "Treat user-explicit commands (cancel, pause, change priority, do it tomorrow) as overrides.\nTreat all other topic switches as potential interruptions.\nBefore switching topics, persist interruption context to queue.\nAfter completing the active task, immediately resume the oldest queued interrupted task.\nIf queue is empty, do nothing."
      },
      {
        "title": "Shared Queue Storage (cross-session)",
        "body": "Canonical queue file: memory/task-resume-queue.json\nThis file is workspace-global and shared across main + clone + group sessions.\nAlways pass source with session/channel identity.\nUse helper script: scripts/task_resume_queue.py"
      },
      {
        "title": "Interruption Detection",
        "body": "Consider a task interrupted when all are true:\n\nThere is an active task with unfinished acceptance criteria.\nA new user request is unrelated to finishing that active task.\nUser did not explicitly cancel/pause/defer the active task."
      },
      {
        "title": "Message-Time Enforcement (required)",
        "body": "Before handling every new user message:\n\nCheck whether an active task exists and is unfinished.\nIf the incoming message is an unrelated request and no explicit override is present, enqueue immediately.\nOnly then switch to the new request.\n\nThis prevents queue misses caused by timing gaps."
      },
      {
        "title": "Log-based Recovery (ENOENT-safe)",
        "body": "When recovery needs session .jsonl context, use:\n\npython3 skills/task-resume/scripts/task_resume_queue.py recover \\\n  --log \"~/.openclaw/agents/main/sessions/<session>.jsonl\" \\\n  --title \"<active task title>\" \\\n  --acceptance \"<acceptance criteria>\" \\\n  --source \"<channel>\" \\\n  --session \"<session_key_or_chat_id>\"\n\nIf the log file is missing (ENOENT), treat it as expected and continue (skipped_missing_log), do not raise alert-level failure."
      },
      {
        "title": "On Interruption (auto-enqueue)",
        "body": "Run immediately at interruption detection:\n\npython3 skills/task-resume/scripts/task_resume_queue.py add \\\n  --title \"<active task title>\" \\\n  --context \"<what was done + exact next step>\" \\\n  --acceptance \"<acceptance criteria>\" \\\n  --source \"<channel>\" \\\n  --session \"<session_key_or_chat_id>\"\n\nThen acknowledge briefly: queued + will auto-resume."
      },
      {
        "title": "On Active Task Completion (resume)",
        "body": "Run:\n\npython3 skills/task-resume/scripts/task_resume_queue.py pop\n\nIf one item is returned, resume it immediately and announce: Resuming previously interrupted task: <title>.\nIf empty, continue normal flow."
      },
      {
        "title": "Unified View",
        "body": "Run:\n\npython3 skills/task-resume/scripts/task_resume_queue.py status\n\nThis returns total queue count + grouped counts by source/session."
      },
      {
        "title": "Guardrails",
        "body": "Never drop queued tasks silently.\nAlways include next-step quality context when enqueueing.\nDeduplicate: if same task title and near-identical context exists in queue, update timestamp instead of appending.\nKeep queue max size 30; discard oldest overflow items after logging to memory/YYYY-MM-DD.md."
      },
      {
        "title": "Watchdog Auto-Continue (Heartbeat/Cron)",
        "body": "When users require \"not just reminder, but auto-continue execution\", add a watchdog cron policy:\n\nRun every 30 minutes.\nFirst inspect unfinished primary task + queue status.\nIf interrupted or no recent progress, immediately continue the next actionable step.\nSend concise progress each run: done / in-progress / next step + ETA.\nEven with no material change, send a short巡检回执（\"已巡检，继续执行中\"）.\n\nRecommended cron shape for delivery reliability:\n\nPrefer sessionTarget=\"main\" + payload.kind=\"systemEvent\" for user-facing continuity checks.\nAvoid fragile announce-only chains when delivery channel config is unstable."
      },
      {
        "title": "Daily Hygiene",
        "body": "At least once daily:\n\npython3 skills/task-resume/scripts/task_resume_queue.py list\n\nIf stale items (>7 days), ask user whether to cancel or schedule."
      }
    ],
    "body": "Task Resume\n\nUse this skill to ensure interrupted tasks are recovered automatically.\n\nDefaults (MANDATORY)\nMake interruption enqueue the default behavior.\nOn any non-explicit context switch, auto-enqueue the active unfinished task.\nEnqueue at message-time (immediately when interruption is detected), not only on periodic checks.\nUse one shared queue file for all sessions/clones so the view is unified.\nRules\nTreat user-explicit commands (cancel, pause, change priority, do it tomorrow) as overrides.\nTreat all other topic switches as potential interruptions.\nBefore switching topics, persist interruption context to queue.\nAfter completing the active task, immediately resume the oldest queued interrupted task.\nIf queue is empty, do nothing.\nShared Queue Storage (cross-session)\nCanonical queue file: memory/task-resume-queue.json\nThis file is workspace-global and shared across main + clone + group sessions.\nAlways pass source with session/channel identity.\nUse helper script: scripts/task_resume_queue.py\nInterruption Detection\n\nConsider a task interrupted when all are true:\n\nThere is an active task with unfinished acceptance criteria.\nA new user request is unrelated to finishing that active task.\nUser did not explicitly cancel/pause/defer the active task.\nMessage-Time Enforcement (required)\n\nBefore handling every new user message:\n\nCheck whether an active task exists and is unfinished.\nIf the incoming message is an unrelated request and no explicit override is present, enqueue immediately.\nOnly then switch to the new request.\n\nThis prevents queue misses caused by timing gaps.\n\nLog-based Recovery (ENOENT-safe)\n\nWhen recovery needs session .jsonl context, use:\n\npython3 skills/task-resume/scripts/task_resume_queue.py recover \\\n  --log \"~/.openclaw/agents/main/sessions/<session>.jsonl\" \\\n  --title \"<active task title>\" \\\n  --acceptance \"<acceptance criteria>\" \\\n  --source \"<channel>\" \\\n  --session \"<session_key_or_chat_id>\"\n\n\nIf the log file is missing (ENOENT), treat it as expected and continue (skipped_missing_log), do not raise alert-level failure.\n\nOn Interruption (auto-enqueue)\n\nRun immediately at interruption detection:\n\npython3 skills/task-resume/scripts/task_resume_queue.py add \\\n  --title \"<active task title>\" \\\n  --context \"<what was done + exact next step>\" \\\n  --acceptance \"<acceptance criteria>\" \\\n  --source \"<channel>\" \\\n  --session \"<session_key_or_chat_id>\"\n\n\nThen acknowledge briefly: queued + will auto-resume.\n\nOn Active Task Completion (resume)\n\nRun:\n\npython3 skills/task-resume/scripts/task_resume_queue.py pop\n\nIf one item is returned, resume it immediately and announce: Resuming previously interrupted task: <title>.\nIf empty, continue normal flow.\nUnified View\n\nRun:\n\npython3 skills/task-resume/scripts/task_resume_queue.py status\n\n\nThis returns total queue count + grouped counts by source/session.\n\nGuardrails\nNever drop queued tasks silently.\nAlways include next-step quality context when enqueueing.\nDeduplicate: if same task title and near-identical context exists in queue, update timestamp instead of appending.\nKeep queue max size 30; discard oldest overflow items after logging to memory/YYYY-MM-DD.md.\nWatchdog Auto-Continue (Heartbeat/Cron)\n\nWhen users require \"not just reminder, but auto-continue execution\", add a watchdog cron policy:\n\nRun every 30 minutes.\nFirst inspect unfinished primary task + queue status.\nIf interrupted or no recent progress, immediately continue the next actionable step.\nSend concise progress each run: done / in-progress / next step + ETA.\nEven with no material change, send a short巡检回执（\"已巡检，继续执行中\"）.\n\nRecommended cron shape for delivery reliability:\n\nPrefer sessionTarget=\"main\" + payload.kind=\"systemEvent\" for user-facing continuity checks.\nAvoid fragile announce-only chains when delivery channel config is unstable.\nDaily Hygiene\n\nAt least once daily:\n\npython3 skills/task-resume/scripts/task_resume_queue.py list\n\n\nIf stale items (>7 days), ask user whether to cancel or schedule."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/RichardSun700/task-resume",
    "publisherUrl": "https://clawhub.ai/RichardSun700/task-resume",
    "owner": "RichardSun700",
    "version": "1.3.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/task-resume",
    "downloadUrl": "https://openagent3.xyz/downloads/task-resume",
    "agentUrl": "https://openagent3.xyz/skills/task-resume/agent",
    "manifestUrl": "https://openagent3.xyz/skills/task-resume/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/task-resume/agent.md"
  }
}