microsoft/power-platform-skills is a plugin marketplace containing reusable skills, agents, and commands for developing with Microsoft Power Platform. Developers use it to build and deploy Power Pages sites, model-driven Power Apps, and related solutions through Claude Code or GitHub Copilot. The catalogue entries are the marketplace's included skills, agents, plugins, and other agent components.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add microsoft/power-platform-skills --skill canvas-appgit clone --depth 1 https://github.com/microsoft/power-platform-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/microsoft/power-platform-skills/canvas-app)<a href="https://agentmods.dev/skills/microsoft/power-platform-skills/canvas-app"><img src="https://agentmods.dev/badge/skills/microsoft/power-platform-skills/canvas-app.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00079 | $0.03470 |
| Opus 5 | $0.00039 | $0.01735 |
| Sonnet 5 | $0.00016 | $0.00694 |
| Haiku 4.5 | $0.00008 | $0.00347 |
Grade A, and why
canvas-app scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 244 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Create or Edit a Canvas App
Create or edit a Power Apps canvas app for:
$ARGUMENTS
Establish the Workspace
Canvas Authoring tools operate on a local directory containing the app YAML.
- Reuse the current directory when it already contains
App.pa.yaml. - Otherwise, reuse the single immediate child directory containing
App.pa.yaml, when exactly one exists. - Otherwise, derive a short kebab-case folder name from the app name or requirements,
create it with
Bash, and resolve its absolute path. - Call
sync_canvaswith that absolute working directory before reading or editing app files. Do not proceed if sync fails.
Always use absolute paths for app files. Never edit _EditorState.pa.yaml; Studio owns it.
Route the Request
Inspect the synced .pa.yaml files before choosing a workflow. A blank app normally contains
App.pa.yaml, Screen1.pa.yaml, and _EditorState.pa.yaml.
Treat the app as empty when it has no screens with meaningful leaf controls. Containers without leaf controls do not make the app non-empty.
- Empty app: read
${PLUGIN_ROOT}/references/CreateWorkflow.mdand follow it. - Existing app: read
${PLUGIN_ROOT}/references/EditWorkflow.mdand follow it.
Do not load both workflow documents.
Planned Build Handoff
CREATE and complex EDIT workflows return here after the planner finishes.
- Read
[working directory]/canvas-app-plan.mdreturned by the planner. - Verify its
## Requirement Coveragetable maps every concrete requested noun and interaction to a visible affordance. Any approximation must be explicit and must not use UI copy that claims the unavailable interaction is exact. - Verify its
## Action Contractstable:- Every requested or approved action has its own row and reachable entry point.
- Create, edit, delete, search, filter, approve, reject, period, and export behaviors are not collapsed into vague combined rows.
- When review distinguishes approved and rejected outcomes, Approve and Reject/Decline have separate contracts owned by the same eligible record surface.
- Every mutation names an observable bound result, not only a confirmation message.
- Every mutation declares a write set and receipt proof set. For create/edit, reject the plan when any user-entered or user-selected write-set field is absent from the proof set.
- Supporting setup actions exist when required to exercise an explicitly requested lifecycle, relationship, comparison, or ranking.
- Role-scoped management of all primary records includes separate visible select/edit/save and remove/cancel paths, not only review or status controls.
- Create/edit contracts define required inputs, directly selectable finite choices, stable identity, edit prepopulation, cancel/reset behavior, and post-save evidence.
- Every row names a precondition, source and stable identity, exact transition and postcondition, observer reading that source, and visible evidence.
- Verify its
## Functional Test Matrix:- Every Action Contract has at least one deterministic Given/When/Then success row.
- Every required invalid, blocked, empty, clear/reset, or boundary path has a row.
- Every
Thennames a source postcondition and an evidence surface that reads it. - Local/mock scenarios use concrete seeded IDs and values. Filter scenarios include at least two matching records and one non-matching record.
- EDIT scenarios cover existing behavior touched by changed sources, fields, controls, or observer formulas.
- Verify its
## Dispatchtable:- Every row has
Action,Screen,Target File,YAML Key,Name Prefix, andScreen Brief. - CREATE rows use
Create; EDIT rows useModifyorCreate. - Target files and screen briefs are absolute paths under
[working directory]. - No two rows target the same file.
- No two rows share a
Name Prefix. - In CREATE mode the first row targets
[working directory]/Screen1.pa.yamlwith YAML keyScreen1. ## Editor State Changesexists and contains exact final order lists orNone.
- Every row has
- Confirm
[working directory]/canvas-app-shared.mdand every dispatch row'sScreen Briefexists. Verify each brief's assignment matches its dispatch row and includes every Action Contract owned by that screen under## Required Actionsand every scenario it exercises under## Functional Test Scenarios. - In EDIT mode, apply the
### Before buildersgroup of## App Changesto[working directory]/App.pa.yamlnow. Screens bind to those collections, formulas and variables, and compiling them against a staleApp.pa.yamlproduces a flood of false name errors. - Confirm the planner reported a clean
compile_canvasfor[working directory]/App.pa.yaml. If it did not, compile now and resolve everyApp-level diagnostic before dispatching. For EDIT mode, compile after applying the before-builder app changes and resolve App-level diagnostics before dispatching. - Invoke
canvas-screen-builderonce per dispatch row, in waves of at most three. Fire the wave's invocations together in one message, wait for that wave to return, then dispatch the next.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 244 lines · 79 tokens per session scan A 7ef39ee2d76a
canvas-app is a skill published in the GitHub repository microsoft/power-platform-skills (836 stars, last pushed yesterday), licensed MIT. It adds 79 tokens to every session and 3,470 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
canvas-apps-ui-gen
Generates paste-ready Power Apps Canvas App YAML. Invoke when the user wants to replicate a UI mockup, improve an existing Canvas app screen, or build a new screen from a text description. Also invoke when the user asks to "improve", "redesign", or "generate YAML" for a Canvas app screen.
fec-ui-design
A frontend UI design guide for creating or reviewing product-specific interfaces, including layout, visual style, design systems, interaction states, responsive behavior, charts, and visual quality checks. It adapts the design to the product's users and main task.
fec-storybook-component-doc
A workflow for documenting interface components in Storybook, a tool that displays UI components and their states in isolation. It covers stories, reusable setup wrappers, written documentation, interaction checks, accessibility checks, and visual baselines.
fec-tailwind-design-system
A guide to organizing a Tailwind CSS design system: the shared rules for colors, spacing, themes, components, and responsive layouts.
brand-design
Brand-aware design system generator that acts as Head of Brand. Translates abstract brand language into a mathematically-validated, implementation-ready design system, writes creative-brief.md as the source of truth for all UI/UX in a project, and optionally compiles it to framework tokens (Tailwind v4 @theme, v3…
design-lint
A repeatable checker for design problems in rendered HTML and CSS, standalone prototype pages, or live URLs. It compares them with a DESIGN-TOKENS.md file, a document defining approved colors, fonts, spacing, and other visual rules, and reports pass or fail results.