pcf
Builds, tests, diagnoses, upgrades, deploys and verifies Power Apps component framework (PCF) code components for model-driven apps and Power Pages — field and dataset controls, standard and virtual (React) — from Microsoft-maintained templates and recipes pinned to a tested version matrix.
Install / Use
npx skills add microsoft/power-platform-skills --skill pcfInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
OperationsSupported Platforms
Our assessment of pcf
pcf scores 93/100 on our quality scale, 192nd of 752 Operations skills we index (top 26%).
Its SKILL.md is 14 KB long, well organised into 16 sections with 11 code examples: a thorough specification that gives an agent plenty to work with.
It has 919 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 20 days ago, so pcf is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
pcf compared with similar skills
All 4 of these similar skills score higher than pcf; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pcf (this skill)by microsoft | 93 | 919 | 20d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 22d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 22d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 133.6k | 11d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 133.6k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install pcf?
- Run
npx skills add microsoft/power-platform-skills --skill pcf. The install tabs above show the steps for each supported agent. - Which AI agents does pcf work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is pcf safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pcf still maintained?
- The repository was last updated 20 days ago, so pcf is actively maintained.
Skill content
View source on GitHubname: pcf version: 1.0.0 description: Builds, tests, diagnoses, upgrades, deploys and verifies Power Apps component framework (PCF) code components for model-driven apps and Power Pages — field and dataset controls, standard and virtual (React) — from Microsoft-maintained templates and recipes pinned to a tested version matrix. Runs quality gates (manifest and host lint, source checks, lint, unit tests, production build), deploys with pac pcf push, verifies registration and form bindings, and guides Power Pages enablement, with guided setup for canvas apps. Use when the user wants to build, fix, upgrade, deploy or check a PCF control or code component, or asks why one fails to build, import, update or render. For a whole page use /model-apps:genpage; for a whole app use /model-apps:app-builder. author: Microsoft Corporation argument-hint: "<control description> | doctor | upgrade | verify | inventory" user-invocable: true allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, AskUserQuestion, EnterPlanMode, ExitPlanMode, TaskCreate, TaskUpdate, TaskList, read, edit, execute, search, web, todo
Plugin check: Run
node "${PLUGIN_ROOT}/scripts/check-version.js"— if it outputs a message, show it to the user before proceeding.
PCF skill
Build, repair, upgrade, deploy, bind, verify and inventory Power Apps component framework controls. Run the work in the main conversation loop. Do not dispatch interactive authoring, approval, deploy consent, binding choices or browser-verification choices to a subagent.
Critical startup
- Set
PLUGIN_ROOTto the installedplugins/pcfdirectory. - Resolve interaction once:
node "${PLUGIN_ROOT}/scripts/resolve-interaction-mode.js" # Optional for automation: --non-interactive - In unattended mode, do not call
AskUserQuestion,EnterPlanModeorExitPlanMode. Use explicit request details and documented non-destructive defaults only; writeUnattended default: <question> → <answer> (<reason>)toworkflow-log.mdin the session working directory; halt on ambiguous environment, app/form/control identity or destructive choices.pcf-intent.json,pcf-plan.mdandworkflow-log.mdlive in that working directory.hooks/validate-write-safety.jsdetects a pcf session only frompcf-intent.jsonorpcf-plan.mdat or one level under the cwd;workflow-log.mdis not a session marker.--outmust be a new, empty subdirectory. Never write those session files into--outbefore scaffold runs — a non-empty directory is refused. - Suppressing a prompt never authorizes an environment write.
pcf-push.jsstill requires an explicit--envand prior consent recorded by the user or automation.
Routing
| User intent | Route |
| --- | --- |
| Build, fix, upgrade, deploy, bind, verify, inventory a PCF code component | Stay in /pcf:pcf. |
| Why a PCF control will not build, import, update or render | Stay in /pcf:pcf; start with ../../references/pcf-troubleshooting.md and the doctor output. |
| Whole custom page / generative page | Use /model-apps:genpage. |
| Whole model-driven app with tables/forms/views/pages | Use /model-apps:app-builder. |
| Use an existing control without code changes | Guide Maker binding and verification; do not scaffold. |
Modes — detect, then confirm
- new: no PCF project exists or the user asks to create one. Follow create-flow.md.
- existing project: one
*.pcfprojfound. Iterate, gates, deploy-only or bind as requested. If several are found, ask which unless unattended supplied a path. - verify: existing control already registered/bound. Run
verify-pcf.jsorpcf-inventory.jsas appropriate. - pages: user targets Power Pages. This release supports Power Pages only for standard field controls: the form-field journey and the standalone Liquid journey (
{% codecomponent %}), both guided. Dataset controls on Pages (form sub-grid and list) are not supported in this release. Run the Pages compatibility gate before deploy or acceptance, then guide site configuration after deploy. Follow pages-flow.md. - canvas: user targets canvas apps. Setup is guided only: gate with the model-driven profile (
modelin the intent and--hosts, the gates' default; nevercanvas), keeppagesas well when the control also targets Power Pages, and review canvas API limits by hand with the user. After the normal push flow, guide the environment setting and Studio setup using ../../references/pcf-canvas.md. A canvas gate profile, reading the environment setting and automated runtime evidence are not implemented. - doctor: run
pcf-doctor.jsand stop with fixes unless user asked to apply a repair. - upgrade: follow upgrade-flow.md.
- inventory / "is this control still used?": run
pcf-inventory.js --env <url> --where-used; always include the where-used warning frompcf-testing.mdbecause dependency results are registered solution dependencies only, not proof of Liquid or arbitrary text references.
Phase 0 — preflight
Run the smallest doctor for the requested work:
node "${PLUGIN_ROOT}/scripts/pcf-doctor.js" [--project <dir>] [--hosts model,pages] [--needs build,push]
When an environment is involved, also run:
node "${PLUGIN_ROOT}/scripts/check-auth.js" --env <envUrl> [--require-pac]
Use --require-pac only for push/package paths and any other path that invokes PAC. Verification and inventory use Azure CLI plus Dataverse reads, so they require az auth but not PAC. If auth or tools block, report the script's JSON message and stop.
For repair work, read ../../references/pcf-troubleshooting.md before choosing fixes. It maps build/import/update/render symptoms to the checks and scripts that produce actionable evidence.
Phase 1 — design → intent → plan approval
Ask only the missing decisions: host(s), field vs dataset, template family, properties, required features, target solution/publisher, binding target, clients, Pages journey, and guided canvas setup. For new controls follow create-flow.md.
Write pcf-intent.json with schema version 1, then render the plan:
node "${PLUGIN_ROOT}/scripts/write-pcf-plan.js" --intent @pcf-intent.json [--manifest ControlManifest.Input.xml] [--out pcf-plan.md]
In attended mode, show the rendered plan in plan mode and continue only after approval. In unattended mode, treat a green plan plus explicit non-destructive defaults as approved and log that default.
Phase 2 — scaffold
For new work, list templates and recipes first:
node "${PLUGIN_ROOT}/scripts/pcf-scaffold.js" --list
Then scaffold exactly what the approved intent names:
node "${PLUGIN_ROOT}/scripts/pcf-scaffold.js" --template <id> --namespace <Namespace> --name <ControlName> --out <dir> [--hosts model,pages] [--recipe <id>] [--display-name <text>] [--description <text>] [--install] [--npm-cli <path>]
If the scaffold JSON includes the PCF_SCAFFOLD_OUT_REDIRECTED note, tell the user the files were written to resolvedOutDir. That note is an info finding, not a warning, and appears only when --out resolved through a symlink or junction. Checks and writes used that physical path; outDir is only the path that was requested.
Do not hand-copy template files. Recipes are routing aids; each current recipe is designed for its listed hosts but not certified in this release unless pcf-recipes.md shows a certification date.
Phase 3 — implement
Read ../../references/pcf-best-practices.md, ../../references/pcf-hosts.md, ../../references/pcf-testing.md, and the selected recipe's README, if a recipe was selected (recipes/<id>/README.md). Keep versions from the matrix and lockfiles only. Add or preserve tests for null-first rendering, missing parameters, field security, permission failures, two instances and dataset paging where applicable.
Phase 4 — gates loop
Run gates until green:
node "${PLUGIN_ROOT}/scripts/pcf-gates.js" --project <dir> [--hosts model,pages] [--skip lint,test,build]
Use --skip only for an explicitly irrelevant gate, and explain why. Never weaken a gate, delete a test, remove deployed-only code, or switch hosts just to pass. For a build-only check:
node "${PLUGIN_ROOT}/scripts/pcf-build.js" --project <dir> [--mode production|development] [--no-clean]
Before redeploying an existing control, compare the current manifest with the previous manifest when a baseline is available:
git show <ref>:<path>/ControlManifest.Input.xml > <temp-old-manifest>
node "${PLUGIN_ROOT}/scripts/lint-pcf.js" --manifest <current manifest> --against <temp-old-manifest> [--hosts model,pages] [--strict]
If no previous manifest is available, state that compatibility was not compared; do not claim the redeploy is backwards-compatible from gates alone.
Phase 5 — Pages compatibility gate
For controls targeting Power Pages, run the pre-deploy Pages gate before pcf-push.js:
node "${PLUGIN_ROOT}/scripts/pcf-gates.js" --project <dir> --hosts pages
This release supports Power Pages only for standard field controls: the form-field journey and the standalone Liquid journey ({% codecomponent %}), both guided. Dataset controls on Pages (form sub-grid and list) are not supported in this release. Reject dataset Pages targets, unsupported control types, unsupported manifest features and source patterns documented in ../../references/pcf-power-pages.md before deploy. Keep the field and Liquid site-configuration journeys for after deployment.
Phase 6 — deploy
Follow deploy-flow.md. Before running pcf-push.js, obtain and record consent naming: environment origin, solution or publisher prefix, and the fact that pac pcf push publishes all pending customizations in that environment.
node "${PLUGIN_ROOT}/scripts/pcf-push.js" --project <dir> --env <url> (--solution <uniqueName> | --publisher-prefix <p>) [--incremental] [--verbosity minimal|normal|detailed|diagnostic] [--allow-dev-bundle] [--no-verify]
Phase 7 — bind
For model-driven targets and Power Pages form-field journeys, follow bind-flow.md. Use Maker for binding unless the user explicitly brought their own binding automation. Publish after binding before claiming a published level. For canvas-only targets, skip model-driven form binding and follow the canvas setup below.
Phase 8 — verify and optional runtime check
For canvas-only targets, use the push registration read-back or pcf-inventory.js for registration evidence, not FormXML verification. For model-driven targets and Power Pages form-field journeys, verify metadata:
node "${PLUGIN_ROOT}/scripts/verify-pcf.js" --env <url> --control <prefix_ns.ctor> [--version <x.y.z>] --table <logical> --form <name|guid> (--column <col>|--control-id <id>) [--clients web,phone,tablet] [--param name=column:<col>] [--param name=static:<value>[:<type>]] [--workspace <dir>]
node "${PLUGIN_ROOT}/scripts/verify-pcf.js" --env <url> --control <prefix_ns.ctor> [--version <x.y.z>] --intent @pcf-intent.json [--workspace <dir>]
For model-driven apps and Pages sites, offer a browser runtime check with Playwright MCP when a reachable target exists. If skipped or unavailable, report runtime-not-checked honestly. Canvas runtime checks are manual in Power Apps Studio.
Phase 9 — Pages site configuration and canvas setup
For Power Pages targets after deployment, follow pages-flow.md, [../../references/pcf-power-pages.md](../.
Truncated for display — read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
133.6kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
133.6kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
