plugins/canvas-apps/skills/edit-canvas-app/SKILL.md
Edit an existing Power Apps canvas app. USE WHEN the user wants to modify, update, change, or edit an existing Canvas App or pa.yaml files.
npx skillsauth add microsoft/power-platform-skills edit-canvas-appInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Make the following changes to the existing Canvas App:
$ARGUMENTS
This skill uses two paths depending on edit complexity:
canvas-edit-planner + parallel canvas-screen-editorBefore syncing or editing, create a subfolder to contain the app's YAML files:
$ARGUMENTS — extract the app name if present, otherwise
use a 2–3 word summary of what is being editedexpense-tracker)Bash: mkdir -p <folder-name>All file reads, writes, and syncs operate in this folder.
Sync the canvas app:
Call the sync_canvas MCP tool targeting the working directory. This pulls the current app
state from the coauthoring session into local .pa.yaml files. Only proceed after
sync_canvas completes successfully.
Check for meaningful content:
After sync_canvas completes, read the synced .pa.yaml files and check whether the app
has meaningful content. An app is considered empty if:
.pa.yaml files were written, orGroupContainer) with no
leaf controls inside themIf the app is empty, do not proceed with the edit workflow. Instead, inform the user:
The synced app appears to be empty — no existing screens or controls were found. Switching to app generation mode to build the app from scratch.
Then follow the full generate-canvas-app workflow, using the user's original request as the generation requirements.
If the app has meaningful content, proceed to Phase 2.
Read all synced .pa.yaml files. Based on $ARGUMENTS and the current app state, determine
whether this is a simple or complex edit:
Simple — all of the following are true:
Examples: change a button color, update label text, fix a formula, adjust a control size.
Complex — any of the following are true:
Examples: add a settings screen, redesign the home screen layout, integrate a new connector, change the navigation flow across the app.
Read ${CLAUDE_PLUGIN_ROOT}/references/TechnicalGuide.md before making changes.
Apply the changes directly:
Edit the relevant .pa.yaml files with the required changes, following conventions
from TechnicalGuide.md.
Validate by calling compile_canvas on the working directory after making changes.
On failure, read the errors, fix with Edit, and re-compile. Iterate until clean.
Present a brief summary:
Edit complete. [1-2 sentence description of what was changed.] Compiled clean after [N] pass(es).
Invoke the canvas-edit-planner agent using the Task tool.
Pass a prompt that includes:
$ARGUMENTS.pa.yaml files were synced)${CLAUDE_PLUGIN_ROOT}.pa.yaml files found in the working directoryExample prompt:
You are the canvas-edit-planner agent. Plan the following edits to an existing Canvas App:
[paste $ARGUMENTS here]
Working directory: [absolute working directory path] Plugin root: ${CLAUDE_PLUGIN_ROOT} Synced files: [list of .pa.yaml filenames]
Follow the instructions in your agent file. Write canvas-edit-plan.md to the working directory. Return the list of screens to modify/add and the plan document path when complete.
Wait for the planner to finish. The planner will present the edit plan to the user via plan mode and wait for approval before returning. Do not proceed to Phase 4 until the planner task completes successfully.
After the planner completes, read canvas-edit-plan.md from the working directory.
Extract the list of screens to modify and screens to add from the plan's tables.
Invoke one canvas-screen-editor agent per affected screen. Fire all invocations in a
single message (parallel execution) — do not wait for one editor to finish before starting
the next.
For each screen, pass a prompt that includes:
canvas-edit-plan.mdExample prompt per screen:
You are the canvas-screen-editor agent. [Modify / Add] the [Screen Name] screen.
- Action: [Modify / Add]
- Target file: [ScreenName].pa.yaml
- Plan document: [absolute path to canvas-edit-plan.md]
- Working directory: [absolute working directory path]
Follow the instructions in your agent file. [Edit / Write] [ScreenName].pa.yaml and return your result when done. Do not call compile_canvas — validation is handled by the skill.
Wait for all screen-editor tasks to complete before proceeding.
After all screen-editors have finished, call compile_canvas on the working directory.
On success: Proceed to Phase 6.
On failure: Read every error in the output. Errors will reference specific files and line numbers. For each error:
Read the referenced .pa.yaml fileEditcompile_canvas againRepeat until compile_canvas reports no errors. Do not give up after a single fix attempt —
iterate until the entire directory compiles clean.
Track how many compile_canvas passes were needed.
Delete canvas-edit-plan.md from the working directory using Bash:
rm <working-directory>/canvas-edit-plan.md
Present a final summary:
Edit complete.
| Action | Screen | File | Status | |--------|--------|------|--------| | [Modify / Add] | [Screen Name] | [filename].pa.yaml | Done |
Compiled clean after [N] pass(es).
If any errors remain after exhausting fixes, report them explicitly so the user knows what needs manual attention.
tools
Configure the Canvas Authoring MCP server for the current coauthoring session. USE WHEN "configure MCP", "set up MCP server", "MCP not working", "connect Canvas Apps MCP", "canvas-authoring not available", "MCP not configured", "set up canvas apps". DO NOT USE WHEN prerequisites are missing — direct the user to install .NET 10 SDK first.
development
Use when the user asks to "set up authentication", "add login", "add logout", "add sign in", "enable auth", "add role-based access", "add authorization", "protect routes", "configure identity provider", "configure Entra ID", "configure Entra External ID", "configure OpenID Connect", "add OIDC", "set up SAML", "set up WS-Federation", "set up local login", "add username password", "add Facebook login", "add Google sign in", "add Microsoft Account", "set up invitation login", or otherwise wants to set up authentication (login/logout) and role-based authorization for their Power Pages code site using any supported identity provider (Microsoft Entra ID, Entra External ID, OpenID Connect, SAML2, WS-Federation, local authentication, Microsoft Account, Facebook, or Google).
development
Creates, updates, and deploys Power Apps generative pages for model-driven apps using React v17, TypeScript, and Fluent UI V9. Orchestrates specialist agents for planning, entity creation, and code generation. Use it when user asks to build, retrieve, or update a page in an existing Microsoft Power Apps model-driven app. Use it when user mentions "generative page", "page in a model-driven", or "genux".
development
Creates a new Power Pages code site (SPA) using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, scaffolding, component planning, design, implementation, validation, and deployment. Use when the user wants to create, build, or scaffold a new Power Pages website or portal.