Help us improve
Share bugs, ideas, or general feedback.
From canvas-apps
Generates complete Power Apps canvas apps in YAML (pa.yaml) format. Coordinates planner agent for design approval and parallel screen builders; use for creating apps from requirements.
npx claudepluginhub microsoft/power-platform-skills --plugin canvas-appsHow this skill is triggered — by the user, by Claude, or both
Slash command
/canvas-apps:generate-canvas-appThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a complete Power Apps canvas app for the following requirements:
Generates paste-ready YAML for Power Apps Canvas Apps from UI mockups, screenshots of existing screens, or text descriptions. Replicates designs, improves screens, or builds new ones.
Edits existing Power Apps canvas apps via .pa.yaml files. Syncs from coauthoring session, checks for content, assesses simple vs complex edits, and orchestrates changes or generation.
Creates React and Vite code apps for Power Apps. Scaffolds projects, checks prerequisites like Node.js and pac CLI, authenticates, builds, and deploys to Power Platform.
Share bugs, ideas, or general feedback.
Generate a complete Power Apps canvas app for the following requirements:
$ARGUMENTS
This skill orchestrates two specialist agents:
canvas-app-planner — discovers available controls and data sources, designs the app,
presents a screen plan for your approval, then writes a shared plan documentcanvas-screen-builder — writes exactly one screen's YAML; multiple builders run in
parallel after the plan is approvedYou (the skill) coordinate the agents and own the compilation + error-fixing loop after all screens are written.
Before planning, derive a short folder name from the user's requirements:
$ARGUMENTSexpense-tracker, "my travel planner" → my-travel-planner)Bash: mkdir -p <folder-name>Pass this absolute path as the working directory in every agent prompt below.
Invoke the canvas-app-planner agent using the Task tool.
Pass a prompt that includes:
$ARGUMENTS${CLAUDE_PLUGIN_ROOT}Example prompt:
You are the canvas-app-planner agent. Plan a Canvas App for the following requirements:
[paste $ARGUMENTS here]
Working directory: [absolute path from Phase 0] Plugin root: ${CLAUDE_PLUGIN_ROOT}
Follow the instructions in your agent file. Write canvas-app-plan.md and App.pa.yaml to the working directory. Return the screen list and plan document path when complete.
Wait for the planner to finish. The planner will present the screen plan to the user via plan mode and wait for approval before returning. Do not proceed to Phase 2 until the planner task completes successfully.
After the planner completes, read canvas-app-plan.md from the working directory.
Extract the screen list from the ## Screens table — collect each screen name and its
target file name.
Invoke one canvas-screen-builder agent per screen. Fire all invocations in a single
message (parallel execution) — do not wait for one screen to finish before starting the next.
For each screen, pass a prompt that includes:
canvas-app-plan.mdExample prompt per screen:
You are the canvas-screen-builder agent. Implement the [Screen Name] screen.
- Target file: [ScreenName].pa.yaml
- Plan document: [absolute path to canvas-app-plan.md]
- Working directory: [absolute path from Phase 0]
Follow the instructions in your agent file. 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-builder tasks to complete before proceeding.
After all screen-builders have finished writing their files, call compile_canvas on the
working directory.
On success: Proceed to Phase 4.
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.
Present a final summary:
App generation complete.
Screen File Status [Screen Name] [filename].pa.yaml Written Compiled clean after [N] pass(es). | Screens: [N] | Data: [source or collections]
If any errors remain after exhausting fixes, report them explicitly so the user knows what needs manual attention.