{
  "schemaVersion": "1.0",
  "item": {
    "slug": "m365-pnp-cli",
    "name": "Skill",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/thomyg/m365-pnp-cli",
    "canonicalUrl": "https://clawhub.ai/thomyg/m365-pnp-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/m365-pnp-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=m365-pnp-cli",
    "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-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/m365-pnp-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/m365-pnp-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/m365-pnp-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/m365-pnp-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/m365-pnp-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": "m365-pnp-cli Skill",
        "body": "This skill provides access to the CLI for Microsoft 365 – the official PnP (Patterns and Practices) tool for Microsoft 365 management."
      },
      {
        "title": "⚠️ IMPORTANT FOR AGENTS",
        "body": "When in doubt, ALWAYS call m365 --help first to see all possibilities!\n\n# Always call help when unsure!\nm365 --help\n\n# For specific commands:\nm365 login --help\nm365 spo --help\nm365 teams --help"
      },
      {
        "title": "Installation",
        "body": "The CLI must be installed:\n\nnpm install -g @pnp/cli-microsoft365\n\nOr use npx (sandbox):\n\nnpx @pnp/cli-microsoft365 --help"
      },
      {
        "title": "Source & Verification",
        "body": "NPM Package: https://www.npmjs.com/package/@pnp/cli-microsoft365\nGitHub Repo: https://github.com/pnp/cli-microsoft365\nDocumentation: https://pnp.github.io/cli-microsoft365\nAuthor: Microsoft PnP (Patterns and Practices Community)"
      },
      {
        "title": "Supported Workloads",
        "body": "Microsoft Teams\nSharePoint Online\nOneDrive\nOutlook\nMicrosoft To Do\nMicrosoft Planner\nPower Automate\nPower Apps\nMicrosoft Entra ID\nMicrosoft Purview\nBookings\nAnd more..."
      },
      {
        "title": "Authentication",
        "body": "Device Code (default)\nUsername/Password\nClient Certificate\nClient Secret\nAzure Managed Identity\nFederated Identity"
      },
      {
        "title": "Login/Logout",
        "body": "m365 login                    # Device Code Login\nm365 logout                  # Logout\nm365 status                  # Check login status"
      },
      {
        "title": "SharePoint Online (spo)",
        "body": "m365 spo site list           # List all sites\nm365 spo site get --url <url>  # Get site details\nm365 spo list list --webUrl <url>  # Lists in a site\nm365 spo file list           # List files\nm365 spo folder add          # Create folder"
      },
      {
        "title": "Teams",
        "body": "m365 teams channel list       # List channels\nm365 teams channel get       # Get channel details\nm365 teams user list         # List team members\nm365 teams chat list         # List chats\nm365 teams meeting list      # List meetings"
      },
      {
        "title": "OneDrive",
        "body": "m365 onedrive drive list    # OneDrive Drives\nm365 onedrive file list     # List files\nm365 onedrive file get      # Get file content"
      },
      {
        "title": "Outlook",
        "body": "m365 outlook mail list       # List emails\nm365 outlook calendar list   # List calendar events"
      },
      {
        "title": "Planner",
        "body": "m365 planner task list       # Planner Tasks\nm365 planner plan get        # Get plan details"
      },
      {
        "title": "Azure AD / Entra ID",
        "body": "m365 entra user list         # List users\nm365 entra group list        # List groups\nm365 entra app list          # List apps"
      },
      {
        "title": "⚡ First Step: ALWAYS call help!",
        "body": "# When in doubt - call help first!\nm365 --help\n\n# For specific commands:\nm365 spo --help\nm365 teams --help\nm365 login --help"
      },
      {
        "title": "Basic Usage",
        "body": "# Login (Device Code Flow)\nm365 login\n\n# Check status\nm365 status\n\n# SharePoint: List sites\nm365 spo site list\n\n# SharePoint: Get specific site\nm365 spo site get --url \"https://contoso.sharepoint.com/sites/test\"\n\n# Teams: List channels\nm365 teams channel list --teamId <team-id>\n\n# OneDrive: Files\nm365 onedrive file list\n\n# Outlook: Emails\nm365 outlook mail list --folder Inbox\n\n# Planner: Tasks\nm365 planner task list"
      },
      {
        "title": "Output Options",
        "body": "# As JSON (default)\nm365 spo site list\n\n# As text\nm365 spo site list --output text\n\n# Filter with JMESPath\nm365 spo site list --query \"[?Template==\\`GROUP#0\\`].{Title:Title, Url:Url}\""
      },
      {
        "title": "Authentication",
        "body": "The CLI uses Device Code Flow by default:\n\nm365 login\n# → You'll receive a code on another device\n# → Use that code to authenticate with Microsoft\n\nFor automated scripts, you can also use:\n\nCertificate (recommended for production)\nClient Secret (less secure)\nUsername/Password (testing only)"
      },
      {
        "title": "Important",
        "body": "WHEN IN DOUBT: call m365 --help!\nLogin required for most commands\nJSON output is easiest to parse\nJMESPath for efficient filtering\nCLI requires Node.js >= 20"
      }
    ],
    "body": "m365-pnp-cli Skill\n\nThis skill provides access to the CLI for Microsoft 365 – the official PnP (Patterns and Practices) tool for Microsoft 365 management.\n\n⚠️ IMPORTANT FOR AGENTS\n\nWhen in doubt, ALWAYS call m365 --help first to see all possibilities!\n\n# Always call help when unsure!\nm365 --help\n\n# For specific commands:\nm365 login --help\nm365 spo --help\nm365 teams --help\n\nInstallation\n\nThe CLI must be installed:\n\nnpm install -g @pnp/cli-microsoft365\n\n\nOr use npx (sandbox):\n\nnpx @pnp/cli-microsoft365 --help\n\nSource & Verification\nNPM Package: https://www.npmjs.com/package/@pnp/cli-microsoft365\nGitHub Repo: https://github.com/pnp/cli-microsoft365\nDocumentation: https://pnp.github.io/cli-microsoft365\nAuthor: Microsoft PnP (Patterns and Practices Community)\nWhat can the CLI do?\nSupported Workloads\nMicrosoft Teams\nSharePoint Online\nOneDrive\nOutlook\nMicrosoft To Do\nMicrosoft Planner\nPower Automate\nPower Apps\nMicrosoft Entra ID\nMicrosoft Purview\nBookings\nAnd more...\nAuthentication\nDevice Code (default)\nUsername/Password\nClient Certificate\nClient Secret\nAzure Managed Identity\nFederated Identity\nCommands (Overview)\nLogin/Logout\nm365 login                    # Device Code Login\nm365 logout                  # Logout\nm365 status                  # Check login status\n\nSharePoint Online (spo)\nm365 spo site list           # List all sites\nm365 spo site get --url <url>  # Get site details\nm365 spo list list --webUrl <url>  # Lists in a site\nm365 spo file list           # List files\nm365 spo folder add          # Create folder\n\nTeams\nm365 teams channel list       # List channels\nm365 teams channel get       # Get channel details\nm365 teams user list         # List team members\nm365 teams chat list         # List chats\nm365 teams meeting list      # List meetings\n\nOneDrive\nm365 onedrive drive list    # OneDrive Drives\nm365 onedrive file list     # List files\nm365 onedrive file get      # Get file content\n\nOutlook\nm365 outlook mail list       # List emails\nm365 outlook calendar list   # List calendar events\n\nPlanner\nm365 planner task list       # Planner Tasks\nm365 planner plan get        # Get plan details\n\nAzure AD / Entra ID\nm365 entra user list         # List users\nm365 entra group list        # List groups\nm365 entra app list          # List apps\n\nUsage as Assistant - IMPORTANT\n⚡ First Step: ALWAYS call help!\n# When in doubt - call help first!\nm365 --help\n\n# For specific commands:\nm365 spo --help\nm365 teams --help\nm365 login --help\n\nBasic Usage\n# Login (Device Code Flow)\nm365 login\n\n# Check status\nm365 status\n\n# SharePoint: List sites\nm365 spo site list\n\n# SharePoint: Get specific site\nm365 spo site get --url \"https://contoso.sharepoint.com/sites/test\"\n\n# Teams: List channels\nm365 teams channel list --teamId <team-id>\n\n# OneDrive: Files\nm365 onedrive file list\n\n# Outlook: Emails\nm365 outlook mail list --folder Inbox\n\n# Planner: Tasks\nm365 planner task list\n\nOutput Options\n# As JSON (default)\nm365 spo site list\n\n# As text\nm365 spo site list --output text\n\n# Filter with JMESPath\nm365 spo site list --query \"[?Template==\\`GROUP#0\\`].{Title:Title, Url:Url}\"\n\nAuthentication\n\nThe CLI uses Device Code Flow by default:\n\nm365 login\n# → You'll receive a code on another device\n# → Use that code to authenticate with Microsoft\n\n\nFor automated scripts, you can also use:\n\nCertificate (recommended for production)\nClient Secret (less secure)\nUsername/Password (testing only)\nImportant\nWHEN IN DOUBT: call m365 --help!\nLogin required for most commands\nJSON output is easiest to parse\nJMESPath for efficient filtering\nCLI requires Node.js >= 20"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/thomyg/m365-pnp-cli",
    "publisherUrl": "https://clawhub.ai/thomyg/m365-pnp-cli",
    "owner": "thomyg",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/m365-pnp-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/m365-pnp-cli",
    "agentUrl": "https://openagent3.xyz/skills/m365-pnp-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/m365-pnp-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/m365-pnp-cli/agent.md"
  }
}