{
  "schemaVersion": "1.0",
  "item": {
    "slug": "icloud-reminders",
    "name": "iCloud Reminders",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/tarekbecker/icloud-reminders",
    "canonicalUrl": "https://clawhub.ai/tarekbecker/icloud-reminders",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/icloud-reminders",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=icloud-reminders",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/icloud-reminders"
    },
    "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/icloud-reminders",
    "agentPageUrl": "https://openagent3.xyz/skills/icloud-reminders/agent",
    "manifestUrl": "https://openagent3.xyz/skills/icloud-reminders/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/icloud-reminders/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": "iCloud Reminders (Go)",
        "body": "Access and manage Apple iCloud Reminders via CloudKit API. Full CRUD with hierarchical subtask support.\n\nPure Go — no Python or pyicloud required. Authentication, 2FA, session management and CloudKit API calls are all implemented natively in Go."
      },
      {
        "title": "Homebrew (Recommended)",
        "body": "brew tap tarekbecker/tap\nbrew install icloud-reminders\n\nUpgrade to the latest version:\n\nbrew upgrade icloud-reminders"
      },
      {
        "title": "Install Script",
        "body": "One-line install for any platform:\n\ncurl -sL https://github.com/tarekbecker/icloud-reminders-cli/releases/latest/download/install.sh | bash"
      },
      {
        "title": "Pre-built Binary",
        "body": "Download manually for your platform from GitHub Releases."
      },
      {
        "title": "Build from Source",
        "body": "Requires Go 1.22+:\n\nbash scripts/build.sh\nsudo cp go/reminders /usr/local/bin/\n\nDevelopment: Use scripts/reminders.sh from the repo root — it auto-builds the binary if missing and loads credentials from the credentials file automatically."
      },
      {
        "title": "Setup",
        "body": "Authenticate (interactive — required on first run):\nreminders auth\n\nCredentials are resolved in this order:\n\nICLOUD_USERNAME / ICLOUD_PASSWORD environment variables\n~/.config/icloud-reminders/credentials file (export KEY=value format)\nInteractive prompt (fallback)\n\n\n\nSession file (~/.config/icloud-reminders/session.json) is created automatically and reused. Run reminders auth again when the session expires."
      },
      {
        "title": "Commands",
        "body": "# First-time setup / force re-auth\nreminders auth\nreminders auth --force\n\n# List all active reminders (hierarchical)\nreminders list\n\n# Filter by list name\nreminders list -l \"🛒 Einkauf\"\n\n# Include completed\nreminders list --all          # or: -a\n\n# Show only children of a parent reminder (by name or short ID)\nreminders list --parent \"Supermarkt\"\nreminders list --parent ABC123DE\n\n# Search by title\nreminders search \"milk\"\n\n# Search including completed\nreminders search \"milk\" --all   # or: -a\n\n# Show all lists (with active counts and short IDs)\nreminders lists\n\n# Add reminder (-l is REQUIRED)\nreminders add \"Buy milk\" -l \"Einkauf\"\n\n# Add with due date and priority\nreminders add \"Call mom\" -l \"Einkauf\" --due 2026-02-25 --priority high\n\n# Add with notes\nreminders add \"Buy milk\" -l \"Einkauf\" --notes \"Get the organic 2% stuff\"\n\n# Add as subtask (-l is REQUIRED even for subtasks)\nreminders add \"Butter\" -l \"🛒 Einkauf\" --parent ABC123DE\n\n# Add multiple at once (batch; -l is REQUIRED)\nreminders add-batch \"Butter\" \"Käse\" \"Milch\" -l \"Einkauf\"\n\n# Add multiple as subtasks\nreminders add-batch \"Butter\" \"Käse\" -l \"Einkauf\" --parent ABC123DE\n\n# Complete reminder\nreminders complete abc123\n\n# Delete reminder\nreminders delete abc123\n\n# Export as JSON\nreminders json\n\n# Force full resync\nreminders sync\n\n# Export session cookies (share without password)\nreminders export-session session.tar.gz\n\n# Import session from export\nreminders import-session session.tar.gz\n\n# Verbose output (any command)\nreminders list -v"
      },
      {
        "title": "Session Management",
        "body": "The binary handles sessions automatically:\n\nOn each run: tries accountLogin with saved cookies to get a fresh CloudKit URL\nOn failure / first run: triggers full interactive signin + 2FA\nTrust token: saved after 2FA so subsequent logins don't require a code\nSession file: ~/.config/icloud-reminders/session.json"
      },
      {
        "title": "Output Format",
        "body": "✅ Reminders: 101 (101 active)\n\n📋 Shopping (12)\n  • Supermarket  (ABC123DE)\n    • Butter  (FGH456IJ)\n    • Cheese  (KLM789NO)\n  • Drugstore  (PQR012ST)\n    • Baking paper  (UVW345XY)\n\nIDs (8-char) in parentheses — use for complete, delete, --parent."
      },
      {
        "title": "Cache & Sync",
        "body": "Cache: ~/.config/icloud-reminders/ck_cache.json (same JSON format as Python version — shared/compatible)\nDelta sync: Fast incremental updates (default)\nFull sync: reminders sync — can take ~2 min for large accounts"
      },
      {
        "title": "Architecture",
        "body": "scripts/\n├── reminders.sh            # Dev wrapper (auto-builds + loads creds)\n├── build.sh                # Build script\n├── install.sh              # Install script (used by curl | bash one-liner)\n└── reminders               # Compiled Go binary (generated)\n\ngo/\n├── main.go                 # Entry point\n├── auth/auth.go            # Native iCloud auth (signin, 2FA, trust, accountLogin)\n├── cloudkit/client.go      # CloudKit HTTP API client\n├── sync/sync.go            # Delta sync engine\n├── writer/writer.go        # Write ops (add/complete/delete)\n├── cache/cache.go          # Local JSON cache\n├── models/models.go        # Data types\n├── utils/utils.go          # CRDT title encoding, timestamps\n└── cmd/                    # Cobra CLI commands\n    ├── root.go             # Root command; global --verbose / -v flag\n    ├── auth.go             # reminders auth [--force]\n    ├── list.go             # reminders list [-l] [--parent] [--all/-a]\n    ├── lists.go            # reminders lists\n    ├── search.go           # reminders search [--all/-a]\n    ├── add.go              # reminders add / add-batch (both require -l)\n    ├── complete.go         # reminders complete <id>\n    ├── delete.go           # reminders delete <id>\n    ├── json_cmd.go         # reminders json\n    ├── sync.go             # reminders sync\n    ├── export_session.go   # reminders export-session\n    └── import_session.go   # reminders import-session"
      },
      {
        "title": "Troubleshooting",
        "body": "IssueSolution\"not authenticated\"Run reminders auth\"invalid Apple ID or password\"Check credentials file\"2FA failed\"Re-run auth, enter a fresh code\"Missing change tag\"Run reminders sync\"List not found\"Check name with reminders listsBinary not foundRun bash scripts/build.sh or check your PATH"
      }
    ],
    "body": "iCloud Reminders (Go)\n\nAccess and manage Apple iCloud Reminders via CloudKit API. Full CRUD with hierarchical subtask support.\n\nPure Go — no Python or pyicloud required. Authentication, 2FA, session management and CloudKit API calls are all implemented natively in Go.\n\nInstallation\nHomebrew (Recommended)\nbrew tap tarekbecker/tap\nbrew install icloud-reminders\n\n\nUpgrade to the latest version:\n\nbrew upgrade icloud-reminders\n\nInstall Script\n\nOne-line install for any platform:\n\ncurl -sL https://github.com/tarekbecker/icloud-reminders-cli/releases/latest/download/install.sh | bash\n\nPre-built Binary\n\nDownload manually for your platform from GitHub Releases.\n\nBuild from Source\n\nRequires Go 1.22+:\n\nbash scripts/build.sh\nsudo cp go/reminders /usr/local/bin/\n\n\nDevelopment: Use scripts/reminders.sh from the repo root — it auto-builds the binary if missing and loads credentials from the credentials file automatically.\n\nSetup\n\nAuthenticate (interactive — required on first run):\n\nreminders auth\n\n\nCredentials are resolved in this order:\n\nICLOUD_USERNAME / ICLOUD_PASSWORD environment variables\n~/.config/icloud-reminders/credentials file (export KEY=value format)\nInteractive prompt (fallback)\n\nSession file (~/.config/icloud-reminders/session.json) is created automatically and reused. Run reminders auth again when the session expires.\n\nCommands\n# First-time setup / force re-auth\nreminders auth\nreminders auth --force\n\n# List all active reminders (hierarchical)\nreminders list\n\n# Filter by list name\nreminders list -l \"🛒 Einkauf\"\n\n# Include completed\nreminders list --all          # or: -a\n\n# Show only children of a parent reminder (by name or short ID)\nreminders list --parent \"Supermarkt\"\nreminders list --parent ABC123DE\n\n# Search by title\nreminders search \"milk\"\n\n# Search including completed\nreminders search \"milk\" --all   # or: -a\n\n# Show all lists (with active counts and short IDs)\nreminders lists\n\n# Add reminder (-l is REQUIRED)\nreminders add \"Buy milk\" -l \"Einkauf\"\n\n# Add with due date and priority\nreminders add \"Call mom\" -l \"Einkauf\" --due 2026-02-25 --priority high\n\n# Add with notes\nreminders add \"Buy milk\" -l \"Einkauf\" --notes \"Get the organic 2% stuff\"\n\n# Add as subtask (-l is REQUIRED even for subtasks)\nreminders add \"Butter\" -l \"🛒 Einkauf\" --parent ABC123DE\n\n# Add multiple at once (batch; -l is REQUIRED)\nreminders add-batch \"Butter\" \"Käse\" \"Milch\" -l \"Einkauf\"\n\n# Add multiple as subtasks\nreminders add-batch \"Butter\" \"Käse\" -l \"Einkauf\" --parent ABC123DE\n\n# Complete reminder\nreminders complete abc123\n\n# Delete reminder\nreminders delete abc123\n\n# Export as JSON\nreminders json\n\n# Force full resync\nreminders sync\n\n# Export session cookies (share without password)\nreminders export-session session.tar.gz\n\n# Import session from export\nreminders import-session session.tar.gz\n\n# Verbose output (any command)\nreminders list -v\n\nSession Management\n\nThe binary handles sessions automatically:\n\nOn each run: tries accountLogin with saved cookies to get a fresh CloudKit URL\nOn failure / first run: triggers full interactive signin + 2FA\nTrust token: saved after 2FA so subsequent logins don't require a code\nSession file: ~/.config/icloud-reminders/session.json\nOutput Format\n✅ Reminders: 101 (101 active)\n\n📋 Shopping (12)\n  • Supermarket  (ABC123DE)\n    • Butter  (FGH456IJ)\n    • Cheese  (KLM789NO)\n  • Drugstore  (PQR012ST)\n    • Baking paper  (UVW345XY)\n\n\nIDs (8-char) in parentheses — use for complete, delete, --parent.\n\nCache & Sync\nCache: ~/.config/icloud-reminders/ck_cache.json (same JSON format as Python version — shared/compatible)\nDelta sync: Fast incremental updates (default)\nFull sync: reminders sync — can take ~2 min for large accounts\nArchitecture\nscripts/\n├── reminders.sh            # Dev wrapper (auto-builds + loads creds)\n├── build.sh                # Build script\n├── install.sh              # Install script (used by curl | bash one-liner)\n└── reminders               # Compiled Go binary (generated)\n\ngo/\n├── main.go                 # Entry point\n├── auth/auth.go            # Native iCloud auth (signin, 2FA, trust, accountLogin)\n├── cloudkit/client.go      # CloudKit HTTP API client\n├── sync/sync.go            # Delta sync engine\n├── writer/writer.go        # Write ops (add/complete/delete)\n├── cache/cache.go          # Local JSON cache\n├── models/models.go        # Data types\n├── utils/utils.go          # CRDT title encoding, timestamps\n└── cmd/                    # Cobra CLI commands\n    ├── root.go             # Root command; global --verbose / -v flag\n    ├── auth.go             # reminders auth [--force]\n    ├── list.go             # reminders list [-l] [--parent] [--all/-a]\n    ├── lists.go            # reminders lists\n    ├── search.go           # reminders search [--all/-a]\n    ├── add.go              # reminders add / add-batch (both require -l)\n    ├── complete.go         # reminders complete <id>\n    ├── delete.go           # reminders delete <id>\n    ├── json_cmd.go         # reminders json\n    ├── sync.go             # reminders sync\n    ├── export_session.go   # reminders export-session\n    └── import_session.go   # reminders import-session\n\nTroubleshooting\nIssue\tSolution\n\"not authenticated\"\tRun reminders auth\n\"invalid Apple ID or password\"\tCheck credentials file\n\"2FA failed\"\tRe-run auth, enter a fresh code\n\"Missing change tag\"\tRun reminders sync\n\"List not found\"\tCheck name with reminders lists\nBinary not found\tRun bash scripts/build.sh or check your PATH"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tarekbecker/icloud-reminders",
    "publisherUrl": "https://clawhub.ai/tarekbecker/icloud-reminders",
    "owner": "tarekbecker",
    "version": "0.1.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/icloud-reminders",
    "downloadUrl": "https://openagent3.xyz/downloads/icloud-reminders",
    "agentUrl": "https://openagent3.xyz/skills/icloud-reminders/agent",
    "manifestUrl": "https://openagent3.xyz/skills/icloud-reminders/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/icloud-reminders/agent.md"
  }
}