Skip to content

About

A plugin marketplace for GitHub Copilot and other AI agents that provides Power Platform development plugins, including reusable skills, agents, and commands for building and deploying solutions.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

968 stars

Watchers

13 watching

Forks

Repository files navigation

Power Platform Skills

Official agent skills/plugins for Power Platform development by Microsoft.

Overview

This repository is a plugin marketplace containing GitHub Copilot/Claude Code 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 pac CLI if not already installed
  • Detects available tools (GitHub Copilot CLI, Claude Code)
  • Registers the plugin marketplace and installs all listed plugins except dataverse
  • Enables auto-update so plugins stay current

To also install the Dataverse plugin, pass --include-dataverse:

iwr https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js -OutFile install.js; node install.js --include-dataverse; del install.js
curl -fsSL https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js | node - --include-dataverse

The - tells Node to read the piped script, so the arguments after it reach the installer.

Manual Installation

If you prefer to install manually, run these commands inside a GitHub Copilot CLI or Claude Code session:

  1. Add the marketplace

    /plugin marketplace add microsoft/power-platform-skills
  2. Install 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
    /plugin install dataverse@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 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 self-contained JavaScript server runtimes, JSON Schema registration metadata, and interactive single-file MCP App widgets for codeful MCP tools.

Skills: /generate-codeful-mcp-tool creates a named runTool server entry point plus its description, MCP behavior annotations, input schema, and structured output schema, with verified Dataverse access; /generate-mcp-app-ui creates an HTML widget that embeds its runtime by default for hosts that block public URLs, while retaining an opt-in CDN mode. It can consume model-visible content, structured output, and widget-private metadata.

Stack: JavaScript codeful tools + 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

Dataverse (external)

Work with Microsoft Dataverse: connect to an environment, query and change records, manage tables and columns, and handle security, administration, and solutions.

Stack: Dataverse MCP server, Dataverse CLI, Python SDK, and PAC CLI

This plugin is maintained in microsoft/Dataverse-skills, and this marketplace installs it straight from that repository's default branch. Report issues and send changes there. If you already installed dataverse from the dataverse-skills marketplace, keep only one of the two installs so its skills are not loaded twice.

Local Development

To develop and test plugins locally, follow these steps:

  1. Clone this repository

  2. Launch GitHub Copilot CLI or Claude Code with the plugin path:

    GitHub Copilot CLI:

    copilot --plugin-dir /path/to/power-platform-skills/plugins/power-pages
    copilot --plugin-dir /path/to/power-platform-skills/plugins/model-apps
    copilot --plugin-dir /path/to/power-platform-skills/plugins/mcp-apps
    copilot --plugin-dir /path/to/power-platform-skills/plugins/code-apps
    copilot --plugin-dir /path/to/power-platform-skills/plugins/mobile-apps
    copilot --plugin-dir /path/to/power-platform-skills/plugins/power-apps-mobile-extension
    copilot --plugin-dir /path/to/power-platform-skills/plugins/canvas-apps
    copilot --plugin-dir /path/to/power-platform-skills/plugins/power-automate

    Claude Code:

    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.

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.

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.

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 codeful tool + 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.

Plugins maintained in other repositories, such as dataverse, use a remote source object instead of a path. Copilot CLI reads marketplace.json and Claude Code reads .claude-plugin/marketplace.json, and they spell a plugin in a repository subdirectory differently. So marketplace.json uses "source": "github" with repo and path, and the legacy file uses "source": "git-subdir" with url and path. scripts/validate-legacy-compatibility.js enforces that pairing.

Documentation

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, Mobile Apps, Model Apps, and Power Automate ship 1DS telemetry code, but their committed configurations and event schemas differ. All four are enabled and default-on. Power Pages 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. Mobile Apps excludes those identity fields and records its documented invocation, project-instance, checkpoint, and App Insights selection fields. Model Apps events can include organization and tenant GUIDs but exclude the signed-in user's Entra object ID. Power Automate records the same identity fields as Power Pages from its skill hooks, and its bundled MCP server and CLI additionally record a per-invocation outcome (success or failure), duration, and, on failure, the error's class name and code — never the error message. Power Automate provisions public-cloud ingestion only, so events outside public cloud stay in the local mirror.

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 the shared telemetry guide for the full field list, current plugin states, geo-routing behavior, kill-switch semantics, and local-mirror behavior.

About

A plugin marketplace for GitHub Copilot and other AI agents that provides Power Platform development plugins, including reusable skills, agents, and commands for building and deploying solutions.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

968 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages