Azsdk Common Generate SDK Locally
Azure/azure-sdk-for-android
Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization.
Force-links a development or target environment to a Power Platform Pipelines host, overriding any existing association with a previous host.
$ npx skills add microsoft/power-platform-skills --skill force-link-environment -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/power-platform-skills force-link-environment --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/power-pages/skills/force-link-environment .claude/skills/force-link-environment && 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 "force-link-environment" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-pages/skills/force-link-environment into .claude/skills/force-link-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "force-link-environment", 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/power-pages/skills/force-link-environmentType 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 force-link-environment -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/power-platform-skills force-link-environment --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/power-pages/skills/force-link-environment .agents/skills/force-link-environment && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "force-link-environment" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-pages/skills/force-link-environment into .agents/skills/force-link-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "force-link-environment", 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 force-link-environment -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/power-platform-skills force-link-environment --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/power-pages/skills/force-link-environment .cursor/skills/force-link-environment && 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 "force-link-environment" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-pages/skills/force-link-environment into .cursor/skills/force-link-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "force-link-environment", 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/power-pages/skills/force-link-environment--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 force-link-environment -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/power-platform-skills force-link-environment --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/power-pages/skills/force-link-environment .gemini/skills/force-link-environment && 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 "force-link-environment" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-pages/skills/force-link-environment into .gemini/skills/force-link-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "force-link-environment", 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 force-link-environmentInstalls 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 force-link-environment -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/power-pages/skills/force-link-environment .github/skills/force-link-environment && 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 "force-link-environment" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-pages/skills/force-link-environment into .github/skills/force-link-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "force-link-environment", 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 force-link-environment -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 force-link-environment --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/power-pages/skills/force-link-environment .opencode/skills/force-link-environment && 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 "force-link-environment" agent skill from https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-pages/skills/force-link-environment into .opencode/skills/force-link-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "force-link-environment", 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.
force-link-environmentForce-links a development or target environment to a Power Platform Pipelines host, overriding any existing association with a previous host.
Force Link Environment is an agent skill from microsoft/power-platform-skills, published by the product's own GitHub organization. Force-links a development or target environment to a Power Platform Pipelines host, overriding any existing association with a previous host. Use when creating a deploymentenvironments record fails with "this environment is already associated with another pipelines host", or when intentionally migrating an environment from one host to another (e.g., Platform Host → Custom Host, or between two Custom Hosts). Calls the documented ManageEnvironmentStamp Dataverse action (the API behind the "Force Link" button in the…
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/validate-force-link.js`).
It sits in DevOps & Cloud, covering CI/CD. It works with Power Automate, Microsoft Azure and Model Context Protocol. 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.
8 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:
ReadWriteEditBashGlobGrepTaskCreateTaskUpdateTaskListAskUserQuestion…and 2 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodeazFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
learn.microsoft.comFrom 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.
Force Link Environment loads about 4k tokens when it runs. Until then it costs about 241 tokens; SKILL.md has 1,704 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, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskUpdate, TaskList, AskUserQuestion, mcp__plugin_Automated 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); the scripts in this folder are not scanned.
The full file from microsoft/power-platform-skills at commit 0d044b8, republished under its MIT licence (© microsoft). 1,704 words, ~3,987 tokens.
.claude/skills/force-link-environment/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Plugin check: Run
node "${PLUGIN_ROOT}/scripts/check-version.js"— if it outputs a message, show it to the user before proceeding.
Move a dev or target environment's Power Platform Pipelines host association from one host to another. This is the documented remediation when deploymentenvironments create fails with "this environment is already associated with another pipelines host", and also the right tool when intentionally migrating environments between hosts.
Microsoft Learn (ground truth): Using Force Link to associate an environment with a new host
In the target host (the new host the user wants to use):
deploymentenvironments record as the active stamp for the BAP environment.validationstatus flips to Succeeded (200000001).In the previous host (the host the env was previously linked to):
deploymentenvironments row is delinked. Its validationstatus is left stale until refreshed in the previous host's UI.The action is reversible by running Force Link again from the previous host.
Before any Dataverse call, refresh the agent's grounding by fetching the doc above via mcp__plugin_power-pages_microsoft-learn__microsoft_docs_fetch. If the doc has updated behaviors (e.g., new permission requirements, new warning text), surface them to the user before continuing. See ${PLUGIN_ROOT}/references/alm-docs-grounding.md for the shared pattern.
| # | Phase | Output |
|---|---|---|
| 1 | Prerequisites | Azure CLI token for the host environment; PAC CLI authenticated |
| 1.5 | MCP Learn grounding | Confirmed current behavior of Force Link / ManageEnvironmentStamp |
| 2 | Identify host + dev env | hostEnvUrl, target host's deploymentEnvironmentId, source BAP env GUID |
| 3 | Resolve deploymentenvironments record | Either an existing record on the new host, or a freshly created one |
| 4 | Confirm destructive action | Explicit user consent via AskUserQuestion |
| 5 | Execute Force Link | 204 from ManageEnvironmentStamp + post-validation Succeeded |
| 6 | Write marker + summary | docs/alm/last-force-link.json + human-readable summary |
Create all tasks at Phase 1 start with TaskCreate. Mark each in_progress when starting and completed when done.
Reuse the shared verifier:
node "${PLUGIN_ROOT}/scripts/lib/verify-alm-prerequisites.js"Specifically required:
pac env who must report an authenticated environment (for --dev-env auto-discovery).az account show succeeds.ManageEnvironmentStamp returns 403.Fetch the host token from Azure CLI using the host's Dataverse URL as the resource. Reuse getAuthToken from scripts/lib/validation-helpers.js.
Call:
mcp__plugin_power-pages_microsoft-learn__microsoft_docs_fetch(url=
"https://learn.microsoft.com/en-us/power-platform/alm/custom-host-pipelines")Confirm the "Using Force Link…" section's current warnings before proceeding. If the section now mentions new prerequisites or rollback constraints not covered in this skill, surface them to the user.
<!-- gate: force-link-environment:2.host-url | category=plan | cancel-leaves=nothing -->
🚦 Gate (plan · force-link-environment:2.host-url): Pick the target host environment URL when arg / marker resolution paths all came up empty. Fires only on the "no
--hostarg, nolast-host-check.json, nolast-pipeline.json" branch (step 4 below).Trigger: Phase 2 resolution order steps 1–3 all returned no value. Why we ask: Auto-picking the wrong host runs
ManageEnvironmentStampagainst the wrong tenant and moves the stamp irreversibly without consent. Cancel leaves: Nothing — no API call yet.
<!-- gate: force-link-environment:2.dev-env | category=plan | cancel-leaves=nothing -->
🚦 Gate (plan · force-link-environment:2.dev-env): Pick (or paste) the source dev env's BAP env GUID when
--dev-envarg is absent andpac env whodidn't confirm. Fires only on the "no arg + no confirmation" branch (step 3 below).Trigger: Phase 2 BAP-GUID resolution steps 1–2 all returned no value. Why we ask: Auto-picking the wrong dev env relinks a different env to the new host — makers of the wrong env lose pipeline access. Cancel leaves: Nothing — no API call yet.
Resolution order for hostEnvUrl:
--host <url> argument, if supplied.docs/alm/last-host-check.json (written by ensure-pipelines-host) — read finalHostEnvUrl.docs/alm/last-pipeline.json — read hostEnvUrl.AskUserQuestion.Resolution order for the source dev env's BAP env GUID:
--dev-env <guid> argument, if supplied.pac env who (current PAC CLI env) — but ONLY if the user confirms this is the env to relink.AskUserQuestion.deploymentenvironments record on the new hostGoal of this phase: obtain the deploymentEnvironmentId (the new host's record ID) regardless of whether it already exists, just got created, or got created in a Failed state. Force Link in Phase 5 cannot run without that GUID.
GET {hostEnvUrl}/api/data/v9.1/deploymentenvironments?$filter=environmentid eq '{bapEnvId}'&$select=deploymentenvironmentid,name,environmenttype,validationstatus,errormessage| Result | Action |
|---|---|
One hit, validationstatus = 200000001 (Succeeded) | Already linked to this host. Skip to Phase 6 with a no-op summary; no Force Link needed. |
One hit, validationstatus = 200000002 (Failed) | This is the "already associated with another pipelines host" state. Capture deploymentenvironmentid + errormessage. Skip to Phase 4 with those values. |
One hit, validationstatus = 200000000 (Pending) | Wait briefly (3–5 s) and re-query. If still Pending after ~20 s, abort with a "validation still in progress; retry later" message. |
| Zero hits | Continue to Step 3.2 — the record needs to be created first. |
node "${PLUGIN_ROOT}/scripts/lib/create-deployment-environment.js" \
--hostEnvUrl <hostEnvUrl> \
--token <hostToken> \
--name "<display name>" \
--bapEnvId <bapEnvId> \
--environmentType <200000000|200000001>The helper polls validationstatus and throws on Failed without returning the new record's GUID in the error payload. Three outcomes to handle:
| Helper outcome | Action |
|---|---|
Resolves with validationStatus = Succeeded | Record is fully linked. Skip to Phase 6 — no Force Link needed. |
| Throws with message containing "already associated with another pipelines host" (or similar host-claim wording) | The record was created in Failed state but the helper's error doesn't surface the new GUID. Re-run Step 3.1's GET to recover the just-created record's deploymentenvironmentid, then proceed to Phase 4 with that ID + the captured errormessage. Do NOT retry the create — it would log a duplicate name. |
| Throws with any other message | Surface the error verbatim and abort. Force Link is not the right tool — this is a different failure (e.g., 403 on create = caller lacks role on host; 400 = bad bapEnvId). |
Why the re-query is necessary: create-deployment-environment.js is idempotent on subsequent calls (it short-circuits via findExistingByBapId), but on the first call that lands in Failed validation it raises before the return path runs. Re-querying by environmentid eq '{bapEnvId}' is the canonical recovery — the same query Step 3.1 already uses.
After this phase ends, you must hold a non-null deploymentEnvironmentId. If you don't, abort Phase 4 with a clear "could not resolve record on new host" message.
<!-- gate: force-link-environment:4.destructive | category=consent | cancel-leaves=nothing -->
🚦 Gate (consent · force-link-environment:4.destructive): Mandatory consent before
ManageEnvironmentStampcross-host stamp move. Previous host loses pipeline access for this env. Reversible only by re-running Force Link from the previous host. Fires fresh on every skill invocation. Each invocation force-links exactly one env to one host. If a maker needs to migrate multiple envs across hosts, they invoke this skill once per env — each invocation requires its own consent prompt with its own env identity echoed back. No--yesflag, no batch mode, no consent carry-over.
This is the mandatory gate. Use AskUserQuestion with both options and a clear destructive-action warning in the question text. Required fields to display before asking:
Question structure:
question: "Force-link this environment to <host name>? This will remove its association with the previous host."
options:
- "Yes — force link" (Recommended only if user is intentionally migrating)
- "Cancel"If the user picks Cancel, exit cleanly (no marker file written) and recommend /power-pages:ensure-pipelines-host detect-only for further diagnosis.
node "${PLUGIN_ROOT}/scripts/lib/force-link-environment.js" \
--hostEnvUrl <hostEnvUrl> \
--token <hostToken> \
--deploymentEnvironmentId <guid>The helper:
ManageEnvironmentStamp (returns 204 No Content on success).validationstatus on the same record every 3s up to 20 attempts.errormessage.If the helper throws with status 403, the caller lacks Deployment Pipeline Administrator on the target host — surface that as the remediation message.
If the helper throws with status 404, the deploymentenvironments record doesn't exist on the target host — Phase 3 must have failed silently; loop back.
Ensure the docs/alm/ directory exists (node -e "require('fs').mkdirSync('docs/alm',{recursive:true})"), then write docs/alm/last-force-link.json:
{
"schemaVersion": 1,
"hostEnvUrl": "https://...",
"deploymentEnvironmentId": "...",
"bapEnvId": "...",
"previousHostEnvUrl": "https://...",
"validationStatus": 200000001,
"forcedAt": "2026-05-11T..."
}previousHostEnvUrl is best-effort. Derive in this order; leave null if none of these yield a value:
docs/alm/last-host-check.json (written by ensure-pipelines-host): if finalHostEnvUrl is set AND differs from the current hostEnvUrl, the discovery flow had already bound this env to that previous host — record it.errormessage for the pattern https?://[^\s'"]+\.(crm\d*\.dynamics\.com|dynamics-int\.com|crm\.microsoftdynamics\.us) and pick the first match that is not the current hostEnvUrl. Microsoft's error wording on the "already associated" path sometimes includes the prior host's URL, sometimes only its display name; treat the regex as opportunistic, not authoritative.null. The marker schema permits this — validator does not require the field.Do NOT prompt the user to fill previousHostEnvUrl; it's informational only for the post-run summary.
Present a summary table with:
/power-pages:force-link-environment from the previous host."Record skill usage per ${PLUGIN_ROOT}/references/skill-tracking-reference.md.
| Failure | Surface to user | Next step |
|---|---|---|
403 Forbidden on ManageEnvironmentStamp | "You need Deployment Pipeline Administrator role on <hostName>." | Ask host admin to grant the role; documented in share with pipeline administrators. |
404 Not Found on the deployment env record | "No deploymentenvironments record exists yet on this host." | Re-run Phase 3's create step. |
| Post-link validation status flips to Failed | Show the errormessage verbatim. | If the message mentions the env is still associated with a host, the previous host may have an immediate-reapply policy — check with the previous host's admin. |
| User cancels at Phase 4 | "Force Link not performed; previous association preserved." | Suggest /power-pages:ensure-pipelines-host detect-only for a wider diagnosis. |
/power-pages:ensure-pipelines-host for that..solution-manifest.json updates; no AddSolutionComponent calls.| Phase | Status |
|---|---|
| 1 — Prerequisites | ⏳ |
| 1.5 — MCP Learn grounding | ⏳ |
| 2 — Identify host + dev env | ⏳ |
| 3 — Resolve deploymentenvironments record | ⏳ |
| 4 — Confirm destructive action | ⏳ |
| 5 — Execute Force Link | ⏳ |
| 6 — Write marker + summary | ⏳ |
Update this table as phases complete.
© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in plugins/power-pages/skills/force-link-environment of microsoft/power-platform-skills.
Open the folder on GitHubat commit 0d044b8
Force Link Environment 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 |
|---|---|---|---|---|---|---|
| Force Link Environment this skillmicrosoft/power-platform-skills | 972 | — | ~4k | Automated safety check: Notes | MIT | |
| Azsdk Common Generate SDK LocallyAzure/azure-sdk-for-android | 121 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Azsdk Common Pipeline AnalysisAzure/azure-sdk-tools | 134 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Azsdk Common Pipeline FixerAzure/azure-sdk-tools | 134 | — | ~831 | Automated safety check: Pass | MIT | |
| Terravision Cloud Diagramspatrickchugh/terravision | 1.6k | — | ~5.6k | Automated safety check: Notes | AGPL-3.0-only | |
| Microsoft DocsMicrosoftDocs/mcp | 1.9k | 1 repos | ~723 | Automated safety check: Pass | CC-BY-4.0 |
Azure/azure-sdk-for-android
Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization.
Azure/azure-sdk-tools
Analyze Azure SDK CI/CD pipeline failures into a structured diagnosis, and define the required output format.
Azure/azure-sdk-tools
Automatically fix Azure SDK CI/CD pipeline failures by applying code changes and verifying locally.
patrickchugh/terravision
Draw cloud architecture diagrams for AWS, Azure or GCP with the official provider icon sets, using TerraVision.
MicrosoftDocs/mcp
Understand Microsoft technologies by querying official documentation.
alexei-led/spotinfo
Query Spot/preemptible VM prices, savings and interruption risk across AWS, GCP and Azure with the spotinfo CLI.
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.
Categories
Force-links a development or target environment to a Power Platform Pipelines host, overriding any existing association with a previous host. Force Link Environment is an agent skill from microsoft/power-platform-skills, published by the product's own GitHub organization. Force-links a development or target environment to a Power Platform Pipelines host, overriding any existing association with a previous host.
Force Link Environment fits situations like: creating a deploymentenvironments record fails with this environment is already associated with another pipelines host; intentionally migrating an environment from one host to another (e.g; platform Host → Custom Host; between two Custom Hosts).
Run `npx skills add microsoft/power-platform-skills --skill force-link-environment -a claude-code`. Or copy the skill folder (plugins/power-pages/skills/force-link-environment in microsoft/power-platform-skills) into .claude/skills/force-link-environment in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/power-platform-skills --skill force-link-environment -a codex`. Or copy the skill folder (plugins/power-pages/skills/force-link-environment in microsoft/power-platform-skills) into .agents/skills/force-link-environment 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 force-link-environment -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/force-link-environment, .gemini/skills/force-link-environment, .github/skills/force-link-environment and .opencode/skills/force-link-environment in your project.
Going by SKILL.md and its folder, Force Link Environment needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and az). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskUpdate, TaskList, AskUserQuestion, mcp__plugin_power-pages_microsoft-learn__microsoft_docs_search, mcp__plugin_power-pages_microsoft-learn__microsoft_docs_fetch.
SKILL.md names 1 domain. In commands or code: learn.microsoft.com; the agent is likely to contact it when it follows the instructions. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Force Link Environment is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k 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 Force Link Environment: Azsdk Common Generate SDK Locally (Azure/azure-sdk-for-android, 121 stars), Azsdk Common Pipeline Analysis (Azure/azure-sdk-tools, 134 stars), Azsdk Common Pipeline Fixer (Azure/azure-sdk-tools, 134 stars) and Terravision Cloud Diagrams (patrickchugh/terravision, 1.6k 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.