{
  "schemaVersion": "1.0",
  "item": {
    "slug": "officeclaw",
    "name": "OfficeClaw",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/danielithomas/officeclaw",
    "canonicalUrl": "https://clawhub.ai/danielithomas/officeclaw",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/officeclaw",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=officeclaw",
    "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-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/officeclaw"
    },
    "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/officeclaw",
    "agentPageUrl": "https://openagent3.xyz/skills/officeclaw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/officeclaw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/officeclaw/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": "OfficeClaw: Microsoft Graph API Integration",
        "body": "Connect your OpenClaw agent to personal Microsoft accounts (Outlook.com, Hotmail, Live) to manage email, calendar, and tasks through the Microsoft Graph API."
      },
      {
        "title": "Installation",
        "body": "Install from PyPI:\n\npip install officeclaw\n\nOr with uv:\n\nuv pip install officeclaw\n\nVerify installation:\n\nofficeclaw --version"
      },
      {
        "title": "Setup (One-Time)",
        "body": "Quick start: OfficeClaw ships with a default app registration — just run officeclaw auth login and go. No Azure setup needed.\nAdvanced: Want full control? Create your own Azure App Registration (free, ~5 minutes) and set OFFICECLAW_CLIENT_ID in your .env. See Microsoft's guide or follow the steps below."
      },
      {
        "title": "1. Create an Azure App Registration",
        "body": "Go to entra.microsoft.com → App registrations → New registration\nName: officeclaw (or anything you like)\nSupported account types: Personal Microsoft accounts only\nRedirect URI: leave blank (not needed for device code flow)\nClick Register\nCopy the Application (client) ID — this is your OFFICECLAW_CLIENT_ID\nGo to Authentication → Advanced settings → Allow public client flows → Yes → Save\nGo to API permissions → Add permission → Microsoft Graph → Delegated permissions. Choose based on your needs:\n\nRead-only (safest):\n\nMail.Read, Calendars.Read, Tasks.ReadWrite*\n\nFull access (all features including send/delete):\n\nMail.Read, Mail.ReadWrite, Mail.Send\nCalendars.Read, Calendars.ReadWrite\nTasks.ReadWrite\n\n*Tasks.ReadWrite is the minimum available scope for Microsoft To Do — there is no read-only option.\n\nLeast privilege: Only grant the permissions you actually need. If you only want to read emails and calendar, skip Mail.ReadWrite, Mail.Send, and Calendars.ReadWrite. OfficeClaw will gracefully error on commands that require missing permissions."
      },
      {
        "title": "2. Configure Environment",
        "body": "Create a .env file in your skill directory:\n\nOFFICECLAW_CLIENT_ID=your-client-id-here\n\n# Capability gates (disabled by default for safety)\n# OFFICECLAW_ENABLE_SEND=true    # Allow sending/replying/forwarding emails\n# OFFICECLAW_ENABLE_DELETE=true   # Allow deleting emails, events, and tasks\n\nNo client secret needed for device code flow. Write operations (send, delete) are disabled by default — enable only what you need."
      },
      {
        "title": "3. Authenticate",
        "body": "officeclaw auth login\n\nThis displays a URL and code. Open the URL in a browser, enter the code, and sign in with your Microsoft account. Tokens are stored securely in ~/.officeclaw/token_cache.json (permissions 600)."
      },
      {
        "title": "When to Use This Skill",
        "body": "Activate this skill when the user needs to:"
      },
      {
        "title": "Email Operations",
        "body": "Read emails: \"Show me my latest emails\", \"Find emails from john@example.com\"\nSend emails: \"Send an email to...\", \"Reply to the last email from...\"\nManage inbox: \"Mark emails as read\", \"Archive old emails\", \"Delete emails\""
      },
      {
        "title": "Calendar Operations",
        "body": "View events: \"What's on my calendar today?\", \"Show meetings this week\"\nCreate events: \"Schedule a meeting with...\", \"Add dentist appointment on Friday\"\nUpdate events: \"Move the 2pm meeting to 3pm\", \"Cancel tomorrow's standup\""
      },
      {
        "title": "Task Management",
        "body": "List tasks: \"What's on my to-do list?\", \"Show incomplete tasks\"\nCreate tasks: \"Add 'buy groceries' to my tasks\", \"Create a task to review report\"\nComplete tasks: \"Mark 'finish proposal' as done\", \"Complete all shopping tasks\""
      },
      {
        "title": "Authentication",
        "body": "officeclaw auth login       # Authenticate via device code flow\nofficeclaw auth status      # Check authentication status\nofficeclaw auth logout      # Clear stored tokens"
      },
      {
        "title": "Mail Commands",
        "body": "officeclaw mail list --limit 10                # List recent messages\nofficeclaw mail list --unread                   # List unread messages only\nofficeclaw mail get <message-id>               # Get specific message\nofficeclaw mail send --to user@example.com --subject \"Hello\" --body \"Message text\"\nofficeclaw mail send --to user@example.com --subject \"Report\" --body \"Attached\" --attachment report.pdf\nofficeclaw mail search --query \"from:boss@example.com\"\nofficeclaw mail archive <message-id>           # Archive a message\nofficeclaw mail mark-read <message-id>         # Mark as read\nofficeclaw --json mail list                    # JSON output for parsing"
      },
      {
        "title": "Calendar Commands",
        "body": "officeclaw calendar list --start 2026-02-01 --end 2026-02-28\nofficeclaw calendar create \\\n  --subject \"Team Meeting\" \\\n  --start \"2026-02-15T10:00:00\" \\\n  --end \"2026-02-15T11:00:00\" \\\n  --location \"Conference Room\"\nofficeclaw calendar get <event-id>\nofficeclaw calendar update <event-id> --subject \"Updated Meeting\"\nofficeclaw calendar delete <event-id>\nofficeclaw --json calendar list --start 2026-02-01 --end 2026-02-28"
      },
      {
        "title": "Task Commands",
        "body": "officeclaw tasks list-lists                              # List task lists\nofficeclaw tasks list --list-id <list-id>                # List tasks\nofficeclaw tasks list --list-id <list-id> --status active  # Active tasks only\nofficeclaw tasks create --list-id <list-id> --title \"Complete report\" --due-date \"2026-02-20\"\nofficeclaw tasks complete --list-id <list-id> --task-id <task-id>\nofficeclaw tasks reopen --list-id <list-id> --task-id <task-id>"
      },
      {
        "title": "Output Format",
        "body": "Use --json flag for structured JSON output:\n\nofficeclaw --json mail list\n\nReturns:\n\n{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"id\": \"AAMkADEzN...\",\n      \"subject\": \"Meeting Notes\",\n      \"from\": {\"emailAddress\": {\"address\": \"sender@example.com\"}},\n      \"receivedDateTime\": \"2026-02-12T10:30:00Z\",\n      \"isRead\": false\n    }\n  ]\n}"
      },
      {
        "title": "Error Handling",
        "body": "Common errors and solutions:\n\nErrorCauseSolutionAuthenticationErrorNot logged in or token expiredRun officeclaw auth loginAccessDeniedMissing permissionsRe-authenticate with required scopesResourceNotFoundInvalid IDVerify the ID existsRateLimitErrorToo many API callsWait 60 seconds and retry"
      },
      {
        "title": "Guidelines for Agents",
        "body": "When using this skill:\n\nConfirm destructive actions: Ask before deleting or sending\nSummarize results: Don't show raw JSON, provide summaries\nHandle errors gracefully: Guide user through re-authentication\nRespect privacy: Don't log email content\nUse JSON mode: For programmatic parsing, use --json flag\nBatch operations: Process multiple items efficiently"
      },
      {
        "title": "Security & Privacy",
        "body": "Write operations disabled by default: Send, reply, forward, and delete are all blocked unless explicitly enabled via OFFICECLAW_ENABLE_SEND and OFFICECLAW_ENABLE_DELETE environment variables. This prevents accidental or unauthorised write actions.\nNo client secret required: Uses device code flow (public client) by default\nLeast-privilege permissions: You choose which Graph API scopes to grant — read-only is sufficient for most use cases. See the setup guide above.\nTokens stored securely: ~/.officeclaw/token_cache.json with 600 file permissions\nNo data storage: OfficeClaw passes data through, never stores email/calendar content\nNo telemetry: No usage data collected\nYour own Azure app: Each user creates their own Azure app registration with their own client ID — no shared credentials"
      },
      {
        "title": "Troubleshooting",
        "body": "If the skill isn't working:\n\nCheck authentication: Run officeclaw auth status\nRe-authenticate: Run officeclaw auth login\nVerify network: Ensure graph.microsoft.com is reachable\nCheck environment: Verify OFFICECLAW_CLIENT_ID is set in .env"
      },
      {
        "title": "References",
        "body": "OfficeClaw on GitHub\nOfficeClaw on PyPI\nMicrosoft Graph API\nOpenClaw"
      }
    ],
    "body": "OfficeClaw: Microsoft Graph API Integration\n\nConnect your OpenClaw agent to personal Microsoft accounts (Outlook.com, Hotmail, Live) to manage email, calendar, and tasks through the Microsoft Graph API.\n\nInstallation\n\nInstall from PyPI:\n\npip install officeclaw\n\n\nOr with uv:\n\nuv pip install officeclaw\n\n\nVerify installation:\n\nofficeclaw --version\n\nSetup (One-Time)\n\nQuick start: OfficeClaw ships with a default app registration — just run officeclaw auth login and go. No Azure setup needed.\n\nAdvanced: Want full control? Create your own Azure App Registration (free, ~5 minutes) and set OFFICECLAW_CLIENT_ID in your .env. See Microsoft's guide or follow the steps below.\n\n1. Create an Azure App Registration\nGo to entra.microsoft.com → App registrations → New registration\nName: officeclaw (or anything you like)\nSupported account types: Personal Microsoft accounts only\nRedirect URI: leave blank (not needed for device code flow)\nClick Register\nCopy the Application (client) ID — this is your OFFICECLAW_CLIENT_ID\nGo to Authentication → Advanced settings → Allow public client flows → Yes → Save\nGo to API permissions → Add permission → Microsoft Graph → Delegated permissions. Choose based on your needs:\n\nRead-only (safest):\n\nMail.Read, Calendars.Read, Tasks.ReadWrite*\n\nFull access (all features including send/delete):\n\nMail.Read, Mail.ReadWrite, Mail.Send\nCalendars.Read, Calendars.ReadWrite\nTasks.ReadWrite\n\n*Tasks.ReadWrite is the minimum available scope for Microsoft To Do — there is no read-only option.\n\nLeast privilege: Only grant the permissions you actually need. If you only want to read emails and calendar, skip Mail.ReadWrite, Mail.Send, and Calendars.ReadWrite. OfficeClaw will gracefully error on commands that require missing permissions.\n\n2. Configure Environment\n\nCreate a .env file in your skill directory:\n\nOFFICECLAW_CLIENT_ID=your-client-id-here\n\n# Capability gates (disabled by default for safety)\n# OFFICECLAW_ENABLE_SEND=true    # Allow sending/replying/forwarding emails\n# OFFICECLAW_ENABLE_DELETE=true   # Allow deleting emails, events, and tasks\n\n\nNo client secret needed for device code flow. Write operations (send, delete) are disabled by default — enable only what you need.\n\n3. Authenticate\nofficeclaw auth login\n\n\nThis displays a URL and code. Open the URL in a browser, enter the code, and sign in with your Microsoft account. Tokens are stored securely in ~/.officeclaw/token_cache.json (permissions 600).\n\nWhen to Use This Skill\n\nActivate this skill when the user needs to:\n\nEmail Operations\nRead emails: \"Show me my latest emails\", \"Find emails from john@example.com\"\nSend emails: \"Send an email to...\", \"Reply to the last email from...\"\nManage inbox: \"Mark emails as read\", \"Archive old emails\", \"Delete emails\"\nCalendar Operations\nView events: \"What's on my calendar today?\", \"Show meetings this week\"\nCreate events: \"Schedule a meeting with...\", \"Add dentist appointment on Friday\"\nUpdate events: \"Move the 2pm meeting to 3pm\", \"Cancel tomorrow's standup\"\nTask Management\nList tasks: \"What's on my to-do list?\", \"Show incomplete tasks\"\nCreate tasks: \"Add 'buy groceries' to my tasks\", \"Create a task to review report\"\nComplete tasks: \"Mark 'finish proposal' as done\", \"Complete all shopping tasks\"\nAvailable Commands\nAuthentication\nofficeclaw auth login       # Authenticate via device code flow\nofficeclaw auth status      # Check authentication status\nofficeclaw auth logout      # Clear stored tokens\n\nMail Commands\nofficeclaw mail list --limit 10                # List recent messages\nofficeclaw mail list --unread                   # List unread messages only\nofficeclaw mail get <message-id>               # Get specific message\nofficeclaw mail send --to user@example.com --subject \"Hello\" --body \"Message text\"\nofficeclaw mail send --to user@example.com --subject \"Report\" --body \"Attached\" --attachment report.pdf\nofficeclaw mail search --query \"from:boss@example.com\"\nofficeclaw mail archive <message-id>           # Archive a message\nofficeclaw mail mark-read <message-id>         # Mark as read\nofficeclaw --json mail list                    # JSON output for parsing\n\nCalendar Commands\nofficeclaw calendar list --start 2026-02-01 --end 2026-02-28\nofficeclaw calendar create \\\n  --subject \"Team Meeting\" \\\n  --start \"2026-02-15T10:00:00\" \\\n  --end \"2026-02-15T11:00:00\" \\\n  --location \"Conference Room\"\nofficeclaw calendar get <event-id>\nofficeclaw calendar update <event-id> --subject \"Updated Meeting\"\nofficeclaw calendar delete <event-id>\nofficeclaw --json calendar list --start 2026-02-01 --end 2026-02-28\n\nTask Commands\nofficeclaw tasks list-lists                              # List task lists\nofficeclaw tasks list --list-id <list-id>                # List tasks\nofficeclaw tasks list --list-id <list-id> --status active  # Active tasks only\nofficeclaw tasks create --list-id <list-id> --title \"Complete report\" --due-date \"2026-02-20\"\nofficeclaw tasks complete --list-id <list-id> --task-id <task-id>\nofficeclaw tasks reopen --list-id <list-id> --task-id <task-id>\n\nOutput Format\n\nUse --json flag for structured JSON output:\n\nofficeclaw --json mail list\n\n\nReturns:\n\n{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"id\": \"AAMkADEzN...\",\n      \"subject\": \"Meeting Notes\",\n      \"from\": {\"emailAddress\": {\"address\": \"sender@example.com\"}},\n      \"receivedDateTime\": \"2026-02-12T10:30:00Z\",\n      \"isRead\": false\n    }\n  ]\n}\n\nError Handling\n\nCommon errors and solutions:\n\nError\tCause\tSolution\nAuthenticationError\tNot logged in or token expired\tRun officeclaw auth login\nAccessDenied\tMissing permissions\tRe-authenticate with required scopes\nResourceNotFound\tInvalid ID\tVerify the ID exists\nRateLimitError\tToo many API calls\tWait 60 seconds and retry\nGuidelines for Agents\n\nWhen using this skill:\n\nConfirm destructive actions: Ask before deleting or sending\nSummarize results: Don't show raw JSON, provide summaries\nHandle errors gracefully: Guide user through re-authentication\nRespect privacy: Don't log email content\nUse JSON mode: For programmatic parsing, use --json flag\nBatch operations: Process multiple items efficiently\nSecurity & Privacy\nWrite operations disabled by default: Send, reply, forward, and delete are all blocked unless explicitly enabled via OFFICECLAW_ENABLE_SEND and OFFICECLAW_ENABLE_DELETE environment variables. This prevents accidental or unauthorised write actions.\nNo client secret required: Uses device code flow (public client) by default\nLeast-privilege permissions: You choose which Graph API scopes to grant — read-only is sufficient for most use cases. See the setup guide above.\nTokens stored securely: ~/.officeclaw/token_cache.json with 600 file permissions\nNo data storage: OfficeClaw passes data through, never stores email/calendar content\nNo telemetry: No usage data collected\nYour own Azure app: Each user creates their own Azure app registration with their own client ID — no shared credentials\nTroubleshooting\n\nIf the skill isn't working:\n\nCheck authentication: Run officeclaw auth status\nRe-authenticate: Run officeclaw auth login\nVerify network: Ensure graph.microsoft.com is reachable\nCheck environment: Verify OFFICECLAW_CLIENT_ID is set in .env\nReferences\nOfficeClaw on GitHub\nOfficeClaw on PyPI\nMicrosoft Graph API\nOpenClaw"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/danielithomas/officeclaw",
    "publisherUrl": "https://clawhub.ai/danielithomas/officeclaw",
    "owner": "danielithomas",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/officeclaw",
    "downloadUrl": "https://openagent3.xyz/downloads/officeclaw",
    "agentUrl": "https://openagent3.xyz/skills/officeclaw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/officeclaw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/officeclaw/agent.md"
  }
}