[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-azure-functions-create":3,"mdc-o6or30-key":32,"related-org-azure-azure-functions-create":1227,"related-repo-azure-azure-functions-create":1406},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":27,"sourceUrl":30,"mdContent":31},"azure-functions-create","scaffold Azure Functions projects and triggers","Scaffold a new Azure Functions project, or add a new function\u002Ftrigger to an existing project without re-initializing it",{"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,15,18],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"API Development","api-development",{"name":19,"slug":20,"type":14},"Edge Functions","edge-functions",12,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-functions-skills","2026-07-12T08:19:36.401016",null,1,[],{"repoUrl":22,"stars":21,"forks":25,"topics":28,"description":29},[],"A repository for Azure Functions skills, prompts, and reusable definitions to support agentic development and operational workflows.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-functions-skills\u002Ftree\u002FHEAD\u002Ftemplates\u002Fskills\u002Fazure-functions-create","---\nname: azure-functions-create\ntitle: Create or Extend Azure Functions App\ndescription: Scaffold a new Azure Functions project, or add a new function\u002Ftrigger to an existing project without re-initializing it\ncategory: task\n---\n\n> **Language**: Always respond in the same language the user is using.\n\n# azure-functions-create — Create or Extend Azure Functions App\n\nGuide the user through creating a new Azure Functions project or adding a function to an existing Azure Functions project.\n\n## Prerequisites\n\nEnsure `func` (Azure Functions Core Tools v4) is installed. If not, suggest running **azure-functions-setup** first.\n\n## Workflow\n\n### Step 1 — Detect Azure MCP tools\n\nCheck whether the following Azure MCP tools are available in your current tool list:\n\n- `functions_language_list` — list supported languages and runtime versions\n- `functions_project_get` — scaffold project-level files\n- `functions_template_get` — list templates (language only) or get a specific template (language + template)\n\nThese are provided by the [Azure MCP Server](https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdeveloper\u002Fazure-mcp-server\u002Ftools\u002Fazure-functions) (`@azure\u002Fmcp`) and return officially maintained templates across C#, Python, TypeScript, JavaScript, Java and PowerShell.\n\nAlso check for the best practices tool:\n\n- `get_azure_bestpractices` \u002F `get_azure_bestpractices_get` with `resource: azurefunctions`\n\n- **If available** → proceed with **Path A (MCP primary)**.\n- **If not available** → proceed with **Path B (composition algorithm fallback)**.\n\n---\n\n### Path A — MCP primary (recommended)\n\nUse the Azure MCP Server as the **authoritative source of truth** for Azure Functions templates. Do **not** write function code from scratch when these tools are available.\n\n#### A.1 Gather requirements & best practices\n\nIf `get_azure_bestpractices` is available, call it first:\n\n```\nTool: get_azure_bestpractices\nresource: azurefunctions\naction: code-generation\n```\n\nApply the returned guidelines (programming models, extension bundles version, authentication levels, project structure, etc.) to every file you generate in the steps below.\n\nAsk the user (or detect from context):\n\n- **Language**: `csharp` | `python` | `typescript` | `javascript` | `java` | `powershell`\n- **Trigger \u002F template**: let the MCP list decide (step A.3)\n- **Project name**: directory name\n- **Runtime version** (optional): e.g. Node.js `22`, Python `3.11`, Java `21`\n\n#### A.2 Discover supported languages\n\nCall `functions_language_list`. Returns supported languages with runtime versions, programming models, and prerequisites. Use this to confirm the user's language choice is supported and to suggest a default runtime version.\n\n#### A.3 Browse available templates\n\nCall `functions_template_get` with only the `language` parameter (omit `template`). This returns the list of available templates for the chosen language with descriptions. Present the templates to the user and let them pick.\n\nDo **not** invent or guess template identifiers such as `HttpTrigger`. Azure MCP template IDs are versioned, language-specific strings returned by the template list. For example, the TypeScript HTTP trigger template is currently returned as `http-trigger-typescript-azd`.\n\nWhen the user asks for a common trigger name, map it to one of the template IDs returned by the MCP list before calling the template-get operation. Examples:\n\n| User intent | Language | Prefer a returned template ID like |\n| --- | --- | --- |\n| HTTP trigger | `typescript` | `http-trigger-typescript-azd` |\n| Timer trigger | `typescript` | `timer-trigger-typescript-azd` |\n| Blob trigger | `typescript` | `blob-eventgrid-trigger-typescript-azd` |\n| Queue \u002F Service Bus trigger | `typescript` | `servicebus-trigger-typescript-azd` |\n\nIf a template-get call fails with \"template not found\", immediately recover by calling `functions_template_get` again with only `language`, then select the closest returned template ID instead of retrying the failed alias.\n\n#### A.4 Initialize the project\n\nCall `functions_project_get`:\n\n```\nTool: functions_project_get\nlanguage: \u003Cchosen language, e.g. typescript>\n```\n\nReturns project-level files (`host.json`, `local.settings.json`, `package.json` \u002F `requirements.txt` \u002F `pom.xml` \u002F `.csproj`, `tsconfig.json`, etc.). Write these into the target directory.\n\n#### A.5 Add the function\n\nCall `functions_template_get` with both `language` and `template`:\n\n```\nTool: functions_template_get\nlanguage: \u003Cchosen language, e.g. typescript>\ntemplate: \u003Cchosen returned template ID, e.g. http-trigger-typescript-azd>\nruntime-version: \u003Coptional, e.g. 22>\noutput: \u003Coptional, \"New\" (default) or \"Add\" for existing projects>\n```\n\nReturns the full function source code plus any required app settings and additional package dependencies. Write the returned file(s) into the project and merge any extra settings into `local.settings.json` and any extra packages into the dependency manifest.\n\n> ⚠️ **Large template output**: Some templates (especially `*-azd` variants that include infrastructure files) can produce very large output (100KB+). If the tool output is truncated or saved to a temporary file, read the file, parse the JSON `files` array, and write each file individually. After writing files, run `npm install` (or the equivalent package manager command) to generate lock files rather than relying on lock files from the template output.\n\n#### A.6 Verify\n\nFor TypeScript and other compiled-language projects, build first:\n\n```bash\nnpm run build   # TypeScript \u002F JavaScript\n# dotnet build  # C#\n# mvn package   # Java\n```\n\nThen perform an end-to-end local verification, not just a host start:\n\n```bash\nfunc start\n```\n\nAfter the host reports the function endpoints\u002Flisteners:\n\n- **HTTP triggers**: send an actual request to the local endpoint and verify the status code and response body, for example `curl http:\u002F\u002Flocalhost:7071\u002Fapi\u002F\u003CFunctionName>?name=World`.\n- **Timer triggers**: verify the listener starts and, when practical, temporarily use a short development-only schedule or manual invocation approach; restore the user's intended schedule before finishing.\n- **Storage, Cosmos DB, SQL, Redis, Dapr, or other service-backed triggers\u002Fbindings**: load `azure-functions-common\u002Freferences\u002Flocal-emulators.md`, identify the required local emulator or development service, and run a realistic message\u002Fblob\u002Fdocument\u002Fevent through the trigger when the user wants E2E verification.\n- **Before installing or starting any emulator\u002Flocal service**: ask the user for confirmation. If the user says the emulator is not needed, unavailable, or should be skipped, do not install it; record that emulator-backed E2E was skipped and provide manual\u002FAzure test steps instead.\n- **When no practical local emulator exists**: explain the limitation, suggest a temporary Azure dev resource or deployment-based test, and keep the local verification to build + host\u002Flistener startup.\n\n---\n\n### Path B — Composition algorithm fallback\n\nUse this path **only when the Azure MCP tools are not available**. When falling back, show this notice to the user verbatim (translate to the user's language if needed):\n\n> ℹ️ Azure MCP tools were not found; using the manifest-based fallback path. Enabling the Azure MCP Server unlocks dynamic template discovery and composition. Run `azure-functions-setup` to configure it.\n\n#### B.1 Fallback algorithm\n\nFollow this manifest-based fallback algorithm:\n\n```\n1. FETCH MANIFEST\n   GET https:\u002F\u002Fcdn.functions.azure.com\u002Fpublic\u002Ftemplates-manifest\u002Fmanifest.json\n   If fetch fails → fall back to:\n     https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-functions-templates\u002Fblob\u002Fdev\u002FFunctions.Templates\u002FTemplate-Manifest\u002Fmanifest.json\n   If both fail → fall back to known-good Azure-Samples\u002Ffunctions-quickstart-* repos\n   If all fail → report error and ask user to retry later\n\n2. FILTER TEMPLATES\n   Filter by: language, resource, iac\n\n3. CHECK SINGLE-TEMPLATE MATCH\n   If one template covers ALL requirements → use it alone\n\n4. SELECT TEMPLATES\n   - Trigger template (REQUIRED) — base project with IaC\n   - Binding templates (OPTIONAL) — extract patterns only\n\n5. DOWNLOAD TEMPLATES\n   For each template:\n   - If folderPath == \".\" → ZIP download + unzip\n   - If folderPath != \".\" → fetch tree + raw github url file downloads\n   - Fallback: git clone --depth 1\n\n6. COMPOSE\n   - Use trigger template as BASE\n   - EXTRACT binding patterns from binding templates\n   - MERGE IaC resources, RBAC roles and settings\n   - ADD user's custom business logic\n\n7. TRIM unused demo code (keep AzureWebJobsStorage)\n\n8. WRITE all files\n\n9. DEPLOY: azd up --no-prompt\n```\n\n#### B.2 Quick code reference\n\nFor minimal HTTP trigger snippets per language (last-resort fallback when the manifest is also unavailable), see [references\u002Flanguage-snippets.md](references\u002Flanguage-snippets.md).\n\n#### B.3 Verify\n\nBuild compiled projects first, then perform the same local E2E verification standard used in Path A:\n\n```bash\nfunc start\n```\n\n- For HTTP triggers, send a real request to the local endpoint and validate the response.\n- For non-HTTP triggers, consult `azure-functions-common\u002Freferences\u002Flocal-emulators.md` and use an emulator\u002Flocal service when practical.\n- Ask before installing or starting emulators. If the user declines, skip emulator-backed E2E and document the skipped verification plus manual\u002FAzure test steps.\n\n---\n\n### Adding functions to existing projects\n\nIf `host.json` already exists, do **not** re-initialize. Instead:\n\n- **MCP path**: call `functions_template_get` with the same language as the existing project and specify the desired template name. Write the returned file.\n- **Fallback path**: fetch the manifest, filter for the desired template by language and resource, download the template source, and merge the function files into the existing project.\n\n## After Creation\n\n> ✅ Your project is scaffolded! Next: use **azure-functions-deploy** to deploy to Azure.\n\n## Next steps\n\n- On success, suggest `azure-functions-deploy` because the project is ready to deploy to Azure.\n- On failure, suggest `azure-functions-setup` to verify local tooling and prerequisites.\n",{"data":33,"body":36},{"name":4,"title":34,"description":6,"category":35},"Create or Extend Azure Functions App","task",{"type":37,"children":38},"root",[39,57,64,69,76,97,103,110,115,153,177,182,242,246,252,271,278,290,302,307,312,418,424,436,442,469,495,500,631,650,656,667,676,732,738,762,771,783,822,828,833,888,893,912,917,985,988,994,1006,1021,1027,1032,1041,1047,1058,1064,1069,1086,1111,1114,1120,1137,1167,1173,1188,1194,1221],{"type":40,"tag":41,"props":42,"children":43},"element","blockquote",{},[44],{"type":40,"tag":45,"props":46,"children":47},"p",{},[48,55],{"type":40,"tag":49,"props":50,"children":51},"strong",{},[52],{"type":53,"value":54},"text","Language",{"type":53,"value":56},": Always respond in the same language the user is using.",{"type":40,"tag":58,"props":59,"children":61},"h1",{"id":60},"azure-functions-create-create-or-extend-azure-functions-app",[62],{"type":53,"value":63},"azure-functions-create — Create or Extend Azure Functions App",{"type":40,"tag":45,"props":65,"children":66},{},[67],{"type":53,"value":68},"Guide the user through creating a new Azure Functions project or adding a function to an existing Azure Functions project.",{"type":40,"tag":70,"props":71,"children":73},"h2",{"id":72},"prerequisites",[74],{"type":53,"value":75},"Prerequisites",{"type":40,"tag":45,"props":77,"children":78},{},[79,81,88,90,95],{"type":53,"value":80},"Ensure ",{"type":40,"tag":82,"props":83,"children":85},"code",{"className":84},[],[86],{"type":53,"value":87},"func",{"type":53,"value":89}," (Azure Functions Core Tools v4) is installed. If not, suggest running ",{"type":40,"tag":49,"props":91,"children":92},{},[93],{"type":53,"value":94},"azure-functions-setup",{"type":53,"value":96}," first.",{"type":40,"tag":70,"props":98,"children":100},{"id":99},"workflow",[101],{"type":53,"value":102},"Workflow",{"type":40,"tag":104,"props":105,"children":107},"h3",{"id":106},"step-1-detect-azure-mcp-tools",[108],{"type":53,"value":109},"Step 1 — Detect Azure MCP tools",{"type":40,"tag":45,"props":111,"children":112},{},[113],{"type":53,"value":114},"Check whether the following Azure MCP tools are available in your current tool list:",{"type":40,"tag":116,"props":117,"children":118},"ul",{},[119,131,142],{"type":40,"tag":120,"props":121,"children":122},"li",{},[123,129],{"type":40,"tag":82,"props":124,"children":126},{"className":125},[],[127],{"type":53,"value":128},"functions_language_list",{"type":53,"value":130}," — list supported languages and runtime versions",{"type":40,"tag":120,"props":132,"children":133},{},[134,140],{"type":40,"tag":82,"props":135,"children":137},{"className":136},[],[138],{"type":53,"value":139},"functions_project_get",{"type":53,"value":141}," — scaffold project-level files",{"type":40,"tag":120,"props":143,"children":144},{},[145,151],{"type":40,"tag":82,"props":146,"children":148},{"className":147},[],[149],{"type":53,"value":150},"functions_template_get",{"type":53,"value":152}," — list templates (language only) or get a specific template (language + template)",{"type":40,"tag":45,"props":154,"children":155},{},[156,158,167,169,175],{"type":53,"value":157},"These are provided by the ",{"type":40,"tag":159,"props":160,"children":164},"a",{"href":161,"rel":162},"https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdeveloper\u002Fazure-mcp-server\u002Ftools\u002Fazure-functions",[163],"nofollow",[165],{"type":53,"value":166},"Azure MCP Server",{"type":53,"value":168}," (",{"type":40,"tag":82,"props":170,"children":172},{"className":171},[],[173],{"type":53,"value":174},"@azure\u002Fmcp",{"type":53,"value":176},") and return officially maintained templates across C#, Python, TypeScript, JavaScript, Java and PowerShell.",{"type":40,"tag":45,"props":178,"children":179},{},[180],{"type":53,"value":181},"Also check for the best practices tool:",{"type":40,"tag":116,"props":183,"children":184},{},[185,210,227],{"type":40,"tag":120,"props":186,"children":187},{},[188,194,196,202,204],{"type":40,"tag":82,"props":189,"children":191},{"className":190},[],[192],{"type":53,"value":193},"get_azure_bestpractices",{"type":53,"value":195}," \u002F ",{"type":40,"tag":82,"props":197,"children":199},{"className":198},[],[200],{"type":53,"value":201},"get_azure_bestpractices_get",{"type":53,"value":203}," with ",{"type":40,"tag":82,"props":205,"children":207},{"className":206},[],[208],{"type":53,"value":209},"resource: azurefunctions",{"type":40,"tag":120,"props":211,"children":212},{},[213,218,220,225],{"type":40,"tag":49,"props":214,"children":215},{},[216],{"type":53,"value":217},"If available",{"type":53,"value":219}," → proceed with ",{"type":40,"tag":49,"props":221,"children":222},{},[223],{"type":53,"value":224},"Path A (MCP primary)",{"type":53,"value":226},".",{"type":40,"tag":120,"props":228,"children":229},{},[230,235,236,241],{"type":40,"tag":49,"props":231,"children":232},{},[233],{"type":53,"value":234},"If not available",{"type":53,"value":219},{"type":40,"tag":49,"props":237,"children":238},{},[239],{"type":53,"value":240},"Path B (composition algorithm fallback)",{"type":53,"value":226},{"type":40,"tag":243,"props":244,"children":245},"hr",{},[],{"type":40,"tag":104,"props":247,"children":249},{"id":248},"path-a-mcp-primary-recommended",[250],{"type":53,"value":251},"Path A — MCP primary (recommended)",{"type":40,"tag":45,"props":253,"children":254},{},[255,257,262,264,269],{"type":53,"value":256},"Use the Azure MCP Server as the ",{"type":40,"tag":49,"props":258,"children":259},{},[260],{"type":53,"value":261},"authoritative source of truth",{"type":53,"value":263}," for Azure Functions templates. Do ",{"type":40,"tag":49,"props":265,"children":266},{},[267],{"type":53,"value":268},"not",{"type":53,"value":270}," write function code from scratch when these tools are available.",{"type":40,"tag":272,"props":273,"children":275},"h4",{"id":274},"a1-gather-requirements-best-practices",[276],{"type":53,"value":277},"A.1 Gather requirements & best practices",{"type":40,"tag":45,"props":279,"children":280},{},[281,283,288],{"type":53,"value":282},"If ",{"type":40,"tag":82,"props":284,"children":286},{"className":285},[],[287],{"type":53,"value":193},{"type":53,"value":289}," is available, call it first:",{"type":40,"tag":291,"props":292,"children":296},"pre",{"className":293,"code":295,"language":53},[294],"language-text","Tool: get_azure_bestpractices\nresource: azurefunctions\naction: code-generation\n",[297],{"type":40,"tag":82,"props":298,"children":300},{"__ignoreMap":299},"",[301],{"type":53,"value":295},{"type":40,"tag":45,"props":303,"children":304},{},[305],{"type":53,"value":306},"Apply the returned guidelines (programming models, extension bundles version, authentication levels, project structure, etc.) to every file you generate in the steps below.",{"type":40,"tag":45,"props":308,"children":309},{},[310],{"type":53,"value":311},"Ask the user (or detect from context):",{"type":40,"tag":116,"props":313,"children":314},{},[315,366,376,386],{"type":40,"tag":120,"props":316,"children":317},{},[318,322,324,330,332,338,339,345,346,352,353,359,360],{"type":40,"tag":49,"props":319,"children":320},{},[321],{"type":53,"value":54},{"type":53,"value":323},": ",{"type":40,"tag":82,"props":325,"children":327},{"className":326},[],[328],{"type":53,"value":329},"csharp",{"type":53,"value":331}," | ",{"type":40,"tag":82,"props":333,"children":335},{"className":334},[],[336],{"type":53,"value":337},"python",{"type":53,"value":331},{"type":40,"tag":82,"props":340,"children":342},{"className":341},[],[343],{"type":53,"value":344},"typescript",{"type":53,"value":331},{"type":40,"tag":82,"props":347,"children":349},{"className":348},[],[350],{"type":53,"value":351},"javascript",{"type":53,"value":331},{"type":40,"tag":82,"props":354,"children":356},{"className":355},[],[357],{"type":53,"value":358},"java",{"type":53,"value":331},{"type":40,"tag":82,"props":361,"children":363},{"className":362},[],[364],{"type":53,"value":365},"powershell",{"type":40,"tag":120,"props":367,"children":368},{},[369,374],{"type":40,"tag":49,"props":370,"children":371},{},[372],{"type":53,"value":373},"Trigger \u002F template",{"type":53,"value":375},": let the MCP list decide (step A.3)",{"type":40,"tag":120,"props":377,"children":378},{},[379,384],{"type":40,"tag":49,"props":380,"children":381},{},[382],{"type":53,"value":383},"Project name",{"type":53,"value":385},": directory name",{"type":40,"tag":120,"props":387,"children":388},{},[389,394,396,402,404,410,412],{"type":40,"tag":49,"props":390,"children":391},{},[392],{"type":53,"value":393},"Runtime version",{"type":53,"value":395}," (optional): e.g. Node.js ",{"type":40,"tag":82,"props":397,"children":399},{"className":398},[],[400],{"type":53,"value":401},"22",{"type":53,"value":403},", Python ",{"type":40,"tag":82,"props":405,"children":407},{"className":406},[],[408],{"type":53,"value":409},"3.11",{"type":53,"value":411},", Java ",{"type":40,"tag":82,"props":413,"children":415},{"className":414},[],[416],{"type":53,"value":417},"21",{"type":40,"tag":272,"props":419,"children":421},{"id":420},"a2-discover-supported-languages",[422],{"type":53,"value":423},"A.2 Discover supported languages",{"type":40,"tag":45,"props":425,"children":426},{},[427,429,434],{"type":53,"value":428},"Call ",{"type":40,"tag":82,"props":430,"children":432},{"className":431},[],[433],{"type":53,"value":128},{"type":53,"value":435},". Returns supported languages with runtime versions, programming models, and prerequisites. Use this to confirm the user's language choice is supported and to suggest a default runtime version.",{"type":40,"tag":272,"props":437,"children":439},{"id":438},"a3-browse-available-templates",[440],{"type":53,"value":441},"A.3 Browse available templates",{"type":40,"tag":45,"props":443,"children":444},{},[445,446,451,453,459,461,467],{"type":53,"value":428},{"type":40,"tag":82,"props":447,"children":449},{"className":448},[],[450],{"type":53,"value":150},{"type":53,"value":452}," with only the ",{"type":40,"tag":82,"props":454,"children":456},{"className":455},[],[457],{"type":53,"value":458},"language",{"type":53,"value":460}," parameter (omit ",{"type":40,"tag":82,"props":462,"children":464},{"className":463},[],[465],{"type":53,"value":466},"template",{"type":53,"value":468},"). This returns the list of available templates for the chosen language with descriptions. Present the templates to the user and let them pick.",{"type":40,"tag":45,"props":470,"children":471},{},[472,474,478,480,486,488,494],{"type":53,"value":473},"Do ",{"type":40,"tag":49,"props":475,"children":476},{},[477],{"type":53,"value":268},{"type":53,"value":479}," invent or guess template identifiers such as ",{"type":40,"tag":82,"props":481,"children":483},{"className":482},[],[484],{"type":53,"value":485},"HttpTrigger",{"type":53,"value":487},". Azure MCP template IDs are versioned, language-specific strings returned by the template list. For example, the TypeScript HTTP trigger template is currently returned as ",{"type":40,"tag":82,"props":489,"children":491},{"className":490},[],[492],{"type":53,"value":493},"http-trigger-typescript-azd",{"type":53,"value":226},{"type":40,"tag":45,"props":496,"children":497},{},[498],{"type":53,"value":499},"When the user asks for a common trigger name, map it to one of the template IDs returned by the MCP list before calling the template-get operation. Examples:",{"type":40,"tag":501,"props":502,"children":503},"table",{},[504,527],{"type":40,"tag":505,"props":506,"children":507},"thead",{},[508],{"type":40,"tag":509,"props":510,"children":511},"tr",{},[512,518,522],{"type":40,"tag":513,"props":514,"children":515},"th",{},[516],{"type":53,"value":517},"User intent",{"type":40,"tag":513,"props":519,"children":520},{},[521],{"type":53,"value":54},{"type":40,"tag":513,"props":523,"children":524},{},[525],{"type":53,"value":526},"Prefer a returned template ID like",{"type":40,"tag":528,"props":529,"children":530},"tbody",{},[531,556,581,606],{"type":40,"tag":509,"props":532,"children":533},{},[534,540,548],{"type":40,"tag":535,"props":536,"children":537},"td",{},[538],{"type":53,"value":539},"HTTP trigger",{"type":40,"tag":535,"props":541,"children":542},{},[543],{"type":40,"tag":82,"props":544,"children":546},{"className":545},[],[547],{"type":53,"value":344},{"type":40,"tag":535,"props":549,"children":550},{},[551],{"type":40,"tag":82,"props":552,"children":554},{"className":553},[],[555],{"type":53,"value":493},{"type":40,"tag":509,"props":557,"children":558},{},[559,564,572],{"type":40,"tag":535,"props":560,"children":561},{},[562],{"type":53,"value":563},"Timer trigger",{"type":40,"tag":535,"props":565,"children":566},{},[567],{"type":40,"tag":82,"props":568,"children":570},{"className":569},[],[571],{"type":53,"value":344},{"type":40,"tag":535,"props":573,"children":574},{},[575],{"type":40,"tag":82,"props":576,"children":578},{"className":577},[],[579],{"type":53,"value":580},"timer-trigger-typescript-azd",{"type":40,"tag":509,"props":582,"children":583},{},[584,589,597],{"type":40,"tag":535,"props":585,"children":586},{},[587],{"type":53,"value":588},"Blob trigger",{"type":40,"tag":535,"props":590,"children":591},{},[592],{"type":40,"tag":82,"props":593,"children":595},{"className":594},[],[596],{"type":53,"value":344},{"type":40,"tag":535,"props":598,"children":599},{},[600],{"type":40,"tag":82,"props":601,"children":603},{"className":602},[],[604],{"type":53,"value":605},"blob-eventgrid-trigger-typescript-azd",{"type":40,"tag":509,"props":607,"children":608},{},[609,614,622],{"type":40,"tag":535,"props":610,"children":611},{},[612],{"type":53,"value":613},"Queue \u002F Service Bus trigger",{"type":40,"tag":535,"props":615,"children":616},{},[617],{"type":40,"tag":82,"props":618,"children":620},{"className":619},[],[621],{"type":53,"value":344},{"type":40,"tag":535,"props":623,"children":624},{},[625],{"type":40,"tag":82,"props":626,"children":628},{"className":627},[],[629],{"type":53,"value":630},"servicebus-trigger-typescript-azd",{"type":40,"tag":45,"props":632,"children":633},{},[634,636,641,643,648],{"type":53,"value":635},"If a template-get call fails with \"template not found\", immediately recover by calling ",{"type":40,"tag":82,"props":637,"children":639},{"className":638},[],[640],{"type":53,"value":150},{"type":53,"value":642}," again with only ",{"type":40,"tag":82,"props":644,"children":646},{"className":645},[],[647],{"type":53,"value":458},{"type":53,"value":649},", then select the closest returned template ID instead of retrying the failed alias.",{"type":40,"tag":272,"props":651,"children":653},{"id":652},"a4-initialize-the-project",[654],{"type":53,"value":655},"A.4 Initialize the project",{"type":40,"tag":45,"props":657,"children":658},{},[659,660,665],{"type":53,"value":428},{"type":40,"tag":82,"props":661,"children":663},{"className":662},[],[664],{"type":53,"value":139},{"type":53,"value":666},":",{"type":40,"tag":291,"props":668,"children":671},{"className":669,"code":670,"language":53},[294],"Tool: functions_project_get\nlanguage: \u003Cchosen language, e.g. typescript>\n",[672],{"type":40,"tag":82,"props":673,"children":674},{"__ignoreMap":299},[675],{"type":53,"value":670},{"type":40,"tag":45,"props":677,"children":678},{},[679,681,687,689,695,696,702,703,709,710,716,717,723,724,730],{"type":53,"value":680},"Returns project-level files (",{"type":40,"tag":82,"props":682,"children":684},{"className":683},[],[685],{"type":53,"value":686},"host.json",{"type":53,"value":688},", ",{"type":40,"tag":82,"props":690,"children":692},{"className":691},[],[693],{"type":53,"value":694},"local.settings.json",{"type":53,"value":688},{"type":40,"tag":82,"props":697,"children":699},{"className":698},[],[700],{"type":53,"value":701},"package.json",{"type":53,"value":195},{"type":40,"tag":82,"props":704,"children":706},{"className":705},[],[707],{"type":53,"value":708},"requirements.txt",{"type":53,"value":195},{"type":40,"tag":82,"props":711,"children":713},{"className":712},[],[714],{"type":53,"value":715},"pom.xml",{"type":53,"value":195},{"type":40,"tag":82,"props":718,"children":720},{"className":719},[],[721],{"type":53,"value":722},".csproj",{"type":53,"value":688},{"type":40,"tag":82,"props":725,"children":727},{"className":726},[],[728],{"type":53,"value":729},"tsconfig.json",{"type":53,"value":731},", etc.). Write these into the target directory.",{"type":40,"tag":272,"props":733,"children":735},{"id":734},"a5-add-the-function",[736],{"type":53,"value":737},"A.5 Add the function",{"type":40,"tag":45,"props":739,"children":740},{},[741,742,747,749,754,756,761],{"type":53,"value":428},{"type":40,"tag":82,"props":743,"children":745},{"className":744},[],[746],{"type":53,"value":150},{"type":53,"value":748}," with both ",{"type":40,"tag":82,"props":750,"children":752},{"className":751},[],[753],{"type":53,"value":458},{"type":53,"value":755}," and ",{"type":40,"tag":82,"props":757,"children":759},{"className":758},[],[760],{"type":53,"value":466},{"type":53,"value":666},{"type":40,"tag":291,"props":763,"children":766},{"className":764,"code":765,"language":53},[294],"Tool: functions_template_get\nlanguage: \u003Cchosen language, e.g. typescript>\ntemplate: \u003Cchosen returned template ID, e.g. http-trigger-typescript-azd>\nruntime-version: \u003Coptional, e.g. 22>\noutput: \u003Coptional, \"New\" (default) or \"Add\" for existing projects>\n",[767],{"type":40,"tag":82,"props":768,"children":769},{"__ignoreMap":299},[770],{"type":53,"value":765},{"type":40,"tag":45,"props":772,"children":773},{},[774,776,781],{"type":53,"value":775},"Returns the full function source code plus any required app settings and additional package dependencies. Write the returned file(s) into the project and merge any extra settings into ",{"type":40,"tag":82,"props":777,"children":779},{"className":778},[],[780],{"type":53,"value":694},{"type":53,"value":782}," and any extra packages into the dependency manifest.",{"type":40,"tag":41,"props":784,"children":785},{},[786],{"type":40,"tag":45,"props":787,"children":788},{},[789,791,796,798,804,806,812,814,820],{"type":53,"value":790},"⚠️ ",{"type":40,"tag":49,"props":792,"children":793},{},[794],{"type":53,"value":795},"Large template output",{"type":53,"value":797},": Some templates (especially ",{"type":40,"tag":82,"props":799,"children":801},{"className":800},[],[802],{"type":53,"value":803},"*-azd",{"type":53,"value":805}," variants that include infrastructure files) can produce very large output (100KB+). If the tool output is truncated or saved to a temporary file, read the file, parse the JSON ",{"type":40,"tag":82,"props":807,"children":809},{"className":808},[],[810],{"type":53,"value":811},"files",{"type":53,"value":813}," array, and write each file individually. After writing files, run ",{"type":40,"tag":82,"props":815,"children":817},{"className":816},[],[818],{"type":53,"value":819},"npm install",{"type":53,"value":821}," (or the equivalent package manager command) to generate lock files rather than relying on lock files from the template output.",{"type":40,"tag":272,"props":823,"children":825},{"id":824},"a6-verify",[826],{"type":53,"value":827},"A.6 Verify",{"type":40,"tag":45,"props":829,"children":830},{},[831],{"type":53,"value":832},"For TypeScript and other compiled-language projects, build first:",{"type":40,"tag":291,"props":834,"children":838},{"className":835,"code":836,"language":837,"meta":299,"style":299},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm run build   # TypeScript \u002F JavaScript\n# dotnet build  # C#\n# mvn package   # Java\n","bash",[839],{"type":40,"tag":82,"props":840,"children":841},{"__ignoreMap":299},[842,870,879],{"type":40,"tag":843,"props":844,"children":846},"span",{"class":845,"line":25},"line",[847,853,859,864],{"type":40,"tag":843,"props":848,"children":850},{"style":849},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[851],{"type":53,"value":852},"npm",{"type":40,"tag":843,"props":854,"children":856},{"style":855},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[857],{"type":53,"value":858}," run",{"type":40,"tag":843,"props":860,"children":861},{"style":855},[862],{"type":53,"value":863}," build",{"type":40,"tag":843,"props":865,"children":867},{"style":866},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[868],{"type":53,"value":869},"   # TypeScript \u002F JavaScript\n",{"type":40,"tag":843,"props":871,"children":873},{"class":845,"line":872},2,[874],{"type":40,"tag":843,"props":875,"children":876},{"style":866},[877],{"type":53,"value":878},"# dotnet build  # C#\n",{"type":40,"tag":843,"props":880,"children":882},{"class":845,"line":881},3,[883],{"type":40,"tag":843,"props":884,"children":885},{"style":866},[886],{"type":53,"value":887},"# mvn package   # Java\n",{"type":40,"tag":45,"props":889,"children":890},{},[891],{"type":53,"value":892},"Then perform an end-to-end local verification, not just a host start:",{"type":40,"tag":291,"props":894,"children":896},{"className":835,"code":895,"language":837,"meta":299,"style":299},"func start\n",[897],{"type":40,"tag":82,"props":898,"children":899},{"__ignoreMap":299},[900],{"type":40,"tag":843,"props":901,"children":902},{"class":845,"line":25},[903,907],{"type":40,"tag":843,"props":904,"children":905},{"style":849},[906],{"type":53,"value":87},{"type":40,"tag":843,"props":908,"children":909},{"style":855},[910],{"type":53,"value":911}," start\n",{"type":40,"tag":45,"props":913,"children":914},{},[915],{"type":53,"value":916},"After the host reports the function endpoints\u002Flisteners:",{"type":40,"tag":116,"props":918,"children":919},{},[920,937,947,965,975],{"type":40,"tag":120,"props":921,"children":922},{},[923,928,930,936],{"type":40,"tag":49,"props":924,"children":925},{},[926],{"type":53,"value":927},"HTTP triggers",{"type":53,"value":929},": send an actual request to the local endpoint and verify the status code and response body, for example ",{"type":40,"tag":82,"props":931,"children":933},{"className":932},[],[934],{"type":53,"value":935},"curl http:\u002F\u002Flocalhost:7071\u002Fapi\u002F\u003CFunctionName>?name=World",{"type":53,"value":226},{"type":40,"tag":120,"props":938,"children":939},{},[940,945],{"type":40,"tag":49,"props":941,"children":942},{},[943],{"type":53,"value":944},"Timer triggers",{"type":53,"value":946},": verify the listener starts and, when practical, temporarily use a short development-only schedule or manual invocation approach; restore the user's intended schedule before finishing.",{"type":40,"tag":120,"props":948,"children":949},{},[950,955,957,963],{"type":40,"tag":49,"props":951,"children":952},{},[953],{"type":53,"value":954},"Storage, Cosmos DB, SQL, Redis, Dapr, or other service-backed triggers\u002Fbindings",{"type":53,"value":956},": load ",{"type":40,"tag":82,"props":958,"children":960},{"className":959},[],[961],{"type":53,"value":962},"azure-functions-common\u002Freferences\u002Flocal-emulators.md",{"type":53,"value":964},", identify the required local emulator or development service, and run a realistic message\u002Fblob\u002Fdocument\u002Fevent through the trigger when the user wants E2E verification.",{"type":40,"tag":120,"props":966,"children":967},{},[968,973],{"type":40,"tag":49,"props":969,"children":970},{},[971],{"type":53,"value":972},"Before installing or starting any emulator\u002Flocal service",{"type":53,"value":974},": ask the user for confirmation. If the user says the emulator is not needed, unavailable, or should be skipped, do not install it; record that emulator-backed E2E was skipped and provide manual\u002FAzure test steps instead.",{"type":40,"tag":120,"props":976,"children":977},{},[978,983],{"type":40,"tag":49,"props":979,"children":980},{},[981],{"type":53,"value":982},"When no practical local emulator exists",{"type":53,"value":984},": explain the limitation, suggest a temporary Azure dev resource or deployment-based test, and keep the local verification to build + host\u002Flistener startup.",{"type":40,"tag":243,"props":986,"children":987},{},[],{"type":40,"tag":104,"props":989,"children":991},{"id":990},"path-b-composition-algorithm-fallback",[992],{"type":53,"value":993},"Path B — Composition algorithm fallback",{"type":40,"tag":45,"props":995,"children":996},{},[997,999,1004],{"type":53,"value":998},"Use this path ",{"type":40,"tag":49,"props":1000,"children":1001},{},[1002],{"type":53,"value":1003},"only when the Azure MCP tools are not available",{"type":53,"value":1005},". When falling back, show this notice to the user verbatim (translate to the user's language if needed):",{"type":40,"tag":41,"props":1007,"children":1008},{},[1009],{"type":40,"tag":45,"props":1010,"children":1011},{},[1012,1014,1019],{"type":53,"value":1013},"ℹ️ Azure MCP tools were not found; using the manifest-based fallback path. Enabling the Azure MCP Server unlocks dynamic template discovery and composition. Run ",{"type":40,"tag":82,"props":1015,"children":1017},{"className":1016},[],[1018],{"type":53,"value":94},{"type":53,"value":1020}," to configure it.",{"type":40,"tag":272,"props":1022,"children":1024},{"id":1023},"b1-fallback-algorithm",[1025],{"type":53,"value":1026},"B.1 Fallback algorithm",{"type":40,"tag":45,"props":1028,"children":1029},{},[1030],{"type":53,"value":1031},"Follow this manifest-based fallback algorithm:",{"type":40,"tag":291,"props":1033,"children":1036},{"className":1034,"code":1035,"language":53},[294],"1. FETCH MANIFEST\n   GET https:\u002F\u002Fcdn.functions.azure.com\u002Fpublic\u002Ftemplates-manifest\u002Fmanifest.json\n   If fetch fails → fall back to:\n     https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-functions-templates\u002Fblob\u002Fdev\u002FFunctions.Templates\u002FTemplate-Manifest\u002Fmanifest.json\n   If both fail → fall back to known-good Azure-Samples\u002Ffunctions-quickstart-* repos\n   If all fail → report error and ask user to retry later\n\n2. FILTER TEMPLATES\n   Filter by: language, resource, iac\n\n3. CHECK SINGLE-TEMPLATE MATCH\n   If one template covers ALL requirements → use it alone\n\n4. SELECT TEMPLATES\n   - Trigger template (REQUIRED) — base project with IaC\n   - Binding templates (OPTIONAL) — extract patterns only\n\n5. DOWNLOAD TEMPLATES\n   For each template:\n   - If folderPath == \".\" → ZIP download + unzip\n   - If folderPath != \".\" → fetch tree + raw github url file downloads\n   - Fallback: git clone --depth 1\n\n6. COMPOSE\n   - Use trigger template as BASE\n   - EXTRACT binding patterns from binding templates\n   - MERGE IaC resources, RBAC roles and settings\n   - ADD user's custom business logic\n\n7. TRIM unused demo code (keep AzureWebJobsStorage)\n\n8. WRITE all files\n\n9. DEPLOY: azd up --no-prompt\n",[1037],{"type":40,"tag":82,"props":1038,"children":1039},{"__ignoreMap":299},[1040],{"type":53,"value":1035},{"type":40,"tag":272,"props":1042,"children":1044},{"id":1043},"b2-quick-code-reference",[1045],{"type":53,"value":1046},"B.2 Quick code reference",{"type":40,"tag":45,"props":1048,"children":1049},{},[1050,1052,1057],{"type":53,"value":1051},"For minimal HTTP trigger snippets per language (last-resort fallback when the manifest is also unavailable), see ",{"type":40,"tag":159,"props":1053,"children":1055},{"href":1054},"references\u002Flanguage-snippets.md",[1056],{"type":53,"value":1054},{"type":53,"value":226},{"type":40,"tag":272,"props":1059,"children":1061},{"id":1060},"b3-verify",[1062],{"type":53,"value":1063},"B.3 Verify",{"type":40,"tag":45,"props":1065,"children":1066},{},[1067],{"type":53,"value":1068},"Build compiled projects first, then perform the same local E2E verification standard used in Path A:",{"type":40,"tag":291,"props":1070,"children":1071},{"className":835,"code":895,"language":837,"meta":299,"style":299},[1072],{"type":40,"tag":82,"props":1073,"children":1074},{"__ignoreMap":299},[1075],{"type":40,"tag":843,"props":1076,"children":1077},{"class":845,"line":25},[1078,1082],{"type":40,"tag":843,"props":1079,"children":1080},{"style":849},[1081],{"type":53,"value":87},{"type":40,"tag":843,"props":1083,"children":1084},{"style":855},[1085],{"type":53,"value":911},{"type":40,"tag":116,"props":1087,"children":1088},{},[1089,1094,1106],{"type":40,"tag":120,"props":1090,"children":1091},{},[1092],{"type":53,"value":1093},"For HTTP triggers, send a real request to the local endpoint and validate the response.",{"type":40,"tag":120,"props":1095,"children":1096},{},[1097,1099,1104],{"type":53,"value":1098},"For non-HTTP triggers, consult ",{"type":40,"tag":82,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":53,"value":962},{"type":53,"value":1105}," and use an emulator\u002Flocal service when practical.",{"type":40,"tag":120,"props":1107,"children":1108},{},[1109],{"type":53,"value":1110},"Ask before installing or starting emulators. If the user declines, skip emulator-backed E2E and document the skipped verification plus manual\u002FAzure test steps.",{"type":40,"tag":243,"props":1112,"children":1113},{},[],{"type":40,"tag":104,"props":1115,"children":1117},{"id":1116},"adding-functions-to-existing-projects",[1118],{"type":53,"value":1119},"Adding functions to existing projects",{"type":40,"tag":45,"props":1121,"children":1122},{},[1123,1124,1129,1131,1135],{"type":53,"value":282},{"type":40,"tag":82,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":53,"value":686},{"type":53,"value":1130}," already exists, do ",{"type":40,"tag":49,"props":1132,"children":1133},{},[1134],{"type":53,"value":268},{"type":53,"value":1136}," re-initialize. Instead:",{"type":40,"tag":116,"props":1138,"children":1139},{},[1140,1157],{"type":40,"tag":120,"props":1141,"children":1142},{},[1143,1148,1150,1155],{"type":40,"tag":49,"props":1144,"children":1145},{},[1146],{"type":53,"value":1147},"MCP path",{"type":53,"value":1149},": call ",{"type":40,"tag":82,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":53,"value":150},{"type":53,"value":1156}," with the same language as the existing project and specify the desired template name. Write the returned file.",{"type":40,"tag":120,"props":1158,"children":1159},{},[1160,1165],{"type":40,"tag":49,"props":1161,"children":1162},{},[1163],{"type":53,"value":1164},"Fallback path",{"type":53,"value":1166},": fetch the manifest, filter for the desired template by language and resource, download the template source, and merge the function files into the existing project.",{"type":40,"tag":70,"props":1168,"children":1170},{"id":1169},"after-creation",[1171],{"type":53,"value":1172},"After Creation",{"type":40,"tag":41,"props":1174,"children":1175},{},[1176],{"type":40,"tag":45,"props":1177,"children":1178},{},[1179,1181,1186],{"type":53,"value":1180},"✅ Your project is scaffolded! Next: use ",{"type":40,"tag":49,"props":1182,"children":1183},{},[1184],{"type":53,"value":1185},"azure-functions-deploy",{"type":53,"value":1187}," to deploy to Azure.",{"type":40,"tag":70,"props":1189,"children":1191},{"id":1190},"next-steps",[1192],{"type":53,"value":1193},"Next steps",{"type":40,"tag":116,"props":1195,"children":1196},{},[1197,1209],{"type":40,"tag":120,"props":1198,"children":1199},{},[1200,1202,1207],{"type":53,"value":1201},"On success, suggest ",{"type":40,"tag":82,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":53,"value":1185},{"type":53,"value":1208}," because the project is ready to deploy to Azure.",{"type":40,"tag":120,"props":1210,"children":1211},{},[1212,1214,1219],{"type":53,"value":1213},"On failure, suggest ",{"type":40,"tag":82,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":53,"value":94},{"type":53,"value":1220}," to verify local tooling and prerequisites.",{"type":40,"tag":1222,"props":1223,"children":1224},"style",{},[1225],{"type":53,"value":1226},"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":1228,"total":1405},[1229,1248,1267,1284,1299,1314,1327,1342,1353,1367,1380,1393],{"slug":1230,"name":1230,"fn":1231,"description":1232,"org":1233,"tags":1234,"stars":1245,"repoUrl":1246,"updatedAt":1247},"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},[1235,1236,1239,1242],{"name":11,"slug":8,"type":14},{"name":1237,"slug":1238,"type":14},"Compliance","compliance",{"name":1240,"slug":1241,"type":14},"Governance","governance",{"name":1243,"slug":1244,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1249,"name":1249,"fn":1250,"description":1251,"org":1252,"tags":1253,"stars":1264,"repoUrl":1265,"updatedAt":1266},"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},[1254,1255,1258,1261],{"name":11,"slug":8,"type":14},{"name":1256,"slug":1257,"type":14},"Deployment","deployment",{"name":1259,"slug":1260,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":1262,"slug":1263,"type":14},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1268,"name":1268,"fn":1269,"description":1270,"org":1271,"tags":1272,"stars":1281,"repoUrl":1282,"updatedAt":1283},"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},[1273,1274,1275,1278],{"name":16,"slug":17,"type":14},{"name":11,"slug":8,"type":14},{"name":1276,"slug":1277,"type":14},"Code Review","code-review",{"name":1279,"slug":1280,"type":14},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":1285,"name":1285,"fn":1286,"description":1287,"org":1288,"tags":1289,"stars":1281,"repoUrl":1282,"updatedAt":1298},"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},[1290,1291,1292,1295],{"name":11,"slug":8,"type":14},{"name":1256,"slug":1257,"type":14},{"name":1293,"slug":1294,"type":14},"SDK","sdk",{"name":1296,"slug":1297,"type":14},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":1300,"name":1300,"fn":1301,"description":1302,"org":1303,"tags":1304,"stars":1281,"repoUrl":1282,"updatedAt":1313},"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},[1305,1306,1309,1312],{"name":11,"slug":8,"type":14},{"name":1307,"slug":1308,"type":14},"GitHub","github",{"name":1310,"slug":1311,"type":14},"Project Management","project-management",{"name":1293,"slug":1294,"type":14},"2026-07-12T08:17:38.345387",{"slug":1315,"name":1315,"fn":1316,"description":1317,"org":1318,"tags":1319,"stars":1281,"repoUrl":1282,"updatedAt":1326},"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},[1320,1321,1324,1325],{"name":11,"slug":8,"type":14},{"name":1322,"slug":1323,"type":14},"CI\u002FCD","ci-cd",{"name":1256,"slug":1257,"type":14},{"name":1293,"slug":1294,"type":14},"2026-07-12T08:17:34.27607",{"slug":1328,"name":1328,"fn":1329,"description":1330,"org":1331,"tags":1332,"stars":1281,"repoUrl":1282,"updatedAt":1341},"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},[1333,1334,1335,1338],{"name":16,"slug":17,"type":14},{"name":11,"slug":8,"type":14},{"name":1336,"slug":1337,"type":14},"OpenAPI","openapi",{"name":1339,"slug":1340,"type":14},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":1343,"name":1343,"fn":1344,"description":1345,"org":1346,"tags":1347,"stars":1281,"repoUrl":1282,"updatedAt":1352},"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},[1348,1349,1350,1351],{"name":11,"slug":8,"type":14},{"name":1322,"slug":1323,"type":14},{"name":1293,"slug":1294,"type":14},{"name":1296,"slug":1297,"type":14},"2026-07-12T08:17:37.08523",{"slug":1354,"name":1354,"fn":1355,"description":1356,"org":1357,"tags":1358,"stars":1281,"repoUrl":1282,"updatedAt":1366},"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},[1359,1362,1365],{"name":1360,"slug":1361,"type":14},"LLM","llm",{"name":1363,"slug":1364,"type":14},"Performance","performance",{"name":1339,"slug":1340,"type":14},"2026-07-12T08:17:42.080413",{"slug":1368,"name":1368,"fn":1369,"description":1370,"org":1371,"tags":1372,"stars":1281,"repoUrl":1282,"updatedAt":1379},"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},[1373,1374,1375,1378],{"name":11,"slug":8,"type":14},{"name":1322,"slug":1323,"type":14},{"name":1376,"slug":1377,"type":14},"Debugging","debugging",{"name":1293,"slug":1294,"type":14},"2026-07-12T08:17:40.821512",{"slug":1381,"name":1381,"fn":1382,"description":1383,"org":1384,"tags":1385,"stars":1281,"repoUrl":1282,"updatedAt":1392},"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},[1386,1387,1388,1391],{"name":11,"slug":8,"type":14},{"name":1237,"slug":1238,"type":14},{"name":1389,"slug":1390,"type":14},"Process Optimization","process-optimization",{"name":1339,"slug":1340,"type":14},"2026-07-12T08:17:32.970921",{"slug":1394,"name":1394,"fn":1395,"description":1396,"org":1397,"tags":1398,"stars":1281,"repoUrl":1282,"updatedAt":1404},"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},[1399,1400,1403],{"name":1279,"slug":1280,"type":14},{"name":1401,"slug":1402,"type":14},"Plugin Development","plugin-development",{"name":1339,"slug":1340,"type":14},"2026-07-12T08:17:35.873862",109,{"items":1407,"total":1494},[1408,1423,1440,1452,1458,1467,1482],{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1412,"tags":1413,"stars":21,"repoUrl":22,"updatedAt":1422},"azure-functions-agents","build and deploy Azure Functions agents","Build, scaffold, extend, deploy, and troubleshoot Azure Functions serverless agents and event-driven AI agents using the Azure Functions serverless agents runtime. Use when the user says serverless agent, serverless agents, Azure Functions agent, scheduled agent, morning briefing, daily digest, timer agent, inbox summary, email or Teams briefing, background AI workflow, connector-triggered agent, event-driven AI automation, HTTP\u002Fchat agent, webhook-style agent, or Azure Functions hosted agent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1414,1417,1418,1419],{"name":1415,"slug":1416,"type":14},"Agents","agents",{"name":11,"slug":8,"type":14},{"name":1256,"slug":1257,"type":14},{"name":1420,"slug":1421,"type":14},"Serverless","serverless","2026-07-12T08:19:28.200894",{"slug":1424,"name":1424,"fn":1425,"description":1426,"org":1427,"tags":1428,"stars":21,"repoUrl":22,"updatedAt":1439},"azure-functions-best-practices","apply Azure Functions best practices","Use when reviewing an existing Azure Function App against Azure Functions best practices and proposing safe, approval-gated remediations for runtime, configuration, identity, security, observability, performance, scale, cost, triggers, and bindings.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1429,1430,1433,1436],{"name":11,"slug":8,"type":14},{"name":1431,"slug":1432,"type":14},"Best Practices","best-practices",{"name":1434,"slug":1435,"type":14},"Observability","observability",{"name":1437,"slug":1438,"type":14},"Security","security","2026-07-15T06:02:48.801578",{"slug":1441,"name":1441,"fn":1442,"description":1443,"org":1444,"tags":1445,"stars":21,"repoUrl":22,"updatedAt":1451},"azure-functions-common","reference Azure Functions documentation and configuration","Shared Azure Functions reference material for the Azure Functions skill suite: runtime\u002Flanguage routing, trigger\u002Fbinding extension references, official docs and repository pointers. Use only when another Azure Functions skill needs reusable language or binding context. Not intended as a standalone user-facing workflow.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1446,1447,1450],{"name":11,"slug":8,"type":14},{"name":1448,"slug":1449,"type":14},"Configuration","configuration",{"name":1279,"slug":1280,"type":14},"2026-07-15T06:02:47.557542",{"slug":4,"name":4,"fn":5,"description":6,"org":1453,"tags":1454,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1455,1456,1457],{"name":16,"slug":17,"type":14},{"name":11,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"slug":1185,"name":1185,"fn":1459,"description":1460,"org":1461,"tags":1462,"stars":21,"repoUrl":22,"updatedAt":1466},"deploy Azure Functions applications","Proxy Azure Functions deployment requests to the Azure Skills prepare, validate, and deploy workflow while preserving Azure Functions-specific guidance",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1463,1464,1465],{"name":11,"slug":8,"type":14},{"name":1322,"slug":1323,"type":14},{"name":1256,"slug":1257,"type":14},"2026-07-12T08:19:34.579423",{"slug":1468,"name":1468,"fn":1469,"description":1470,"org":1471,"tags":1472,"stars":21,"repoUrl":22,"updatedAt":1481},"azure-functions-diagnostics","diagnose and resolve Azure Functions issues","Use when diagnosing or resolving Azure Functions issues: deployment failures, runtime errors, trigger\u002Fbinding failures, language worker issues, telemetry\u002Flog analysis, known issue research, source investigation, and remediation. Acts as a facade that routes to focused Azure Functions skills and small language\u002Fextension references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1473,1474,1475,1478],{"name":11,"slug":8,"type":14},{"name":1376,"slug":1377,"type":14},{"name":1476,"slug":1477,"type":14},"Logs","logs",{"name":1479,"slug":1480,"type":14},"Monitoring","monitoring","2026-07-12T08:19:30.738425",{"slug":1483,"name":1483,"fn":1484,"description":1485,"org":1486,"tags":1487,"stars":21,"repoUrl":22,"updatedAt":1493},"azure-functions-doctor","diagnose Azure Functions workspace configuration","Analyze local Azure Functions workspace code and configuration for common issues. Produces structured JSON findings for integration with the doctor CLI command. This skill targets local workspaces only — use azure-functions-diagnostics for deployed Azure resources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1488,1489,1492],{"name":11,"slug":8,"type":14},{"name":1490,"slug":1491,"type":14},"Code Analysis","code-analysis",{"name":1376,"slug":1377,"type":14},"2026-07-15T06:02:46.335328",11]