[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-kickstart-handoff":3,"mdc-3aaisg-key":35,"related-org-azure-kickstart-handoff":1942,"related-repo-azure-kickstart-handoff":2121},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"kickstart-handoff","verify cluster and permissions before deployment","Pre-deploy check playbook — verify cluster, ACR, permissions, and tooling before deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,17,18,21],{"name":14,"slug":15,"type":16},"Operations","operations","tag",{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"Deployment","deployment",{"name":22,"slug":23,"type":16},"Kubernetes","kubernetes",65,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fvscode-aks-tools","2026-07-12T08:17:54.726665",null,74,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Visual Studio Code extension for Azure Kubernetes Service","https:\u002F\u002Fgithub.com\u002FAzure\u002Fvscode-aks-tools\u002Ftree\u002FHEAD\u002Fskills\u002Fkickstart-handoff","---\nname: kickstart-handoff\ndescription: \"Pre-deploy check playbook — verify cluster, ACR, permissions, and tooling before deployment.\"\ndisable-model-invocation: true\n---\n\n# Pre-Deploy Check\n\nEnsure cluster, ACR, permissions, and tooling are all ready before deploying. Follow this strict order.\n\n## 6a. Cluster Readiness\n\nIf already confirmed ready in a prior status check, skip. Otherwise:\n```bash\naz aks show --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --query \"provisioningState\" --output tsv\n```\n- **Succeeded**: continue.\n- **Creating**: `az aks wait --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --created --interval 30 --timeout 600`\n- **Failed**: offer retry or a different cluster via `vscode_askQuestions`.\n\n## 6b. Cluster Metadata Detection\n\nRecord cluster properties to gate subsequent checks:\n```bash\naz aks show --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --query \"{sku:sku.tier, azureRbac:aadProfile.enableAzureRBAC, localAccountsDisabled:disableLocalAccounts}\" --output json\n```\nFor existing clusters, use these flags to determine behavior. For new AKS Automatic clusters expect `sku=Automatic`, `azureRbac=true`, `localAccountsDisabled=true`.\n\n## 6c. ACR Attachment\n\n**First, check whether the registry is already attached** — when the cluster was created through the Kickstart cluster-setup view, it already granted the cluster's kubelet identity `AcrPull` on the registry, so this step is usually a no-op:\n\n```bash\nKUBELET_ID=$(az aks show --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --query \"identityProfile.kubeletidentity.objectId\" --output tsv)\naz role assignment list --assignee \"$KUBELET_ID\" --role \"AcrPull\" --scope \"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ContainerRegistry\u002Fregistries\u002F\u003Cacr>\" --query \"[].id\" --output tsv\n```\nIf that prints a role-assignment id, the registry is already attached — report \"✓ Registry already attached\" and skip to 6d. Otherwise attach it now.\n\nDo NOT assume the user is Owner. `az aks update --attach-acr` requires Owner\u002FAccount Admin\u002FCo-Admin on the subscription. Try approaches in order:\n\n1. `az aks update --name \u003Ccluster> --resource-group \u003Crg> --attach-acr \u003Cacr> --subscription \u003Csub>`\n2. If that fails (\"Are you an Owner on this subscription?\"), assign the role directly (reuse `$KUBELET_ID` from the check above):\n   ```bash\n   az role assignment create --assignee \"$KUBELET_ID\" --role \"AcrPull\" --scope \"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ContainerRegistry\u002Fregistries\u002F\u003Cacr>\"\n   ```\n3. If that also fails (403 — user lacks `roleAssignments\u002Fwrite`), follow `\u002Fkickstart-pim-activation` to check for PIM-eligible roles and guide activation. If none eligible, print an admin hand-off block with the exact `az role assignment create` command.\n\n## 6d. kubelogin\n\nAKS Automatic disables local accounts.\n```bash\nwhich kubelogin\n```\nIf missing: `az aks install-cli`. If that fails: `brew install Azure\u002Fkubelogin\u002Fkubelogin` or https:\u002F\u002Fgithub.com\u002FAzure\u002Fkubelogin\u002Freleases.\n**Never use `az aks get-credentials --admin`** (will fail). **Never suggest `az aks command invoke`** (same user identity, same Forbidden error).\n\n## 6e–6g. Permission Probes (preferred — single call)\n\nInvoke the bundled VS Code command **`aks.checkDeploymentPermissions`** via `vscode\u002FrunCommand`. It runs all five remaining permission gates against the Azure ARM API (no `kubectl` \u002F `az acr build` round-trip) and returns a self-contained markdown report you can render directly in chat.\n\n**Args:**\n```json\n{\n  \"subscriptionId\": \"\u003Csub>\",\n  \"resourceGroup\": \"\u003Crg>\",\n  \"clusterName\": \"\u003Ccluster>\",\n  \"acrName\": \"\u003Cacr>\"\n}\n```\n\n**Returns:**\n```ts\n{\n  cancelled: boolean,\n  allPassed?: boolean,\n  scope?: { clusterScopeId, acrScopeId? },\n  probes?: Array\u003C{ id, label, status: \"pass\" | \"fail\" | \"unknown\", reason, recommendedRoles?, remediation? }>,\n  markdown: string  \u002F\u002F render verbatim\n}\n```\n\n**Probes performed:**\n\n| ID | Gate | Required role on fail |\n|---|---|---|\n| `cluster-user` | 6e — can download kubeconfig (`listClusterUserCredential`) | `Azure Kubernetes Service Cluster User Role` |\n| `aks-dataplane-write` | 6f — can create K8s workloads on the cluster | `Azure Kubernetes Service RBAC Writer` |\n| `acr-push` | 6g — user can push images to the ACR | `AcrPush` |\n| `acr-tasks` | 6g — user can run `az acr build` server-side | `Container Registry Tasks Contributor` |\n| `acr-pull-kubelet` | Cluster's kubelet identity can pull from the ACR | `AcrPull` |\n\n**How to use the result:**\n\n- If `allPassed === true`: render `markdown` and proceed to **Confirm**.\n- For any failing probe, the included `remediation` is a ready-to-run `az role assignment create` command. Offer to run it.\n- If `az role assignment create` then returns 403 (user lacks `Microsoft.Authorization\u002FroleAssignments\u002Fwrite`), follow `\u002Fkickstart-pim-activation` — that skill calls `aks.checkRoleAssignmentPermissions` to surface PIM-eligible roles or generate an admin hand-off block.\n- If `acrName` is omitted (no ACR in scope), the three ACR probes are skipped and the report says so.\n\n**Fallback (only if the command is unavailable in this build):** fall back to the manual probes —\n```bash\naz aks get-credentials --resource-group \u003Crg> --name \u003Ccluster> --overwrite-existing\nkubectl auth can-i get namespaces\nkubectl auth can-i create deployments --namespace \u003Cnamespace>\naz acr build --registry \u003Cacr> --image kickstart-probe:probe --file \u002Fdev\u002Fnull \u002Fdev\u002Fnull 2>&1 | head -5\n```\nWith the same remediation roles as listed in the table above.\n\n## Confirm\n\nConfirm readiness via `vscode_askQuestions`: \"Yes, deploy\" (recommended), \"Review artifacts first\", \"Not yet\".\n",{"data":36,"body":38},{"name":4,"description":6,"disable-model-invocation":37},true,{"type":39,"children":40},"root",[41,50,56,63,68,205,255,261,266,374,401,407,425,649,654,667,797,803,808,829,886,892,932,940,1117,1125,1392,1400,1577,1585,1679,1689,1914,1919,1924,1936],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"pre-deploy-check",[47],{"type":48,"value":49},"text","Pre-Deploy Check",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"Ensure cluster, ACR, permissions, and tooling are all ready before deploying. Follow this strict order.",{"type":42,"tag":57,"props":58,"children":60},"h2",{"id":59},"_6a-cluster-readiness",[61],{"type":48,"value":62},"6a. Cluster Readiness",{"type":42,"tag":51,"props":64,"children":65},{},[66],{"type":48,"value":67},"If already confirmed ready in a prior status check, skip. Otherwise:",{"type":42,"tag":69,"props":70,"children":75},"pre",{"className":71,"code":72,"language":73,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","az aks show --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --query \"provisioningState\" --output tsv\n","bash","",[76],{"type":42,"tag":77,"props":78,"children":79},"code",{"__ignoreMap":74},[80],{"type":42,"tag":81,"props":82,"children":85},"span",{"class":83,"line":84},"line",1,[86,92,98,103,108,114,119,125,130,135,139,143,148,152,157,161,166,171,175,180,185,190,195,200],{"type":42,"tag":81,"props":87,"children":89},{"style":88},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[90],{"type":48,"value":91},"az",{"type":42,"tag":81,"props":93,"children":95},{"style":94},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[96],{"type":48,"value":97}," aks",{"type":42,"tag":81,"props":99,"children":100},{"style":94},[101],{"type":48,"value":102}," show",{"type":42,"tag":81,"props":104,"children":105},{"style":94},[106],{"type":48,"value":107}," --name",{"type":42,"tag":81,"props":109,"children":111},{"style":110},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[112],{"type":48,"value":113}," \u003C",{"type":42,"tag":81,"props":115,"children":116},{"style":94},[117],{"type":48,"value":118},"cluste",{"type":42,"tag":81,"props":120,"children":122},{"style":121},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[123],{"type":48,"value":124},"r",{"type":42,"tag":81,"props":126,"children":127},{"style":110},[128],{"type":48,"value":129},">",{"type":42,"tag":81,"props":131,"children":132},{"style":94},[133],{"type":48,"value":134}," --resource-group",{"type":42,"tag":81,"props":136,"children":137},{"style":110},[138],{"type":48,"value":113},{"type":42,"tag":81,"props":140,"children":141},{"style":94},[142],{"type":48,"value":124},{"type":42,"tag":81,"props":144,"children":145},{"style":121},[146],{"type":48,"value":147},"g",{"type":42,"tag":81,"props":149,"children":150},{"style":110},[151],{"type":48,"value":129},{"type":42,"tag":81,"props":153,"children":154},{"style":94},[155],{"type":48,"value":156}," --subscription",{"type":42,"tag":81,"props":158,"children":159},{"style":110},[160],{"type":48,"value":113},{"type":42,"tag":81,"props":162,"children":163},{"style":94},[164],{"type":48,"value":165},"su",{"type":42,"tag":81,"props":167,"children":168},{"style":121},[169],{"type":48,"value":170},"b",{"type":42,"tag":81,"props":172,"children":173},{"style":110},[174],{"type":48,"value":129},{"type":42,"tag":81,"props":176,"children":177},{"style":94},[178],{"type":48,"value":179}," --query",{"type":42,"tag":81,"props":181,"children":182},{"style":110},[183],{"type":48,"value":184}," \"",{"type":42,"tag":81,"props":186,"children":187},{"style":94},[188],{"type":48,"value":189},"provisioningState",{"type":42,"tag":81,"props":191,"children":192},{"style":110},[193],{"type":48,"value":194},"\"",{"type":42,"tag":81,"props":196,"children":197},{"style":94},[198],{"type":48,"value":199}," --output",{"type":42,"tag":81,"props":201,"children":202},{"style":94},[203],{"type":48,"value":204}," tsv\n",{"type":42,"tag":206,"props":207,"children":208},"ul",{},[209,221,237],{"type":42,"tag":210,"props":211,"children":212},"li",{},[213,219],{"type":42,"tag":214,"props":215,"children":216},"strong",{},[217],{"type":48,"value":218},"Succeeded",{"type":48,"value":220},": continue.",{"type":42,"tag":210,"props":222,"children":223},{},[224,229,231],{"type":42,"tag":214,"props":225,"children":226},{},[227],{"type":48,"value":228},"Creating",{"type":48,"value":230},": ",{"type":42,"tag":77,"props":232,"children":234},{"className":233},[],[235],{"type":48,"value":236},"az aks wait --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --created --interval 30 --timeout 600",{"type":42,"tag":210,"props":238,"children":239},{},[240,245,247,253],{"type":42,"tag":214,"props":241,"children":242},{},[243],{"type":48,"value":244},"Failed",{"type":48,"value":246},": offer retry or a different cluster via ",{"type":42,"tag":77,"props":248,"children":250},{"className":249},[],[251],{"type":48,"value":252},"vscode_askQuestions",{"type":48,"value":254},".",{"type":42,"tag":57,"props":256,"children":258},{"id":257},"_6b-cluster-metadata-detection",[259],{"type":48,"value":260},"6b. Cluster Metadata Detection",{"type":42,"tag":51,"props":262,"children":263},{},[264],{"type":48,"value":265},"Record cluster properties to gate subsequent checks:",{"type":42,"tag":69,"props":267,"children":269},{"className":71,"code":268,"language":73,"meta":74,"style":74},"az aks show --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --query \"{sku:sku.tier, azureRbac:aadProfile.enableAzureRBAC, localAccountsDisabled:disableLocalAccounts}\" --output json\n",[270],{"type":42,"tag":77,"props":271,"children":272},{"__ignoreMap":74},[273],{"type":42,"tag":81,"props":274,"children":275},{"class":83,"line":84},[276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,361,365,369],{"type":42,"tag":81,"props":277,"children":278},{"style":88},[279],{"type":48,"value":91},{"type":42,"tag":81,"props":281,"children":282},{"style":94},[283],{"type":48,"value":97},{"type":42,"tag":81,"props":285,"children":286},{"style":94},[287],{"type":48,"value":102},{"type":42,"tag":81,"props":289,"children":290},{"style":94},[291],{"type":48,"value":107},{"type":42,"tag":81,"props":293,"children":294},{"style":110},[295],{"type":48,"value":113},{"type":42,"tag":81,"props":297,"children":298},{"style":94},[299],{"type":48,"value":118},{"type":42,"tag":81,"props":301,"children":302},{"style":121},[303],{"type":48,"value":124},{"type":42,"tag":81,"props":305,"children":306},{"style":110},[307],{"type":48,"value":129},{"type":42,"tag":81,"props":309,"children":310},{"style":94},[311],{"type":48,"value":134},{"type":42,"tag":81,"props":313,"children":314},{"style":110},[315],{"type":48,"value":113},{"type":42,"tag":81,"props":317,"children":318},{"style":94},[319],{"type":48,"value":124},{"type":42,"tag":81,"props":321,"children":322},{"style":121},[323],{"type":48,"value":147},{"type":42,"tag":81,"props":325,"children":326},{"style":110},[327],{"type":48,"value":129},{"type":42,"tag":81,"props":329,"children":330},{"style":94},[331],{"type":48,"value":156},{"type":42,"tag":81,"props":333,"children":334},{"style":110},[335],{"type":48,"value":113},{"type":42,"tag":81,"props":337,"children":338},{"style":94},[339],{"type":48,"value":165},{"type":42,"tag":81,"props":341,"children":342},{"style":121},[343],{"type":48,"value":170},{"type":42,"tag":81,"props":345,"children":346},{"style":110},[347],{"type":48,"value":129},{"type":42,"tag":81,"props":349,"children":350},{"style":94},[351],{"type":48,"value":179},{"type":42,"tag":81,"props":353,"children":354},{"style":110},[355],{"type":48,"value":184},{"type":42,"tag":81,"props":357,"children":358},{"style":94},[359],{"type":48,"value":360},"{sku:sku.tier, azureRbac:aadProfile.enableAzureRBAC, localAccountsDisabled:disableLocalAccounts}",{"type":42,"tag":81,"props":362,"children":363},{"style":110},[364],{"type":48,"value":194},{"type":42,"tag":81,"props":366,"children":367},{"style":94},[368],{"type":48,"value":199},{"type":42,"tag":81,"props":370,"children":371},{"style":94},[372],{"type":48,"value":373}," json\n",{"type":42,"tag":51,"props":375,"children":376},{},[377,379,385,387,393,394,400],{"type":48,"value":378},"For existing clusters, use these flags to determine behavior. For new AKS Automatic clusters expect ",{"type":42,"tag":77,"props":380,"children":382},{"className":381},[],[383],{"type":48,"value":384},"sku=Automatic",{"type":48,"value":386},", ",{"type":42,"tag":77,"props":388,"children":390},{"className":389},[],[391],{"type":48,"value":392},"azureRbac=true",{"type":48,"value":386},{"type":42,"tag":77,"props":395,"children":397},{"className":396},[],[398],{"type":48,"value":399},"localAccountsDisabled=true",{"type":48,"value":254},{"type":42,"tag":57,"props":402,"children":404},{"id":403},"_6c-acr-attachment",[405],{"type":48,"value":406},"6c. ACR Attachment",{"type":42,"tag":51,"props":408,"children":409},{},[410,415,417,423],{"type":42,"tag":214,"props":411,"children":412},{},[413],{"type":48,"value":414},"First, check whether the registry is already attached",{"type":48,"value":416}," — when the cluster was created through the Kickstart cluster-setup view, it already granted the cluster's kubelet identity ",{"type":42,"tag":77,"props":418,"children":420},{"className":419},[],[421],{"type":48,"value":422},"AcrPull",{"type":48,"value":424}," on the registry, so this step is usually a no-op:",{"type":42,"tag":69,"props":426,"children":428},{"className":71,"code":427,"language":73,"meta":74,"style":74},"KUBELET_ID=$(az aks show --name \u003Ccluster> --resource-group \u003Crg> --subscription \u003Csub> --query \"identityProfile.kubeletidentity.objectId\" --output tsv)\naz role assignment list --assignee \"$KUBELET_ID\" --role \"AcrPull\" --scope \"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ContainerRegistry\u002Fregistries\u002F\u003Cacr>\" --query \"[].id\" --output tsv\n",[429],{"type":42,"tag":77,"props":430,"children":431},{"__ignoreMap":74},[432,548],{"type":42,"tag":81,"props":433,"children":434},{"class":83,"line":84},[435,440,445,449,453,457,461,465,469,473,477,481,485,489,493,497,501,505,509,513,517,521,525,530,534,538,543],{"type":42,"tag":81,"props":436,"children":437},{"style":121},[438],{"type":48,"value":439},"KUBELET_ID",{"type":42,"tag":81,"props":441,"children":442},{"style":110},[443],{"type":48,"value":444},"=$(",{"type":42,"tag":81,"props":446,"children":447},{"style":88},[448],{"type":48,"value":91},{"type":42,"tag":81,"props":450,"children":451},{"style":94},[452],{"type":48,"value":97},{"type":42,"tag":81,"props":454,"children":455},{"style":94},[456],{"type":48,"value":102},{"type":42,"tag":81,"props":458,"children":459},{"style":94},[460],{"type":48,"value":107},{"type":42,"tag":81,"props":462,"children":463},{"style":110},[464],{"type":48,"value":113},{"type":42,"tag":81,"props":466,"children":467},{"style":94},[468],{"type":48,"value":118},{"type":42,"tag":81,"props":470,"children":471},{"style":121},[472],{"type":48,"value":124},{"type":42,"tag":81,"props":474,"children":475},{"style":110},[476],{"type":48,"value":129},{"type":42,"tag":81,"props":478,"children":479},{"style":94},[480],{"type":48,"value":134},{"type":42,"tag":81,"props":482,"children":483},{"style":110},[484],{"type":48,"value":113},{"type":42,"tag":81,"props":486,"children":487},{"style":94},[488],{"type":48,"value":124},{"type":42,"tag":81,"props":490,"children":491},{"style":121},[492],{"type":48,"value":147},{"type":42,"tag":81,"props":494,"children":495},{"style":110},[496],{"type":48,"value":129},{"type":42,"tag":81,"props":498,"children":499},{"style":94},[500],{"type":48,"value":156},{"type":42,"tag":81,"props":502,"children":503},{"style":110},[504],{"type":48,"value":113},{"type":42,"tag":81,"props":506,"children":507},{"style":94},[508],{"type":48,"value":165},{"type":42,"tag":81,"props":510,"children":511},{"style":121},[512],{"type":48,"value":170},{"type":42,"tag":81,"props":514,"children":515},{"style":110},[516],{"type":48,"value":129},{"type":42,"tag":81,"props":518,"children":519},{"style":94},[520],{"type":48,"value":179},{"type":42,"tag":81,"props":522,"children":523},{"style":110},[524],{"type":48,"value":184},{"type":42,"tag":81,"props":526,"children":527},{"style":94},[528],{"type":48,"value":529},"identityProfile.kubeletidentity.objectId",{"type":42,"tag":81,"props":531,"children":532},{"style":110},[533],{"type":48,"value":194},{"type":42,"tag":81,"props":535,"children":536},{"style":94},[537],{"type":48,"value":199},{"type":42,"tag":81,"props":539,"children":540},{"style":94},[541],{"type":48,"value":542}," tsv",{"type":42,"tag":81,"props":544,"children":545},{"style":110},[546],{"type":48,"value":547},")\n",{"type":42,"tag":81,"props":549,"children":551},{"class":83,"line":550},2,[552,556,561,566,571,576,580,585,589,594,598,602,606,611,615,620,624,628,632,637,641,645],{"type":42,"tag":81,"props":553,"children":554},{"style":88},[555],{"type":48,"value":91},{"type":42,"tag":81,"props":557,"children":558},{"style":94},[559],{"type":48,"value":560}," role",{"type":42,"tag":81,"props":562,"children":563},{"style":94},[564],{"type":48,"value":565}," assignment",{"type":42,"tag":81,"props":567,"children":568},{"style":94},[569],{"type":48,"value":570}," list",{"type":42,"tag":81,"props":572,"children":573},{"style":94},[574],{"type":48,"value":575}," --assignee",{"type":42,"tag":81,"props":577,"children":578},{"style":110},[579],{"type":48,"value":184},{"type":42,"tag":81,"props":581,"children":582},{"style":121},[583],{"type":48,"value":584},"$KUBELET_ID",{"type":42,"tag":81,"props":586,"children":587},{"style":110},[588],{"type":48,"value":194},{"type":42,"tag":81,"props":590,"children":591},{"style":94},[592],{"type":48,"value":593}," --role",{"type":42,"tag":81,"props":595,"children":596},{"style":110},[597],{"type":48,"value":184},{"type":42,"tag":81,"props":599,"children":600},{"style":94},[601],{"type":48,"value":422},{"type":42,"tag":81,"props":603,"children":604},{"style":110},[605],{"type":48,"value":194},{"type":42,"tag":81,"props":607,"children":608},{"style":94},[609],{"type":48,"value":610}," --scope",{"type":42,"tag":81,"props":612,"children":613},{"style":110},[614],{"type":48,"value":184},{"type":42,"tag":81,"props":616,"children":617},{"style":94},[618],{"type":48,"value":619},"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ContainerRegistry\u002Fregistries\u002F\u003Cacr>",{"type":42,"tag":81,"props":621,"children":622},{"style":110},[623],{"type":48,"value":194},{"type":42,"tag":81,"props":625,"children":626},{"style":94},[627],{"type":48,"value":179},{"type":42,"tag":81,"props":629,"children":630},{"style":110},[631],{"type":48,"value":184},{"type":42,"tag":81,"props":633,"children":634},{"style":94},[635],{"type":48,"value":636},"[].id",{"type":42,"tag":81,"props":638,"children":639},{"style":110},[640],{"type":48,"value":194},{"type":42,"tag":81,"props":642,"children":643},{"style":94},[644],{"type":48,"value":199},{"type":42,"tag":81,"props":646,"children":647},{"style":94},[648],{"type":48,"value":204},{"type":42,"tag":51,"props":650,"children":651},{},[652],{"type":48,"value":653},"If that prints a role-assignment id, the registry is already attached — report \"✓ Registry already attached\" and skip to 6d. Otherwise attach it now.",{"type":42,"tag":51,"props":655,"children":656},{},[657,659,665],{"type":48,"value":658},"Do NOT assume the user is Owner. ",{"type":42,"tag":77,"props":660,"children":662},{"className":661},[],[663],{"type":48,"value":664},"az aks update --attach-acr",{"type":48,"value":666}," requires Owner\u002FAccount Admin\u002FCo-Admin on the subscription. Try approaches in order:",{"type":42,"tag":668,"props":669,"children":670},"ol",{},[671,680,768],{"type":42,"tag":210,"props":672,"children":673},{},[674],{"type":42,"tag":77,"props":675,"children":677},{"className":676},[],[678],{"type":48,"value":679},"az aks update --name \u003Ccluster> --resource-group \u003Crg> --attach-acr \u003Cacr> --subscription \u003Csub>",{"type":42,"tag":210,"props":681,"children":682},{},[683,685,690,692],{"type":48,"value":684},"If that fails (\"Are you an Owner on this subscription?\"), assign the role directly (reuse ",{"type":42,"tag":77,"props":686,"children":688},{"className":687},[],[689],{"type":48,"value":584},{"type":48,"value":691}," from the check above):\n",{"type":42,"tag":69,"props":693,"children":695},{"className":71,"code":694,"language":73,"meta":74,"style":74},"az role assignment create --assignee \"$KUBELET_ID\" --role \"AcrPull\" --scope \"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ContainerRegistry\u002Fregistries\u002F\u003Cacr>\"\n",[696],{"type":42,"tag":77,"props":697,"children":698},{"__ignoreMap":74},[699],{"type":42,"tag":81,"props":700,"children":701},{"class":83,"line":84},[702,706,710,714,719,723,727,731,735,739,743,747,751,755,759,763],{"type":42,"tag":81,"props":703,"children":704},{"style":88},[705],{"type":48,"value":91},{"type":42,"tag":81,"props":707,"children":708},{"style":94},[709],{"type":48,"value":560},{"type":42,"tag":81,"props":711,"children":712},{"style":94},[713],{"type":48,"value":565},{"type":42,"tag":81,"props":715,"children":716},{"style":94},[717],{"type":48,"value":718}," create",{"type":42,"tag":81,"props":720,"children":721},{"style":94},[722],{"type":48,"value":575},{"type":42,"tag":81,"props":724,"children":725},{"style":110},[726],{"type":48,"value":184},{"type":42,"tag":81,"props":728,"children":729},{"style":121},[730],{"type":48,"value":584},{"type":42,"tag":81,"props":732,"children":733},{"style":110},[734],{"type":48,"value":194},{"type":42,"tag":81,"props":736,"children":737},{"style":94},[738],{"type":48,"value":593},{"type":42,"tag":81,"props":740,"children":741},{"style":110},[742],{"type":48,"value":184},{"type":42,"tag":81,"props":744,"children":745},{"style":94},[746],{"type":48,"value":422},{"type":42,"tag":81,"props":748,"children":749},{"style":110},[750],{"type":48,"value":194},{"type":42,"tag":81,"props":752,"children":753},{"style":94},[754],{"type":48,"value":610},{"type":42,"tag":81,"props":756,"children":757},{"style":110},[758],{"type":48,"value":184},{"type":42,"tag":81,"props":760,"children":761},{"style":94},[762],{"type":48,"value":619},{"type":42,"tag":81,"props":764,"children":765},{"style":110},[766],{"type":48,"value":767},"\"\n",{"type":42,"tag":210,"props":769,"children":770},{},[771,773,779,781,787,789,795],{"type":48,"value":772},"If that also fails (403 — user lacks ",{"type":42,"tag":77,"props":774,"children":776},{"className":775},[],[777],{"type":48,"value":778},"roleAssignments\u002Fwrite",{"type":48,"value":780},"), follow ",{"type":42,"tag":77,"props":782,"children":784},{"className":783},[],[785],{"type":48,"value":786},"\u002Fkickstart-pim-activation",{"type":48,"value":788}," to check for PIM-eligible roles and guide activation. If none eligible, print an admin hand-off block with the exact ",{"type":42,"tag":77,"props":790,"children":792},{"className":791},[],[793],{"type":48,"value":794},"az role assignment create",{"type":48,"value":796}," command.",{"type":42,"tag":57,"props":798,"children":800},{"id":799},"_6d-kubelogin",[801],{"type":48,"value":802},"6d. kubelogin",{"type":42,"tag":51,"props":804,"children":805},{},[806],{"type":48,"value":807},"AKS Automatic disables local accounts.",{"type":42,"tag":69,"props":809,"children":811},{"className":71,"code":810,"language":73,"meta":74,"style":74},"which kubelogin\n",[812],{"type":42,"tag":77,"props":813,"children":814},{"__ignoreMap":74},[815],{"type":42,"tag":81,"props":816,"children":817},{"class":83,"line":84},[818,824],{"type":42,"tag":81,"props":819,"children":821},{"style":820},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[822],{"type":48,"value":823},"which",{"type":42,"tag":81,"props":825,"children":826},{"style":94},[827],{"type":48,"value":828}," kubelogin\n",{"type":42,"tag":51,"props":830,"children":831},{},[832,834,840,842,848,850,858,860,871,873,884],{"type":48,"value":833},"If missing: ",{"type":42,"tag":77,"props":835,"children":837},{"className":836},[],[838],{"type":48,"value":839},"az aks install-cli",{"type":48,"value":841},". If that fails: ",{"type":42,"tag":77,"props":843,"children":845},{"className":844},[],[846],{"type":48,"value":847},"brew install Azure\u002Fkubelogin\u002Fkubelogin",{"type":48,"value":849}," or ",{"type":42,"tag":851,"props":852,"children":856},"a",{"href":853,"rel":854},"https:\u002F\u002Fgithub.com\u002FAzure\u002Fkubelogin\u002Freleases",[855],"nofollow",[857],{"type":48,"value":853},{"type":48,"value":859},".\n",{"type":42,"tag":214,"props":861,"children":862},{},[863,865],{"type":48,"value":864},"Never use ",{"type":42,"tag":77,"props":866,"children":868},{"className":867},[],[869],{"type":48,"value":870},"az aks get-credentials --admin",{"type":48,"value":872}," (will fail). ",{"type":42,"tag":214,"props":874,"children":875},{},[876,878],{"type":48,"value":877},"Never suggest ",{"type":42,"tag":77,"props":879,"children":881},{"className":880},[],[882],{"type":48,"value":883},"az aks command invoke",{"type":48,"value":885}," (same user identity, same Forbidden error).",{"type":42,"tag":57,"props":887,"children":889},{"id":888},"_6e6g-permission-probes-preferred-single-call",[890],{"type":48,"value":891},"6e–6g. Permission Probes (preferred — single call)",{"type":42,"tag":51,"props":893,"children":894},{},[895,897,906,908,914,916,922,924,930],{"type":48,"value":896},"Invoke the bundled VS Code command ",{"type":42,"tag":214,"props":898,"children":899},{},[900],{"type":42,"tag":77,"props":901,"children":903},{"className":902},[],[904],{"type":48,"value":905},"aks.checkDeploymentPermissions",{"type":48,"value":907}," via ",{"type":42,"tag":77,"props":909,"children":911},{"className":910},[],[912],{"type":48,"value":913},"vscode\u002FrunCommand",{"type":48,"value":915},". It runs all five remaining permission gates against the Azure ARM API (no ",{"type":42,"tag":77,"props":917,"children":919},{"className":918},[],[920],{"type":48,"value":921},"kubectl",{"type":48,"value":923}," \u002F ",{"type":42,"tag":77,"props":925,"children":927},{"className":926},[],[928],{"type":48,"value":929},"az acr build",{"type":48,"value":931}," round-trip) and returns a self-contained markdown report you can render directly in chat.",{"type":42,"tag":51,"props":933,"children":934},{},[935],{"type":42,"tag":214,"props":936,"children":937},{},[938],{"type":48,"value":939},"Args:",{"type":42,"tag":69,"props":941,"children":945},{"className":942,"code":943,"language":944,"meta":74,"style":74},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"subscriptionId\": \"\u003Csub>\",\n  \"resourceGroup\": \"\u003Crg>\",\n  \"clusterName\": \"\u003Ccluster>\",\n  \"acrName\": \"\u003Cacr>\"\n}\n","json",[946],{"type":42,"tag":77,"props":947,"children":948},{"__ignoreMap":74},[949,957,998,1036,1074,1108],{"type":42,"tag":81,"props":950,"children":951},{"class":83,"line":84},[952],{"type":42,"tag":81,"props":953,"children":954},{"style":110},[955],{"type":48,"value":956},"{\n",{"type":42,"tag":81,"props":958,"children":959},{"class":83,"line":550},[960,965,971,975,980,984,989,993],{"type":42,"tag":81,"props":961,"children":962},{"style":110},[963],{"type":48,"value":964},"  \"",{"type":42,"tag":81,"props":966,"children":968},{"style":967},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[969],{"type":48,"value":970},"subscriptionId",{"type":42,"tag":81,"props":972,"children":973},{"style":110},[974],{"type":48,"value":194},{"type":42,"tag":81,"props":976,"children":977},{"style":110},[978],{"type":48,"value":979},":",{"type":42,"tag":81,"props":981,"children":982},{"style":110},[983],{"type":48,"value":184},{"type":42,"tag":81,"props":985,"children":986},{"style":94},[987],{"type":48,"value":988},"\u003Csub>",{"type":42,"tag":81,"props":990,"children":991},{"style":110},[992],{"type":48,"value":194},{"type":42,"tag":81,"props":994,"children":995},{"style":110},[996],{"type":48,"value":997},",\n",{"type":42,"tag":81,"props":999,"children":1001},{"class":83,"line":1000},3,[1002,1006,1011,1015,1019,1023,1028,1032],{"type":42,"tag":81,"props":1003,"children":1004},{"style":110},[1005],{"type":48,"value":964},{"type":42,"tag":81,"props":1007,"children":1008},{"style":967},[1009],{"type":48,"value":1010},"resourceGroup",{"type":42,"tag":81,"props":1012,"children":1013},{"style":110},[1014],{"type":48,"value":194},{"type":42,"tag":81,"props":1016,"children":1017},{"style":110},[1018],{"type":48,"value":979},{"type":42,"tag":81,"props":1020,"children":1021},{"style":110},[1022],{"type":48,"value":184},{"type":42,"tag":81,"props":1024,"children":1025},{"style":94},[1026],{"type":48,"value":1027},"\u003Crg>",{"type":42,"tag":81,"props":1029,"children":1030},{"style":110},[1031],{"type":48,"value":194},{"type":42,"tag":81,"props":1033,"children":1034},{"style":110},[1035],{"type":48,"value":997},{"type":42,"tag":81,"props":1037,"children":1039},{"class":83,"line":1038},4,[1040,1044,1049,1053,1057,1061,1066,1070],{"type":42,"tag":81,"props":1041,"children":1042},{"style":110},[1043],{"type":48,"value":964},{"type":42,"tag":81,"props":1045,"children":1046},{"style":967},[1047],{"type":48,"value":1048},"clusterName",{"type":42,"tag":81,"props":1050,"children":1051},{"style":110},[1052],{"type":48,"value":194},{"type":42,"tag":81,"props":1054,"children":1055},{"style":110},[1056],{"type":48,"value":979},{"type":42,"tag":81,"props":1058,"children":1059},{"style":110},[1060],{"type":48,"value":184},{"type":42,"tag":81,"props":1062,"children":1063},{"style":94},[1064],{"type":48,"value":1065},"\u003Ccluster>",{"type":42,"tag":81,"props":1067,"children":1068},{"style":110},[1069],{"type":48,"value":194},{"type":42,"tag":81,"props":1071,"children":1072},{"style":110},[1073],{"type":48,"value":997},{"type":42,"tag":81,"props":1075,"children":1077},{"class":83,"line":1076},5,[1078,1082,1087,1091,1095,1099,1104],{"type":42,"tag":81,"props":1079,"children":1080},{"style":110},[1081],{"type":48,"value":964},{"type":42,"tag":81,"props":1083,"children":1084},{"style":967},[1085],{"type":48,"value":1086},"acrName",{"type":42,"tag":81,"props":1088,"children":1089},{"style":110},[1090],{"type":48,"value":194},{"type":42,"tag":81,"props":1092,"children":1093},{"style":110},[1094],{"type":48,"value":979},{"type":42,"tag":81,"props":1096,"children":1097},{"style":110},[1098],{"type":48,"value":184},{"type":42,"tag":81,"props":1100,"children":1101},{"style":94},[1102],{"type":48,"value":1103},"\u003Cacr>",{"type":42,"tag":81,"props":1105,"children":1106},{"style":110},[1107],{"type":48,"value":767},{"type":42,"tag":81,"props":1109,"children":1111},{"class":83,"line":1110},6,[1112],{"type":42,"tag":81,"props":1113,"children":1114},{"style":110},[1115],{"type":48,"value":1116},"}\n",{"type":42,"tag":51,"props":1118,"children":1119},{},[1120],{"type":42,"tag":214,"props":1121,"children":1122},{},[1123],{"type":48,"value":1124},"Returns:",{"type":42,"tag":69,"props":1126,"children":1130},{"className":1127,"code":1128,"language":1129,"meta":74,"style":74},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  cancelled: boolean,\n  allPassed?: boolean,\n  scope?: { clusterScopeId, acrScopeId? },\n  probes?: Array\u003C{ id, label, status: \"pass\" | \"fail\" | \"unknown\", reason, recommendedRoles?, remediation? }>,\n  markdown: string  \u002F\u002F render verbatim\n}\n","ts",[1131],{"type":42,"tag":77,"props":1132,"children":1133},{"__ignoreMap":74},[1134,1141,1162,1183,1221,1361,1384],{"type":42,"tag":81,"props":1135,"children":1136},{"class":83,"line":84},[1137],{"type":42,"tag":81,"props":1138,"children":1139},{"style":110},[1140],{"type":48,"value":956},{"type":42,"tag":81,"props":1142,"children":1143},{"class":83,"line":550},[1144,1149,1153,1158],{"type":42,"tag":81,"props":1145,"children":1146},{"style":88},[1147],{"type":48,"value":1148},"  cancelled",{"type":42,"tag":81,"props":1150,"children":1151},{"style":110},[1152],{"type":48,"value":979},{"type":42,"tag":81,"props":1154,"children":1155},{"style":121},[1156],{"type":48,"value":1157}," boolean",{"type":42,"tag":81,"props":1159,"children":1160},{"style":110},[1161],{"type":48,"value":997},{"type":42,"tag":81,"props":1163,"children":1164},{"class":83,"line":1000},[1165,1170,1175,1179],{"type":42,"tag":81,"props":1166,"children":1167},{"style":121},[1168],{"type":48,"value":1169},"  allPassed",{"type":42,"tag":81,"props":1171,"children":1172},{"style":110},[1173],{"type":48,"value":1174},"?:",{"type":42,"tag":81,"props":1176,"children":1177},{"style":121},[1178],{"type":48,"value":1157},{"type":42,"tag":81,"props":1180,"children":1181},{"style":110},[1182],{"type":48,"value":997},{"type":42,"tag":81,"props":1184,"children":1185},{"class":83,"line":1038},[1186,1191,1195,1200,1205,1210,1216],{"type":42,"tag":81,"props":1187,"children":1188},{"style":121},[1189],{"type":48,"value":1190},"  scope",{"type":42,"tag":81,"props":1192,"children":1193},{"style":110},[1194],{"type":48,"value":1174},{"type":42,"tag":81,"props":1196,"children":1197},{"style":110},[1198],{"type":48,"value":1199}," {",{"type":42,"tag":81,"props":1201,"children":1202},{"style":121},[1203],{"type":48,"value":1204}," clusterScopeId",{"type":42,"tag":81,"props":1206,"children":1207},{"style":110},[1208],{"type":48,"value":1209},",",{"type":42,"tag":81,"props":1211,"children":1213},{"style":1212},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1214],{"type":48,"value":1215}," acrScopeId? ",{"type":42,"tag":81,"props":1217,"children":1218},{"style":110},[1219],{"type":48,"value":1220},"},\n",{"type":42,"tag":81,"props":1222,"children":1223},{"class":83,"line":1076},[1224,1229,1233,1238,1243,1248,1252,1257,1261,1266,1270,1274,1279,1283,1288,1292,1297,1301,1305,1309,1314,1318,1322,1327,1331,1336,1341,1346,1351,1356],{"type":42,"tag":81,"props":1225,"children":1226},{"style":121},[1227],{"type":48,"value":1228},"  probes",{"type":42,"tag":81,"props":1230,"children":1231},{"style":110},[1232],{"type":48,"value":1174},{"type":42,"tag":81,"props":1234,"children":1235},{"style":121},[1236],{"type":48,"value":1237}," Array",{"type":42,"tag":81,"props":1239,"children":1240},{"style":110},[1241],{"type":48,"value":1242},"\u003C{",{"type":42,"tag":81,"props":1244,"children":1245},{"style":121},[1246],{"type":48,"value":1247}," id",{"type":42,"tag":81,"props":1249,"children":1250},{"style":110},[1251],{"type":48,"value":1209},{"type":42,"tag":81,"props":1253,"children":1254},{"style":121},[1255],{"type":48,"value":1256}," label",{"type":42,"tag":81,"props":1258,"children":1259},{"style":110},[1260],{"type":48,"value":1209},{"type":42,"tag":81,"props":1262,"children":1263},{"style":88},[1264],{"type":48,"value":1265}," status",{"type":42,"tag":81,"props":1267,"children":1268},{"style":110},[1269],{"type":48,"value":979},{"type":42,"tag":81,"props":1271,"children":1272},{"style":110},[1273],{"type":48,"value":184},{"type":42,"tag":81,"props":1275,"children":1276},{"style":94},[1277],{"type":48,"value":1278},"pass",{"type":42,"tag":81,"props":1280,"children":1281},{"style":110},[1282],{"type":48,"value":194},{"type":42,"tag":81,"props":1284,"children":1285},{"style":110},[1286],{"type":48,"value":1287}," |",{"type":42,"tag":81,"props":1289,"children":1290},{"style":110},[1291],{"type":48,"value":184},{"type":42,"tag":81,"props":1293,"children":1294},{"style":94},[1295],{"type":48,"value":1296},"fail",{"type":42,"tag":81,"props":1298,"children":1299},{"style":110},[1300],{"type":48,"value":194},{"type":42,"tag":81,"props":1302,"children":1303},{"style":110},[1304],{"type":48,"value":1287},{"type":42,"tag":81,"props":1306,"children":1307},{"style":110},[1308],{"type":48,"value":184},{"type":42,"tag":81,"props":1310,"children":1311},{"style":94},[1312],{"type":48,"value":1313},"unknown",{"type":42,"tag":81,"props":1315,"children":1316},{"style":110},[1317],{"type":48,"value":194},{"type":42,"tag":81,"props":1319,"children":1320},{"style":110},[1321],{"type":48,"value":1209},{"type":42,"tag":81,"props":1323,"children":1324},{"style":121},[1325],{"type":48,"value":1326}," reason",{"type":42,"tag":81,"props":1328,"children":1329},{"style":110},[1330],{"type":48,"value":1209},{"type":42,"tag":81,"props":1332,"children":1333},{"style":121},[1334],{"type":48,"value":1335}," recommendedRoles",{"type":42,"tag":81,"props":1337,"children":1338},{"style":110},[1339],{"type":48,"value":1340},"?,",{"type":42,"tag":81,"props":1342,"children":1343},{"style":121},[1344],{"type":48,"value":1345}," remediation",{"type":42,"tag":81,"props":1347,"children":1348},{"style":110},[1349],{"type":48,"value":1350},"?",{"type":42,"tag":81,"props":1352,"children":1353},{"style":1212},[1354],{"type":48,"value":1355}," }",{"type":42,"tag":81,"props":1357,"children":1358},{"style":110},[1359],{"type":48,"value":1360},">,\n",{"type":42,"tag":81,"props":1362,"children":1363},{"class":83,"line":1110},[1364,1369,1373,1378],{"type":42,"tag":81,"props":1365,"children":1366},{"style":121},[1367],{"type":48,"value":1368},"  markdown",{"type":42,"tag":81,"props":1370,"children":1371},{"style":110},[1372],{"type":48,"value":979},{"type":42,"tag":81,"props":1374,"children":1375},{"style":121},[1376],{"type":48,"value":1377}," string",{"type":42,"tag":81,"props":1379,"children":1381},{"style":1380},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1382],{"type":48,"value":1383},"  \u002F\u002F render verbatim\n",{"type":42,"tag":81,"props":1385,"children":1387},{"class":83,"line":1386},7,[1388],{"type":42,"tag":81,"props":1389,"children":1390},{"style":1212},[1391],{"type":48,"value":1116},{"type":42,"tag":51,"props":1393,"children":1394},{},[1395],{"type":42,"tag":214,"props":1396,"children":1397},{},[1398],{"type":48,"value":1399},"Probes performed:",{"type":42,"tag":1401,"props":1402,"children":1403},"table",{},[1404,1428],{"type":42,"tag":1405,"props":1406,"children":1407},"thead",{},[1408],{"type":42,"tag":1409,"props":1410,"children":1411},"tr",{},[1412,1418,1423],{"type":42,"tag":1413,"props":1414,"children":1415},"th",{},[1416],{"type":48,"value":1417},"ID",{"type":42,"tag":1413,"props":1419,"children":1420},{},[1421],{"type":48,"value":1422},"Gate",{"type":42,"tag":1413,"props":1424,"children":1425},{},[1426],{"type":48,"value":1427},"Required role on fail",{"type":42,"tag":1429,"props":1430,"children":1431},"tbody",{},[1432,1467,1493,1519,1552],{"type":42,"tag":1409,"props":1433,"children":1434},{},[1435,1445,1458],{"type":42,"tag":1436,"props":1437,"children":1438},"td",{},[1439],{"type":42,"tag":77,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":48,"value":1444},"cluster-user",{"type":42,"tag":1436,"props":1446,"children":1447},{},[1448,1450,1456],{"type":48,"value":1449},"6e — can download kubeconfig (",{"type":42,"tag":77,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":48,"value":1455},"listClusterUserCredential",{"type":48,"value":1457},")",{"type":42,"tag":1436,"props":1459,"children":1460},{},[1461],{"type":42,"tag":77,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":48,"value":1466},"Azure Kubernetes Service Cluster User Role",{"type":42,"tag":1409,"props":1468,"children":1469},{},[1470,1479,1484],{"type":42,"tag":1436,"props":1471,"children":1472},{},[1473],{"type":42,"tag":77,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":48,"value":1478},"aks-dataplane-write",{"type":42,"tag":1436,"props":1480,"children":1481},{},[1482],{"type":48,"value":1483},"6f — can create K8s workloads on the cluster",{"type":42,"tag":1436,"props":1485,"children":1486},{},[1487],{"type":42,"tag":77,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":48,"value":1492},"Azure Kubernetes Service RBAC Writer",{"type":42,"tag":1409,"props":1494,"children":1495},{},[1496,1505,1510],{"type":42,"tag":1436,"props":1497,"children":1498},{},[1499],{"type":42,"tag":77,"props":1500,"children":1502},{"className":1501},[],[1503],{"type":48,"value":1504},"acr-push",{"type":42,"tag":1436,"props":1506,"children":1507},{},[1508],{"type":48,"value":1509},"6g — user can push images to the ACR",{"type":42,"tag":1436,"props":1511,"children":1512},{},[1513],{"type":42,"tag":77,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":48,"value":1518},"AcrPush",{"type":42,"tag":1409,"props":1520,"children":1521},{},[1522,1531,1543],{"type":42,"tag":1436,"props":1523,"children":1524},{},[1525],{"type":42,"tag":77,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":48,"value":1530},"acr-tasks",{"type":42,"tag":1436,"props":1532,"children":1533},{},[1534,1536,1541],{"type":48,"value":1535},"6g — user can run ",{"type":42,"tag":77,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":48,"value":929},{"type":48,"value":1542}," server-side",{"type":42,"tag":1436,"props":1544,"children":1545},{},[1546],{"type":42,"tag":77,"props":1547,"children":1549},{"className":1548},[],[1550],{"type":48,"value":1551},"Container Registry Tasks Contributor",{"type":42,"tag":1409,"props":1553,"children":1554},{},[1555,1564,1569],{"type":42,"tag":1436,"props":1556,"children":1557},{},[1558],{"type":42,"tag":77,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":48,"value":1563},"acr-pull-kubelet",{"type":42,"tag":1436,"props":1565,"children":1566},{},[1567],{"type":48,"value":1568},"Cluster's kubelet identity can pull from the ACR",{"type":42,"tag":1436,"props":1570,"children":1571},{},[1572],{"type":42,"tag":77,"props":1573,"children":1575},{"className":1574},[],[1576],{"type":48,"value":422},{"type":42,"tag":51,"props":1578,"children":1579},{},[1580],{"type":42,"tag":214,"props":1581,"children":1582},{},[1583],{"type":48,"value":1584},"How to use the result:",{"type":42,"tag":206,"props":1586,"children":1587},{},[1588,1615,1635,1668],{"type":42,"tag":210,"props":1589,"children":1590},{},[1591,1593,1599,1601,1607,1609,1614],{"type":48,"value":1592},"If ",{"type":42,"tag":77,"props":1594,"children":1596},{"className":1595},[],[1597],{"type":48,"value":1598},"allPassed === true",{"type":48,"value":1600},": render ",{"type":42,"tag":77,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":48,"value":1606},"markdown",{"type":48,"value":1608}," and proceed to ",{"type":42,"tag":214,"props":1610,"children":1611},{},[1612],{"type":48,"value":1613},"Confirm",{"type":48,"value":254},{"type":42,"tag":210,"props":1616,"children":1617},{},[1618,1620,1626,1628,1633],{"type":48,"value":1619},"For any failing probe, the included ",{"type":42,"tag":77,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":48,"value":1625},"remediation",{"type":48,"value":1627}," is a ready-to-run ",{"type":42,"tag":77,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":48,"value":794},{"type":48,"value":1634}," command. Offer to run it.",{"type":42,"tag":210,"props":1636,"children":1637},{},[1638,1639,1644,1646,1652,1653,1658,1660,1666],{"type":48,"value":1592},{"type":42,"tag":77,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":48,"value":794},{"type":48,"value":1645}," then returns 403 (user lacks ",{"type":42,"tag":77,"props":1647,"children":1649},{"className":1648},[],[1650],{"type":48,"value":1651},"Microsoft.Authorization\u002FroleAssignments\u002Fwrite",{"type":48,"value":780},{"type":42,"tag":77,"props":1654,"children":1656},{"className":1655},[],[1657],{"type":48,"value":786},{"type":48,"value":1659}," — that skill calls ",{"type":42,"tag":77,"props":1661,"children":1663},{"className":1662},[],[1664],{"type":48,"value":1665},"aks.checkRoleAssignmentPermissions",{"type":48,"value":1667}," to surface PIM-eligible roles or generate an admin hand-off block.",{"type":42,"tag":210,"props":1669,"children":1670},{},[1671,1672,1677],{"type":48,"value":1592},{"type":42,"tag":77,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":48,"value":1086},{"type":48,"value":1678}," is omitted (no ACR in scope), the three ACR probes are skipped and the report says so.",{"type":42,"tag":51,"props":1680,"children":1681},{},[1682,1687],{"type":42,"tag":214,"props":1683,"children":1684},{},[1685],{"type":48,"value":1686},"Fallback (only if the command is unavailable in this build):",{"type":48,"value":1688}," fall back to the manual probes —",{"type":42,"tag":69,"props":1690,"children":1692},{"className":71,"code":1691,"language":73,"meta":74,"style":74},"az aks get-credentials --resource-group \u003Crg> --name \u003Ccluster> --overwrite-existing\nkubectl auth can-i get namespaces\nkubectl auth can-i create deployments --namespace \u003Cnamespace>\naz acr build --registry \u003Cacr> --image kickstart-probe:probe --file \u002Fdev\u002Fnull \u002Fdev\u002Fnull 2>&1 | head -5\n",[1693],{"type":42,"tag":77,"props":1694,"children":1695},{"__ignoreMap":74},[1696,1757,1784,1832],{"type":42,"tag":81,"props":1697,"children":1698},{"class":83,"line":84},[1699,1703,1707,1712,1716,1720,1724,1728,1732,1736,1740,1744,1748,1752],{"type":42,"tag":81,"props":1700,"children":1701},{"style":88},[1702],{"type":48,"value":91},{"type":42,"tag":81,"props":1704,"children":1705},{"style":94},[1706],{"type":48,"value":97},{"type":42,"tag":81,"props":1708,"children":1709},{"style":94},[1710],{"type":48,"value":1711}," get-credentials",{"type":42,"tag":81,"props":1713,"children":1714},{"style":94},[1715],{"type":48,"value":134},{"type":42,"tag":81,"props":1717,"children":1718},{"style":110},[1719],{"type":48,"value":113},{"type":42,"tag":81,"props":1721,"children":1722},{"style":94},[1723],{"type":48,"value":124},{"type":42,"tag":81,"props":1725,"children":1726},{"style":121},[1727],{"type":48,"value":147},{"type":42,"tag":81,"props":1729,"children":1730},{"style":110},[1731],{"type":48,"value":129},{"type":42,"tag":81,"props":1733,"children":1734},{"style":94},[1735],{"type":48,"value":107},{"type":42,"tag":81,"props":1737,"children":1738},{"style":110},[1739],{"type":48,"value":113},{"type":42,"tag":81,"props":1741,"children":1742},{"style":94},[1743],{"type":48,"value":118},{"type":42,"tag":81,"props":1745,"children":1746},{"style":121},[1747],{"type":48,"value":124},{"type":42,"tag":81,"props":1749,"children":1750},{"style":110},[1751],{"type":48,"value":129},{"type":42,"tag":81,"props":1753,"children":1754},{"style":94},[1755],{"type":48,"value":1756}," --overwrite-existing\n",{"type":42,"tag":81,"props":1758,"children":1759},{"class":83,"line":550},[1760,1764,1769,1774,1779],{"type":42,"tag":81,"props":1761,"children":1762},{"style":88},[1763],{"type":48,"value":921},{"type":42,"tag":81,"props":1765,"children":1766},{"style":94},[1767],{"type":48,"value":1768}," auth",{"type":42,"tag":81,"props":1770,"children":1771},{"style":94},[1772],{"type":48,"value":1773}," can-i",{"type":42,"tag":81,"props":1775,"children":1776},{"style":94},[1777],{"type":48,"value":1778}," get",{"type":42,"tag":81,"props":1780,"children":1781},{"style":94},[1782],{"type":48,"value":1783}," namespaces\n",{"type":42,"tag":81,"props":1785,"children":1786},{"class":83,"line":1000},[1787,1791,1795,1799,1803,1808,1813,1817,1822,1827],{"type":42,"tag":81,"props":1788,"children":1789},{"style":88},[1790],{"type":48,"value":921},{"type":42,"tag":81,"props":1792,"children":1793},{"style":94},[1794],{"type":48,"value":1768},{"type":42,"tag":81,"props":1796,"children":1797},{"style":94},[1798],{"type":48,"value":1773},{"type":42,"tag":81,"props":1800,"children":1801},{"style":94},[1802],{"type":48,"value":718},{"type":42,"tag":81,"props":1804,"children":1805},{"style":94},[1806],{"type":48,"value":1807}," deployments",{"type":42,"tag":81,"props":1809,"children":1810},{"style":94},[1811],{"type":48,"value":1812}," --namespace",{"type":42,"tag":81,"props":1814,"children":1815},{"style":110},[1816],{"type":48,"value":113},{"type":42,"tag":81,"props":1818,"children":1819},{"style":94},[1820],{"type":48,"value":1821},"namespac",{"type":42,"tag":81,"props":1823,"children":1824},{"style":121},[1825],{"type":48,"value":1826},"e",{"type":42,"tag":81,"props":1828,"children":1829},{"style":110},[1830],{"type":48,"value":1831},">\n",{"type":42,"tag":81,"props":1833,"children":1834},{"class":83,"line":1038},[1835,1839,1844,1849,1854,1858,1863,1867,1871,1876,1881,1886,1891,1895,1900,1904,1909],{"type":42,"tag":81,"props":1836,"children":1837},{"style":88},[1838],{"type":48,"value":91},{"type":42,"tag":81,"props":1840,"children":1841},{"style":94},[1842],{"type":48,"value":1843}," acr",{"type":42,"tag":81,"props":1845,"children":1846},{"style":94},[1847],{"type":48,"value":1848}," build",{"type":42,"tag":81,"props":1850,"children":1851},{"style":94},[1852],{"type":48,"value":1853}," --registry",{"type":42,"tag":81,"props":1855,"children":1856},{"style":110},[1857],{"type":48,"value":113},{"type":42,"tag":81,"props":1859,"children":1860},{"style":94},[1861],{"type":48,"value":1862},"ac",{"type":42,"tag":81,"props":1864,"children":1865},{"style":121},[1866],{"type":48,"value":124},{"type":42,"tag":81,"props":1868,"children":1869},{"style":110},[1870],{"type":48,"value":129},{"type":42,"tag":81,"props":1872,"children":1873},{"style":94},[1874],{"type":48,"value":1875}," --image",{"type":42,"tag":81,"props":1877,"children":1878},{"style":94},[1879],{"type":48,"value":1880}," kickstart-probe:probe",{"type":42,"tag":81,"props":1882,"children":1883},{"style":94},[1884],{"type":48,"value":1885}," --file",{"type":42,"tag":81,"props":1887,"children":1888},{"style":94},[1889],{"type":48,"value":1890}," \u002Fdev\u002Fnull",{"type":42,"tag":81,"props":1892,"children":1893},{"style":94},[1894],{"type":48,"value":1890},{"type":42,"tag":81,"props":1896,"children":1897},{"style":110},[1898],{"type":48,"value":1899}," 2>&1",{"type":42,"tag":81,"props":1901,"children":1902},{"style":110},[1903],{"type":48,"value":1287},{"type":42,"tag":81,"props":1905,"children":1906},{"style":88},[1907],{"type":48,"value":1908}," head",{"type":42,"tag":81,"props":1910,"children":1911},{"style":94},[1912],{"type":48,"value":1913}," -5\n",{"type":42,"tag":51,"props":1915,"children":1916},{},[1917],{"type":48,"value":1918},"With the same remediation roles as listed in the table above.",{"type":42,"tag":57,"props":1920,"children":1922},{"id":1921},"confirm",[1923],{"type":48,"value":1613},{"type":42,"tag":51,"props":1925,"children":1926},{},[1927,1929,1934],{"type":48,"value":1928},"Confirm readiness via ",{"type":42,"tag":77,"props":1930,"children":1932},{"className":1931},[],[1933],{"type":48,"value":252},{"type":48,"value":1935},": \"Yes, deploy\" (recommended), \"Review artifacts first\", \"Not yet\".",{"type":42,"tag":1937,"props":1938,"children":1939},"style",{},[1940],{"type":48,"value":1941},"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":1943,"total":2120},[1944,1963,1980,1999,2014,2029,2042,2057,2068,2082,2095,2108],{"slug":1945,"name":1945,"fn":1946,"description":1947,"org":1948,"tags":1949,"stars":1960,"repoUrl":1961,"updatedAt":1962},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1950,1951,1954,1957],{"name":11,"slug":8,"type":16},{"name":1952,"slug":1953,"type":16},"Compliance","compliance",{"name":1955,"slug":1956,"type":16},"Governance","governance",{"name":1958,"slug":1959,"type":16},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1964,"name":1964,"fn":1965,"description":1966,"org":1967,"tags":1968,"stars":1977,"repoUrl":1978,"updatedAt":1979},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1969,1970,1971,1974],{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},{"name":1972,"slug":1973,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":1975,"slug":1976,"type":16},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1981,"name":1981,"fn":1982,"description":1983,"org":1984,"tags":1985,"stars":1996,"repoUrl":1997,"updatedAt":1998},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1986,1989,1990,1993],{"name":1987,"slug":1988,"type":16},"API Development","api-development",{"name":11,"slug":8,"type":16},{"name":1991,"slug":1992,"type":16},"Code Review","code-review",{"name":1994,"slug":1995,"type":16},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":2000,"name":2000,"fn":2001,"description":2002,"org":2003,"tags":2004,"stars":1996,"repoUrl":1997,"updatedAt":2013},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2005,2006,2007,2010],{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},{"name":2008,"slug":2009,"type":16},"SDK","sdk",{"name":2011,"slug":2012,"type":16},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":2015,"name":2015,"fn":2016,"description":2017,"org":2018,"tags":2019,"stars":1996,"repoUrl":1997,"updatedAt":2028},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2020,2021,2024,2027],{"name":11,"slug":8,"type":16},{"name":2022,"slug":2023,"type":16},"GitHub","github",{"name":2025,"slug":2026,"type":16},"Project Management","project-management",{"name":2008,"slug":2009,"type":16},"2026-07-12T08:17:38.345387",{"slug":2030,"name":2030,"fn":2031,"description":2032,"org":2033,"tags":2034,"stars":1996,"repoUrl":1997,"updatedAt":2041},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2035,2036,2039,2040],{"name":11,"slug":8,"type":16},{"name":2037,"slug":2038,"type":16},"CI\u002FCD","ci-cd",{"name":19,"slug":20,"type":16},{"name":2008,"slug":2009,"type":16},"2026-07-12T08:17:34.27607",{"slug":2043,"name":2043,"fn":2044,"description":2045,"org":2046,"tags":2047,"stars":1996,"repoUrl":1997,"updatedAt":2056},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2048,2049,2050,2053],{"name":1987,"slug":1988,"type":16},{"name":11,"slug":8,"type":16},{"name":2051,"slug":2052,"type":16},"OpenAPI","openapi",{"name":2054,"slug":2055,"type":16},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":2058,"name":2058,"fn":2059,"description":2060,"org":2061,"tags":2062,"stars":1996,"repoUrl":1997,"updatedAt":2067},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2063,2064,2065,2066],{"name":11,"slug":8,"type":16},{"name":2037,"slug":2038,"type":16},{"name":2008,"slug":2009,"type":16},{"name":2011,"slug":2012,"type":16},"2026-07-12T08:17:37.08523",{"slug":2069,"name":2069,"fn":2070,"description":2071,"org":2072,"tags":2073,"stars":1996,"repoUrl":1997,"updatedAt":2081},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2074,2077,2080],{"name":2075,"slug":2076,"type":16},"LLM","llm",{"name":2078,"slug":2079,"type":16},"Performance","performance",{"name":2054,"slug":2055,"type":16},"2026-07-12T08:17:42.080413",{"slug":2083,"name":2083,"fn":2084,"description":2085,"org":2086,"tags":2087,"stars":1996,"repoUrl":1997,"updatedAt":2094},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2088,2089,2090,2093],{"name":11,"slug":8,"type":16},{"name":2037,"slug":2038,"type":16},{"name":2091,"slug":2092,"type":16},"Debugging","debugging",{"name":2008,"slug":2009,"type":16},"2026-07-12T08:17:40.821512",{"slug":2096,"name":2096,"fn":2097,"description":2098,"org":2099,"tags":2100,"stars":1996,"repoUrl":1997,"updatedAt":2107},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2101,2102,2103,2106],{"name":11,"slug":8,"type":16},{"name":1952,"slug":1953,"type":16},{"name":2104,"slug":2105,"type":16},"Process Optimization","process-optimization",{"name":2054,"slug":2055,"type":16},"2026-07-12T08:17:32.970921",{"slug":2109,"name":2109,"fn":2110,"description":2111,"org":2112,"tags":2113,"stars":1996,"repoUrl":1997,"updatedAt":2119},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2114,2115,2118],{"name":1994,"slug":1995,"type":16},{"name":2116,"slug":2117,"type":16},"Plugin Development","plugin-development",{"name":2054,"slug":2055,"type":16},"2026-07-12T08:17:35.873862",109,{"items":2122,"total":2215},[2123,2135,2148,2161,2177,2190,2203],{"slug":2124,"name":2124,"fn":2125,"description":2126,"org":2127,"tags":2128,"stars":24,"repoUrl":25,"updatedAt":2134},"kickstart-acr-integration","integrate Azure Container Registry with AKS","ACR integration for AKS Automatic. Teaches attaching an ACR, image reference conventions (digest pinning, no :latest), and pull-secret-free authentication via the managed identity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2129,2130,2133],{"name":11,"slug":8,"type":16},{"name":2131,"slug":2132,"type":16},"Containers","containers",{"name":19,"slug":20,"type":16},"2026-07-12T08:18:05.091337",{"slug":2136,"name":2136,"fn":2137,"description":2138,"org":2139,"tags":2140,"stars":24,"repoUrl":25,"updatedAt":2147},"kickstart-bicep-authoring","author idiomatic Azure Bicep templates","Writing idiomatic, safe, and reviewable Bicep templates for Azure resources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2141,2142,2145,2146],{"name":11,"slug":8,"type":16},{"name":2143,"slug":2144,"type":16},"Bicep","bicep",{"name":19,"slug":20,"type":16},{"name":1972,"slug":1973,"type":16},"2026-07-12T08:18:02.601998",{"slug":2149,"name":2149,"fn":2150,"description":2151,"org":2152,"tags":2153,"stars":24,"repoUrl":25,"updatedAt":2160},"kickstart-cluster-status","monitor AKS cluster provisioning status","Non-blocking cluster status peek — run at the end of Phases 3, 4, 5 to check AKS provisioning progress without hanging.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2154,2155,2156,2157],{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},{"name":22,"slug":23,"type":16},{"name":2158,"slug":2159,"type":16},"Monitoring","monitoring","2026-07-12T08:18:01.355249",{"slug":2162,"name":2162,"fn":2163,"description":2164,"org":2165,"tags":2166,"stars":24,"repoUrl":25,"updatedAt":2176},"kickstart-collaborator-voice","define agent voice and interaction patterns","Voice, tone, and interaction patterns for Kickstart agents.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2167,2170,2173],{"name":2168,"slug":2169,"type":16},"Agents","agents",{"name":2171,"slug":2172,"type":16},"Branding","branding",{"name":2174,"slug":2175,"type":16},"Communications","communications","2026-07-12T08:18:09.636172",{"slug":2178,"name":2178,"fn":2179,"description":2180,"org":2181,"tags":2182,"stars":24,"repoUrl":25,"updatedAt":2189},"kickstart-configure-infra","configure Azure infrastructure for AKS clusters","Configure Infrastructure phase playbook — launch the dedicated Kickstart cluster-setup view, which collects and creates the Azure resources (subscription, resource group, AKS Automatic cluster, ACR) and hands the results back to the chat.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2183,2184,2185,2188],{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},{"name":2186,"slug":2187,"type":16},"Infrastructure","infrastructure",{"name":22,"slug":23,"type":16},"2026-07-12T08:18:03.828624",{"slug":2191,"name":2191,"fn":2192,"description":2193,"org":2194,"tags":2195,"stars":24,"repoUrl":25,"updatedAt":2202},"kickstart-deploy","deploy applications with Azure CLI and kubectl","Deploy phase playbook — build, push, apply with Azure CLI and kubectl.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2196,2197,2200,2201],{"name":11,"slug":8,"type":16},{"name":2198,"slug":2199,"type":16},"CLI","cli",{"name":19,"slug":20,"type":16},{"name":22,"slug":23,"type":16},"2026-07-12T08:17:52.254389",{"slug":2204,"name":2204,"fn":2205,"description":2206,"org":2207,"tags":2208,"stars":24,"repoUrl":25,"updatedAt":2214},"kickstart-design","propose target architecture on AKS","Design phase playbook — propose target architecture on AKS Automatic.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2209,2212,2213],{"name":2210,"slug":2211,"type":16},"Architecture","architecture",{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"2026-07-12T08:17:50.938775",19]