From powerplatform-core
Use for Power Apps Code Apps - the pro-code model where a standalone Vite-built React/Vue/TS single-page app uses the `@microsoft/power-apps` client library and is pushed into a Power Platform environment with no server to manage. Covers scaffolding from the official Vite template, initializing with `power.config.json`, adding Dataverse data sources that generate typed model/service files, local dev, building, and pushing via `npx power-apps push` (npm CLI) or legacy `pac code push`. Trigger whenever the user mentions a code app, `power.config.json`, `@microsoft/power-apps`, `pac code` / `power-apps` CLI, a `CodeApp/` folder, or wants to build, run, or push a custom SPA into Power Platform, even if no helper is named. Not for PCF controls embedded in model-driven forms (use pcf-and-web-resources) or Canvas/maker apps.
How this skill is triggered — by the user, by Claude, or both
Slash command
/powerplatform-core:code-appsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Power Apps Code Apps is the code-first SPA hosting model: a standard web app (React/Vue/TS, built with Vite) that imports the `@microsoft/power-apps` client library and is published into a Power Platform environment, where the platform handles Entra authentication, DLP, sharing, and Conditional Access. It is distinct from PCF (components inside model-driven forms) and Canvas apps (built in make...
Power Apps Code Apps is the code-first SPA hosting model: a standard web app (React/Vue/TS, built with Vite) that imports the @microsoft/power-apps client library and is published into a Power Platform environment, where the platform handles Entra authentication, DLP, sharing, and Conditional Access. It is distinct from PCF (components inside model-driven forms) and Canvas apps (built in maker studio). Keep the app source-controlled, build before every push, and treat power.config.json as the bridge between the local project and the target environment.
CodeApp/ folder pattern (several code apps side by side).For a control embedded inside a model-driven form, use pcf-and-web-resources. For Dataverse schema or data operations behind the app, use dataverse-schema and data-operations.
Helpers live in the plugin's scripts/ directory at the plugin root, not inside this skill folder. Resolve the plugin root and invoke them:
python "$CLAUDE_PLUGIN_ROOT/scripts/push_code_app.py" --helppython "$CODEX_PLUGIN_ROOT/scripts/push_code_app.py" --help (also exposed as $PLUGIN_ROOT)scripts/ folder sits beside this skill bundle; invoke by its path within the install.| Helper | Use it to |
|---|---|
push_code_app.py | Build (npm run build) and push a code app. Defaults to the npm CLI (npx power-apps push); pass --cli pac for legacy pac code push and --solution-name <unique> to target a specific solution. Use --path <dir> to point at one app, --all to push every app under a CodeApp/ folder in sequence, --dry-run to preview, and --skip-build only when pushing already-compiled output. |
Discovery: the orchestrator's discover_context.py reports detected code-app roots (and their display names / environment IDs) in its code_apps key. A repo is a code app when power.config.json exists at the root or in a subdirectory.
npx degit github:microsoft/PowerAppsCodeApps/templates/vite my-app, then npm install. Do not introduce a second app toolchain if the template already provides one.npx power-apps init (or --displayName/--environmentId non-interactively) writes power.config.json and authenticates against the environment.pac code add-data-source -a dataverse -t <table> generates typed …Model.ts and …Service.ts files under /generated/services/. Do not hand-edit generated files — regenerate instead. Use select to limit columns; exclude system-managed fields from create payloads; send only changed fields on update.npm run dev, opening the Local Play URL in the same browser profile as the tenant. Note that Chrome/Edge block public-origin requests to localhost by default (since Dec 2025) — grant the prompt or configure allow="local-network-access".npm run build (tsc -b && vite build), then push with push_code_app.py. The push returns a Power Apps URL to run and share the app.powerplatform-core orchestrator and stop if any required field is missing. A push publishes into a live environment — treat it as a mutation, not a build step.npm run build unless the user explicitly asks to push existing compiled output (--skip-build), and say so when you do.code_apps (the multi-app CodeApp/ pattern), list them and confirm the target before running any build or push. Use --all only when the user wants every app pushed in sequence; otherwise scope with --path.npx power-apps push) going forward; pac code push is legacy and being deprecated. Use --cli pac only when the repo or task requires it.power.config.json (environmentId) and the intended target before pushing; warn on any mismatch. Treat the dev environment as the working target and do not push to production without explicit approval.pac solution pack/unpack for code apps, no FetchXML / alternate keys / polymorphic lookups / Dataverse actions via generated services, no Power Platform Git integration, and no Power Apps mobile/Windows support. End users need a Power Apps Premium license, and an admin must enable the Code Apps feature on the environment.references/code-apps.md — architecture, Vite scaffold, npm vs pac CLI, Dataverse data-source integration and CRUD patterns, ALM, admin/security, known limitations, and the multi-app detection model.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub satriotsubasa/powerplatform-core --plugin powerplatform-core