Refero Design
referodesign/refero_skill
Primary/default skill for UI design, product design, web design, landing pages, dashboards, product screens, redesigns, visual polish, frontend/CSS styling, design systems, components, responsive…
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session.
$ npx skills add microsoft/power-platform-skills --skill canvas-app -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/power-platform-skills canvas-app --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/canvas-apps/skills/canvas-app .claude/skills/canvas-app && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "canvas-app" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-app into .claude/skills/canvas-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-app", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-appType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/power-platform-skills --skill canvas-app -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/power-platform-skills canvas-app --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/canvas-apps/skills/canvas-app .agents/skills/canvas-app && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "canvas-app" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-app into .agents/skills/canvas-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-app", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/power-platform-skills --skill canvas-app -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/power-platform-skills canvas-app --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/canvas-apps/skills/canvas-app .cursor/skills/canvas-app && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "canvas-app" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-app into .cursor/skills/canvas-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-app", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/power-platform-skills.git --path plugins/canvas-apps/skills/canvas-app--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/power-platform-skills --skill canvas-app -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/power-platform-skills canvas-app --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/canvas-apps/skills/canvas-app .gemini/skills/canvas-app && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "canvas-app" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-app into .gemini/skills/canvas-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-app", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/power-platform-skills canvas-appInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/power-platform-skills --skill canvas-app -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/canvas-apps/skills/canvas-app .github/skills/canvas-app && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "canvas-app" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-app into .github/skills/canvas-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-app", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/power-platform-skills --skill canvas-app -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/power-platform-skills canvas-app --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/canvas-apps/skills/canvas-app .opencode/skills/canvas-app && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "canvas-app" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/canvas-apps/skills/canvas-app into .opencode/skills/canvas-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-app", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
canvas-appCreates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session.
Canvas App is an agent skill from microsoft/power-platform-skills, published by the product's own GitHub organization. Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles new app generation, direct targeted edits, complex multi-screen changes, responsive layout, per-screen self-QA, and compile-error convergence. Trigger on requests to create, build, generate, modify, update, change, fix, or edit a Canvas App or .pa.yaml files.
Its SKILL.md is about 7.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design, covering Responsive design. It works with Model Context Protocol. The repository describes itself as: 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… The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0d044b8. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditapply_patchBashAskUserQuestionTaskTaskCreateTaskUpdateTaskList…and 10 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Canvas App loads about 7.3k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 3,734 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, apply_patch, Bash, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, EnterAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microsoft/power-platform-skills at commit 0d044b8, republished under its MIT licence (© microsoft). 3,734 words, ~7,307 tokens.
.claude/skills/canvas-app/SKILL.md (or your agent's skills folder).Create or edit a Power Apps canvas app for:
$ARGUMENTS
Canvas Authoring tools operate on a local directory containing the app YAML.
${PLUGIN_ROOT} as immutable runtime provenance. Never derive it from the
current directory, app workspace, repository root, or a sibling worktree.${PLUGIN_ROOT}/references/QAChecks.md and require
QACHK-SHARED-SOURCE-DERIVATION. If the check fails, stop with the observed path; do
not mix prompt generations.App.pa.yaml and every existing
file in that directory is a .pa.yaml file.App.pa.yaml, when
exactly one exists and every existing file in it is a .pa.yaml file.Bash, and resolve its absolute path. If that name
already exists and contains non-YAML files, choose a fresh suffixed name rather than
synchronizing into it.sync_canvas with that absolute working directory before reading or editing app
files. The directory must be dedicated to this app and contain no non-.pa.yaml files
when synchronization starts; never pass the repository root or ${PLUGIN_ROOT}. Do not
call sync_canvas against the working directory again after planning or acceptance
documents have been created there. Do not proceed if the initial sync fails.Always use absolute paths for app files.
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.
${PLUGIN_ROOT}/references/CreateWorkflow.md and follow it.${PLUGIN_ROOT}/references/EditWorkflow.md and follow it.Do not load both workflow documents.
CREATE and complex EDIT workflows return here after the planner finishes.
[working directory]/canvas-app-requirements.md and
[working directory]/canvas-app-plan.md returned by the planner. The requirements artifact must
already exist before planner delegation, use contract version 1, preserve the original
request, identify the target device, and assign stable requirement, action, scenario,
and specialized-contract mappings. Do not let the planner create, rewrite, or replace
this upstream artifact.## Original Request Capability Inventory was captured from the original
request before planner reduction. Every stable key must appear in ## Requirement Coverage and map to existing Action Contract key(s), named observer(s), and Functional
Test Matrix scenario key(s). Reject dropped clauses and unknown mappings; do not add
universal CRUD absent from the request.## Requirement Coverage table 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.## Required Record Fields table has one stable key for the canonical identity and
every field the requirements say users must see. Reject a time-only, identity-only, or
action-only surface when additional title, person, time, description, status, or other
values are requested.## Action Contracts table:Patch, SubmitForm, Collect,
Remove, RemoveIf, UpdateIf, or a connector mutation is invalid. Separate
direct-action controls remain valid when no distinct shared mutation event exists
and each action has its own selected-ID and amount eligibility gates. Their control
identity commits direction, so they need no shared operation variable/reset.Surface.Visible=state predicate Action Contract observer. Do not add rows for
always-visible surfaces, child-only visibility, navigation-based disclosure, or
visibility not declared by the plan.## Functional Test Matrix:Then names a source postcondition and an evidence surface that reads it.## Directional Mutation Evidence before dispatch. It must state a nullable selected-ID state with blank reset
and row assignment, the actual operation state with an entry/success Blank() reset
event, representable blank/non-positive amount bindings, a disabled invalid submission
gate, exact final formulas for both directions, a canonical-source observer, and receipt
bindings for operation, old value, amount, expected value, and actual persisted value.
For a shared-operation flow, the plan must also identify each selection-only binding,
the common guarded mutation event, and their common operation state.## Viewport Containment Contracts row naming one sole top-level AutoLayout root with exact
Width: =Parent.Width and Height: =Parent.Height. All visible and conditional
surfaces must be nested below it.## Temporal Ordering Contracts. Sort typed Date/Time fields directly, or require
validated input normalization to a zero-padded 24-hour HH:mm sort key with explicit
invalid/blank behavior. Reject direct sorting of 12-hour, non-padded, or mixed display
strings.## Dispatch table:Action, Screen, Target File, YAML Key, Name Prefix, and
Screen Brief.Create; EDIT rows use Modify or Create.[working directory].Name Prefix.[working directory]/Screen1.pa.yaml with YAML key Screen1.## Editor State Changes exists and contains exact final order lists or None.[working directory]/canvas-app-shared.md and every dispatch row's Screen Brief exists.
Verify each brief's assignment matches its dispatch row and includes every Action
Contract owned by that screen under ## Required Actions and every scenario it
exercises under ## Functional Test Scenarios. It also includes every
## Required Record Fields row owned by that screen with an exact bound control, formula, hierarchy, visibility rule, and layout budget.
12. Before dispatch, read every brief and reject it when:
- a used control lacks its exact creation keywords, supported input-property names, or
the full Enum name: and compile-ready enum literal required by discovery;
- a Required Action is only an identifier or summary instead of its complete
precondition, event, source/stable identity, postcondition, observer, and evidence;
- a Functional Test Scenario is only an identifier instead of complete
Given/When/Then text, boundary conditions, and expected evidence; or
- it contains an unresolved placeholder or delegates discovery to the builder.
13. In EDIT mode, apply the ### Before builders group of ## App Changes to
[working directory]/App.pa.yaml now. Screens bind to those collections, formulas and variables, and
compiling them against a stale App.pa.yaml produces a flood of false name errors.
14. Call compile_canvas now and resolve every App-level diagnostic before dispatching.
The planner cannot validate through the top-level MCP connection. For EDIT mode,
compile after applying the before-builder app changes and resolve App-level
diagnostics before dispatching.
15. Invoke one general-purpose agent with Task per dispatch row and instruct it to read
and follow ${PLUGIN_ROOT}/agents/canvas-screen-builder.md using the supplied
assignment. Run these workers in waves of at most three. Fire each wave together,
wait for it to return, then dispatch the next.
Never dispatch more than three builders at once. Larger fan-outs have hung without returning, and waves of three get you the first compile sooner, which is where systemic defects surface.
If any pre-dispatch check fails, do not start builders. Re-invoke the planner with the specific defects and repeat the checks on the corrected artifacts.
If the planner reports that writing is unavailable or denied, or returns without the
required artifacts for that reason, write the planner's complete inline artifact payloads
verbatim with apply_patch; do not redesign or rediscover them. If any payload is absent
or cannot be written, stop and report the tooling failure.
If the planner returns Status: Provenance Blocked, stop without a fallback; mixed prompt
generations cannot produce trustworthy artifacts.
Pass each builder only:
Action: [Create / Modify]
Screen: [logical screen name]
Target file: `[working directory]/[file].pa.yaml`
YAML screen key: [key from dispatch row]
Control name prefix: [prefix from dispatch row]
Shared plan: `[working directory]/canvas-app-shared.md`
Screen brief: `[working directory]/[file-base].screen-plan.md`
Plugin root: ${PLUGIN_ROOT}The target file, YAML key, and name prefix are authoritative. Modify actions preserve the key already present in the target file.
Compile after each wave returns, before dispatching the next. A systemic mistake in the first wave is usually repeated in every later screen. Repair files that already exist in place; only rows still waiting for dispatch receive corrected briefs.
A between-wave compile can report a Navigate target that belongs to a later wave as
unrecognized. Confirm it matches a remaining dispatch row and leave it in place.
After all builders finish:
Task,
read_agent, builder repair, QA follow-up, inspection, and evidence update that could
require another workspace change. Once final validation begins, do not launch or resume
an agent.Functional: section before accepting its QA report. It must
contain exactly one PASS trace per Required Action in that screen's brief, and each
trace must name the precondition, control event, source/stable-ID operation,
postcondition, and observer/evidence. A missing link, generic claim, or BLOCKED result
sends that screen back for targeted repair and a corrected trace; do not accept
checklist PASS as a substitute.QA coverage: 1-44 COMPLETE, repair, or N/A lines;QA: 1 PASS checklist or repair entry that does not use
a defined QACHK-* identifier followed by FIXED(n);QACHK-CROSS-AXIS-ALIGNMENT is N/A despite AutoLayout children,
QACHK-ACCESSIBLE-LABEL-MISSING is N/A despite content or input controls,
QACHK-LOW-CONTRAST-TEXT is N/A despite a non-default coloured surface, or
QACHK-ROOT-CONTAINMENT is PASS while a responsive root has screen-level siblings;QACHK-GALLERY-ROW-FITS-CONTENT is N/A despite the screen containing a Gallery;QACHK-ACTION-LABEL-FIT is PASS while a multiword action directly under vertical
AutoLayout lacks Width: =Parent.Width;
PASS is valid after a complete inspection finds no defect; never reject it solely
because the screen has many controls.
For QACHK-NO-HEIGHT-TRAP, QACHK-GALLERY-ROW-FITS-CONTENT,
QACHK-HORIZONTAL-BUDGET, and QACHK-PRIMARY-ACTION-REACHABILITY, reject bare PASS
claims without numeric branch evidence.
This costs one cheap turn. The defects these checks catch — clipped headings, invisible
buttons, placeholder cards — are invisible to compile_canvas, so if you skip this the
app ships broken while reporting clean.Status: Provenance Blocked.[working directory]/canvas-app-shared.md: same
destination items, same order, no extra brand/label injected into one screen's nav,
and width formulas that fit the narrowest target. This is an app-wide check builders
cannot perform because each sees only one screen.## Action Contracts row end to end against the generated files: the entry
point is reachable, the named event is wired, and the observable result is visible
immediately after the action. For mutations, require an in-viewport receipt bound to the
returned record, changed stable ID, or deletion snapshot. Compare the handler formula,
declared write set, declared proof set, and receipt controls one-for-one. For create/edit,
every user-entered or user-selected field written by the handler needs a readable labeled
receipt binding. Navigation, a notification, hidden state, or a row somewhere in a longer
list cannot replace it. Compile success does not prove runtime usability.## Mutation Lifecycle Evidence row against final YAML: receipt,
canonical-source observer, requested-destination observer, synchronization/focus, and
operation all retain one stable ID. If source and destination differ, synchronization
must occur only after mutation success and before destination evidence.## Mutation Field Ledger row against the handler. Every Changed field has
write/proof parity and one labeled receipt binding. Every Preserved field comes from
canonical pre-state, survives by omission or exact carry-forward, and has post-state
evidence for the same ID.## Continuation Contracts exists, verify create's returned ID directly targets the
declared later edit/delete/relationship/approval/transition, and both completion and
cancellation clear continuation ID/mode. Do not require this section for create-only
flows.## State-Driven Surface Visibility exists, require one acceptance row per plan
key with the exact final-YAML Surface.Visible: =state predicate binding. Verify the
named surface itself implements the planned predicate or a provably equivalent Boolean
form. Child visibility and navigation do not satisfy the surface contract. Do not infer
this contract for always-visible or undeclared surfaces.${PLUGIN_ROOT}/references/ValidationWorkflow.md; acceptance prose never overrides final code.## Functional Test Matrix row symbolically against the final formulas.
Confirm the Given state makes the entry point eligible, the When event targets the
declared source and stable ID, the Then values follow from the operation, and the
evidence formula reads that post-state. Repair the owning file when any link depends on
an unstated assumption or a different source/field.## Required Record Fields row against final YAML. The named control must
exist inside the declared record surface, bind the current record's required source
field, and remain visible, non-zero-sized, readable, and inside the card or row in the
normal desktop and phone layouts. Repair missing, hidden, blank, clipped, or displaced
fields, then compile and repeat this field check before writing acceptance evidence.${PLUGIN_ROOT}/references/QAChecks.md and ${PLUGIN_ROOT}/references/ValidationWorkflow.md.QACHK-ROOT-CONTAINMENT N/A on these screens.${PLUGIN_ROOT}/references/ValidationWorkflow.md.QACHK-CARD-PLACEHOLDER PASS when a ModernCard displays Title, Subtitle and
Description with Height < 180; send that screen back for self-QA.Status: Blocked, re-invoke the planner to correct that screen
brief, then rerun only the affected builder. Never ask a builder to guess missing
definitions.Status: Provenance Blocked, stop the wave without a fallback and
report the mismatched plugin root or contract version.Status: Blocked is the only reason to repair a brief and rerun its specialist
generation. Tooling failures stop the run. Compile diagnostics trigger neither path.
Once a screen file exists, repair it in place with targeted edits; regenerating it
discards prior fixes and does not converge.### After builders group of ## App Changes in
[working directory]/canvas-app-plan.md to [working directory]/App.pa.yaml. The ### Before builders group was
already applied at pre-dispatch. If a group says None, do not edit the file for it.[working directory]/App.pa.yaml.## Editor State Changes from [working directory]/canvas-app-plan.md to
[working directory]/_EditorState.pa.yaml after all builders finish. If it says None, leave the
file unchanged.${PLUGIN_ROOT}/references/ValidationWorkflow.md and follow it.compile_canvas must occur after the last edit, create, or
apply_patch and must be the final tool call before the summary. After it succeeds,
return the summary immediately without calling Task, read_agent, view, glob,
rg, Bash, another MCP tool, or any other tool. If any later tool call, delegation,
write, inspection, or repair occurs, the compile is no longer final: finish that work,
wait for every agent, and repeat the final generation-proof gate.describe_control; only use properties returned
for that exact control type.NavBar or btnBack; the compiler rejects the
second with An entity with name '...' already exists. Every control a builder
writes uses the standard control-type abbreviation followed by that screen's assigned
name prefix, such as conDiscNavBar or btnDetailBack. This applies especially to UI
blocks repeated on many screens — nav bars, headers, toolbars, badges.describe_control. list_controls provides
the name used to query describe_control; it is not the authority for authored YAML.
Copy the returned Control: value and every required ComponentName,
ComponentLibraryUniqueName, Variant, and Layout keyword verbatim. Never strip,
normalize, or reconstruct those values.describe_control prints the exact name on the
Enum name: line of each enum property. Copy it verbatim. Enum names do not follow
from control names: Badge.Appearance is BadgeCanvas.Appearance, Progress.Shape
is Progress.Shape, and ModernDropdown.Appearance is just Appearance. An enum
member that starts with a digit must be quoted too — DecimalPrecision.'1', never
DecimalPrecision.1, which fails with Expected operator and Expected an operand
rather than Name isn't recognized.[working directory]/Screen1.pa.yaml for the landing screen and set
App.StartScreen to =Screen1.App.OnStart or the start screen's OnVisible.App.pa.yaml.
The orchestrator owns EDIT-mode App.pa.yaml.App.pa.yaml is validated before builders are dispatched,
and again as soon as the first builder returns. Never defer the first compile until
every file is written.[working directory]/canvas-app-acceptance.md, and no app YAML mutation
occurred after the final successful compile.© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/canvas-apps/skills/canvas-app of microsoft/power-platform-skills.
Open the folder on GitHubat commit 0d044b8
Canvas App next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Canvas App this skillmicrosoft/power-platform-skills | 972 | — | ~7.3k | Automated safety check: Notes | MIT | |
| Refero Designreferodesign/refero_skill | 295 | — | ~5.3k | Automated safety check: Pass | MIT | |
| Better Designmarvkr/better-design | 254 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Responsiveness Checkjezweb/claude-skills | 1.1k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Eclipse Debuggradusnikov/eclipse-chatgpt-plugin | 171 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Browser QAaffaan-m/ECC | 275k | 2 repos | ~1k | Automated safety check: Pass | MIT |
referodesign/refero_skill
Primary/default skill for UI design, product design, web design, landing pages, dashboards, product screens, redesigns, visual polish, frontend/CSS styling, design systems, components, responsive…
marvkr/better-design
Build, improve, and review production interfaces with the Better Design MCP.
jezweb/claude-skills
Test website responsiveness across viewport widths using browser automation.
gradusnikov/eclipse-chatgpt-plugin
Debug Java applications in Eclipse — set breakpoints, launch in debug mode, step through code, inspect stack traces, evaluate expressions, and hot-swap code changes.
affaan-m/ECC
Run automated post-deploy UI verification with a browser automation MCP (claude-in-chrome, Playwright, or Puppeteer): console-error and Core Web Vitals smoke checks, form and auth-flow interaction…
vibeeval/vibecosystem
Screenshot comparison QA for frontend development. An agent skill from vibeeval/vibecosystem.
microsoft/power-platform-skills
Inspects and configures the web application firewall (WAF) in front of a Power Pages production site.
microsoft/power-platform-skills
Inspects and configures the security headers a Power Pages site sends to browsers — Content Security Policy, frame and clickjacking protection, cross-origin sharing, cookie behavior, and related…
microsoft/power-platform-skills
Scans a Power Pages site project for security issues in source code and dependencies.
microsoft/power-platform-skills
Runs a security scan on a deployed Power Pages site, fetches the latest scan report, and produces a plain-language summary.
microsoft/power-platform-skills
Creates Dataverse tables, columns, and relationships for a Power Pages site based on a data model proposal.
microsoft/power-platform-skills
Creates, edits, and manages Power Pages Server Logic files — server-side JavaScript that runs securely on the Power Pages runtime.
Works with
Categories
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Canvas App is an agent skill from microsoft/power-platform-skills, published by the product's own GitHub organization. Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session.
Canvas App fits situations like: requests to create; edit a Canvas App.
Run `npx skills add microsoft/power-platform-skills --skill canvas-app -a claude-code`. Or copy the skill folder (plugins/canvas-apps/skills/canvas-app in microsoft/power-platform-skills) into .claude/skills/canvas-app in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/power-platform-skills --skill canvas-app -a codex`. Or copy the skill folder (plugins/canvas-apps/skills/canvas-app in microsoft/power-platform-skills) into .agents/skills/canvas-app in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/power-platform-skills --skill canvas-app -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/canvas-app, .gemini/skills/canvas-app, .github/skills/canvas-app and .opencode/skills/canvas-app in your project.
SKILL.md names no scripts, command-line tools or credentials: Canvas App is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, apply_patch, Bash, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, EnterPlanMode, ExitPlanMode, mcp__canvas-authoring__sync_canvas, mcp__canvas-authoring__compile_canvas, mcp__canvas-authoring__list_controls, mcp__canvas-authoring__describe_control, mcp__canvas-authoring__list_apis, mcp__canvas-authoring__describe_api, mcp__canvas-authoring__list_data_sources, mcp__canvas-authoring__get_data_source_schema.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Canvas App is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.3k tokens (SKILL.md is roughly 29k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Canvas App: Refero Design (referodesign/refero_skill, 295 stars), Better Design (marvkr/better-design, 254 stars), Responsiveness Check (jezweb/claude-skills, 1.1k stars) and Eclipse Debug (gradusnikov/eclipse-chatgpt-plugin, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/power-platform-skills, which has 972 GitHub stars. The repository holds 87 skills in this directory. The repository was last updated on October 7, 2026.
Source: microsoft/power-platform-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.