{
  "schema": "https://ai-atoms.com/schemas/skill-v1.json",
  "type": "skill",
  "id": "skill/azure-ai-projects-ts",
  "version": "1.0.0",
  "name": "Azure Ai Projects Ts",
  "description": "Build AI applications using Azure AI Projects SDK for JavaScript (@azure/ai-projects). Use when working with Foundry project clients, agents, connections, deployments, datasets, indexes, evaluation...",
  "system_prompt_fragment": "# Azure AI Projects SDK for TypeScript\n\nHigh-level SDK for Azure AI Foundry projects with agents, connections, deployments, and evaluations.\n\n## Installation\n\n```bash\nnpm install @azure/ai-projects @azure/identity\n```\n\nFor tracing:\n```bash\nnpm install @azure/monitor-opentelemetry @opentelemetry/api\n```\n\n## Environment Variables\n\n```bash\nAZURE_AI_PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>\nMODEL_DEPLOYMENT_NAME=gpt-4o\n```\n\n## Authentication\n\n```typescript\nimport { AIProjectClient } from \"@azure/ai-projects\";\nimport { DefaultAzureCredential } from \"@azure/identity\";\n\nconst client = new AIProjectClient(\n  process.env.AZURE_AI_PROJECT_ENDPOINT!,\n  new DefaultAzureCredential()\n);\n```\n\n## Operation Groups\n\n| Group | Purpose |\n|-------|---------|\n| `client.agents` | Create and manage AI agents |\n| `client.connections` | List connected Azure resources |\n| `client.deployments` | List model deployments |\n| `client.datasets` | Upload and manage datasets |\n| `client.indexes` | Create and manage search indexes |\n| `client.evaluators` | Manage evaluation metrics |\n| `client.memoryStores` | Manage agent memory |\n\n## Getting OpenAI Client\n\n```typescript\nconst openAIClient = await client.getOpenAIClient();\n\n// Use for responses\nconst response = await openAIClient.responses.create({\n  model: \"gpt-4o\",\n  input: \"What is the capital of France?\"\n});\n\n// Use for conversations\nconst conversation = await openAIClient.conversations.create({\n  items: [{ type: \"message\", role: \"user\", content: \"Hello!\" }]\n});\n```\n\n## Agents\n\n### Create Agent\n\n```typescript\nconst agent = await client.agents.createVersion(\"my-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  instructions: \"You are a helpful assistant.\"\n});\n```\n\n### Agent with Tools\n\n```typescript\n// Code Interpreter\nconst agent = await client.agents.createVersion(\"code-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  instructions: \"You can execute code.\",\n  tools: [{ type: \"code_interpreter\", container: { type: \"auto\" } }]\n});\n\n// File Search\nconst agent = await client.agents.createVersion(\"search-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  tools: [{ type: \"file_search\", vector_store_ids: [vectorStoreId] }]\n});\n\n// Web Search\nconst agent = await client.agents.createVersion(\"web-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  tools: [{\n    type: \"web_search_preview\",\n    user_location: { type: \"approximate\", country: \"US\", city: \"Seattle\" }\n  }]\n});\n\n// Azure AI Search\nconst agent = await client.agents.createVersion(\"aisearch-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  tools: [{\n    type: \"azure_ai_search\",\n    azure_ai_search: {\n      indexes: [{\n        project_connection_id: connectionId,\n        index_name: \"my-index\",\n        query_type: \"simple\"\n      }]\n    }\n  }]\n});\n\n// Function Tool\nconst agent = await client.agents.createVersion(\"func-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  tools: [{\n    type: \"function\",\n    function: {\n      name: \"get_weather\",\n      description: \"Get weather for a location\",\n      strict: true,\n      parameters: {\n        type: \"object\",\n        properties: { location: { type: \"string\" } },\n        required: [\"location\"]\n      }\n    }\n  }]\n});\n\n// MCP Tool\nconst agent = await client.agents.createVersion(\"mcp-agent\", {\n  kind: \"prompt\",\n  model: \"gpt-4o\",\n  tools: [{\n    type: \"mcp\",\n    server_label: \"my-mcp\",\n    server_url: \"https://mcp-server.example.com\",\n    require_approval: \"always\"\n  }]\n});\n```\n\n### Run Agent\n\n```typescript\nconst openAIClient = await client.getOpenAIClient();\n\n// Create conversation\nconst conversation = await openAIClient.conversations.create({\n  items: [{ type: \"message\", role: \"user\", content: \"Hello!\" }]\n});\n\n// Generate response using agent\nconst response = await openAIClient.responses.create(\n  { conversation: conversation.id },\n  { body: { agent: { name: agent.name, type: \"agent_reference\" } } }\n);\n\n// Cleanup\nawait openAIClient.conversations.delete(conversation.id);\nawait client.agents.deleteVersion(agent.name, agent.version);\n```\n\n## Connections\n\n```typescript\n// List all connections\nfor await (const conn of client.connections.list()) {\n  console.log(conn.name, conn.type);\n}\n\n// Get connection by name\nconst conn = await client.connections.get(\"my-connection\");\n\n// Get connection with credentials\nconst connWithCreds = await client.connections.getWithCredentials(\"my-connection\");\n\n// Get default connection by type\nconst defaultAzureOpenAI = await client.connections.getDefault(\"AzureOpenAI\", true);\n```\n\n## Deployments\n\n```typescript\n// List all deployments\nfor await (const deployment of client.deployments.list()) {\n  if (deployment.type === \"ModelDeployment\") {\n    console.log(deployment.name, deployment.modelName);\n  }\n}\n\n// Filter by publisher\nfor await (const d of client.deployments.list({ modelPublisher: \"OpenAI\" })) {\n  console.log(d.name);\n}\n\n// Get specific deployment\nconst deployment = await client.deployments.get(\"gpt-4o\");\n```\n\n## Datasets\n\n```typescript\n// Upload single file\nconst dataset = await client.datasets.uploadFile(\n  \"my-dataset\",\n  \"1.0\",\n  \"./data/training.jsonl\"\n);\n\n// Upload folder\nconst dataset = await client.datasets.uploadFolder(\n  \"my-dataset\",\n  \"2.0\",\n  \"./data/documents/\"\n);\n\n// Get dataset\nconst ds = await client.datasets.get(\"my-dataset\", \"1.0\");\n\n// List versions\nfor await (const version of client.datasets.listVersions(\"my-dataset\")) {\n  console.log(version);\n}\n\n// Delete\nawait client.datasets.delete(\"my-dataset\", \"1.0\");\n```\n\n## Indexes\n\n```typescript\nimport { AzureAISearchIndex } from \"@azure/ai-projects\";\n\nconst indexConfig: AzureAISearchIndex = {\n  name: \"my-index\",\n  type: \"AzureSearch\",\n  version: \"1\",\n  indexName: \"my-index\",\n  connectionName: \"search-connection\"\n};\n\n// Create index\nconst index = await client.indexes.createOrUpdate(\"my-index\", \"1\", indexConfig);\n\n// List indexes\nfor await (const idx of client.indexes.list()) {\n  console.log(idx.name);\n}\n\n// Delete\nawait client.indexes.delete(\"my-index\", \"1\");\n```\n\n## Key Types\n\n```typescript\nimport {\n  AIProjectClient,\n  AIProjectClientOptionalParams,\n  Connection,\n  ModelDeployment,\n  DatasetVersionUnion,\n  AzureAISearchIndex\n} from \"@azure/ai-projects\";\n```\n\n## Best Practices\n\n1. **Use getOpenAIClient()** - For responses, conversations, files, and vector stores\n2. **Version your agents** - Use `createVersion` for reproducible agent definitions\n3. **Clean up resources** - Delete agents, conversations when done\n4. **Use connections** - Get credentials from project connections, don't hardcode\n5. **Filter deployments** - Use `modelPublisher` filter to find specific models\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.",
  "applicable_domains": [
    "devops"
  ],
  "category": "devops",
  "invocation": [
    "/azure-ai-projects-ts"
  ],
  "authored_by": "claudeskills.in community",
  "source_url": "https://claudeskills.in/skill/azure-ai-projects-ts",
  "provenance": {
    "source": "claudeskills.in",
    "source_url": "https://claudeskills.in/skill/azure-ai-projects-ts",
    "license": "unknown",
    "imported_at": "2026-09-03",
    "notes": "Aggregated by claudeskills.in from community GitHub lists."
  },
  "tags": [
    "claudeskills",
    "devops"
  ],
  "lifecycle": "draft"
}