[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BVMZPPDZV29MQMX83T31G":3,"skill-same:01M69BVMZPPDZV29MQMX83T31G":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M69BVMZPPDZV29MQMX83T31G","deploy",null,"Ships a Microsoft App to the cloud. Use when the user asks to deploy via `ms app deploy` (with optional build-status traceability flow).","microsoft\u002Fmanaged-apps","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BTSR13CCGCPK40C03N7CN",36,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fdeploy\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,9,33,34,35,36,37,38,39],"edit","with","via","traceability","app","build","ms","use","user","write","read","grep","Bash","flow","cloud","status","2026-11-10 10:12:30",false,"---\nname: deploy\ndescription: Ships a Microsoft App to the cloud. Use when the user asks to deploy via `ms app deploy` (with optional build-status traceability flow).\nallowed-tools: Read Edit Write Grep Glob Bash AskUserQuestion\n---\n\n**? Shared Instructions: [shared-instructions.md](..\u002F..\u002Fshared\u002Fshared-instructions.md)** — Cross-cutting concerns. **Always confirm before deploy.**\n\n# Deploy\n\nBuilds and deploys the app in the current directory.\n\nBefore any deploy, sync source control first: stage all changes, create a commit, and push to remote.\n\n## Workflow\n\n1. Memory Bank → 2. Verify Project + Env → 3. Pick Path → 4. Shared Connection Policy Preflight → 5. Build Verification → 6. Git Sync (Add + Commit + Push) → 7. Confirm + Deploy → 8. Update Memory Bank\n\n---\n\n### Step 1: Check Memory Bank\n\nRead `memory-bank.md` for app slug, GUID, and environment.\n\n### Step 2: Verify Project + Env\n\n```bash\ntest -f ms.config.json || { echo \"Not in a Microsoft App workspace.\"; exit 1; }\ngit rev-parse --is-inside-work-tree >\u002Fdev\u002Fnull 2>&1 || { echo \"Not in a git repository.\"; exit 1; }\nBIN=ms\n$BIN auth status                                         # must report the expected UPN\n```\n\nIf auth is stale or the wrong account, stop and have the user run `$BIN auth login`.\n\n### Step 3: Pick a Deploy Path\n\nAsk the user which path:\n\n| Path                                        | When                                                                                                   |\n| ------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| **Standard deploy** (`ms app deploy [--commit \u003Csha>]`) | Default. Use for normal release flow. `--commit` defaults to `git rev-parse HEAD`. |\n| **Traced deploy** (`ms app build` + `ms app build-status` + `ms app deploy`) | Use when the user needs explicit build-id tracking before deploy. |\n\n`ms app build -c \u003Csha>` + `ms app build-status -o \u003Cbuild-id>` is a third (older) two-step variant for the cloud-built path. The `build` subcommand is marked deprecated in the CLI source but still works; use it only when the user wants an explicit build-id to track. Otherwise, `ms app deploy` is the single-step replacement.\n\n### Step 4: Shared Connection Policy Preflight\n\n`ms app deploy` validates that every **shared** connection reference declares `allowedActions`,\nand fails the deploy when one doesn't. Catch it here — before spending a build and a push on a\ndeploy that can't succeed.\n\n```bash\nnode -e '\nconst fs = require(\"fs\");\nconst refs = JSON.parse(fs.readFileSync(\"ms.config.json\", \"utf8\")).connectionReferences || {};\nconst ok = (a) => Array.isArray(a) && a.length > 0 &&\n  a.every((x) => typeof x === \"string\" && \u002F\\S\u002F.test(x));\nlet bad = 0;\nfor (const [name, r] of Object.entries(refs)) {\n  if (!String(r.sharedConnectionId || \"\").trim()) continue;\n  const t = Object.entries(r.dataSets || {}).flatMap(([d, s]) =>\n    Object.entries(s.dataSources || {}).map(([k, v]) => [d + \"\u002F\" + k, v]));\n  if (r.allowedActions !== undefined && !ok(r.allowedActions)) {\n    bad++;\n    console.log(\"INVALID connector-level allowedActions: \" + name);\n  }\n  if (t.length) {\n    for (const [p, v] of t) if (!ok(v.allowedActions)) { bad++; console.log(\"MISSING per-table allowedActions: \" + name + \" -> \" + p); }\n  } else if (r.allowedActions === undefined) { bad++; console.log(\"MISSING connector-level allowedActions: \" + name); }\n}\nif (bad) { console.log(bad + \" issue(s): fix before deploy\"); process.exitCode = 1; } else console.log(\"OK: all shared references declare allowedActions\");\n'\n```\n\nThis mirrors the CLI's own validation and works in bash and PowerShell alike (Node 22+ is a\nproject prerequisite; `jq` is not).\n\nAny `MISSING` or `INVALID` line means the deploy will fail. **Stop and fix it** rather than proceeding:\n\n- `per-table` → the reference has dataset tables. Every table needs its own non-empty list\n  from `\"get\"` \u002F `\"post\"` \u002F `\"patch\"` \u002F `\"delete\"`.\n- `connector-level` → no dataset tables. Declare Action IDs from\n  `ms connector list-actions --connector \u003Capi-id> --json`.\n\nInfer the least-privilege set from what `src\u002F` actually calls, propose it, and confirm with the\nuser before writing. Do **not** grant everything to get past the gate, and do **not** delete\n`sharedConnectionId`. See [allowed-actions.md](..\u002F..\u002Fshared\u002Fallowed-actions.md).\n\n`OK` means every shared reference is covered — continue.\n\n### Step 5: Build Verification\n\n```bash\nnpm run build\n```\n\nFailure handling per [shared-instructions.md](..\u002F..\u002Fshared\u002Fshared-instructions.md):\n\n- TS6133 (unused import): remove and retry once.\n- Other TS errors: report file:line, STOP.\n- Module not found: `npm install` and retry once.\n- Other non-zero exit: report verbatim, STOP.\n\nVerify the build output directory (`.\u002Fdist` by default, or whatever `--build-path` resolved to during `ms app create`) is populated before continuing.\n\n### Step 6: Git Sync (Add + Commit + Push)\n\nDeploy must use a pushed commit. Always sync local changes first.\n\n```bash\nif [ -n \"$(git status --porcelain)\" ]; then\n\tgit add -A\n\tgit commit -m \"$COMMIT_MESSAGE\"\nfi\n\n# Ensure the deployment commit exists on remote.\ngit push -u origin HEAD\nDEPLOY_SHA=\"$(git rev-parse HEAD)\"\n```\n\nIf there are local changes, ask for a commit message before running `git commit`. If the user does not provide one, use:\n\n```text\nchore: prepare deploy\n```\n\nIf `git commit` reports \"nothing to commit\", continue to push\u002Fverify the current `HEAD`.\n\n### Step 7: Confirm + Deploy\n\n**Always ask explicitly before deploy** — there is no baseline-deploy exemption in this plugin:\n\n> \"Ready to deploy `\u003Capp-name>` to `\u003Cenvironment-name>` (`\u003Cenv-id>`)? This will update the live app.\"\n\nWait for explicit user yes.\n\n**Standard deploy:**\n\n```bash\n$BIN app deploy --commit \"$DEPLOY_SHA\"\n```\n\n**Traced deploy with build-id traceability:**\n\n```bash\n$BIN app build -c \"$DEPLOY_SHA\"                     # returns a build-id\n$BIN app build-status -o \"$BUILD_ID\"                # polls until terminal state\n$BIN app deploy --commit \"$DEPLOY_SHA\"              # promote the built commit\n```\n\nCapture and surface any URLs \u002F build IDs from the output.\n\nAfter a successful deploy, offer to open the live app:\n\n```bash\n$BIN app play                # opens the live URL in the browser\n$BIN app play --no-browser  # print URL only\n```\n\nIf the user wants to verify the code before making it live, remind them they can preview without deploying:\n\n```bash\n$BIN app play --mode preview   # opens the latest code on main (no deploy needed)\n```\n\n### Step 8: Update Memory Bank\n\nIf `memory-bank.md` exists:\n\n- Update \"Last deployed\" timestamp.\n- Record the deploy path used (standard \u002F traced).\n- Capture the commit SHA at deploy time.\n\nIf no memory bank exists, create one per [memory-bank.md](..\u002F..\u002Fshared\u002Fmemory-bank.md) so subsequent skills have context.\n\n---\n\n## Failure Recovery\n\n| Error                                                  | Fix                                                                                                                                       |\n| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |\n| `ms app deploy`: 401 \u002F token expired                     | `$BIN auth login` and retry.                                                                                                              |\n| `ms app deploy`: `Invalid ms.config.json for shared connection policy enforcement` | A shared connection reference is missing `allowedActions`. The listed issues name the reference (and dataset\u002Ftable) at fault. Declare them per [allowed-actions.md](..\u002F..\u002Fshared\u002Fallowed-actions.md) and retry. Never remove `sharedConnectionId` to bypass this. |\n| `ms app deploy`: env mismatch                            | Active CLI env doesn't match `ms.config.json`. Either re-create\u002Fredeploy against the matching environment, or update `ms.config.json`. |\n| `git push`: no upstream configured                      | Run `git push -u origin HEAD`, then retry deploy.                                                                                         |\n| `git commit`: author identity unknown                   | Configure Git identity (`git config --global user.name` \u002F `git config --global user.email`) and retry commit.                            |\n| `ms app deploy`: commit not in remote                  | Ensure Step 6 (Git Sync) completed and push succeeded, then retry.                                                                        |\n| `ms app build-status`: 404                             | Build was submitted to a different cluster than you're querying. Verify the `--cloud` value matches the cluster used at build time.    |\n| `ms app deploy`: 403 \u002F not authorized on environment     | The account lacks Maker permissions in the target env. Confirm with `$BIN app list --json` — if the app doesn't appear, you're not authorized. |\n","**? Shared Instructions: [shared-instructions.md](..\u002F..\u002Fshared\u002Fshared-instructions.md)** — Cross-cutting concerns. **Always confirm before deploy.**\n\n# Deploy\n\nBuilds and deploys the app in the current directory.\n\nBefore any deploy, sync source control first: stage all changes, create a commit, and push to remote.\n\n## Workflow\n\n1. Memory Bank → 2. Verify Project + Env → 3. Pick Path → 4. Shared Connection Policy Preflight → 5. Build Verification → 6. Git Sync (Add + Commit + Push) → 7. Confirm + Deploy → 8. Update Memory Bank\n\n---\n\n### Step 1: Check Memory Bank\n\nRead `memory-bank.md` for app slug, GUID, and environment.\n\n### Step 2: Verify Project + Env\n\n```bash\ntest -f ms.config.json || { echo \"Not in a Microsoft App workspace.\"; exit 1; }\ngit rev-parse --is-inside-work-tree >\u002Fdev\u002Fnull 2>&1 || { echo \"Not in a git repository.\"; exit 1; }\nBIN=ms\n$BIN auth status                                         # must report the expected UPN\n```\n\nIf auth is stale or the wrong account, stop and have the user run `$BIN auth login`.\n\n### Step 3: Pick a Deploy Path\n\nAsk the user which path:\n\n| Path                                        | When                                                                                                   |\n| ------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| **Standard deploy** (`ms app deploy [--commit \u003Csha>]`) | Default. Use for normal release flow. `--commit` defaults to `git rev-parse HEAD`. |\n| **Traced deploy** (`ms app build` + `ms app build-status` + `ms app deploy`) | Use when the user needs explicit build-id tracking before deploy. |\n\n`ms app build -c \u003Csha>` + `ms app build-status -o \u003Cbuild-id>` is a third (older) two-step variant for the cloud-built path. The `build` subcommand is marked deprecated in the CLI source but still works; use it only when the user wants an explicit build-id to track. Otherwise, `ms app deploy` is the single-step replacement.\n\n### Step 4: Shared Connection Policy Preflight\n\n`ms app deploy` validates that every **shared** connection reference declares `allowedActions`,\nand fails the deploy when one doesn't. Catch it here — before spending a build and a push on a\ndeploy that can't succeed.\n\n```bash\nnode -e '\nconst fs = require(\"fs\");\nconst refs = JSON.parse(fs.readFileSync(\"ms.config.json\", \"utf8\")).connectionReferences || {};\nconst ok = (a) => Array.isArray(a) && a.length > 0 &&\n  a.every((x) => typeof x === \"string\" && \u002F\\S\u002F.test(x));\nlet bad = 0;\nfor (const [name, r] of Object.entries(refs)) {\n  if (!String(r.sharedConnectionId || \"\").trim()) continue;\n  const t = Object.entries(r.dataSets || {}).flatMap(([d, s]) =>\n    Object.entries(s.dataSources || {}).map(([k, v]) => [d + \"\u002F\" + k, v]));\n  if (r.allowedActions !== undefined && !ok(r.allowedActions)) {\n    bad++;\n    console.log(\"INVALID connector-level allowedActions: \" + name);\n  }\n  if (t.length) {\n    for (const [p, v] of t) if (!ok(v.allowedActions)) { bad++; console.log(\"MISSING per-table allowedActions: \" + name + \" -> \" + p); }\n  } else if (r.allowedActions === undefined) { bad++; console.log(\"MISSING connector-level allowedActions: \" + name); }\n}\nif (bad) { console.log(bad + \" issue(s): fix before deploy\"); process.exitCode = 1; } else console.log(\"OK: all shared references declare allowedActions\");\n'\n```\n\nThis mirrors the CLI's own validation and works in bash and PowerShell alike (Node 22+ is a\nproject prerequisite; `jq` is not).\n\nAny `MISSING` or `INVALID` line means the deploy will fail. **Stop and fix it** rather than proceeding:\n\n- `per-table` → the reference has dataset tables. Every table needs its own non-empty list\n  from `\"get\"` \u002F `\"post\"` \u002F `\"patch\"` \u002F `\"delete\"`.\n- `connector-level` → no dataset tables. Declare Action IDs from\n  `ms connector list-actions --connector \u003Capi-id> --json`.\n\nInfer the least-privilege set from what `src\u002F` actually calls, propose it, and confirm with the\nuser before writing. Do **not** grant everything to get past the gate, and do **not** delete\n`sharedConnectionId`. See [allowed-actions.md](..\u002F..\u002Fshared\u002Fallowed-actions.md).\n\n`OK` means every shared reference is covered — continue.\n\n### Step 5: Build Verification\n\n```bash\nnpm run build\n```\n\nFailure handling per [shared-instructions.md](..\u002F..\u002Fshared\u002Fshared-instructions.md):\n\n- TS6133 (unused import): remove and retry once.\n- Other TS errors: report file:line, STOP.\n- Module not found: `npm install` and retry once.\n- Other non-zero exit: report verbatim, STOP.\n\nVerify the build output directory (`.\u002Fdist` by default, or whatever `--build-path` resolved to during `ms app create`) is populated before continuing.\n\n### Step 6: Git Sync (Add + Commit + Push)\n\nDeploy must use a pushed commit. Always sync local changes first.\n\n```bash\nif [ -n \"$(git status --porcelain)\" ]; then\n\tgit add -A\n\tgit commit -m \"$COMMIT_MESSAGE\"\nfi\n\n# Ensure the deployment commit exists on remote.\ngit push -u origin HEAD\nDEPLOY_SHA=\"$(git rev-parse HEAD)\"\n```\n\nIf there are local changes, ask for a commit message before running `git commit`. If the user does not provide one, use:\n\n```text\nchore: prepare deploy\n```\n\nIf `git commit` reports \"nothing to commit\", continue to push\u002Fverify the current `HEAD`.\n\n### Step 7: Confirm + Deploy\n\n**Always ask explicitly before deploy** — there is no baseline-deploy exemption in this plugin:\n\n> \"Ready to deploy `\u003Capp-name>` to `\u003Cenvironment-name>` (`\u003Cenv-id>`)? This will update the live app.\"\n\nWait for explicit user yes.\n\n**Standard deploy:**\n\n```bash\n$BIN app deploy --commit \"$DEPLOY_SHA\"\n```\n\n**Traced deploy with build-id traceability:**\n\n```bash\n$BIN app build -c \"$DEPLOY_SHA\"                     # returns a build-id\n$BIN app build-status -o \"$BUILD_ID\"                # polls until terminal state\n$BIN app deploy --commit \"$DEPLOY_SHA\"              # promote the built commit\n```\n\nCapture and surface any URLs \u002F build IDs from the output.\n\nAfter a successful deploy, offer to open the live app:\n\n```bash\n$BIN app play                # opens the live URL in the browser\n$BIN app play --no-browser  # print URL only\n```\n\nIf the user wants to verify the code before making it live, remind them they can preview without deploying:\n\n```bash\n$BIN app play --mode preview   # opens the latest code on main (no deploy needed)\n```\n\n### Step 8: Update Memory Bank\n\nIf `memory-bank.md` exists:\n\n- Update \"Last deployed\" timestamp.\n- Record the deploy path used (standard \u002F traced).\n- Capture the commit SHA at deploy time.\n\nIf no memory bank exists, create one per [memory-bank.md](..\u002F..\u002Fshared\u002Fmemory-bank.md) so subsequent skills have context.\n\n---\n\n## Failure Recovery\n\n| Error                                                  | Fix                                                                                                                                       |\n| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |\n| `ms app deploy`: 401 \u002F token expired                     | `$BIN auth login` and retry.                                                                                                              |\n| `ms app deploy`: `Invalid ms.config.json for shared connection policy enforcement` | A shared connection reference is missing `allowedActions`. The listed issues name the reference (and dataset\u002Ftable) at fault. Declare them per [allowed-actions.md](..\u002F..\u002Fshared\u002Fallowed-actions.md) and retry. Never remove `sharedConnectionId` to bypass this. |\n| `ms app deploy`: env mismatch                            | Active CLI env doesn't match `ms.config.json`. Either re-create\u002Fredeploy against the matching environment, or update `ms.config.json`. |\n| `git push`: no upstream configured                      | Run `git push -u origin HEAD`, then retry deploy.                                                                                         |\n| `git commit`: author identity unknown                   | Configure Git identity (`git config --global user.name` \u002F `git config --global user.email`) and retry commit.                            |\n| `ms app deploy`: commit not in remote                  | Ensure Step 6 (Git Sync) completed and push succeeded, then retry.                                                                        |\n| `ms app build-status`: 404                             | Build was submitted to a different cluster than you're querying. Verify the `--cloud` value matches the cluster used at build time.    |\n| `ms app deploy`: 403 \u002F not authorized on environment     | The account lacks Maker permissions in the target env. Confirm with `$BIN app list --json` — if the app doesn't appear, you're not authorized. |\n",{"name":5,"description":7,"allowed-tools":45},"Read Edit Write Grep Glob Bash AskUserQuestion","main","5e4bd47de38c9ae0327efb7c0003d250afff31b6","plugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fdeploy",11,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FCopilot-Managed-Runtime","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-06 04:02:23",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add microsoft\u002Fmanaged-apps --skill deploy",{"tool":62,"command":63},"bunx","bunx skills add microsoft\u002Fmanaged-apps --skill deploy",{"tool":65,"command":66},"pnpm","pnpm dlx skills add microsoft\u002Fmanaged-apps --skill deploy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fdeploy\u002FSKILL.md",true,[],[71,90,101,118,135,151],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":40},"01M69BW0D2HDW3YFJJX4QEYJF2","state","Store and query a Microsoft Managed App's built-in state and file attachments with `ms project state` CLI schema commands and generated TypeScript clients. First, with the user signed in to the CLI, run `ms feature status --name state --json`; if `feature.enabled` is not `true`, recommend an alternative connector or data source.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fstate\u002FSKILL.md",[],[73,39,78,79,80,28,30,81,82,83,36,84,34,33,24,85,86,87,88,89],"cli","run","typescript","project","generated","query","Connector","recommend","commands","data","source","feature",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":40},"01M69BVYVZ0YYRMDY1WPVJ98VV","share","Shares (or unshares) a Microsoft App with users via `ms app share` \u002F `ms app unshare`. Use when updating app access control.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fshare\u002FSKILL.md",[],[92,9,28,97,30,31,98,36,99,25,100,26,34,35],"Access Control","access","users","control",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":40},"01M69BVX6TTS1A17ZA2BDP13KP","share-link","Manages tenant-wide share links for a Microsoft App via `ms app share link create`, `ms app share link list`, and `ms app share link revoke`. Use when you want to distribute app access via a URL instead of named principals.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fshare-link\u002FSKILL.md",[],[108,92,109,110,9,28,111,30,112,31,98,113,114,36,26,115,34,35,116,117],"share link","link","create","links","for","URL","you","distribute","wide","list",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":40},"01M69BVVFK3WFDMJW2R5CYCRD4","play","Opens a Microsoft App in the browser via `ms app play`. Use when opening the live deployed version or a cloud-hosted preview (main branch or specific commit SHA) without starting a local dev server.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fplay\u002FSKILL.md",[],[120,125,126,9,127,28,128,30,129,46,31,130,36,131,132,133,134,26,34,35],"dev","commit","local dev","branch","local","version","preview","local dev server","browser","server",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":40},"01M69BVSSESTPDA4Z5WP8WEN01","list-connectors","Lists connectors available in the active environment — including whether each is allowed or blocked by your organization's policy — plus the connection-bound data sources already wired into a Microsoft App. Use when discovering connectors and their operations before adding data sources.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Flist-connectors\u002FSKILL.md",[],[142,143,117,9,144,28,145,146,31,36,147,148,149,34,87,150],"list connectors","connectors","policy","sources","environment","organization","operations","active","connection",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":40},"01M69BVRDCYENNS8XXM1E5RBYQ","list-apps","Discovers managed apps in the active environment via `ms app list --json` and optional `ms app show --json`. Use when listing or locating apps.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmanaged-apps\u002Fblob\u002Fmain\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Flist-apps\u002FSKILL.md",[],[158,159,117,28,160,30,146,31,36,26,149,161,34,35],"list apps","apps","show","json"]