[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-delete-app":3,"mdc-n5j9ci-key":27,"related-repo-microsoft-delete-app":671,"related-org-microsoft-delete-app":749},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":17,"repoUrl":18,"updatedAt":19,"license":20,"forks":21,"topics":22,"repo":23,"sourceUrl":25,"mdContent":26},"delete-app","delete Microsoft Apps","Deletes a Microsoft App via `ms app delete`. Use when the user asks to delete an app; always require explicit confirmation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":9,"slug":8,"type":15},2,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FManaged-Apps","2026-07-07T06:53:08.459223",null,3,[],{"repoUrl":18,"stars":17,"forks":21,"topics":24,"description":20},[],"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FManaged-Apps\u002Ftree\u002FHEAD\u002Fplugins\u002Fmicrosoft-managed-apps\u002Fskills\u002Fdelete-app","---\nname: delete-app\ndescription: Deletes a Microsoft App via `ms app delete`. Use when the user asks to delete an app; always require explicit confirmation.\nuser-invocable: true\nallowed-tools: Read, Grep, Glob, Bash, AskUserQuestion\nmodel: sonnet\n---\n\n**📋 Shared Instructions: [shared-instructions.md](${CLAUDE_PLUGIN_ROOT}\u002Fshared\u002Fshared-instructions.md)** — Cross-cutting concerns. **Two confirmations required; never auto-`--force`.**\n\n# Delete App\n\nRemoves the app from the service. The local workspace is NOT deleted by this skill — the user can clean it up afterward (this skill suggests the command but doesn't run it).\n\n## Workflow\n\n1. Memory Bank → 2. Resolve App ID → 3. Verify with Show → 4. First Confirmation → 5. Try Non-Force Delete → 6. If Service Says Force Required: Second Confirmation → 7. Suggest Local Cleanup → 8. Update Memory Bank\n\n---\n\n### Step 1: Check Memory Bank\n\nRead `memory-bank.md` for app slug + GUID + environment.\n\n### Step 2: Resolve App ID\n\n```bash\ntest -f ms.config.json && APP_ID=$(node -p \"require('.\u002Fms.config.json').appId\" 2>\u002Fdev\u002Fnull) || true\n```\n\nIf no `ms.config.json`, ask the user for the app slug or GUID. Optionally invoke `\u002Flist-apps` to discover.\n\n### Step 3: Verify with Show\n\nBefore the destructive call, fetch the app metadata so the user sees what they're about to delete:\n\n```bash\nBIN=ms\n$BIN app show --app \"$APP_ID\" --json\n```\n\nDisplay: display name, slug, app GUID, environment, version, creation date, last modified, share count if available.\n\n### Step 4: First Confirmation\n\n> \"About to delete the app `\u003Cdisplay-name>` (slug `\u003Cslug>`, GUID `\u003Cguid>`) from environment `\u003Cenv-name>`. This removes the app from the service for all users — playing the app stops working immediately. Continue?\"\n\nWait for explicit yes. If no, STOP — do not delete.\n\n### Step 5: Try Non-Force Delete\n\n```bash\n$BIN app delete --app \"$APP_ID\" --non-interactive\n```\n\n`ms app delete` is idempotent: if the app is already gone (HTTP 204) it emits a warning rather than erroring. Treat both `existed: true` and `existed: false` outcomes as success.\n\n### Step 6: If Service Says Force Required\n\nIf the service returns a non-2xx with a message like \"delete requires --force\" (the app has active shares, child resources, etc.), DO NOT auto-add `--force`. Instead, ask a **second** confirmation:\n\n> \"The service requires `--force` to delete this app. Reason from the service: `\u003Cverbatim message>`. Adding `--force` will remove the app and any associated state (shares, etc.) immediately. Are you sure?\"\n\nWait for an explicit second yes. Only then:\n\n```bash\n$BIN app delete --app \"$APP_ID\" --force --non-interactive\n```\n\nNever short-circuit the two confirmations into one. The service's `--force` requirement is the signal that downstream state will be affected.\n\n### Step 7: Suggest Local Cleanup\n\nAfter successful delete, surface (do NOT run automatically):\n\n```\nApp removed from service.\n\nTo clean up local workspace:\n  cd ..\n  rm -rf \u003Cproject-dir>\n\nOr keep the workspace if you intend to recreate \u002F re-link to a new app.\n```\n\n### Step 8: Update Memory Bank\n\nIf `memory-bank.md` exists, append a \"Deleted\" note with the timestamp and the app GUID, but do NOT delete the memory bank itself — the user may want the history.\n\n---\n\n## Failure Modes\n\n| Error                                              | Action                                                                                                  |\n| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |\n| `App '\u003Cid>' not found in environment '\u003Cenv>'`      | Idempotent path — the app is already gone. Emit a success note and update memory bank (mark deleted).   |\n| 403 not authorized                                 | The account doesn't have Owner permissions on the app. Surface the error; suggest `$BIN app share` review or a different account. |\n| 5xx from the service                               | Transient. Retry once after 5s; if still failing, STOP and surface verbatim — do not loop.              |\n",{"data":28,"body":32},{"name":4,"description":6,"user-invocable":29,"allowed-tools":30,"model":31},true,"Read, Grep, Glob, Bash, AskUserQuestion","sonnet",{"type":33,"children":34},"root",[35,70,76,81,88,98,102,109,122,128,230,251,257,262,313,318,324,365,370,376,408,435,441,460,490,495,526,538,544,549,559,565,577,580,586,665],{"type":36,"tag":37,"props":38,"children":39},"element","p",{},[40,54,56],{"type":36,"tag":41,"props":42,"children":43},"strong",{},[44,47],{"type":45,"value":46},"text","📋 Shared Instructions: ",{"type":36,"tag":48,"props":49,"children":51},"a",{"href":50},"$%7BCLAUDE_PLUGIN_ROOT%7D\u002Fshared\u002Fshared-instructions.md",[52],{"type":45,"value":53},"shared-instructions.md",{"type":45,"value":55}," — Cross-cutting concerns. ",{"type":36,"tag":41,"props":57,"children":58},{},[59,61,68],{"type":45,"value":60},"Two confirmations required; never auto-",{"type":36,"tag":62,"props":63,"children":65},"code",{"className":64},[],[66],{"type":45,"value":67},"--force",{"type":45,"value":69},".",{"type":36,"tag":71,"props":72,"children":73},"h1",{"id":4},[74],{"type":45,"value":75},"Delete App",{"type":36,"tag":37,"props":77,"children":78},{},[79],{"type":45,"value":80},"Removes the app from the service. The local workspace is NOT deleted by this skill — the user can clean it up afterward (this skill suggests the command but doesn't run it).",{"type":36,"tag":82,"props":83,"children":85},"h2",{"id":84},"workflow",[86],{"type":45,"value":87},"Workflow",{"type":36,"tag":89,"props":90,"children":91},"ol",{},[92],{"type":36,"tag":93,"props":94,"children":95},"li",{},[96],{"type":45,"value":97},"Memory Bank → 2. Resolve App ID → 3. Verify with Show → 4. First Confirmation → 5. Try Non-Force Delete → 6. If Service Says Force Required: Second Confirmation → 7. Suggest Local Cleanup → 8. Update Memory Bank",{"type":36,"tag":99,"props":100,"children":101},"hr",{},[],{"type":36,"tag":103,"props":104,"children":106},"h3",{"id":105},"step-1-check-memory-bank",[107],{"type":45,"value":108},"Step 1: Check Memory Bank",{"type":36,"tag":37,"props":110,"children":111},{},[112,114,120],{"type":45,"value":113},"Read ",{"type":36,"tag":62,"props":115,"children":117},{"className":116},[],[118],{"type":45,"value":119},"memory-bank.md",{"type":45,"value":121}," for app slug + GUID + environment.",{"type":36,"tag":103,"props":123,"children":125},{"id":124},"step-2-resolve-app-id",[126],{"type":45,"value":127},"Step 2: Resolve App ID",{"type":36,"tag":129,"props":130,"children":135},"pre",{"className":131,"code":132,"language":133,"meta":134,"style":134},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","test -f ms.config.json && APP_ID=$(node -p \"require('.\u002Fms.config.json').appId\" 2>\u002Fdev\u002Fnull) || true\n","bash","",[136],{"type":36,"tag":62,"props":137,"children":138},{"__ignoreMap":134},[139],{"type":36,"tag":140,"props":141,"children":144},"span",{"class":142,"line":143},"line",1,[145,151,157,162,168,174,179,185,190,195,200,205,210,215,220,225],{"type":36,"tag":140,"props":146,"children":148},{"style":147},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[149],{"type":45,"value":150},"test",{"type":36,"tag":140,"props":152,"children":154},{"style":153},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[155],{"type":45,"value":156}," -f",{"type":36,"tag":140,"props":158,"children":159},{"style":153},[160],{"type":45,"value":161}," ms.config.json",{"type":36,"tag":140,"props":163,"children":165},{"style":164},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[166],{"type":45,"value":167}," &&",{"type":36,"tag":140,"props":169,"children":171},{"style":170},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[172],{"type":45,"value":173}," APP_ID",{"type":36,"tag":140,"props":175,"children":176},{"style":164},[177],{"type":45,"value":178},"=$(",{"type":36,"tag":140,"props":180,"children":182},{"style":181},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[183],{"type":45,"value":184},"node",{"type":36,"tag":140,"props":186,"children":187},{"style":153},[188],{"type":45,"value":189}," -p",{"type":36,"tag":140,"props":191,"children":192},{"style":164},[193],{"type":45,"value":194}," \"",{"type":36,"tag":140,"props":196,"children":197},{"style":153},[198],{"type":45,"value":199},"require('.\u002Fms.config.json').appId",{"type":36,"tag":140,"props":201,"children":202},{"style":164},[203],{"type":45,"value":204},"\"",{"type":36,"tag":140,"props":206,"children":207},{"style":164},[208],{"type":45,"value":209}," 2>",{"type":36,"tag":140,"props":211,"children":212},{"style":153},[213],{"type":45,"value":214},"\u002Fdev\u002Fnull",{"type":36,"tag":140,"props":216,"children":217},{"style":164},[218],{"type":45,"value":219},")",{"type":36,"tag":140,"props":221,"children":222},{"style":164},[223],{"type":45,"value":224}," ||",{"type":36,"tag":140,"props":226,"children":227},{"style":147},[228],{"type":45,"value":229}," true\n",{"type":36,"tag":37,"props":231,"children":232},{},[233,235,241,243,249],{"type":45,"value":234},"If no ",{"type":36,"tag":62,"props":236,"children":238},{"className":237},[],[239],{"type":45,"value":240},"ms.config.json",{"type":45,"value":242},", ask the user for the app slug or GUID. Optionally invoke ",{"type":36,"tag":62,"props":244,"children":246},{"className":245},[],[247],{"type":45,"value":248},"\u002Flist-apps",{"type":45,"value":250}," to discover.",{"type":36,"tag":103,"props":252,"children":254},{"id":253},"step-3-verify-with-show",[255],{"type":45,"value":256},"Step 3: Verify with Show",{"type":36,"tag":37,"props":258,"children":259},{},[260],{"type":45,"value":261},"Before the destructive call, fetch the app metadata so the user sees what they're about to delete:",{"type":36,"tag":129,"props":263,"children":265},{"className":131,"code":264,"language":133,"meta":134,"style":134},"BIN=ms\n$BIN app show --app \"$APP_ID\" --json\n",[266],{"type":36,"tag":62,"props":267,"children":268},{"__ignoreMap":134},[269,287],{"type":36,"tag":140,"props":270,"children":271},{"class":142,"line":143},[272,277,282],{"type":36,"tag":140,"props":273,"children":274},{"style":170},[275],{"type":45,"value":276},"BIN",{"type":36,"tag":140,"props":278,"children":279},{"style":164},[280],{"type":45,"value":281},"=",{"type":36,"tag":140,"props":283,"children":284},{"style":153},[285],{"type":45,"value":286},"ms\n",{"type":36,"tag":140,"props":288,"children":289},{"class":142,"line":17},[290,295,299,304,308],{"type":36,"tag":140,"props":291,"children":292},{"style":170},[293],{"type":45,"value":294},"$BIN app show --app ",{"type":36,"tag":140,"props":296,"children":297},{"style":164},[298],{"type":45,"value":204},{"type":36,"tag":140,"props":300,"children":301},{"style":170},[302],{"type":45,"value":303},"$APP_ID",{"type":36,"tag":140,"props":305,"children":306},{"style":164},[307],{"type":45,"value":204},{"type":36,"tag":140,"props":309,"children":310},{"style":170},[311],{"type":45,"value":312}," --json\n",{"type":36,"tag":37,"props":314,"children":315},{},[316],{"type":45,"value":317},"Display: display name, slug, app GUID, environment, version, creation date, last modified, share count if available.",{"type":36,"tag":103,"props":319,"children":321},{"id":320},"step-4-first-confirmation",[322],{"type":45,"value":323},"Step 4: First Confirmation",{"type":36,"tag":325,"props":326,"children":327},"blockquote",{},[328],{"type":36,"tag":37,"props":329,"children":330},{},[331,333,339,341,347,349,355,357,363],{"type":45,"value":332},"\"About to delete the app ",{"type":36,"tag":62,"props":334,"children":336},{"className":335},[],[337],{"type":45,"value":338},"\u003Cdisplay-name>",{"type":45,"value":340}," (slug ",{"type":36,"tag":62,"props":342,"children":344},{"className":343},[],[345],{"type":45,"value":346},"\u003Cslug>",{"type":45,"value":348},", GUID ",{"type":36,"tag":62,"props":350,"children":352},{"className":351},[],[353],{"type":45,"value":354},"\u003Cguid>",{"type":45,"value":356},") from environment ",{"type":36,"tag":62,"props":358,"children":360},{"className":359},[],[361],{"type":45,"value":362},"\u003Cenv-name>",{"type":45,"value":364},". This removes the app from the service for all users — playing the app stops working immediately. Continue?\"",{"type":36,"tag":37,"props":366,"children":367},{},[368],{"type":45,"value":369},"Wait for explicit yes. If no, STOP — do not delete.",{"type":36,"tag":103,"props":371,"children":373},{"id":372},"step-5-try-non-force-delete",[374],{"type":45,"value":375},"Step 5: Try Non-Force Delete",{"type":36,"tag":129,"props":377,"children":379},{"className":131,"code":378,"language":133,"meta":134,"style":134},"$BIN app delete --app \"$APP_ID\" --non-interactive\n",[380],{"type":36,"tag":62,"props":381,"children":382},{"__ignoreMap":134},[383],{"type":36,"tag":140,"props":384,"children":385},{"class":142,"line":143},[386,391,395,399,403],{"type":36,"tag":140,"props":387,"children":388},{"style":170},[389],{"type":45,"value":390},"$BIN app delete --app ",{"type":36,"tag":140,"props":392,"children":393},{"style":164},[394],{"type":45,"value":204},{"type":36,"tag":140,"props":396,"children":397},{"style":170},[398],{"type":45,"value":303},{"type":36,"tag":140,"props":400,"children":401},{"style":164},[402],{"type":45,"value":204},{"type":36,"tag":140,"props":404,"children":405},{"style":170},[406],{"type":45,"value":407}," --non-interactive\n",{"type":36,"tag":37,"props":409,"children":410},{},[411,417,419,425,427,433],{"type":36,"tag":62,"props":412,"children":414},{"className":413},[],[415],{"type":45,"value":416},"ms app delete",{"type":45,"value":418}," is idempotent: if the app is already gone (HTTP 204) it emits a warning rather than erroring. Treat both ",{"type":36,"tag":62,"props":420,"children":422},{"className":421},[],[423],{"type":45,"value":424},"existed: true",{"type":45,"value":426}," and ",{"type":36,"tag":62,"props":428,"children":430},{"className":429},[],[431],{"type":45,"value":432},"existed: false",{"type":45,"value":434}," outcomes as success.",{"type":36,"tag":103,"props":436,"children":438},{"id":437},"step-6-if-service-says-force-required",[439],{"type":45,"value":440},"Step 6: If Service Says Force Required",{"type":36,"tag":37,"props":442,"children":443},{},[444,446,451,453,458],{"type":45,"value":445},"If the service returns a non-2xx with a message like \"delete requires --force\" (the app has active shares, child resources, etc.), DO NOT auto-add ",{"type":36,"tag":62,"props":447,"children":449},{"className":448},[],[450],{"type":45,"value":67},{"type":45,"value":452},". Instead, ask a ",{"type":36,"tag":41,"props":454,"children":455},{},[456],{"type":45,"value":457},"second",{"type":45,"value":459}," confirmation:",{"type":36,"tag":325,"props":461,"children":462},{},[463],{"type":36,"tag":37,"props":464,"children":465},{},[466,468,473,475,481,483,488],{"type":45,"value":467},"\"The service requires ",{"type":36,"tag":62,"props":469,"children":471},{"className":470},[],[472],{"type":45,"value":67},{"type":45,"value":474}," to delete this app. Reason from the service: ",{"type":36,"tag":62,"props":476,"children":478},{"className":477},[],[479],{"type":45,"value":480},"\u003Cverbatim message>",{"type":45,"value":482},". Adding ",{"type":36,"tag":62,"props":484,"children":486},{"className":485},[],[487],{"type":45,"value":67},{"type":45,"value":489}," will remove the app and any associated state (shares, etc.) immediately. Are you sure?\"",{"type":36,"tag":37,"props":491,"children":492},{},[493],{"type":45,"value":494},"Wait for an explicit second yes. Only then:",{"type":36,"tag":129,"props":496,"children":498},{"className":131,"code":497,"language":133,"meta":134,"style":134},"$BIN app delete --app \"$APP_ID\" --force --non-interactive\n",[499],{"type":36,"tag":62,"props":500,"children":501},{"__ignoreMap":134},[502],{"type":36,"tag":140,"props":503,"children":504},{"class":142,"line":143},[505,509,513,517,521],{"type":36,"tag":140,"props":506,"children":507},{"style":170},[508],{"type":45,"value":390},{"type":36,"tag":140,"props":510,"children":511},{"style":164},[512],{"type":45,"value":204},{"type":36,"tag":140,"props":514,"children":515},{"style":170},[516],{"type":45,"value":303},{"type":36,"tag":140,"props":518,"children":519},{"style":164},[520],{"type":45,"value":204},{"type":36,"tag":140,"props":522,"children":523},{"style":170},[524],{"type":45,"value":525}," --force --non-interactive\n",{"type":36,"tag":37,"props":527,"children":528},{},[529,531,536],{"type":45,"value":530},"Never short-circuit the two confirmations into one. The service's ",{"type":36,"tag":62,"props":532,"children":534},{"className":533},[],[535],{"type":45,"value":67},{"type":45,"value":537}," requirement is the signal that downstream state will be affected.",{"type":36,"tag":103,"props":539,"children":541},{"id":540},"step-7-suggest-local-cleanup",[542],{"type":45,"value":543},"Step 7: Suggest Local Cleanup",{"type":36,"tag":37,"props":545,"children":546},{},[547],{"type":45,"value":548},"After successful delete, surface (do NOT run automatically):",{"type":36,"tag":129,"props":550,"children":554},{"className":551,"code":553,"language":45},[552],"language-text","App removed from service.\n\nTo clean up local workspace:\n  cd ..\n  rm -rf \u003Cproject-dir>\n\nOr keep the workspace if you intend to recreate \u002F re-link to a new app.\n",[555],{"type":36,"tag":62,"props":556,"children":557},{"__ignoreMap":134},[558],{"type":45,"value":553},{"type":36,"tag":103,"props":560,"children":562},{"id":561},"step-8-update-memory-bank",[563],{"type":45,"value":564},"Step 8: Update Memory Bank",{"type":36,"tag":37,"props":566,"children":567},{},[568,570,575],{"type":45,"value":569},"If ",{"type":36,"tag":62,"props":571,"children":573},{"className":572},[],[574],{"type":45,"value":119},{"type":45,"value":576}," exists, append a \"Deleted\" note with the timestamp and the app GUID, but do NOT delete the memory bank itself — the user may want the history.",{"type":36,"tag":99,"props":578,"children":579},{},[],{"type":36,"tag":82,"props":581,"children":583},{"id":582},"failure-modes",[584],{"type":45,"value":585},"Failure Modes",{"type":36,"tag":587,"props":588,"children":589},"table",{},[590,609],{"type":36,"tag":591,"props":592,"children":593},"thead",{},[594],{"type":36,"tag":595,"props":596,"children":597},"tr",{},[598,604],{"type":36,"tag":599,"props":600,"children":601},"th",{},[602],{"type":45,"value":603},"Error",{"type":36,"tag":599,"props":605,"children":606},{},[607],{"type":45,"value":608},"Action",{"type":36,"tag":610,"props":611,"children":612},"tbody",{},[613,631,652],{"type":36,"tag":595,"props":614,"children":615},{},[616,626],{"type":36,"tag":617,"props":618,"children":619},"td",{},[620],{"type":36,"tag":62,"props":621,"children":623},{"className":622},[],[624],{"type":45,"value":625},"App '\u003Cid>' not found in environment '\u003Cenv>'",{"type":36,"tag":617,"props":627,"children":628},{},[629],{"type":45,"value":630},"Idempotent path — the app is already gone. Emit a success note and update memory bank (mark deleted).",{"type":36,"tag":595,"props":632,"children":633},{},[634,639],{"type":36,"tag":617,"props":635,"children":636},{},[637],{"type":45,"value":638},"403 not authorized",{"type":36,"tag":617,"props":640,"children":641},{},[642,644,650],{"type":45,"value":643},"The account doesn't have Owner permissions on the app. Surface the error; suggest ",{"type":36,"tag":62,"props":645,"children":647},{"className":646},[],[648],{"type":45,"value":649},"$BIN app share",{"type":45,"value":651}," review or a different account.",{"type":36,"tag":595,"props":653,"children":654},{},[655,660],{"type":36,"tag":617,"props":656,"children":657},{},[658],{"type":45,"value":659},"5xx from the service",{"type":36,"tag":617,"props":661,"children":662},{},[663],{"type":45,"value":664},"Transient. Retry once after 5s; if still failing, STOP and surface verbatim — do not loop.",{"type":36,"tag":666,"props":667,"children":668},"style",{},[669],{"type":45,"value":670},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":672,"total":748},[673,687,704,719,724,736],{"slug":674,"name":674,"fn":675,"description":676,"org":677,"tags":678,"stars":17,"repoUrl":18,"updatedAt":686},"add-azuredevops","integrate Azure DevOps into Microsoft Apps","Adds Azure DevOps by delegating to `\u002Fadd-connector` with `api-id=shared_visualstudioteamservices` and action mode. Use when adding Azure DevOps integration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[679,682,685],{"name":680,"slug":681,"type":15},"Azure DevOps","azure-devops",{"name":683,"slug":684,"type":15},"Integrations","integrations",{"name":9,"slug":8,"type":15},"2026-07-07T06:53:11.295258",{"slug":688,"name":688,"fn":689,"description":690,"org":691,"tags":692,"stars":17,"repoUrl":18,"updatedAt":703},"add-office365","integrate Office 365 Outlook","Adds Office 365 Outlook by delegating to `\u002Fadd-connector` with `api-id=shared_office365` and action mode. Use when integrating Outlook mail\u002Fcalendar.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[693,694,697,700],{"name":9,"slug":8,"type":15},{"name":695,"slug":696,"type":15},"Microsoft 365","microsoft-365",{"name":698,"slug":699,"type":15},"Outlook Calendar","outlook-calendar",{"name":701,"slug":702,"type":15},"Outlook Email","outlook-email","2026-07-03T16:31:36.717786",{"slug":705,"name":705,"fn":706,"description":707,"org":708,"tags":709,"stars":17,"repoUrl":18,"updatedAt":718},"add-workiq","add Work IQ Copilot MCP","Adds Work IQ Copilot MCP by delegating to \u002Fadd-connector with api-id=shared_a365copilotchatmcp and action mode. Use when users need Microsoft 365 knowledge-grounded Work IQ search\u002Fchat.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[710,713,716,717],{"name":711,"slug":712,"type":15},"Copilot","copilot",{"name":714,"slug":715,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},{"name":695,"slug":696,"type":15},"2026-07-03T16:31:35.439156",{"slug":4,"name":4,"fn":5,"description":6,"org":720,"tags":721,"stars":17,"repoUrl":18,"updatedAt":19},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[722,723],{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":725,"name":725,"fn":726,"description":727,"org":728,"tags":729,"stars":17,"repoUrl":18,"updatedAt":735},"list-apps","discover Microsoft Apps in the environment","Discovers Microsoft Apps in the active environment via `ms app list --json` and optional `ms app show --json`. Use when listing or locating apps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[730,733,734],{"name":731,"slug":732,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-03T16:31:37.983568",{"slug":737,"name":737,"fn":738,"description":739,"org":740,"tags":741,"stars":17,"repoUrl":18,"updatedAt":747},"list-connectors","discover Microsoft App connectors and data sources","Lists connectors reachable in the active environment and the connection-bound data sources already wired into a Microsoft App. Use when discovering connectors and their operations before adding data sources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[742,745,746],{"name":743,"slug":744,"type":15},"API Development","api-development",{"name":683,"slug":684,"type":15},{"name":9,"slug":8,"type":15},"2026-07-07T06:53:09.758008",6,{"items":750,"total":943},[751,773,794,815,830,847,858,869,884,899,918,931],{"slug":752,"name":752,"fn":753,"description":754,"org":755,"tags":756,"stars":770,"repoUrl":771,"updatedAt":772},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[757,760,763,764,767],{"name":758,"slug":759,"type":15},"Engineering","engineering",{"name":761,"slug":762,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":765,"slug":766,"type":15},"Project Management","project-management",{"name":768,"slug":769,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":774,"name":774,"fn":775,"description":776,"org":777,"tags":778,"stars":791,"repoUrl":792,"updatedAt":793},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[779,782,785,788],{"name":780,"slug":781,"type":15},".NET","net",{"name":783,"slug":784,"type":15},"Agents","agents",{"name":786,"slug":787,"type":15},"Azure","azure",{"name":789,"slug":790,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":795,"name":795,"fn":796,"description":797,"org":798,"tags":799,"stars":791,"repoUrl":792,"updatedAt":814},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[800,803,804,807,810,811],{"name":801,"slug":802,"type":15},"Analytics","analytics",{"name":786,"slug":787,"type":15},{"name":805,"slug":806,"type":15},"Data Analysis","data-analysis",{"name":808,"slug":809,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":812,"slug":813,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":816,"name":816,"fn":817,"description":818,"org":819,"tags":820,"stars":791,"repoUrl":792,"updatedAt":829},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[821,824,825,826],{"name":822,"slug":823,"type":15},"AI Infrastructure","ai-infrastructure",{"name":786,"slug":787,"type":15},{"name":808,"slug":809,"type":15},{"name":827,"slug":828,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":831,"name":831,"fn":832,"description":833,"org":834,"tags":835,"stars":791,"repoUrl":792,"updatedAt":846},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[836,837,840,841,842,845],{"name":786,"slug":787,"type":15},{"name":838,"slug":839,"type":15},"Compliance","compliance",{"name":789,"slug":790,"type":15},{"name":9,"slug":8,"type":15},{"name":843,"slug":844,"type":15},"Python","python",{"name":827,"slug":828,"type":15},"2026-07-18T05:14:23.017504",{"slug":848,"name":848,"fn":849,"description":850,"org":851,"tags":852,"stars":791,"repoUrl":792,"updatedAt":857},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[853,854,855,856],{"name":801,"slug":802,"type":15},{"name":786,"slug":787,"type":15},{"name":789,"slug":790,"type":15},{"name":843,"slug":844,"type":15},"2026-07-31T05:54:29.068751",{"slug":859,"name":859,"fn":860,"description":861,"org":862,"tags":863,"stars":791,"repoUrl":792,"updatedAt":868},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[864,865,866,867],{"name":743,"slug":744,"type":15},{"name":786,"slug":787,"type":15},{"name":9,"slug":8,"type":15},{"name":843,"slug":844,"type":15},"2026-07-18T05:14:16.988376",{"slug":870,"name":870,"fn":871,"description":872,"org":873,"tags":874,"stars":791,"repoUrl":792,"updatedAt":883},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[875,876,879,882],{"name":786,"slug":787,"type":15},{"name":877,"slug":878,"type":15},"Computer Vision","computer-vision",{"name":880,"slug":881,"type":15},"Images","images",{"name":843,"slug":844,"type":15},"2026-07-18T05:14:18.007737",{"slug":885,"name":885,"fn":886,"description":887,"org":888,"tags":889,"stars":791,"repoUrl":792,"updatedAt":898},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[890,891,894,897],{"name":786,"slug":787,"type":15},{"name":892,"slug":893,"type":15},"Configuration","configuration",{"name":895,"slug":896,"type":15},"Feature Flags","feature-flags",{"name":808,"slug":809,"type":15},"2026-07-03T16:32:01.278468",{"slug":900,"name":900,"fn":901,"description":902,"org":903,"tags":904,"stars":791,"repoUrl":792,"updatedAt":917},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[905,908,911,914],{"name":906,"slug":907,"type":15},"Cosmos DB","cosmos-db",{"name":909,"slug":910,"type":15},"Database","database",{"name":912,"slug":913,"type":15},"NoSQL","nosql",{"name":915,"slug":916,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":919,"name":919,"fn":901,"description":920,"org":921,"tags":922,"stars":791,"repoUrl":792,"updatedAt":930},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[923,924,925,926,927],{"name":906,"slug":907,"type":15},{"name":909,"slug":910,"type":15},{"name":9,"slug":8,"type":15},{"name":912,"slug":913,"type":15},{"name":928,"slug":929,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":932,"name":932,"fn":933,"description":934,"org":935,"tags":936,"stars":791,"repoUrl":792,"updatedAt":942},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[937,938,939,940,941],{"name":786,"slug":787,"type":15},{"name":906,"slug":907,"type":15},{"name":909,"slug":910,"type":15},{"name":808,"slug":809,"type":15},{"name":912,"slug":913,"type":15},"2026-05-13T06:14:17.582229",267]