{
  "schemaVersion": "1.0",
  "item": {
    "slug": "rtm",
    "name": "Remember The Milk",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/maxdraki/rtm",
    "canonicalUrl": "https://clawhub.ai/maxdraki/rtm",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/rtm",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=rtm",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/rtm.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. 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",
      "slug": "rtm",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-08T03:41:11.075Z",
      "expiresAt": "2026-05-15T03:41:11.075Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=rtm",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=rtm",
        "contentDisposition": "attachment; filename=\"rtm-1.1.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "rtm"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/rtm"
    },
    "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/rtm",
    "agentPageUrl": "https://openagent3.xyz/skills/rtm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rtm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rtm/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": "Remember The Milk",
        "body": "CLI tool at scripts/rtm.py for full RTM task management. Stdlib only — no pip dependencies."
      },
      {
        "title": "Setup",
        "body": "Get API credentials at https://www.rememberthemilk.com/services/api/keys.rtm\nSet env vars RTM_API_KEY and RTM_SHARED_SECRET (via OpenClaw config skills.entries.rtm.env)\nRun scripts/rtm.py auth — opens a URL, authorize, press Enter. Token saves to ~/.rtm_token\n\nSub-agents: Env vars are not inherited. Pass them explicitly:\n\nRTM_API_KEY=... RTM_SHARED_SECRET=... python3 scripts/rtm.py <command>"
      },
      {
        "title": "Security",
        "body": "Env vars: RTM_API_KEY and RTM_SHARED_SECRET are required at runtime. Configure via OpenClaw skill env, not hardcoded.\nAuth token: Stored as plain text at ~/.rtm_token after interactive auth. This file grants full access to the linked RTM account. Protect it accordingly — restrict file permissions (chmod 600) or remove after use if not needed persistently.\nNetwork: All API calls go to api.rememberthemilk.com and www.rememberthemilk.com only. No other outbound connections.\nPermissions: The auth flow requests delete permission (RTM's highest tier) to support task deletion. Use a dedicated API key with minimum needed scope if preferred."
      },
      {
        "title": "Commands",
        "body": "# Auth (interactive, one-time)\nscripts/rtm.py auth\n\n# Lists\nscripts/rtm.py lists              # show active lists\nscripts/rtm.py lists --all        # include archived\n\n# Tasks\nscripts/rtm.py tasks                          # all incomplete\nscripts/rtm.py tasks --list LIST_ID           # filter by list\nscripts/rtm.py tasks --filter \"priority:1\"    # RTM filter syntax\nscripts/rtm.py tasks --no-notes               # hide notes\n\n# Add (--parse enables Smart Add for dates/tags/priority)\nscripts/rtm.py add \"Buy groceries\" --list LIST_ID --parse\n# Smart Add: \"Buy milk ^tomorrow #shopping !1\" sets due, tag, priority\n\n# Complete / Delete\nscripts/rtm.py complete LIST_ID SERIES_ID TASK_ID\nscripts/rtm.py delete LIST_ID SERIES_ID TASK_ID\n\n# Priority (1=high, 2=medium, 3=low, N=none)\nscripts/rtm.py set-priority LIST_ID SERIES_ID TASK_ID 1\n\n# Due date (natural language parsed by RTM)\nscripts/rtm.py set-due LIST_ID SERIES_ID TASK_ID \"next friday\"\n\n# Move between lists\nscripts/rtm.py move FROM_LIST_ID TO_LIST_ID SERIES_ID TASK_ID\n\n# Tags\nscripts/rtm.py add-tags LIST_ID SERIES_ID TASK_ID \"tag1,tag2\"\n\n# Search (RTM filter syntax)\nscripts/rtm.py search \"tag:work AND status:incomplete\"\n\n# Notes\nscripts/rtm.py notes-add LIST_ID SERIES_ID TASK_ID \"text\" --title \"Title\"\nscripts/rtm.py notes-delete NOTE_ID"
      },
      {
        "title": "Task output format",
        "body": "Task output includes IDs needed for write operations:\n\nTask Name [P1] (due: 2025-03-15) #tag1 #tag2\n    list=12345 series=67890 task=11111\n    📝 Note Title (note_id=99999)\n    Note body text here"
      },
      {
        "title": "RTM filter syntax",
        "body": "Common filters: status:incomplete, priority:1, tag:tagname, due:today, dueBefore:tomorrow, list:Inbox, isTagged:true, addedWithin:\"1 week\". Combine with AND, OR, NOT.\n\nFull reference: https://www.rememberthemilk.com/help/answers/search/advanced.rtm"
      },
      {
        "title": "Reliability",
        "body": "All API calls have a 15-second timeout with automatic retry (up to 3 attempts with backoff)\nTransient network errors are retried; permanent API errors exit immediately\nWrite operations (add, complete, delete, etc.) auto-create timelines"
      }
    ],
    "body": "Remember The Milk\n\nCLI tool at scripts/rtm.py for full RTM task management. Stdlib only — no pip dependencies.\n\nSetup\nGet API credentials at https://www.rememberthemilk.com/services/api/keys.rtm\nSet env vars RTM_API_KEY and RTM_SHARED_SECRET (via OpenClaw config skills.entries.rtm.env)\nRun scripts/rtm.py auth — opens a URL, authorize, press Enter. Token saves to ~/.rtm_token\n\nSub-agents: Env vars are not inherited. Pass them explicitly:\n\nRTM_API_KEY=... RTM_SHARED_SECRET=... python3 scripts/rtm.py <command>\n\nSecurity\nEnv vars: RTM_API_KEY and RTM_SHARED_SECRET are required at runtime. Configure via OpenClaw skill env, not hardcoded.\nAuth token: Stored as plain text at ~/.rtm_token after interactive auth. This file grants full access to the linked RTM account. Protect it accordingly — restrict file permissions (chmod 600) or remove after use if not needed persistently.\nNetwork: All API calls go to api.rememberthemilk.com and www.rememberthemilk.com only. No other outbound connections.\nPermissions: The auth flow requests delete permission (RTM's highest tier) to support task deletion. Use a dedicated API key with minimum needed scope if preferred.\nCommands\n# Auth (interactive, one-time)\nscripts/rtm.py auth\n\n# Lists\nscripts/rtm.py lists              # show active lists\nscripts/rtm.py lists --all        # include archived\n\n# Tasks\nscripts/rtm.py tasks                          # all incomplete\nscripts/rtm.py tasks --list LIST_ID           # filter by list\nscripts/rtm.py tasks --filter \"priority:1\"    # RTM filter syntax\nscripts/rtm.py tasks --no-notes               # hide notes\n\n# Add (--parse enables Smart Add for dates/tags/priority)\nscripts/rtm.py add \"Buy groceries\" --list LIST_ID --parse\n# Smart Add: \"Buy milk ^tomorrow #shopping !1\" sets due, tag, priority\n\n# Complete / Delete\nscripts/rtm.py complete LIST_ID SERIES_ID TASK_ID\nscripts/rtm.py delete LIST_ID SERIES_ID TASK_ID\n\n# Priority (1=high, 2=medium, 3=low, N=none)\nscripts/rtm.py set-priority LIST_ID SERIES_ID TASK_ID 1\n\n# Due date (natural language parsed by RTM)\nscripts/rtm.py set-due LIST_ID SERIES_ID TASK_ID \"next friday\"\n\n# Move between lists\nscripts/rtm.py move FROM_LIST_ID TO_LIST_ID SERIES_ID TASK_ID\n\n# Tags\nscripts/rtm.py add-tags LIST_ID SERIES_ID TASK_ID \"tag1,tag2\"\n\n# Search (RTM filter syntax)\nscripts/rtm.py search \"tag:work AND status:incomplete\"\n\n# Notes\nscripts/rtm.py notes-add LIST_ID SERIES_ID TASK_ID \"text\" --title \"Title\"\nscripts/rtm.py notes-delete NOTE_ID\n\nTask output format\n\nTask output includes IDs needed for write operations:\n\n  Task Name [P1] (due: 2025-03-15) #tag1 #tag2\n    list=12345 series=67890 task=11111\n    📝 Note Title (note_id=99999)\n    Note body text here\n\nRTM filter syntax\n\nCommon filters: status:incomplete, priority:1, tag:tagname, due:today, dueBefore:tomorrow, list:Inbox, isTagged:true, addedWithin:\"1 week\". Combine with AND, OR, NOT.\n\nFull reference: https://www.rememberthemilk.com/help/answers/search/advanced.rtm\n\nReliability\nAll API calls have a 15-second timeout with automatic retry (up to 3 attempts with backoff)\nTransient network errors are retried; permanent API errors exit immediately\nWrite operations (add, complete, delete, etc.) auto-create timelines"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/maxdraki/rtm",
    "publisherUrl": "https://clawhub.ai/maxdraki/rtm",
    "owner": "maxdraki",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/rtm",
    "downloadUrl": "https://openagent3.xyz/downloads/rtm",
    "agentUrl": "https://openagent3.xyz/skills/rtm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rtm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rtm/agent.md"
  }
}