edit-app
Use when the user wants to iterate on an existing generated Power Apps mobile app after /create-mobile-app: update the plan, data model, native capabilities, design, screens, generated app code, and preview without restarting the full project flow.
git clone --depth 1 https://github.com/microsoft/power-platform-skills /tmp/edit-app && cp -r /tmp/edit-app/plugins/mobile-apps/skills/edit-app ~/.claude/skills/edit-appSKILL.md
**Shared instructions: [shared-instructions.md](../../shared/shared-instructions.md)** — read first. # Edit App (`/edit-app`) Post-generation editor for an existing mobile app. `native-app-plan.md` remains the source of truth, but the default outcome is a fixed generated app, not a plan-only diff. After the user approves the plan delta, continue into Dataverse/native/design/screen mutations, run verification, update `memory-bank.md`, and regenerate the static preview when UI changed. Use `--plan-only` only when the user explicitly asks to update planning docs without changing app code. Normal follow-up prompts in Copilot Chat Agent mode should apply the app change end to end. ## When to use - "Improve the search screen to make it easier to use on mobile" - "Add loading, empty, and error states to the list screen" - "Add a detail screen for the selected record" - "Update the design to better match the company branding" - "Add a form to create a new record in Dataverse" - "Add barcode scanning and use the scanned value to search records" - "Generate a new static preview of the updated app" - "Add a `case` table to the data model" - "Replace the Drawer navigation with Tabs" - "Add `expo-camera` to the native capabilities" - "Add signature capture to approvals and store it in Dataverse" - "Generate an evidence PDF and retain it on the inspection record" - "Add a View PDF action for an HTTPS report URL" - "Reorder screens — move profile out of tabs, into a modal from the home header" ## When NOT to use - Brand-new project → `/create-mobile-app` - Just adding one connector with no screen changes → `/add-connector` directly - Just adding a single native wrapper with no screen changes → `/add-native` directly - The plan file is missing → re-run `/create-mobile-app` (don't try to reconstruct) ## Workflow 0. Locate app + health/drift probe → 1. Discover intent + inspect existing app → 1.5 Impact preview → 2. Re-plan affected sections → 3. Gate intent, plan + mutation preview → 4. Write plan diff → 5. Apply app mutations → 6. Rebuild affected screens → 7. Verify + quality sweep → 8. Preview + memory-bank update + optional debug handoff --- ## Edit Quality Gate Policy — no quality compromise This is a focused edit workflow, not a lighter quality bar. Reuse `/create-mobile-app` gates at edit scale. **Required gates by edit type:** | Edit touches | Required gates | |---|---| | Any source file | Existing-app health gate, final `npx tsc --noEmit` | | Dataverse/schema/connector | Environment drift gate, data-source/schema gate, Generated Services snapshot refresh, final `tsc` | | Navigation/routes | Navigation/layout gate, route contract check, final `tsc` | | New screen | Shared scaffold gate, skeleton gate, screen-builder wave gate, style-quality sweep, route check, final `tsc` | | Existing screen TSX | Screen edit gate, style-quality sweep, route check when navigation changed, final `tsc` | | Native capability | Native allowlist gate, wrapper existence gate, final `tsc` | | Pure-JavaScript dependency | Approved exact-version dependency table, package-content gate, package validation, final `tsc` | | Design/component/density | Design-system gate, affected-screen style sweep, final `tsc`, preview | **When a gate fails:** capture full output once, classify by root cause, repair in a batch, rerun the same gate once. Do not make line-by-line fixes with `tsc` after every tiny edit. Continue only when the gate is clean or record a `BLOCKED:` / `DONE_WITH_CONCERNS:` entry in `memory-bank.md`. **Hard stops:** - Do not run data-source mutations if the app root/environment cannot be identified. - Do not launch screen-builders from broken generated services, route layouts, shared code, or skeletons. - Do not import native wrappers in screens before `/add-native` has generated them. - Do not hide unsupported native capabilities behind mocks or TODOs just to satisfy TypeScript. - Do not mark an edit successful if changed screens fail TypeScript, route contracts, or required validators. ### Step 0 — Locate app + health/drift probe ```bash test -f native-app-plan.md && echo "OK: plan found" || echo "ERROR: no plan" test -f package.json && echo "OK: package found" || echo "ERROR: no package" test -d app && echo "OK: app routes found" || echo "ERROR: no app routes" test -f memory-bank.md && echo "OK: memory bank found" || echo "WARN: no memory bank" git status --short ``` If `native-app-plan.md` is missing → STOP. Tell the user this skill edits an existing generated app; they should re-run `/create-mobile-app` on a fresh template or manually recreate the plan before using this editor. Read if present: - `memory-bank.md` — project facts, target environment, visual companion flag, prior blocks - `.datamodel-manifest.json` — existing Dataverse tables/columns - `brand/design-system.md` and `brand/tokens.ts` — design constraints and token availability - `src/generated/services/*.ts` and `src/generated/models/*.ts` — generated data surface Run these existing-app health checks before any mutation: | Check | Action if unhealthy | |---|---| | `memory-bank.md` exists and has expected headings | If missing/corrupt, ask whether to proceed with reduced resume safety; create/update only after approval | | `power.config.json`, `.resolved-environment.json`, and memory bank env agree | For data-source/schema edits, STOP until the user confirms the intended environment | | `src/components/index.tsx`, `src/hooks/index.ts`, `src/utils/index.ts`, `src/tokens/index.ts` exist | Restore missing shared scaffold from `shared/samples/src/` before screen-builder work; do not overwrite existing files | | `app/_layout.tsx` still wraps providers and SafeAreaProvider correctly | Patch conservatively before screen work; route/safe-area validators depend on this | | `src/generated/` compiles when the edit depends on generated services | Regenerate schemas/services first, or block before screen work | | `node_modules` and packag
Guide the user to add a data source, connection, or API connector to a Canvas App via Power Apps Studio, then verify and continue. USE WHEN the user asks to add a data source, add a connection, add an API, add a connector, connect to SharePoint / Dataverse / SQL / Excel / OneDrive / Teams / Office 365, or any similar request to make new data available to the app. DO NOT USE WHEN the user is asking to list or describe existing data sources — call list_data_sources or list_apis directly instead.
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.
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".
[DEPRECATED — use canvas-app instead] Generate a complete Power Apps canvas app.
>
Adds Azure DevOps connector to a Power Apps code app. Use when querying work items, creating bugs, managing pipelines, or making ADO API calls.
Use when adding a Power Platform connector to an Expo/React Native Power Apps mobile app and no dedicated mobile connector skill exists.
Use when adding an unspecified data source to an Expo/React Native Power Apps mobile app; routes to Dataverse, SharePoint, or another connector.