{
  "schemaVersion": "1.0",
  "item": {
    "slug": "macos-calendar",
    "name": "macOS Calendar",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/lucaperret/macos-calendar",
    "canonicalUrl": "https://clawhub.ai/lucaperret/macos-calendar",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/macos-calendar",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=macos-calendar",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/recurrence.md",
      "scripts/calendar.sh"
    ],
    "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/macos-calendar"
    },
    "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/macos-calendar",
    "agentPageUrl": "https://openagent3.xyz/skills/macos-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/macos-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/macos-calendar/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": "macOS Calendar",
        "body": "Manage Apple Calendar events via $SKILL_DIR/scripts/calendar.sh. All date handling uses relative math (current date + N * days) to avoid locale issues (FR/EN/DE date formats)."
      },
      {
        "title": "List calendars",
        "body": "Always list calendars first to find the correct calendar name:\n\n\"$SKILL_DIR/scripts/calendar.sh\" list-calendars"
      },
      {
        "title": "Create an event",
        "body": "echo '<json>' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\nJSON fields:\n\nFieldRequiredDefaultDescriptionsummaryyes-Event titlecalendarnofirst calendarCalendar name (from list-calendars)descriptionno\"\"Event notesoffset_daysno0Days from today (0=today, 1=tomorrow, 7=next week)iso_dateno-Absolute date YYYY-MM-DD (overrides offset_days)hourno9Start hour (0-23)minuteno0Start minute (0-59)duration_minutesno30Durationalarm_minutesno0Alert N minutes before (0=no alarm)all_daynofalseAll-day eventrecurrenceno-iCal RRULE string. See references/recurrence.md"
      },
      {
        "title": "Interpreting natural language",
        "body": "Map user requests to JSON fields:\n\nUser saysJSON\"tomorrow at 2pm\"offset_days: 1, hour: 14\"in 3 days\"offset_days: 3\"next Monday at 10am\"Calculate offset_days from today to next Monday, hour: 10\"February 25 at 3:30pm\"iso_date: \"2026-02-25\", hour: 15, minute: 30\"every weekday at 9am\"hour: 9, recurrence: \"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR\"\"remind me 1 hour before\"alarm_minutes: 60\"all day event on March 1\"iso_date: \"2026-03-01\", all_day: true\n\nFor \"next Monday\", \"next Friday\" etc: compute the day offset using the current date. Use date command if needed:\n\n# Days until next Monday (1=Monday)\ntarget=1; today=$(date +%u); echo $(( (target - today + 7) % 7 ))"
      },
      {
        "title": "Example prompts",
        "body": "These are real user prompts and the commands you should run:\n\n\"Remind me to call the dentist in 2 days\"\n\n\"$SKILL_DIR/scripts/calendar.sh\" list-calendars\n\nThen:\n\necho '{\"calendar\":\"Personnel\",\"summary\":\"Call dentist\",\"offset_days\":2,\"hour\":9,\"duration_minutes\":15,\"alarm_minutes\":30}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\"Schedule a team sync every Tuesday at 2pm with a 10-min reminder\"\n\necho '{\"calendar\":\"Work\",\"summary\":\"Team sync\",\"hour\":14,\"duration_minutes\":60,\"recurrence\":\"FREQ=WEEKLY;BYDAY=TU\",\"alarm_minutes\":10}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\"Block July 15 as a vacation day\"\n\necho '{\"calendar\":\"Personnel\",\"summary\":\"Vacances\",\"iso_date\":\"2026-07-15\",\"all_day\":true}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\"I have a doctor appointment next Thursday at 3:30pm, remind me 1 hour before\"\n\n# First compute offset_days to next Thursday (4=Thursday)\ntarget=4; today=$(date +%u); offset=$(( (target - today + 7) % 7 )); [ \"$offset\" -eq 0 ] && offset=7\n\nThen:\n\necho \"{\\\"calendar\\\":\\\"Personnel\\\",\\\"summary\\\":\\\"Doctor appointment\\\",\\\"offset_days\\\":$offset,\\\"hour\\\":15,\\\"minute\\\":30,\\\"duration_minutes\\\":60,\\\"alarm_minutes\\\":60}\" | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\"Set up a daily standup at 9am on weekdays for the next 4 weeks\"\n\necho '{\"calendar\":\"Work\",\"summary\":\"Daily standup\",\"hour\":9,\"duration_minutes\":15,\"recurrence\":\"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20\"}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\"Add a biweekly 1-on-1 with my manager on Fridays at 11am\"\n\necho '{\"calendar\":\"Work\",\"summary\":\"1-on-1 Manager\",\"hour\":11,\"duration_minutes\":30,\"recurrence\":\"FREQ=WEEKLY;INTERVAL=2;BYDAY=FR\",\"alarm_minutes\":5}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event"
      },
      {
        "title": "Critical rules",
        "body": "Always list calendars first if the user hasn't specified one — calendars marked [read-only] cannot be used for event creation\nNever use hardcoded date strings in AppleScript — always use offset_days or iso_date\nConfirm the calendar name with the user if multiple personal calendars exist\nNever target a [read-only] calendar — the script will reject it with an error\nFor recurring events, consult references/recurrence.md for RRULE syntax\nPass JSON via stdin — never as a CLI argument (avoids leaking data in process list)\nAll fields are validated by the script (type coercion, range checks, format validation) — invalid input is rejected with an error message\nAll actions are logged to logs/calendar.log with timestamp, command, calendar, and summary"
      }
    ],
    "body": "macOS Calendar\n\nManage Apple Calendar events via $SKILL_DIR/scripts/calendar.sh. All date handling uses relative math (current date + N * days) to avoid locale issues (FR/EN/DE date formats).\n\nQuick start\nList calendars\n\nAlways list calendars first to find the correct calendar name:\n\n\"$SKILL_DIR/scripts/calendar.sh\" list-calendars\n\nCreate an event\necho '<json>' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\nJSON fields:\n\nField\tRequired\tDefault\tDescription\nsummary\tyes\t-\tEvent title\ncalendar\tno\tfirst calendar\tCalendar name (from list-calendars)\ndescription\tno\t\"\"\tEvent notes\noffset_days\tno\t0\tDays from today (0=today, 1=tomorrow, 7=next week)\niso_date\tno\t-\tAbsolute date YYYY-MM-DD (overrides offset_days)\nhour\tno\t9\tStart hour (0-23)\nminute\tno\t0\tStart minute (0-59)\nduration_minutes\tno\t30\tDuration\nalarm_minutes\tno\t0\tAlert N minutes before (0=no alarm)\nall_day\tno\tfalse\tAll-day event\nrecurrence\tno\t-\tiCal RRULE string. See references/recurrence.md\nInterpreting natural language\n\nMap user requests to JSON fields:\n\nUser says\tJSON\n\"tomorrow at 2pm\"\toffset_days: 1, hour: 14\n\"in 3 days\"\toffset_days: 3\n\"next Monday at 10am\"\tCalculate offset_days from today to next Monday, hour: 10\n\"February 25 at 3:30pm\"\tiso_date: \"2026-02-25\", hour: 15, minute: 30\n\"every weekday at 9am\"\thour: 9, recurrence: \"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR\"\n\"remind me 1 hour before\"\talarm_minutes: 60\n\"all day event on March 1\"\tiso_date: \"2026-03-01\", all_day: true\n\nFor \"next Monday\", \"next Friday\" etc: compute the day offset using the current date. Use date command if needed:\n\n# Days until next Monday (1=Monday)\ntarget=1; today=$(date +%u); echo $(( (target - today + 7) % 7 ))\n\nExample prompts\n\nThese are real user prompts and the commands you should run:\n\n\"Remind me to call the dentist in 2 days\"\n\n\"$SKILL_DIR/scripts/calendar.sh\" list-calendars\n\n\nThen:\n\necho '{\"calendar\":\"Personnel\",\"summary\":\"Call dentist\",\"offset_days\":2,\"hour\":9,\"duration_minutes\":15,\"alarm_minutes\":30}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\n\"Schedule a team sync every Tuesday at 2pm with a 10-min reminder\"\n\necho '{\"calendar\":\"Work\",\"summary\":\"Team sync\",\"hour\":14,\"duration_minutes\":60,\"recurrence\":\"FREQ=WEEKLY;BYDAY=TU\",\"alarm_minutes\":10}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\n\"Block July 15 as a vacation day\"\n\necho '{\"calendar\":\"Personnel\",\"summary\":\"Vacances\",\"iso_date\":\"2026-07-15\",\"all_day\":true}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\n\"I have a doctor appointment next Thursday at 3:30pm, remind me 1 hour before\"\n\n# First compute offset_days to next Thursday (4=Thursday)\ntarget=4; today=$(date +%u); offset=$(( (target - today + 7) % 7 )); [ \"$offset\" -eq 0 ] && offset=7\n\n\nThen:\n\necho \"{\\\"calendar\\\":\\\"Personnel\\\",\\\"summary\\\":\\\"Doctor appointment\\\",\\\"offset_days\\\":$offset,\\\"hour\\\":15,\\\"minute\\\":30,\\\"duration_minutes\\\":60,\\\"alarm_minutes\\\":60}\" | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\n\"Set up a daily standup at 9am on weekdays for the next 4 weeks\"\n\necho '{\"calendar\":\"Work\",\"summary\":\"Daily standup\",\"hour\":9,\"duration_minutes\":15,\"recurrence\":\"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20\"}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\n\n\"Add a biweekly 1-on-1 with my manager on Fridays at 11am\"\n\necho '{\"calendar\":\"Work\",\"summary\":\"1-on-1 Manager\",\"hour\":11,\"duration_minutes\":30,\"recurrence\":\"FREQ=WEEKLY;INTERVAL=2;BYDAY=FR\",\"alarm_minutes\":5}' | \"$SKILL_DIR/scripts/calendar.sh\" create-event\n\nCritical rules\nAlways list calendars first if the user hasn't specified one — calendars marked [read-only] cannot be used for event creation\nNever use hardcoded date strings in AppleScript — always use offset_days or iso_date\nConfirm the calendar name with the user if multiple personal calendars exist\nNever target a [read-only] calendar — the script will reject it with an error\nFor recurring events, consult references/recurrence.md for RRULE syntax\nPass JSON via stdin — never as a CLI argument (avoids leaking data in process list)\nAll fields are validated by the script (type coercion, range checks, format validation) — invalid input is rejected with an error message\nAll actions are logged to logs/calendar.log with timestamp, command, calendar, and summary"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/lucaperret/macos-calendar",
    "publisherUrl": "https://clawhub.ai/lucaperret/macos-calendar",
    "owner": "lucaperret",
    "version": "1.2.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/macos-calendar",
    "downloadUrl": "https://openagent3.xyz/downloads/macos-calendar",
    "agentUrl": "https://openagent3.xyz/skills/macos-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/macos-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/macos-calendar/agent.md"
  }
}