{
  "schemaVersion": "1.0",
  "item": {
    "slug": "rem-cli",
    "name": "rem",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/BRO3886/rem-cli",
    "canonicalUrl": "https://clawhub.ai/BRO3886/rem-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/rem-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=rem-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/commands.md",
      "references/dates.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/rem-cli"
    },
    "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/rem-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/rem-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rem-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rem-cli/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": "rem — CLI for macOS Reminders",
        "body": "A Go CLI that wraps macOS Reminders. Sub-200ms reads via cgo + EventKit. Single binary, no dependencies at runtime."
      },
      {
        "title": "Installation",
        "body": "# macOS (recommended)\ncurl -fsSL https://rem.sidv.dev/install | bash\n\n# Or via Go\ngo install github.com/BRO3886/rem/cmd/rem@latest\n\nInstall this skill into your agent:\n\n# Claude Code or Codex\nrem skills install\n\n# OpenClaw\nrem skills install --agent openclaw"
      },
      {
        "title": "Quick Start",
        "body": "# See all lists with reminder counts\nrem lists --count\n\n# Add a reminder with natural language date\nrem add \"Buy groceries\" --list Personal --due tomorrow --priority high\n\n# List incomplete reminders in a list\nrem list --list Work --incomplete\n\n# Search across all reminders\nrem search \"meeting\"\n\n# Complete a reminder by short ID\nrem complete abc12345\n\n# View stats\nrem stats"
      },
      {
        "title": "Reminder CRUD",
        "body": "CommandAliasesDescriptionrem addcreate, newCreate a reminderrem listlsList reminders with filtersrem showgetShow full details of one reminderrem updateeditUpdate reminder propertiesrem deleterm, removeDelete a reminderrem completedoneMark reminder completerem uncomplete—Mark reminder incompleterem flag—Flag a reminderrem unflag—Remove flag"
      },
      {
        "title": "List Management",
        "body": "CommandAliasesDescriptionrem lists—Show all listsrem list-mgmt createlm newCreate a listrem list-mgmt rename—Rename a listrem list-mgmt deletelm rmDelete a list"
      },
      {
        "title": "Search & Analytics",
        "body": "CommandDescriptionrem search <query>Search title and notesrem statsShow statistics and per-list breakdownrem overdueShow overdue remindersrem upcomingShow reminders due in next N days (default: 7)"
      },
      {
        "title": "Import/Export",
        "body": "CommandDescriptionrem exportExport to JSON or CSVrem import <file>Import from JSON or CSV file"
      },
      {
        "title": "Skills & Other",
        "body": "CommandDescriptionrem skills installInstall rem skill for AI agentsrem skills uninstallUninstall rem skill from AI agentsrem skills statusShow skill installation statusrem interactive / rem iInteractive menu-driven moderem versionPrint versionrem completionGenerate shell completions (bash/zsh/fish)\n\nFor full flag details on every command, see references/commands.md."
      },
      {
        "title": "Short IDs",
        "body": "Reminders have UUIDs like x-apple-reminder://AB12CD34-.... The CLI displays the first 8 characters as a short ID (AB12CD34). You can pass any unique prefix to commands — rem complete AB1 works if it matches exactly one reminder."
      },
      {
        "title": "Natural Language Dates",
        "body": "The --due flag accepts natural language:\n\nrem add \"Call dentist\" --due tomorrow\nrem add \"Submit report\" --due \"next friday at 2pm\"\nrem add \"Quick task\" --due \"in 30 minutes\"\nrem add \"Wrap up\" --due eod\n\nSupported patterns: today, tomorrow, next monday, in 3 hours, eod, eow, 5pm, 2026-02-15, and more. See references/dates.md for the full list."
      },
      {
        "title": "Priority Levels",
        "body": "LevelFlag valueAppleScript valueHigh--priority high1 (range 1-4)Medium--priority medium5Low--priority low9 (range 6-9)None--priority none0"
      },
      {
        "title": "Output Formats",
        "body": "All read commands support -o / --output:\n\ntable (default) — formatted table with borders\njson — machine-readable JSON\nplain — simple text, one item per line\n\nThe NO_COLOR environment variable is respected."
      },
      {
        "title": "URL Storage",
        "body": "macOS Reminders has no native URL field. rem stores URLs in the notes/body field with a URL:  prefix and extracts them for display."
      },
      {
        "title": "Daily review",
        "body": "rem overdue                          # Check what's past due\nrem upcoming --days 1                # See today's reminders\nrem list --list Work --incomplete    # Focus on work items"
      },
      {
        "title": "Batch operations with JSON",
        "body": "rem export --list Work --format json > backup.json\nrem import backup.json --list \"Work Archive\""
      },
      {
        "title": "Scripting with JSON output",
        "body": "# Get overdue count\nrem overdue -o json | jq 'length'\n\n# List all incomplete reminder titles\nrem list --incomplete -o json | jq -r '.[].name'"
      },
      {
        "title": "Public Go API",
        "body": "For programmatic access, use go-eventkit directly:\n\nimport \"github.com/BRO3886/go-eventkit/reminders\"\n\nclient, _ := reminders.New()\nr, _ := client.CreateReminder(reminders.CreateReminderInput{\n    Title:    \"Buy milk\",\n    ListName: \"Shopping\",\n    Priority: reminders.PriorityHigh,\n})\nitems, _ := client.Reminders(reminders.WithCompleted(false))\n\nSee go-eventkit docs for the full API surface."
      },
      {
        "title": "Limitations",
        "body": "macOS only — requires EventKit framework and osascript\nNo tags, subtasks, or recurrence — not exposed by EventKit/AppleScript\n--flagged filter is slower (~3-4s) — falls back to JXA since EventKit doesn't expose flagged\nList deletion may fail on some macOS versions"
      }
    ],
    "body": "rem — CLI for macOS Reminders\n\nA Go CLI that wraps macOS Reminders. Sub-200ms reads via cgo + EventKit. Single binary, no dependencies at runtime.\n\nInstallation\n# macOS (recommended)\ncurl -fsSL https://rem.sidv.dev/install | bash\n\n# Or via Go\ngo install github.com/BRO3886/rem/cmd/rem@latest\n\n\nInstall this skill into your agent:\n\n# Claude Code or Codex\nrem skills install\n\n# OpenClaw\nrem skills install --agent openclaw\n\nQuick Start\n# See all lists with reminder counts\nrem lists --count\n\n# Add a reminder with natural language date\nrem add \"Buy groceries\" --list Personal --due tomorrow --priority high\n\n# List incomplete reminders in a list\nrem list --list Work --incomplete\n\n# Search across all reminders\nrem search \"meeting\"\n\n# Complete a reminder by short ID\nrem complete abc12345\n\n# View stats\nrem stats\n\nCommand Reference\nReminder CRUD\nCommand\tAliases\tDescription\nrem add\tcreate, new\tCreate a reminder\nrem list\tls\tList reminders with filters\nrem show\tget\tShow full details of one reminder\nrem update\tedit\tUpdate reminder properties\nrem delete\trm, remove\tDelete a reminder\nrem complete\tdone\tMark reminder complete\nrem uncomplete\t—\tMark reminder incomplete\nrem flag\t—\tFlag a reminder\nrem unflag\t—\tRemove flag\nList Management\nCommand\tAliases\tDescription\nrem lists\t—\tShow all lists\nrem list-mgmt create\tlm new\tCreate a list\nrem list-mgmt rename\t—\tRename a list\nrem list-mgmt delete\tlm rm\tDelete a list\nSearch & Analytics\nCommand\tDescription\nrem search <query>\tSearch title and notes\nrem stats\tShow statistics and per-list breakdown\nrem overdue\tShow overdue reminders\nrem upcoming\tShow reminders due in next N days (default: 7)\nImport/Export\nCommand\tDescription\nrem export\tExport to JSON or CSV\nrem import <file>\tImport from JSON or CSV file\nSkills & Other\nCommand\tDescription\nrem skills install\tInstall rem skill for AI agents\nrem skills uninstall\tUninstall rem skill from AI agents\nrem skills status\tShow skill installation status\nrem interactive / rem i\tInteractive menu-driven mode\nrem version\tPrint version\nrem completion\tGenerate shell completions (bash/zsh/fish)\n\nFor full flag details on every command, see references/commands.md.\n\nKey Concepts\nShort IDs\n\nReminders have UUIDs like x-apple-reminder://AB12CD34-.... The CLI displays the first 8 characters as a short ID (AB12CD34). You can pass any unique prefix to commands — rem complete AB1 works if it matches exactly one reminder.\n\nNatural Language Dates\n\nThe --due flag accepts natural language:\n\nrem add \"Call dentist\" --due tomorrow\nrem add \"Submit report\" --due \"next friday at 2pm\"\nrem add \"Quick task\" --due \"in 30 minutes\"\nrem add \"Wrap up\" --due eod\n\n\nSupported patterns: today, tomorrow, next monday, in 3 hours, eod, eow, 5pm, 2026-02-15, and more. See references/dates.md for the full list.\n\nPriority Levels\nLevel\tFlag value\tAppleScript value\nHigh\t--priority high\t1 (range 1-4)\nMedium\t--priority medium\t5\nLow\t--priority low\t9 (range 6-9)\nNone\t--priority none\t0\nOutput Formats\n\nAll read commands support -o / --output:\n\ntable (default) — formatted table with borders\njson — machine-readable JSON\nplain — simple text, one item per line\n\nThe NO_COLOR environment variable is respected.\n\nURL Storage\n\nmacOS Reminders has no native URL field. rem stores URLs in the notes/body field with a URL: prefix and extracts them for display.\n\nCommon Workflows\nDaily review\nrem overdue                          # Check what's past due\nrem upcoming --days 1                # See today's reminders\nrem list --list Work --incomplete    # Focus on work items\n\nBatch operations with JSON\nrem export --list Work --format json > backup.json\nrem import backup.json --list \"Work Archive\"\n\nScripting with JSON output\n# Get overdue count\nrem overdue -o json | jq 'length'\n\n# List all incomplete reminder titles\nrem list --incomplete -o json | jq -r '.[].name'\n\nPublic Go API\n\nFor programmatic access, use go-eventkit directly:\n\nimport \"github.com/BRO3886/go-eventkit/reminders\"\n\nclient, _ := reminders.New()\nr, _ := client.CreateReminder(reminders.CreateReminderInput{\n    Title:    \"Buy milk\",\n    ListName: \"Shopping\",\n    Priority: reminders.PriorityHigh,\n})\nitems, _ := client.Reminders(reminders.WithCompleted(false))\n\n\nSee go-eventkit docs for the full API surface.\n\nLimitations\nmacOS only — requires EventKit framework and osascript\nNo tags, subtasks, or recurrence — not exposed by EventKit/AppleScript\n--flagged filter is slower (~3-4s) — falls back to JXA since EventKit doesn't expose flagged\nList deletion may fail on some macOS versions"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/BRO3886/rem-cli",
    "publisherUrl": "https://clawhub.ai/BRO3886/rem-cli",
    "owner": "BRO3886",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/rem-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/rem-cli",
    "agentUrl": "https://openagent3.xyz/skills/rem-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rem-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rem-cli/agent.md"
  }
}