Power Platform Skills
Official agent skills/plugins for Power Platform development by Microsoft.
Overview
This repository is a plugin marketplace containing Claude Code/GitHub Copilot plugins for Power Platform services. Each plugin provides skills, agents, and commands to help developers build on the Power Platform.
Installation
Quick Install (Recommended)
Run the installer to set up all plugins with auto-update enabled:
Windows (PowerShell):
iwr https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js -OutFile install.js; node install.js; del install.js
Mac OS/Linux/Windows (cmd):
curl -fsSL https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js | node
The installer automatically:
- Installs
pacCLI if not already installed - Detects available tools (Claude Code, GitHub Copilot CLI)
- Registers the plugin marketplace and installs all listed plugins
- Enables auto-update so plugins stay current
Manual Installation
If you prefer to install manually, run these commands inside a Claude Code or GitHub Copilot CLI session:
Add the marketplace
/plugin marketplace add microsoft/power-platform-skillsInstall the desired plugin
/plugin install power-pages@power-platform-skills /plugin install model-apps@power-platform-skills /plugin install mcp-apps@power-platform-skills /plugin install code-apps-preview@power-platform-skills /plugin install mobile-app@power-platform-skills /plugin install power-apps-mobile-extension@power-platform-skills /plugin install canvas-apps@power-platform-skills /plugin install power-automate@power-platform-skills
Available Plugins
Power Pages (plugins/power-pages)
Create and deploy Power Pages sites using modern development approaches.
Currently supported: Code Sites (SPAs) with React, Angular, Vue, or Astro
Model Apps (plugins/model-apps)
Build model-driven Power Apps end to end, and the generative pages that go in them.
Skills: /app-builder (Preview) builds and edits a whole app — tables, relationships, forms,
views, charts, security roles, app + sitemap — from a natural-language intent; /genpage builds
generative pages for an app that already exists. Use either independently — neither requires the other
Stack: React + TypeScript + Fluent, deployed via PAC CLI and the headless cds-maker-sdk
MCP Apps (plugins/mcp-apps)
Generate interactive MCP App widgets for MCP tools.
Stack: HTML widgets using the MCP Apps protocol
Code Apps (plugins/code-apps)
Build and deploy Power Apps code apps connected to Power Platform via connectors.
Stack: React + Vite + TypeScript, deployed via PAC CLI
Mobile Apps (plugins/mobile-apps)
Build and deploy Power Apps code apps for mobile with native device capabilities.
Stack: Expo + React Native + TypeScript, deployed via Power Apps Wrap
Power Apps Mobile Extension (plugins/power-apps-mobile-extension)
Build third-party native controls for wrapped Canvas apps and package them as verified
.ppmplugin bundles with matching dispatcher PCF controls.
Stack: Kotlin + Objective-C, Power Apps component framework, and Power Apps Wrap
Canvas Apps (plugins/canvas-apps)
Author Power Apps Canvas Apps using the Canvas Authoring MCP server.
Stack: PA YAML (.pa.yaml) authored via CanvasAuthoringMcpServer, requires .NET 10 SDK
Power Automate (plugins/power-automate)
Build, edit, run, and debug Power Automate cloud flows via the FlowAgent MCP server.
Stack: Node.js 18+, Azure CLI (az login), self-contained MCP bundle
Local Development
To develop and test plugins locally, follow these steps:
Clone this repository
Launch Claude Code with plugin path:
claude --plugin-dir /path/to/power-platform-skills/plugins/power-pages claude --plugin-dir /path/to/power-platform-skills/plugins/model-apps claude --plugin-dir /path/to/power-platform-skills/plugins/mcp-apps claude --plugin-dir /path/to/power-platform-skills/plugins/code-apps claude --plugin-dir /path/to/power-platform-skills/plugins/mobile-apps claude --plugin-dir /path/to/power-platform-skills/plugins/power-apps-mobile-extension claude --plugin-dir /path/to/power-platform-skills/plugins/canvas-apps claude --plugin-dir /path/to/power-platform-skills/plugins/power-automate
Running Without Interruption
Plugins in this repo may invoke multiple tools (file edits, shell commands, MCP servers) during a session, which can result in frequent approval prompts. Use the options below to reduce or eliminate these interruptions.
Warning: Auto-approval options give the agent the same access you have on your machine. Only use these in trusted or sandboxed environments.
Claude Code
Option 1 — Permission mode (recommended)
Set the acceptEdits mode to auto-approve file edits while still prompting for shell commands:
// .claude/settings.json (project-level) or ~/.claude/settings.json (user-level)
{
"defaultMode": "acceptEdits",
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git *)",
"Bash(pac *)"
// add other commands your workflow needs
]
}
}
Option 2 — Allow all tools
Press Shift+Tab during a session to cycle to auto-accept mode, or launch with:
claude --dangerously-skip-permissions
See the Claude Code permissions docs for the full reference.
GitHub Copilot CLI
Option 1 — Allow specific tools (recommended)
Pre-approve only the tools your workflow needs:
copilot --allow-tool 'write' --allow-tool 'shell(npm run build)' --allow-tool 'shell(pac *)'
Option 2 — Allow all tools in Copilot
copilot --allow-all-tools
To allow everything except dangerous commands:
copilot --allow-all-tools --deny-tool 'shell(rm)' --deny-tool 'shell(git push)'
See the Copilot CLI docs for the full reference.
Repository Structure
power-platform-skills/
├── marketplace.json # Open Plugins marketplace manifest (lists all plugins)
├── .claude-plugin/ # Legacy marketplace shim for existing subscriptions
│ └── marketplace.json
├── .claude/
│ └── settings.json # Auto-allowed tools (pac, node, dotnet, etc.)
├── plugins/
│ ├── power-pages/ # Power Pages plugin
│ │ ├── .plugin/
│ │ │ └── plugin.json
│ │ ├── .claude-plugin/ # Legacy manifest mirror
│ │ │ └── plugin.json
│ │ ├── commands/
│ │ ├── shared/
│ │ └── skills/
│ ├── model-apps/ # Model Apps plugin
│ | ├── .plugin/
│ │ └── plugin.json
│ | ├── commands/
│ | ├── skills/
│ | ├── shared/ # Shared references + samples
│ | └── github/ # GitHub Copilot instructions
│ ├── mcp-apps/ # MCP Apps widget generator plugin
│ │ ├── .plugin/
│ │ │ └── plugin.json
│ │ ├── references/
│ │ ├── samples/
│ │ └── skills/
│ ├── code-apps/ # Code Apps plugin
│ │ ├── .plugin/
│ │ │ └── plugin.json
│ │ ├── agents/
│ │ ├── skills/
│ │ └── shared/ # Shared instructions + references
│ ├── mobile-apps/ # Mobile Apps plugin
│ │ ├── .plugin/
│ │ │ └── plugin.json
│ │ ├── .claude-plugin/ # Legacy manifest mirror
│ │ │ └── plugin.json
│ │ ├── agents/
│ │ ├── skills/
│ │ ├── shared/ # Shared instructions + references
│ │ └── template/ # Bundled Expo app template
│ ├── power-apps-mobile-extension/ # Native controls for wrapped Canvas apps
│ │ ├── .plugin/
│ │ │ └── plugin.json
│ │ ├── .claude-plugin/ # Legacy manifest mirror
│ │ │ └── plugin.json
│ │ ├── shared/
│ │ └── skills/
│ └── canvas-apps/ # Canvas Apps plugin
│ ├── .plugin/
│ │ └── plugin.json
│ ├── references/ # Technical + design guides
│ └── skills/
├── AGENTS.md # Development guidelines
└── README.md
The .claude-plugin files are compatibility mirrors for users who subscribed
before the Open Plugins migration. The root legacy marketplace mirrors
marketplace.json, and per-plugin legacy manifests mirror .plugin/plugin.json.
The shared marketplace keeps marketplace-level owner and metadata, while each
plugin entry is intentionally just name plus repository-root-relative source.
Plugin descriptions, versions, licenses, and keywords are controlled from each
plugin's .plugin/plugin.json. This keeps existing subscriptions updating without
duplicating display/update metadata.
Documentation
- Power Pages Code Sites
- Power Pages REST API
- Generative Pages with External Tools
- Power Apps Code Apps
- PAC CLI Reference
Contributing
See CONTRIBUTING.md for contribution guide.
License
The code in this repo is licensed under the MIT license.
Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.
Telemetry
Power Pages and Model Apps ship 1DS telemetry code, but their committed configurations have different states. Power Pages telemetry is enabled and default-on; its usage events can include Dataverse organization and Entra tenant GUIDs when PAC is signed in, plus the signed-in user's Entra object ID when PAC exposes it. Model Apps ships hard-disabled (disabled: true), so it currently transmits no events and writes no local telemetry mirror. If Model Apps is enabled later, its events can include organization and tenant GUIDs but exclude the signed-in user's Entra object ID.
For an enabled plugin, users opt out of transmission via /<plugin>:telemetry off (for example, /power-pages:telemetry off), stored in ~/.power-platform-skills/config.json. The local diagnostic mirror is still written after this transmission-only opt-out. Each adopting plugin also honors POWER_PLATFORM_SKILLS_TELEMETRY_<PLUGIN>_OPTOUT for automation and CI. The environment variable has highest precedence and disables transmission regardless of the saved command choice. See shared/telemetry/README.md for the full field list, kill-switch semantics, and local-mirror behavior.