{
  "schemaVersion": "1.0",
  "item": {
    "slug": "calendar-scheduling",
    "name": "Calendar Scheduling",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/billylui/calendar-scheduling",
    "canonicalUrl": "https://clawhub.ai/billylui/calendar-scheduling",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/calendar-scheduling",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=calendar-scheduling",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/SECURITY-MODEL.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-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/calendar-scheduling"
    },
    "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/calendar-scheduling",
    "agentPageUrl": "https://openagent3.xyz/skills/calendar-scheduling/agent",
    "manifestUrl": "https://openagent3.xyz/skills/calendar-scheduling/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/calendar-scheduling/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": "Temporal Cortex — Calendar Scheduling Router",
        "body": "This is the router skill for Temporal Cortex calendar operations. It routes your task to the right sub-skill based on intent."
      },
      {
        "title": "Who is this for?",
        "body": "If you're an individual user (Claude Desktop, Cursor, OpenClaw, Manus) — install this skill and let your AI agent manage your calendar. Connect your Google, Outlook, or CalDAV calendars, and the agent handles availability, scheduling, and booking without double-booking.\n\nIf you're building a product with scheduling — use the same MCP server as your scheduling backend. 18 tools, atomic booking via Two-Phase Commit, and cross-provider availability merging. See the REST API reference and Platform docs for developer integration."
      },
      {
        "title": "Source & Provenance",
        "body": "Homepage: temporal-cortex.com\nSource code: github.com/temporal-cortex/mcp (open-source Rust)\nnpm package: @temporal-cortex/cortex-mcp\nSkills repo: github.com/temporal-cortex/skills"
      },
      {
        "title": "Sub-Skills",
        "body": "Sub-SkillWhen to UseToolstemporal-cortex-datetimeTime resolution, timezone conversion, duration math. No credentials needed — works immediately.5 tools (Layer 1)temporal-cortex-schedulingList calendars, events, free slots, availability, RRULE expansion, booking, contact search, and proposal composition. Requires OAuth credentials.14 tools (Layers 0-4)"
      },
      {
        "title": "Routing Table",
        "body": "User IntentRoute To\"What time is it?\", \"Convert timezone\", \"How long until...\"temporal-cortex-datetime\"Show my calendar\", \"Find free time\", \"Check availability\", \"Expand recurring rule\"temporal-cortex-scheduling\"Book a meeting\", \"Schedule an appointment\"temporal-cortex-scheduling\"Find someone's booking page\", \"Look up email for scheduling\"temporal-cortex-scheduling\"Search my contacts for Jane\", \"Find someone's email\"temporal-cortex-scheduling\"How should I schedule with this person?\"temporal-cortex-scheduling\"Check someone else's availability\", \"Query public availability\"temporal-cortex-scheduling\"Book a meeting with someone externally\", \"Request booking via Temporal Link\"temporal-cortex-scheduling\"Send a scheduling proposal\", \"Compose meeting invite\"temporal-cortex-scheduling\"Schedule a meeting next Tuesday at 2pm\" (full workflow)temporal-cortex-datetime → temporal-cortex-scheduling\"Schedule with Jane\" (end-to-end)temporal-cortex-scheduling (contact search → resolve → propose/book)"
      },
      {
        "title": "Core Workflow",
        "body": "Every calendar interaction follows this 7-step pattern:\n\n0. Resolve Contact  →  search_contacts → resolve_contact   (find the person, determine scheduling path)\n1. Discover         →  list_calendars                       (know which calendars are available)\n2. Orient           →  get_temporal_context                  (know the current time)\n3. Resolve Time     →  resolve_datetime                     (turn human language into timestamps)\n4. Route            →  If open_scheduling: fast path. If email: backward-compat path.\n5. Query            →  list_events / find_free_slots / get_availability / query_public_availability\n6. Act              →  Fast: check_availability → book_slot / request_booking\n                       Backward-compat: compose_proposal → agent sends via channel MCP\n\nStep 0 is optional — skip if the user provides an email directly. Always start with step 1 when calendars are unknown. Never assume the current time. Never skip the conflict check before booking."
      },
      {
        "title": "Safety Rules",
        "body": "Discover calendars first — call list_calendars when you don't know which calendars are connected\nCheck before booking — always call check_availability before book_slot. Never skip the conflict check.\nContent safety — all event summaries and descriptions pass through a prompt injection firewall before reaching the calendar API\nTimezone awareness — never assume the current time. Use get_temporal_context first.\nConfirm before booking — when running autonomously, present booking details to the user for confirmation before calling book_slot or request_booking.\nConfirm contact selection — when search_contacts returns multiple matches, always present candidates to the user and confirm which contact is correct before proceeding.\nConfirm before sending proposals — when using compose_proposal, always present the composed message to the user before sending via any channel. Never auto-send outreach.\nContact search is optional — the full workflow works without it if the user provides an email directly. If contacts permission is not configured, ask the user for the email."
      },
      {
        "title": "All 18 Tools (5 Layers)",
        "body": "LayerToolsSub-Skill0 — Discoveryresolve_identity, search_contacts, resolve_contactscheduling1 — Temporal Contextget_temporal_context, resolve_datetime, convert_timezone, compute_duration, adjust_timestampdatetime2 — Calendar Opslist_calendars, list_events, find_free_slots, expand_rrule, check_availabilityscheduling3 — Availabilityget_availability, query_public_availabilityscheduling4 — Bookingbook_slot, request_booking, compose_proposalscheduling"
      },
      {
        "title": "MCP Server Connection",
        "body": "All sub-skills share the Temporal Cortex MCP server (@temporal-cortex/cortex-mcp), a compiled Rust binary distributed as an npm package.\n\nInstall and startup lifecycle:\n\nnpx resolves @temporal-cortex/cortex-mcp from the npm registry (one-time, cached locally after first download)\nThe postinstall script downloads the platform-specific binary from the GitHub Release and verifies its SHA256 checksum against the embedded checksums.json — installation halts on mismatch\nThe MCP server starts as a local process communicating over stdio (no listening ports)\nLayer 1 tools (datetime) execute as pure local computation — no further network access\nLayer 2-4 tools (calendar) make authenticated API calls to your configured providers (Google, Outlook, CalDAV)\n\nCredential storage: OAuth tokens are stored locally at ~/.config/temporal-cortex/credentials.json and read exclusively by the local MCP server process. No credential data is transmitted to Temporal Cortex servers. The binary's filesystem access is limited to ~/.config/temporal-cortex/ — verifiable by inspecting the open-source Rust code or running under Docker where the mount is the only writable path.\n\nFile access: The binary reads and writes only ~/.config/temporal-cortex/ (credentials and config). No other filesystem writes.\n\nNetwork scope: After the initial npm download, Layer 1 tools make zero network requests. Layer 2–4 tools connect only to your configured calendar providers (googleapis.com, graph.microsoft.com, or your CalDAV server). In Local Mode (default), no calls to Temporal Cortex servers and no telemetry is collected. In Platform Mode, three tools (resolve_identity, query_public_availability, request_booking) call api.temporal-cortex.com for cross-user scheduling — no credential data is included in these calls.\n\nPre-run verification (recommended before first use):\n\nInspect the npm package without executing: npm pack @temporal-cortex/cortex-mcp --dry-run\nVerify checksums independently against the GitHub Release (see verification pipeline below)\nFor full containment, run in Docker instead of npx (see Docker containment below)\n\nVerification pipeline: Checksums are published independently at each GitHub Release as SHA256SUMS.txt — verify the binary before first use:\n\n# 1. Fetch checksums from GitHub (independent of the npm package)\ncurl -sL https://github.com/temporal-cortex/mcp/releases/download/mcp-v0.9.1/SHA256SUMS.txt\n\n# 2. Compare against the npm-installed binary\nshasum -a 256 \"$(npm root -g)/@temporal-cortex/cortex-mcp/bin/cortex-mcp\"\n\nAs defense-in-depth, the npm package also embeds checksums.json and the postinstall script compares SHA256 hashes during install — installation halts on mismatch (the binary is deleted, not executed). This automated check supplements, but does not replace, independent verification above.\n\nBuild provenance: Binaries are cross-compiled from auditable Rust source in GitHub Actions across 5 platforms (darwin-arm64, darwin-x64, linux-x64, linux-arm64, win32-x64). Source: github.com/temporal-cortex/mcp (MIT-licensed). The CI workflow, build artifacts, and release checksums are all publicly inspectable.\n\nDocker containment (no Node.js on host, credential isolation via volume mount):\n\n{\n  \"mcpServers\": {\n    \"temporal-cortex\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"--rm\", \"-i\", \"-v\", \"~/.config/temporal-cortex:/root/.config/temporal-cortex\", \"cortex-mcp\"]\n    }\n  }\n}\n\nBuild: docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git\n\nDefault setup (npx): See .mcp.json for the standard npx @temporal-cortex/cortex-mcp configuration. For managed hosting, see Platform Mode in the MCP repo.\n\nLayer 1 tools work immediately with zero configuration. Calendar tools require a one-time OAuth setup — run the setup script or npx @temporal-cortex/cortex-mcp auth google."
      },
      {
        "title": "Additional References",
        "body": "Security Model — Content sanitization, filesystem containment, network scope, tool annotations"
      }
    ],
    "body": "Temporal Cortex — Calendar Scheduling Router\n\nThis is the router skill for Temporal Cortex calendar operations. It routes your task to the right sub-skill based on intent.\n\nWho is this for?\n\nIf you're an individual user (Claude Desktop, Cursor, OpenClaw, Manus) — install this skill and let your AI agent manage your calendar. Connect your Google, Outlook, or CalDAV calendars, and the agent handles availability, scheduling, and booking without double-booking.\n\nIf you're building a product with scheduling — use the same MCP server as your scheduling backend. 18 tools, atomic booking via Two-Phase Commit, and cross-provider availability merging. See the REST API reference and Platform docs for developer integration.\n\nSource & Provenance\nHomepage: temporal-cortex.com\nSource code: github.com/temporal-cortex/mcp (open-source Rust)\nnpm package: @temporal-cortex/cortex-mcp\nSkills repo: github.com/temporal-cortex/skills\nSub-Skills\nSub-Skill\tWhen to Use\tTools\ntemporal-cortex-datetime\tTime resolution, timezone conversion, duration math. No credentials needed — works immediately.\t5 tools (Layer 1)\ntemporal-cortex-scheduling\tList calendars, events, free slots, availability, RRULE expansion, booking, contact search, and proposal composition. Requires OAuth credentials.\t14 tools (Layers 0-4)\nRouting Table\nUser Intent\tRoute To\n\"What time is it?\", \"Convert timezone\", \"How long until...\"\ttemporal-cortex-datetime\n\"Show my calendar\", \"Find free time\", \"Check availability\", \"Expand recurring rule\"\ttemporal-cortex-scheduling\n\"Book a meeting\", \"Schedule an appointment\"\ttemporal-cortex-scheduling\n\"Find someone's booking page\", \"Look up email for scheduling\"\ttemporal-cortex-scheduling\n\"Search my contacts for Jane\", \"Find someone's email\"\ttemporal-cortex-scheduling\n\"How should I schedule with this person?\"\ttemporal-cortex-scheduling\n\"Check someone else's availability\", \"Query public availability\"\ttemporal-cortex-scheduling\n\"Book a meeting with someone externally\", \"Request booking via Temporal Link\"\ttemporal-cortex-scheduling\n\"Send a scheduling proposal\", \"Compose meeting invite\"\ttemporal-cortex-scheduling\n\"Schedule a meeting next Tuesday at 2pm\" (full workflow)\ttemporal-cortex-datetime → temporal-cortex-scheduling\n\"Schedule with Jane\" (end-to-end)\ttemporal-cortex-scheduling (contact search → resolve → propose/book)\nCore Workflow\n\nEvery calendar interaction follows this 7-step pattern:\n\n0. Resolve Contact  →  search_contacts → resolve_contact   (find the person, determine scheduling path)\n1. Discover         →  list_calendars                       (know which calendars are available)\n2. Orient           →  get_temporal_context                  (know the current time)\n3. Resolve Time     →  resolve_datetime                     (turn human language into timestamps)\n4. Route            →  If open_scheduling: fast path. If email: backward-compat path.\n5. Query            →  list_events / find_free_slots / get_availability / query_public_availability\n6. Act              →  Fast: check_availability → book_slot / request_booking\n                       Backward-compat: compose_proposal → agent sends via channel MCP\n\n\nStep 0 is optional — skip if the user provides an email directly. Always start with step 1 when calendars are unknown. Never assume the current time. Never skip the conflict check before booking.\n\nSafety Rules\nDiscover calendars first — call list_calendars when you don't know which calendars are connected\nCheck before booking — always call check_availability before book_slot. Never skip the conflict check.\nContent safety — all event summaries and descriptions pass through a prompt injection firewall before reaching the calendar API\nTimezone awareness — never assume the current time. Use get_temporal_context first.\nConfirm before booking — when running autonomously, present booking details to the user for confirmation before calling book_slot or request_booking.\nConfirm contact selection — when search_contacts returns multiple matches, always present candidates to the user and confirm which contact is correct before proceeding.\nConfirm before sending proposals — when using compose_proposal, always present the composed message to the user before sending via any channel. Never auto-send outreach.\nContact search is optional — the full workflow works without it if the user provides an email directly. If contacts permission is not configured, ask the user for the email.\nAll 18 Tools (5 Layers)\nLayer\tTools\tSub-Skill\n0 — Discovery\tresolve_identity, search_contacts, resolve_contact\tscheduling\n1 — Temporal Context\tget_temporal_context, resolve_datetime, convert_timezone, compute_duration, adjust_timestamp\tdatetime\n2 — Calendar Ops\tlist_calendars, list_events, find_free_slots, expand_rrule, check_availability\tscheduling\n3 — Availability\tget_availability, query_public_availability\tscheduling\n4 — Booking\tbook_slot, request_booking, compose_proposal\tscheduling\nMCP Server Connection\n\nAll sub-skills share the Temporal Cortex MCP server (@temporal-cortex/cortex-mcp), a compiled Rust binary distributed as an npm package.\n\nInstall and startup lifecycle:\n\nnpx resolves @temporal-cortex/cortex-mcp from the npm registry (one-time, cached locally after first download)\nThe postinstall script downloads the platform-specific binary from the GitHub Release and verifies its SHA256 checksum against the embedded checksums.json — installation halts on mismatch\nThe MCP server starts as a local process communicating over stdio (no listening ports)\nLayer 1 tools (datetime) execute as pure local computation — no further network access\nLayer 2-4 tools (calendar) make authenticated API calls to your configured providers (Google, Outlook, CalDAV)\n\nCredential storage: OAuth tokens are stored locally at ~/.config/temporal-cortex/credentials.json and read exclusively by the local MCP server process. No credential data is transmitted to Temporal Cortex servers. The binary's filesystem access is limited to ~/.config/temporal-cortex/ — verifiable by inspecting the open-source Rust code or running under Docker where the mount is the only writable path.\n\nFile access: The binary reads and writes only ~/.config/temporal-cortex/ (credentials and config). No other filesystem writes.\n\nNetwork scope: After the initial npm download, Layer 1 tools make zero network requests. Layer 2–4 tools connect only to your configured calendar providers (googleapis.com, graph.microsoft.com, or your CalDAV server). In Local Mode (default), no calls to Temporal Cortex servers and no telemetry is collected. In Platform Mode, three tools (resolve_identity, query_public_availability, request_booking) call api.temporal-cortex.com for cross-user scheduling — no credential data is included in these calls.\n\nPre-run verification (recommended before first use):\n\nInspect the npm package without executing: npm pack @temporal-cortex/cortex-mcp --dry-run\nVerify checksums independently against the GitHub Release (see verification pipeline below)\nFor full containment, run in Docker instead of npx (see Docker containment below)\n\nVerification pipeline: Checksums are published independently at each GitHub Release as SHA256SUMS.txt — verify the binary before first use:\n\n# 1. Fetch checksums from GitHub (independent of the npm package)\ncurl -sL https://github.com/temporal-cortex/mcp/releases/download/mcp-v0.9.1/SHA256SUMS.txt\n\n# 2. Compare against the npm-installed binary\nshasum -a 256 \"$(npm root -g)/@temporal-cortex/cortex-mcp/bin/cortex-mcp\"\n\n\nAs defense-in-depth, the npm package also embeds checksums.json and the postinstall script compares SHA256 hashes during install — installation halts on mismatch (the binary is deleted, not executed). This automated check supplements, but does not replace, independent verification above.\n\nBuild provenance: Binaries are cross-compiled from auditable Rust source in GitHub Actions across 5 platforms (darwin-arm64, darwin-x64, linux-x64, linux-arm64, win32-x64). Source: github.com/temporal-cortex/mcp (MIT-licensed). The CI workflow, build artifacts, and release checksums are all publicly inspectable.\n\nDocker containment (no Node.js on host, credential isolation via volume mount):\n\n{\n  \"mcpServers\": {\n    \"temporal-cortex\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"--rm\", \"-i\", \"-v\", \"~/.config/temporal-cortex:/root/.config/temporal-cortex\", \"cortex-mcp\"]\n    }\n  }\n}\n\n\nBuild: docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git\n\nDefault setup (npx): See .mcp.json for the standard npx @temporal-cortex/cortex-mcp configuration. For managed hosting, see Platform Mode in the MCP repo.\n\nLayer 1 tools work immediately with zero configuration. Calendar tools require a one-time OAuth setup — run the setup script or npx @temporal-cortex/cortex-mcp auth google.\n\nAdditional References\nSecurity Model — Content sanitization, filesystem containment, network scope, tool annotations"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/billylui/calendar-scheduling",
    "publisherUrl": "https://clawhub.ai/billylui/calendar-scheduling",
    "owner": "billylui",
    "version": "0.9.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/calendar-scheduling",
    "downloadUrl": "https://openagent3.xyz/downloads/calendar-scheduling",
    "agentUrl": "https://openagent3.xyz/skills/calendar-scheduling/agent",
    "manifestUrl": "https://openagent3.xyz/skills/calendar-scheduling/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/calendar-scheduling/agent.md"
  }
}