add-data-source
Guide the user to add a data source, connection, or API connector to a Canvas App via Power Apps Studio, then verify and…
Runs a security scan on a deployed Power Pages site, fetches the latest scan report, and produces a plain-language summary. Scans the live site's public surface for vulnerabilities and surfaces issues by severity. Use when the user wants to scan, check, test, audit, or assess a
Claude Code
$ npx -y skills add microsoft/power-platform-skills --skill scan-site --agent claude-code
Codex
$ npx skills add microsoft/power-platform-skills --skill scan-site -a codex -y
Cursor
$ npx skills add microsoft/power-platform-skills --skill scan-site -a cursor -y
Gemini CLI
$ npx skills add microsoft/power-platform-skills --skill scan-site -a gemini-cli -y
GitHub Copilot
$ npx skills add microsoft/power-platform-skills --skill scan-site -a github-copilot -y
OpenCode
$ npx skills add microsoft/power-platform-skills --skill scan-site -a opencode -y
Windsurf
$ npx skills add microsoft/power-platform-skills --skill scan-site -a windsurf -y
name: scan-site description: >- Runs a security scan on a deployed Power Pages site, fetches the latest scan report, and produces a plain-language summary. Scans the live site's public surface for vulnerabilities and surfaces issues by severity. Use when the user wants to scan, check, test, audit, or assess a published site, find vulnerabilities on production, view the latest scan report, see previous scan results, run a security audit, or asks "how safe is my live site?", "is my site vulnerable?", "audit my production site" — even if they say "find issues" or "check for problems" without mentioning "scan" or "security". user-invocable: true argument-hint: "[optional: --review <out-dir>]" allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, TaskCreate, TaskUpdate, TaskList model: opus
> **Plugin check**: Run `node "${PLUGIN_ROOT}/scripts/check-version.js"` — if it outputs a message, show it to the user before proceeding.
Run a security scan on a deployed Power Pages site, fetch the latest scan report, and surface findings in a plain-language summary. The scan runs server-side; duration depends on site size — small sites finish in minutes, large sites can take hours.
This skill scans the live deployed site, not local source code.
**Initial request:** $ARGUMENTS
1. **Prerequisites** — Locate project, confirm sign-in, identify site 2. **Check scan state** — Detect whether a scan is currently running 3. **Choose an action** — Context-aware recommendation (run new scan / show latest) 4. **Run the scan** — Start and poll for completion 5. **Fetch and summarize** — Get the report, present findings 6. **Walk through follow-ups** — Route issues to the right downstream skill (only if the report contains issues)
Create tasks in four groups. Mark each `in_progress` when starting, `completed` when done.
| Group | When to create | Tasks | |-------|----------------|-------| | 1 | At start | Check prerequisites | | 2 | After prerequisites pass | Check scan state · Choose an action (skip in review mode) | | 3 | After user confirms an action (or in review mode) | Run the scan (skip only if the user chose to view latest results in interactive mode) · Fetch and summarize (always) | | 4 | After fetch and summarize | Walk through follow-ups (only if the report contains issues AND not in review mode) |
---
Use `Glob` to find `**/powerpages.config.json`. If `$ARGUMENTS` contains `--review <out-dir>`, remember the output directory — Step 3 (choose an action) is skipped, Step 4 (run scan) executes automatically (start a fresh scan or attach to a running one), Step 5 writes JSON only, and Step 6 (follow-ups) is skipped.
Read `.powerpages-site/website.yml` → extract `id` field → that is `<WEBSITE_ID>`.
If missing, the site has not been deployed. Tell the user and recommend `/deploy-site`. Stop. Do **not** resolve by name or URL.
Resolve to portalId:
node "${PLUGIN_ROOT}/scripts/website.js" --websiteId "<WEBSITE_ID>"Capture `Id` (portalId), `Type`, `Name`, `WebsiteUrl`. If exit code `2` → sign-in required (`pac auth create` or `az login`). If `null` → site not found in this environment. Stop in either case.
---
node "${PLUGIN_ROOT}/skills/scan-site/scripts/poll-deep-scan.js" --portalId "<PORTAL_ID>" --once`--once` does a single status check, exits 0, and prints:
Then call `get-latest-report.js` to know whether a completed report exists:
node "${PLUGIN_ROOT}/skills/scan-site/scripts/get-latest-report.js" --portalId "<PORTAL_ID>"`{ "status": "ok" }` means a report is available. `{ "status": "empty" }` means no completed scan exists.
---
Skip in **review mode** — go straight to Step 4 (which always runs in review mode).
MUST use plain language only. Never use words like CSP, CORS, OWASP, hardening, or scan profile.
<!-- gate: scan-site:3.action-choice | category=plan | cancel-leaves=nothing -->
> 🚦 **Gate (plan · scan-site:3.action-choice):** Recommend an action based on the site's scan state (running, idle, has report, no report), then ask the user to accept or choose differently. Starting a new scan triggers a multi-minute backend run; using an existing report is free. > > **Trigger:** Phase 3 entry (interactive mode only — review mode bypasses to step 4). > **Why we ask:** Auto-starting a new scan wastes minutes if a recent report already answers the question; auto-using a stale report misses recent findings. > **Cancel leaves:** Nothing — no scan triggered, no report consumed.
Analyze the site's current state and **recommend
Plugins from Microsoft that teach AI assistants, such as GitHub Copilot and Claude Code, to build on Power Platform.
Guide the user to add a data source, connection, or API connector to a Canvas App via Power Apps Studio, then verify and…
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles staged experience design,…
Configure the Canvas Authoring MCP server for the current coauthoring session. Use before starting to edit a canvas app with the…
Use this skill when the user wants to "report a bug", "file an issue", "report an issue", "submit a bug report", or report any…
Adds Azure DevOps connector to a Power Apps code app. Use when querying work items, creating bugs, managing pipelines, or making…
Adds any Power Platform connector to a Power Apps code app. Generic fallback for connectors not covered by a specific skill.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.