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โฆ
Build and verify a third-party `.ppmplugin` end to end. This recommended entry point detects Android and iOS source, confirms target platforms, then invokes the manifest, platform build, assemble, and audit stages in order. Advanced users can invoke a stage directly for focused
Claude Code
$ npx -y skills add microsoft/power-platform-skills --skill generate-ppmplugin --agent claude-code
Codex
$ npx skills add microsoft/power-platform-skills --skill generate-ppmplugin -a codex -y
Cursor
$ npx skills add microsoft/power-platform-skills --skill generate-ppmplugin -a cursor -y
Gemini CLI
$ npx skills add microsoft/power-platform-skills --skill generate-ppmplugin -a gemini-cli -y
GitHub Copilot
$ npx skills add microsoft/power-platform-skills --skill generate-ppmplugin -a github-copilot -y
OpenCode
$ npx skills add microsoft/power-platform-skills --skill generate-ppmplugin -a opencode -y
Windsurf
$ npx skills add microsoft/power-platform-skills --skill generate-ppmplugin -a windsurf -y
name: generate-ppmplugin description: Build and verify a third-party `.ppmplugin` end to end. This recommended entry point detects Android and iOS source, confirms target platforms, then invokes the manifest, platform build, assemble, and audit stages in order. Advanced users can invoke a stage directly for focused reruns or debugging. Produces a native-only bundle (`manifest.json` plus an Android DEX and/or iOS framework) and stops on any failed stage rather than emitting an unverified partial build. Run after the native module exists. allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill model: sonnet
**The recommended entry point** for the third-party-control build track. In the normal flow, the user invokes `/generate-ppmplugin` and it drives the five stage skills (`/generate-ppmplugin-manifest`, `/build-android-binary`, `/build-ios-binary`, `/assemble-ppmplugin`, `/audit-ppmplugin`) in order. Advanced users may invoke a stage directly to rerun or debug only that stage. Inspect the repo, pick the right target set, run manifest โ build skill(s) โ assemble โ audit in sequence, and produce a *verified* `.ppmplugin` on disk (or a clear stop with the failing stage).
Read [`shared/ppmplugin-format.md`](../../shared/ppmplugin-format.md) ยง1 โ the bundle layout this orchestrator produces.
---
1. Read [`shared/shared-instructions.md`](../../shared/shared-instructions.md) and [`shared/ppmplugin-format.md`](../../shared/ppmplugin-format.md). 2. Confirm the working directory is a third-party-control repo: a `package.json` (dev-only `<kebab>-control` name โ **not** a published `@powerapps/extension-*` scope; this track ships a binary, not an npm package) and either `android/` or `ios/` (or both). If missing, STOP with `NEEDS_CONTEXT: not a third-party-control-ready repo โ missing <list>` and point at [`shared/repo-layout.md`](../../shared/repo-layout.md). 3. Print the orchestrator prereq block (sub-skills each re-run their own prereq check when invoked โ this is the summary the user sees up front so they know what's required end-to-end):
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Prereqs โ /generate-ppmplugin (end-to-end) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ /generate-ppmplugin-manifest โ no toolchain (pure read + validate + write) /build-android-binary โ JDK 17, Android SDK Build-Tools 35 (d8), Gradle /build-ios-binary โ Xcode 16+ (26.2+ recommended; CocoaPods optional โ header-only path) (Mac-only) /assemble-ppmplugin โ jar (JDK) /audit-ppmplugin โ jar (JDK); dexdump or strings (DEX scan)
Each stage will surface its own prereq failure when reached (don't pre-fail the orchestrator on a missing tool the user may have on a different machine).
---
Look at the repo to see which native platforms could actually build. **Detection is structural, not aspirational** โ the user can't ship a platform whose source doesn't exist.
| Target | Detection signal | |---|---| | Android | `android/build.gradle` exists AND `android/src/main/java/**/*.kt` contains a `ReactContextBaseJavaModule` subclass | | iOS | `ios/RCT*Module.h` declaring `<RCTBridgeModule>` AND a `.m` with `+ (NSString *)moduleName` (**NOT** `RCT_EXPORT_MODULE`) (podspec **optional** โ only declares extra iOS system frameworks; `/build-ios-binary` builds from the `.h/.m` source + the `react-native` devDep headers, not the podspec) |
Print a visible โ/โ block:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Targets available in this repo โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ข โ Android โ android/build.gradle + PenInputModule.kt found ๐ข โ iOS โ ios/RCTPenInputModule.h (+ .m with +moduleName) found
(If a signal is present but malformed โ e.g. `android/` exists but no Kotlin module โ list it as โ with the specific gap. `/generate-ppmplugin-manifest` will run the deeper structure preflight; this orchestrator just sees if there's enough to consider the platform a viable target.)
If neither target is viable โ STOP with `NEEDS_CONTEXT: no native target available โ repo has neither a buildable android/ nor ios/ module`. The `.ppmplugin` format requires at least one native entrypoint; a manifest-only bundle is not shippable.
---
Use the detection from Step 2 to pre-mark the recommended option, then confirm with `AskUserQuestion`:
Question: Which target(s) should this .ppmplugin ship? - Both (Recommended) โ runs /build-android-binary AND /build-ios-binary - Android only โ skips iOS even though the source is here - iOS only โ skips Android even though the source is here
Only show options whose target is viable. If only Android is viable, do not offe
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.