Eol Internal Enablement
deanpeters/Product-Manager-Skills
Build the support FAQ, sales talking points, and objection handling teams need before an EOL announcement.
Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile.
$ npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/power-platform-skills enable-tables-offline --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/mobile-apps/skills/enable-tables-offline .claude/skills/enable-tables-offline && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "enable-tables-offline" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offline into .claude/skills/enable-tables-offline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-tables-offline", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offlineType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/power-platform-skills enable-tables-offline --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/mobile-apps/skills/enable-tables-offline .agents/skills/enable-tables-offline && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "enable-tables-offline" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offline into .agents/skills/enable-tables-offline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-tables-offline", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/power-platform-skills enable-tables-offline --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/mobile-apps/skills/enable-tables-offline .cursor/skills/enable-tables-offline && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "enable-tables-offline" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offline into .cursor/skills/enable-tables-offline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-tables-offline", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/power-platform-skills.git --path plugins/mobile-apps/skills/enable-tables-offline--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/power-platform-skills enable-tables-offline --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/mobile-apps/skills/enable-tables-offline .gemini/skills/enable-tables-offline && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "enable-tables-offline" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offline into .gemini/skills/enable-tables-offline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-tables-offline", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/power-platform-skills enable-tables-offlineInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/mobile-apps/skills/enable-tables-offline .github/skills/enable-tables-offline && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "enable-tables-offline" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offline into .github/skills/enable-tables-offline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-tables-offline", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/power-platform-skills enable-tables-offline --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/power-platform-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/mobile-apps/skills/enable-tables-offline .opencode/skills/enable-tables-offline && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "enable-tables-offline" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/mobile-apps/skills/enable-tables-offline into .opencode/skills/enable-tables-offline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-tables-offline", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
enable-tables-offlineInternal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile.
Enable Tables Offline is an agent skill from microsoft/power-platform-skills, published by the product's own GitHub organization. Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: A plugin marketplace for GitHub Copilot and other AI agents that provides Power Platform development plugins, including reusable skills, agents, and commands for building and… The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0d044b8. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadEditWriteGrepGlobBashAskUserQuestionEnterPlanModeExitPlanModeFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Enable Tables Offline loads about 2.2k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 792 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Edit, Write, Grep, Glob, Bash, AskUserQuestion, EnterPlanMode, ExitPlanModeAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microsoft/power-platform-skills at commit 0d044b8, republished under its MIT licence (© microsoft). 792 words, ~2,194 tokens.
.claude/skills/enable-tables-offline/SKILL.md (or your agent's skills folder).Shared instructions: shared-instructions.md — read first.
References:
IsAvailableOffline, ChangeTrackingEnabled)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.
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-dataverseStep 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:
EntityMetadata to pick up the current MetadataId + SchemaName (both required in the PUT body — Dataverse rejects PUT without them).MSCRM.MergeLabels: true so display labels are preserved (the alternative wipes labels — never use false).{ "status": 200, "noop": true, ... } if the table is already in the target state (skip silently).{ "status": 200, "skipped": "uncustomizable", ... } for tables whose IsCustomizable.Value=false (system-managed; you must surface as DONE_WITH_CONCERNS).{ "status": 204, ... } on successful update.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 actually modified — avoids the org-wide rate-limit storms (0x80071151 "concurrent PublishAll already running") observed on shared envs. Empirical 2026-05-25.
# Build the <entities> XML body from the list of tables modified in Step 4
node "${PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST \
"PublishXml" --body '{
"ParameterXml": "<importexportxml><entities><entity>cr720_fcbflag</entity><entity>cr720_rolloutevent</entity></entities></importexportxml>"
}'Substitute <entity>...</entity> lines for every table the helper PUT'd flags on in Step 4. Tables that were no-ops or uncustomizable are omitted.
On 204: success — continue to Step 6.
On 429 / 0x80071151 ("concurrent publish already running"): back off automatically via dataverse-request.js's retry logic. If still failing after 4 retries, return DONE_WITH_CONCERNS: publish bottlenecked on shared env; metadata changes are committed but maker portal will not refresh until next publish. The downstream skill (/setup-offline-profile) can proceed — metadata-level writes are durable.
Fallback to PublishAllXml (only when the targeted call returns a non-rate-limit error like 0x80048d19 malformed body):
node "${PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST \
"PublishAllXml" --body '{}'Same timeout-but-success handling as /setup-offline-profile Step 8: if the client times out but a follow-up GET on the table's EntityMetadata shows the flags are set, treat as success.
Print before starting:
"→ Re-querying EntityMetadata to confirm flags are set…"
Re-run the Step 3 query for each modified table. Assert IsAvailableOffline=true and ChangeTrackingEnabled=true on every changed row. If any disagree, BLOCKED — something rejected the PUT silently (extremely unlikely; usually an indication of a managed-solution layer that's masking the unmanaged change).
Print:
✓ Offline prerequisites enabled on <N> table(s):
- cr123_note (IsAvailableOffline + ChangeTrackingEnabled set)
- cr123_visit (ChangeTrackingEnabled set; IsAvailableOffline already on)
Skipped (already enabled): contact
Next: run /setup-offline-profile to design the offline profile that uses these tables.Update memory-bank.md under ## Offline profile with the timestamp and table list.
Final line of the skill's response is one of:
DONE — all requested tables now have both flags setDONE_WITH_CONCERNS: <list> — some tables skipped (uncustomizable, publish warning, etc.)NEEDS_CONTEXT: <missing> — couldn't resolve table list and user didn't provideBLOCKED: <reason> — auth failure, privilege check failed, or post-PUT verification disagreed© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/mobile-apps/skills/enable-tables-offline of microsoft/power-platform-skills.
Open the folder on GitHubat commit 0d044b8
Enable Tables Offline next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Enable Tables Offline this skillmicrosoft/power-platform-skills | 972 | — | ~2.2k | Automated safety check: Notes | MIT | |
| Eol Internal Enablementdeanpeters/Product-Manager-Skills | 7.2k | — | ~3.1k | Automated safety check: Pass | Custom licence | |
| Executealirezarezvani/claude-skills | 28k | — | ~831 | Automated safety check: Pass | MIT | |
| Debugging Executionsn8n-io/n8n | 207k | — | ~2.6k | Automated safety check: Pass | Custom licence | |
| Internal Commsalirezarezvani/claude-skills | 28k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Internal Communicationsickn33/agentic-awesome-skills | 47k | 1 repos | ~3.4k | Automated safety check: Pass | MIT |
deanpeters/Product-Manager-Skills
Build the support FAQ, sales talking points, and objection handling teams need before an EOL announcement.
alirezarezvani/claude-skills
/cs:execute <decision — Generate a 90-day execution plan with weekly milestones, DRIs, and check-in cadence from an approved decision.
n8n-io/n8n
Debug failed or wrong-output workflow executions using executions tools.
alirezarezvani/claude-skills
A skill your agent uses when a Head of People Ops, BizOps lead, or Internal Communications owner needs to draft and sequence an internal-only change-management communication — a re-org announcement…
sickn33/agentic-awesome-skills
Internal communication log: title, type, date, department, host and attendees, agenda, action items, follow-up date, meeting link and delivery status.
anthropics/skills
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill…
microsoft/power-platform-skills
Inspects and configures the web application firewall (WAF) in front of a Power Pages production site.
microsoft/power-platform-skills
Inspects and configures the security headers a Power Pages site sends to browsers — Content Security Policy, frame and clickjacking protection, cross-origin sharing, cookie behavior, and related…
microsoft/power-platform-skills
Scans a Power Pages site project for security issues in source code and dependencies.
microsoft/power-platform-skills
Runs a security scan on a deployed Power Pages site, fetches the latest scan report, and produces a plain-language summary.
microsoft/power-platform-skills
Creates Dataverse tables, columns, and relationships for a Power Pages site based on a data model proposal.
microsoft/power-platform-skills
Creates, edits, and manages Power Pages Server Logic files — server-side JavaScript that runs securely on the Power Pages runtime.
Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile. Enable Tables Offline is an agent skill from microsoft/power-platform-skills, published by the product's own GitHub organization. Internal mobile-app workflow read and executed only by /setup-offline-profile to enable Dataverse table prerequisites for a Mobile Offline Profile.
Run `npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a claude-code`. Or copy the skill folder (plugins/mobile-apps/skills/enable-tables-offline in microsoft/power-platform-skills) into .claude/skills/enable-tables-offline in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a codex`. Or copy the skill folder (plugins/mobile-apps/skills/enable-tables-offline in microsoft/power-platform-skills) into .agents/skills/enable-tables-offline in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/power-platform-skills --skill enable-tables-offline -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/enable-tables-offline, .gemini/skills/enable-tables-offline, .github/skills/enable-tables-offline and .opencode/skills/enable-tables-offline in your project.
Going by SKILL.md and its folder, Enable Tables Offline needs the command-line tools its instructions call (node). Its frontmatter pre-approves these tools: Read, Edit, Write, Grep, Glob, Bash, AskUserQuestion, EnterPlanMode, ExitPlanMode.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Enable Tables Offline is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Enable Tables Offline: Eol Internal Enablement (deanpeters/Product-Manager-Skills, 7.2k stars), Execute (alirezarezvani/claude-skills, 28k stars), Debugging Executions (n8n-io/n8n, 207k stars) and Internal Comms (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/power-platform-skills, which has 972 GitHub stars. The repository holds 87 skills in this directory. The repository was last updated on October 7, 2026.
Source: microsoft/power-platform-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.