Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Build and deploy AI applications on Azure AI Foundry using Microsoft's model catalog and AI services
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
SKILL.md
1---2name: microsoft-foundry3description: "Deploy, evaluate, and manage Foundry agents end-to-end: Docker build, ACR push, hosted/prompt agent create, container start, batch eval, continuous eval, prompt optimizer workflows, agent.yaml, dataset curation from traces. USE FOR: deploy agent to Foundry, hosted agent, create agent, invoke agent, evaluate agent, run batch eval, continuous eval, continuous monitoring, continuous eval status, optimize prompt, improve prompt, prompt optimizer, optimize agent instructions, improve agent instructions, optimize system prompt, deploy model, Foundry project, RBAC, role assignment, permissions, quota, capacity, region, troubleshoot agent, deployment failure, create dataset from traces, dataset versioning, eval trending, create AI Services, Cognitive Services, create Foundry resource, provision resource, knowledge index, agent monitoring, customize deployment, onboard, availability. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure-prepare)."4license: MIT5metadata:6author: Microsoft7version: "0.0.0-placeholder"8---910# Microsoft Foundry Skill1112This skill helps developers work with Microsoft Foundry resources, covering model discovery and deployment, complete dev lifecycle of AI agent, evaluation workflows, and troubleshooting.1314## Pre-Execution Requirements1516> **MANDATORY: Before executing ANY workflow, you MUST first call the Azure MCP `foundry` tool and inspect the available Foundry MCP tools and related parameters.** Treat this initial `foundry` call as a discovery/help step. For this skill, Azure MCP `foundry` is the required entry point for Foundry-related MCP operations.1718## Sub-Skills1920> **MANDATORY: Before executing ANY workflow-specific steps, you MUST read the corresponding sub-skill document.** Do not call workflow-specific MCP tools for a workflow without reading its skill document. This applies even if you already know the MCP tool parameters โ the skill document contains required workflow steps, pre-checks, and validation logic that must be followed. This rule applies on every new user message that triggers a different workflow, even if the skill is already loaded.2122This skill includes specialized sub-skills for specific workflows. **Use these instead of the main skill when they match your task:**2324| Sub-Skill | When to Use | Reference |25|-----------|-------------|-----------|26| **deploy** | Containerize, build, push to ACR, create/update/clone agent deployments | [deploy](foundry-agent/deploy/deploy.md) |27| **invoke** | Send messages to an agent, single or multi-turn conversations | [invoke](foundry-agent/invoke/invoke.md) |28| **observe** | Evaluate agent quality, run batch evals, analyze failures, optimize prompts, improve agent instructions, compare versions, set up CI/CD monitoring, and enable continuous production evaluation | [observe](foundry-agent/observe/observe.md) |29| **trace** | Query traces, analyze latency/failures, correlate eval results to specific responses via App Insights `customEvents` | [trace](foundry-agent/trace/trace.md) |30| **troubleshoot** | View hosted agent logs, query telemetry, diagnose failures | [troubleshoot](foundry-agent/troubleshoot/troubleshoot.md) |31| **create** | Create new hosted agent applications. Supports Microsoft Agent Framework, LangGraph, or custom frameworks in Python or C#, across `responses` or `invocations` protocols. | [create](foundry-agent/create/create.md) |32| **faos-optimize** | Convert existing Python agent code to a FAOS (Foundry Agent Optimization Service) optimization-ready version by wiring evaluator-targeted instructions/model/temperature knobs, then stop for review before deployment. | [faos-optimize](foundry-agent/faos-optimize/faos-optimize.md) |33| **eval-datasets** | Harvest production traces into evaluation datasets, manage dataset versions and splits, track evaluation metrics over time, detect regressions, and maintain full lineage from trace to deployment. Use for: create dataset from traces, dataset versioning, evaluation trending, regression detection, dataset comparison, eval lineage. | [eval-datasets](foundry-agent/eval-datasets/eval-datasets.md) |34| **project/create** | Creating a new Azure AI Foundry project for hosting agents and models. Use when onboarding to Foundry or setting up new infrastructure. | [project/create/create-foundry-project.md](project/create/create-foundry-project.md) |35| **resource/create** | Creating Azure AI Services multi-service resource (Foundry resource) using Azure CLI. Use when manually provisioning AI Services resources with granular control. | [resource/create/create-foundry-resource.md](resource/create/create-foundry-resource.md) |36| **private-network** | Answer questions about Foundry network isolation **and** deploy Foundry with VNet isolation (BYO VNet, Managed VNet, hybrid). Covers architecture concepts, template selection, deployment, and post-deployment validation. | [resource/private-network/private-network.md](resource/private-network/private-network.md) |37| **models/deploy-model** | Unified model deployment with intelligent routing. Handles quick preset deployments, fully customized deployments (version/SKU/capacity/RAI), and capacity discovery across regions. Routes to sub-skills: `preset` (quick deploy), `customize` (full control), `capacity` (find availability). | [models/deploy-model/SKILL.md](models/deploy-model/SKILL.md) |38| **quota** | Managing quotas and capacity for Microsoft Foundry resources. Use when checking quota usage, troubleshooting deployment failures due to insufficient quota, requesting quota increases, or planning capacity. | [quota/quota.md](quota/quota.md) |39| **rbac** | Managing RBAC permissions, role assignments, managed identities, and service principals for Microsoft Foundry resources. Use for access control, auditing permissions, and CI/CD setup. | [rbac/rbac.md](rbac/rbac.md) |4041> ๐ก **Tip:** For a complete onboarding flow: `project/create` (public) or `private-network` (VNet isolation) โ `models/deploy-model` โ agent workflows (`create` โ `deploy` โ `invoke`).4243> ๐ก **Model Deployment:** Use `models/deploy-model` for all deployment scenarios โ it intelligently routes between quick preset deployment, customized deployment with full control, and capacity discovery across regions.4445> ๐ก **Prompt Optimization:** For requests like "optimize my prompt" or "improve my agent instructions," load [observe](foundry-agent/observe/observe.md) and use the `prompt_optimize` MCP tool through that eval-driven workflow.4647## Infrastructure Lifecycle4849Match user intent to the correct infrastructure workflow.5051| User Intent | Workflow |52|-------------|---------|53| "Create Foundry" / "Set up Foundry" (ambiguous) | Use `AskUserQuestion`: (a) just an AI Services resource, (b) a project with public access, or (c) a project with network isolation? Route: (a) โ [resource/create](resource/create/create-foundry-resource.md), (b) โ [project/create](project/create/create-foundry-project.md), (c) โ [private-network](resource/private-network/private-network.md) |54| Set up Foundry with VNet isolation | [private-network](resource/private-network/private-network.md) |55| Create a Foundry project (public) | [project/create](project/create/create-foundry-project.md) |56| Create a bare Foundry resource | [resource/create](resource/create/create-foundry-resource.md) |5758## Agent Development Lifecycle5960Match user intent to the correct agent workflow. Read each sub-skill in order before executing.6162| User Intent | Workflow (read in order) |63|-------------|------------------------|64| Create a new agent from scratch | [create](foundry-agent/create/create.md) โ [deploy](foundry-agent/deploy/deploy.md) โ [invoke](foundry-agent/invoke/invoke.md) |65| Make existing Python agent FAOS optimizable | [faos-optimize](foundry-agent/faos-optimize/faos-optimize.md) โ review โ deploy โ invoke |66| Deploy an agent (code already exists) | deploy โ invoke |67| Update/redeploy an agent after code changes | deploy โ invoke |68| Invoke/test/chat with an agent | invoke |69| Optimize / improve agent prompt or instructions | observe (Step 4: Optimize) |70| Evaluate and optimize agent (full loop) | observe |71| Enable continuous evaluation monitoring | observe (Step 6: CI/CD & Monitoring) |72| Troubleshoot an agent issue | invoke โ troubleshoot |73| Fix a broken agent (troubleshoot + redeploy) | invoke โ troubleshoot โ apply fixes โ deploy โ invoke |7475## Agent: .foundry Workspace Standard7677Every agent source folder should keep Foundry-specific state under `.foundry/`:7879```text80<agent-root>/81.foundry/82agent-metadata.yaml83agent-metadata.prod.yaml84datasets/85evaluators/86results/87```8889- `agent-metadata.yaml` is the preferred local/dev metadata file. Optional sidecar files such as `agent-metadata.prod.yaml` can hold a single prod or CI-targeted environment without mixing multiple environments in one file.90- `datasets/` and `evaluators/` are local cache folders. Reuse them when they are current, and ask before refreshing or overwriting them.91- See [Agent Metadata Contract](references/agent-metadata-contract.md) for the canonical schema and workflow rules.9293## Agent: Setup References9495- [Standard Agent Setup](references/standard-agent-setup.md) - Standard capability-host setup with customer-managed data, search, and AI Services resources.9697## Agent: Project Context Resolution9899Agent skills should run this step **only when they need configuration values they don't already have**. If a value (for example, agent root, environment, project endpoint, or agent name) is already known from the user's message or a previous skill in the same session, skip resolution for that value.100101### Step 1: Discover Agent Roots102103Search the workspace for `.foundry/` folders that contain `agent-metadata.yaml` or `agent-metadata.<env>.yaml`.104105- **One match** โ use that agent root.106- **Multiple matches** โ require the user to choose the target agent folder.107- **No matches** โ for create/deploy workflows, seed a new `.foundry/` folder during setup; for all other workflows, stop and ask the user which agent source folder to initialize.108109After selecting an agent root, keep all local `.foundry` cache inspection, source inspection, evaluator suggestions, dataset suggestions, and prompt-optimization context inside that folder only. Do **not** scan sibling agent folders unless the user explicitly switches roots.110111### Step 2: Select Metadata File and Resolve Environment112113Inside the selected agent root, choose the metadata file in this order:1141. Metadata filename or path explicitly provided by the user or workflow1152. If an explicit environment is already known and `.foundry/agent-metadata.<env>.yaml` exists, use that file1163. `.foundry/agent-metadata.yaml`1174. If multiple metadata files remain and no rule above selects one, prompt the user to choose118119Read the selected metadata file and resolve the environment in this order:1201. Environment explicitly named by the user1212. If the selected metadata file defines exactly one environment, use it1223. Environment already selected earlier in the session1234. `defaultEnvironment` from metadata124125If the selected metadata file still contains multiple environments and none of the rules above selects one, prompt the user to choose. Keep the selected agent root, metadata file, and environment visible in every workflow summary.126127If the selected environment exposes older `testSuites[]` metadata but not `evaluationSuites[]`, treat `testSuites[]` as the source for this session and normalize each entry in memory to the `evaluationSuites[]` shape before continuing. If the metadata is older still and only exposes legacy `testCases[]`, normalize that list the same way. Preserve dataset and evaluator fields, keep any existing `tags`, and map legacy `priority` to `tags.tier` only when `tags.tier` is missing: `P0` -> `smoke`, `P1` -> `regression`, `P2` -> `coverage`.128129### Step 3: Resolve Common Configuration130131Use the selected environment in the selected metadata file as the primary source:132133| Metadata Field | Resolves To | Used By |134|----------------|-------------|---------|135| `environments.<env>.projectEndpoint` | Project endpoint | deploy, invoke, observe, trace, troubleshoot |136| `environments.<env>.agentName` | Agent name | invoke, observe, trace, troubleshoot |137| `environments.<env>.azureContainerRegistry` | ACR registry name / image URL prefix | deploy |138| `environments.<env>.evaluationSuites[]` | Dataset + evaluator + tag bundles | observe, eval-datasets |139140### Step 4: Bootstrap Missing Metadata (Create/Deploy Only)141142If create/deploy is initializing a new `.foundry` workspace and metadata fields are still missing, check if `azure.yaml` exists in the project root. If found, run `azd env get-values` and use it to seed `agent-metadata.yaml` by default, or `agent-metadata.<env>.yaml` when the workflow explicitly targets a separate environment-specific file.143144On any metadata write (deploy, auto-setup, dataset refresh, or trace-to-dataset update), persist only `evaluationSuites[]` in the selected metadata file. If the selected file is a preferred single-environment file, rewrite only that one environment block. If the selected file is a legacy multi-environment file, rewrite only the selected environment block. Never copy or merge environments across sibling metadata files automatically. If the selected environment still uses older `testSuites[]` or legacy `testCases[]`, rewrite it to `evaluationSuites[]` and remove migrated `priority` fields from the rewritten entries.145146| azd Variable | Seeds |147|-------------|-------|148| `AZURE_AI_PROJECT_ENDPOINT` or `AZURE_AIPROJECT_ENDPOINT` | `environments.<env>.projectEndpoint` |149| `AZURE_CONTAINER_REGISTRY_NAME` or `AZURE_CONTAINER_REGISTRY_ENDPOINT` | `environments.<env>.azureContainerRegistry` |150| `AZURE_SUBSCRIPTION_ID` | Azure subscription for trace/troubleshoot lookups |151152### Step 5: Collect Missing Values153154Use the `ask_user` or `askQuestions` tool **only for values not resolved** from the user's message, session context, metadata, or azd bootstrap. Common values skills may need:155- **Agent root** โ Target folder containing `.foundry/agent-metadata*.yaml`156- **Metadata file** โ `agent-metadata.yaml` for local/dev, or an explicit sidecar such as `agent-metadata.prod.yaml`157- **Environment** โ `dev`, `prod`, or another environment key from metadata158- **Project endpoint** โ AI Foundry project endpoint URL159- **Agent name** โ Name of the target agent160161> ๐ก **Tip:** If the user already provides the agent path, environment, project endpoint, or agent name, extract it directly โ do not ask again.162163## Agent: Agent Types164165All agent skills support two agent types:166167| Type | Kind | Description |168|------|------|-------------|169| **Prompt** | `"prompt"` | LLM-based agents backed by a model deployment |170| **Hosted** | `"hosted"` | Container-based agents running custom code |171172Use `agent_get` MCP tool to determine an agent's type when needed.173174## Tool Usage Conventions175176- Use the `ask_user` or `askQuestions` tool whenever collecting information from the user177- Use the `task` or `runSubagent` tool to delegate long-running or independent sub-tasks (e.g., env var scanning, status polling, Dockerfile generation)178- Prefer Azure MCP tools over direct CLI commands when available179- Reference official Microsoft documentation URLs instead of embedding CLI command syntax180181## Additional Resources182183- [Foundry Hosted Agents](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/hosted-agents?view=foundry)184- [Foundry Agent Runtime Components](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/runtime-components?view=foundry)185186## SDK Quick Reference187188- [Python](references/sdk/foundry-sdk-py.md)189