generate-pcf-companion
/generate-pcf-companion
Generates the dispatcher PCF — the Canvas Studio control that calls the third-party native module through the host-injected window.PowerApps.NativeExtension.sendAsync global, routed by the composite key <name>/<receiver> read from the committed ./manifest.json (the source of truth /generate-native-extension authors at scaffold time). Lives at pcf/<Pascal>PCF/ in the same repo the native module lives in. The PCF is a Studio-side companion; it is NOT part of the .ppmplugin bundle (the bundle ships native binaries only — manifest.json + android//ios/).
This skill assumes the native module already exists in the repo. Run it after the module is in place.
PCF framework reference (public Microsoft Learn docs). Ground
pac pcf init, theControlManifest.Input.xmlschema, theinit/updateView/getOutputs/destroylifecycle, and theusage(bound/input/output) rules against the official Power Apps Component Framework docs — they are the authority when this skill's templates and the live framework disagree. (ThesendAsynctransport +extractResponseresponse-unwrap specifics are this track's own, inshared/ppmplugin-format.md §2— not in these generic PCF docs.)
- Overview: https://learn.microsoft.com/en-us/power-apps/developer/component-framework/overview
- Create a code component: https://learn.microsoft.com/en-us/power-apps/developer/component-framework/create-custom-controls-using-pcf
- Custom controls overview: https://learn.microsoft.com/en-us/power-apps/developer/component-framework/custom-controls-overview
Step 1 — Read the shared docs and the PRD
-
Read
shared/shared-instructions.md,shared/naming-conventions.md,shared/ppmplugin-format.md,shared/repo-layout.md. -
Apply the per-skill minimal prereq policy (
shared-instructions.md §1.5). This skill needs Node +pacCLI only —pac pcf initis a local file generator andnpm install/npm run buildunderpcf/only needs Node. It does NOT need pnpm, package-feed authentication, .NET SDK runtime, or activepac auth.Print the prereq status as a visible block per
shared-instructions.md §9.2before continuing: