plugins/foundry-agents/skills/setup-foundry/SKILL.md
Provision a Microsoft Foundry resource, create a project, deploy a model (gpt-4.1-mini), and install the required Python SDK packages. This is a one-time setup skill. Use when the user says: "setup foundry", "provision foundry", "create foundry resource", "setup azure ai foundry", "install foundry sdk"
npx skillsauth add aymenfurter/polyclaw setup-foundryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provision a Foundry resource, project, and model deployment via Azure CLI, then install the Python SDK.
az version --output table
If the CLI is not installed, tell the user to install it from https://learn.microsoft.com/cli/azure/install-azure-cli and come back.
az account show --output table
If not logged in, run:
az login
Ask the user for the following values (or offer sensible defaults):
| Setting | Default |
|---------|---------|
| Resource group name | foundry-agents-rg |
| Foundry resource name | foundry-<username> (must be globally unique) |
| Project name | default |
| Location | eastus |
| Model to deploy | gpt-4.1-mini |
| Deployment name | gpt-4.1-mini |
az group create --name <RESOURCE_GROUP> --location <LOCATION>
az cognitiveservices account create \
--name <FOUNDRY_RESOURCE_NAME> \
--resource-group <RESOURCE_GROUP> \
--kind AIServices \
--sku S0 \
--location <LOCATION> \
--allow-project-management \
--yes
The custom subdomain is required for SDK access. It must be globally unique.
az cognitiveservices account update \
--name <FOUNDRY_RESOURCE_NAME> \
--resource-group <RESOURCE_GROUP> \
--custom-domain <FOUNDRY_RESOURCE_NAME>
az cognitiveservices account project create \
--name <FOUNDRY_RESOURCE_NAME> \
--resource-group <RESOURCE_GROUP> \
--project-name <PROJECT_NAME> \
--location <LOCATION>
az cognitiveservices account deployment create \
--name <FOUNDRY_RESOURCE_NAME> \
--resource-group <RESOURCE_GROUP> \
--deployment-name <DEPLOYMENT_NAME> \
--model-name <MODEL_NAME> \
--model-version "2025-04-14" \
--model-format OpenAI \
--sku-capacity 10 \
--sku-name GlobalStandard
If the model version or SKU is not available in the selected region, try Standard SKU or a different model version. You can list available models with:
az cognitiveservices account list-models \
--name <FOUNDRY_RESOURCE_NAME> \
--resource-group <RESOURCE_GROUP> \
--output table
pip install azure-ai-projects --pre openai azure-identity python-dotenv
Build the project endpoint from the resource and project names:
https://<FOUNDRY_RESOURCE_NAME>.services.ai.azure.com/api/projects/<PROJECT_NAME>
Run a quick verification:
python3 -c "
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
endpoint = 'https://<FOUNDRY_RESOURCE_NAME>.services.ai.azure.com/api/projects/<PROJECT_NAME>'
client = AIProjectClient(endpoint=endpoint, credential=DefaultAzureCredential())
openai_client = client.get_openai_client()
resp = openai_client.responses.create(
model='<DEPLOYMENT_NAME>',
input='Say hello in one sentence.',
)
print('Model response:', resp.output_text)
print('Setup verified successfully.')
"
Replace the placeholders with the actual values chosen earlier.
Tell the user to note down or export these values for future use:
export FOUNDRY_PROJECT_ENDPOINT="https://<FOUNDRY_RESOURCE_NAME>.services.ai.azure.com/api/projects/<PROJECT_NAME>"
export FOUNDRY_MODEL_DEPLOYMENT_NAME="<DEPLOYMENT_NAME>"
Tell the user:
tools
Search the web for information using Playwright browser automation. Use when the user asks to find, look up, or research something online.
content-media
Summarize the content of a given URL. Use when the user provides a link and asks for a summary or key points.
development
Create, read, update, and organize personal notes. Use when the user asks to take a note, jot something down, save information for later, or manage their notes.
development
Generate a daily briefing summarizing recent memory and relevant information. Use when the user asks for a morning briefing or daily summary.