add-data-source
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…
Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile.
$ npx -y skills add microsoft/power-platform-skills --skill enable-tables-offline --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/enable-tables-offlineContext preview
The summary Claude sees to decide when to auto-load this skill.
Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile.
name: enable-tables-offline description: Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile. user-invocable: false disable-model-invocation: true allowed-tools: Read, Edit, Write, Grep, Glob, Bash, AskUserQuestion, EnterPlanMode, ExitPlanMode model: sonnet
**Shared instructions: [shared-instructions.md](${PLUGIN_ROOT}/shared/shared-instructions.md)** — read first.
**References:**
Flip `IsAvailableOffline=true` AND `ChangeTrackingEnabled=true` on the `EntityMetadata` of one or more Dataverse tables, then publish customizations. This is the prerequisite shown in Image 4 of the maker portal ("Can be taken offline" + "Track changes") — without both, a table CANNOT be added to a Mobile Offline Profile.
Sequential (Dataverse metadata lock) and idempotent: re-running on an already-enabled table is a no-op.
1. Verify project & auth → 2. Resolve table list → 3. Inspect current state → Gate → 4. PUT EntityMetadata per table → 5. Publish → 6. Verify → 7. Summary
---
test -f power.config.json && test -f app.config.js
node "${PLUGIN_ROOT}/scripts/resolve-environment.js" "$(node -e \"console.log(require('./power.config.json').environmentId)\")"Capture the **Environment URL** from the resolver for `<envUrl>`. STOP if not authenticated.
Tables to enable come from one of (in order):
| Source | Used when | |---|---| | `$ARGUMENTS` | User passed a comma- or space-separated list of logical names (e.g. `/enable-tables-offline cr123_note,cr123_visit`) | | `.datamodel-manifest.json` | Default — read `tables[].logicalName` for every Dataverse-backed table in the app | | `AskUserQuestion` | Only if both above are absent. Show the table list from `src/generated/services/*Service.ts` filenames and let the user pick. |
If the resolved list is empty, STOP with: "No Dataverse tables found in this project. Run `/add-dataverse` first."
**Print before starting:** > "→ Querying current IsAvailableOffline + ChangeTrackingEnabled for <N> table(s)…"
For each table, in sequence:
node "${PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> GET \
"EntityDefinitions(LogicalName='<table>')?\$select=LogicalName,DisplayName,IsAvailableOffline,ChangeTrackingEnabled,IsCustomizable"Build a status table:
| Table | IsAvailableOffline | ChangeTrackingEnabled | IsCustomizable | Needs change? | |--------------------|--------------------|-----------------------|----------------|---------------| | cr123_note | false | false | true | YES (both) | | cr123_visit | true | false | true | YES (track) | | contact | true | true | true | NO |
**Hard rule:** if `IsCustomizable.Value=false` on any table, that table CANNOT be modified. Drop it from the change set and flag in `DONE_WITH_CONCERNS` — system-managed tables (most OOB) require an admin solution patch path the skill does not handle.
Enter plan mode with the status table from Step 3 plus the planned operation per table. Wait for user `ExitPlanMode` before proceeding.
Plan body:
The following EntityMetadata changes will be PUT in sequence: cr123_note → set IsAvailableOffline=true, ChangeTrackingEnabled=true cr123_visit → set ChangeTrackingEnabled=true (IsAvailableOffline already true) After all updates, a single PublishAllXml request will commit the changes. Tables already in the desired state are skipped (no API call).
If the user rejects, STOP. If they approve, proceed.
**Print before starting:** > "→ Updating EntityMetadata for <N> table(s) sequentially (Dataverse serializes metadata writes)…"
> **⚠️ Concurrency rule — do not violate.** Metadata writes hold an exclusive lock per org. Issue one PUT, wait for 2xx, then the next. No batching, no parallel calls. Same rule as `/add-dataverse` Step 5.
For each table needing change (skip ones already in target state):
node "${PLUGIN_ROOT}/scripts/update-entity-offline-flags.js" <envUrl> \
--table <table> \
--offline true \
--tracking trueThe helper:
**If the helper returns status 403 `PrivilegeCheckFailed`:** the user lacks "Customize System" privilege. Print the table name and which privilege is missing, then STOP.
**If status 400 with `ChangeTrackingEnabled cannot be disabled`:** ignore — that path only triggers when going from true to false, which we never do.
Print `✓ <table>` after each 204; print `↷ <table> (already enabled)` for no-ops; print `⚠ <table> (uncustomizable)` for skips.
**Print before starting:** > "→ Publishing customizations (targeted PublishXml on the entities just edited)…"
**Use targeted `PublishXml`** scoped to the entities that were
Official agent skills/plugins for Power Platform development by Microsoft.
Repo: microsoft/power-platform-skills
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…
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles new app generation, direct targeted edits, complex…
Configure the Canvas Authoring MCP server for the current coauthoring session. USE WHEN "configure MCP", "set up MCP server", "MCP not working", "connect…
Use this skill when the user wants to "report a bug", "file an issue", "report an issue", "submit a bug report", or report any problem with the canvas-apps…
Adds Azure DevOps connector to a Power Apps code app. Use when querying work items, creating bugs, managing pipelines, or making ADO API calls.
Adds any Power Platform connector to a Power Apps code app. Generic fallback for connectors not covered by a specific skill.