{"id":"bd084cf5-709e-4d94-9b97-2a683289936a","shortId":"Ed8h3z","kind":"skill","title":"azure-ai-projects-ts","tagline":"High-level SDK for Azure AI Foundry projects with agents, connections, deployments, and evaluations.","description":"# 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.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","projects","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-azure-ai-projects-ts","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-projects-ts","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (7,043 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:28.393Z","embedding":null,"createdAt":"2026-04-18T21:32:00.197Z","updatedAt":"2026-04-24T18:50:28.393Z","lastSeenAt":"2026-04-24T18:50:28.393Z","tsv":"'/api/projects/':64 '/data/documents':535 '/data/training.jsonl':524 '1':582,600,618,633 '1.0':523,545,565 '2':643 '2.0':534 '3':653 '4':662 '4o':70,147,185,210,237,260,289,325,364,510 '5':673 'action':695 'agent':16,37,100,127,169,171,174,179,192,199,204,226,231,249,254,278,283,314,319,353,358,380,402,410,414,646,651,658 'agent.name':412,422 'agent.version':423 'ai':3,12,22,33,59,86,99,275,293,296 'aiprojectcli':74,84,623 'aiprojectclientoptionalparam':624 'aisearch':282 'aisearch-ag':281 'alway':378 'applic':689 'approv':377 'approxim':269 'ask':733 'assist':191 'authent':71 'auto':222 'await':135,142,160,175,200,227,250,279,315,354,384,390,405,417,420,430,444,455,467,477,492,506,518,529,540,549,560,595,605,613 'azur':2,11,21,32,58,104,274,292,295 'azure-ai-projects-t':1 'azure/ai-projects':46,76,571,630 'azure/identity':47,80 'azure/monitor-opentelemetry':53 'azureaisearchindex':569,574,628 'azureopenai':469 'azuresearch':580 'bash':43,50,57 'best':631 'bodi':409 'boundari':741 'capit':152 'citi':272 'clarif':735 'clean':654 'cleanup':416 'clear':708 'client':82,131 'client.agents':95 'client.agents.createversion':176,201,228,251,280,316,355 'client.agents.deleteversion':421 'client.connections':101 'client.connections.get':445 'client.connections.getdefault':468 'client.connections.getwithcredentials':456 'client.connections.list':434 'client.datasets':110 'client.datasets.delete':561 'client.datasets.get':541 'client.datasets.listversions':553 'client.datasets.uploadfile':519 'client.datasets.uploadfolder':530 'client.deployments':106 'client.deployments.get':507 'client.deployments.list':481,496 'client.evaluators':121 'client.getopenaiclient':136,385 'client.indexes':115 'client.indexes.createorupdate':596 'client.indexes.delete':614 'client.indexes.list':609 'client.memorystores':125 'code':196,203,215,218 'code-ag':202 'conn':432,443 'conn.name':436 'conn.type':437 'connect':17,38,103,300,424,428,439,448,450,459,462,590,625,664,669 'connectionid':302 'connectionnam':587 'connwithcr':454 'console.log':435,485,499,557,610 'const':81,133,140,158,173,198,225,248,277,313,352,382,388,403,431,442,453,465,478,493,504,516,527,538,550,572,593,606 'contain':220 'content':167,397 'convers':157,159,387,389,407,638,659 'conversation.id':408,419 'countri':270 'creat':96,116,170,386,591 'createvers':648 'credenti':452,666 'criteria':744 'd':494 'd.name':500 'dataset':114,511,517,522,528,533,537,544,556,564 'datasetversionunion':627 'default':461 'defaultazurecredenti':78,90 'defaultazureopenai':466 'definit':652 'delet':559,612,657 'deploy':18,39,66,109,471,475,479,503,505,675 'deployment.modelname':487 'deployment.name':486 'deployment.type':483 'describ':696,712 'descript':333 'done':661 'ds':539 'endpoint':61,88 'environ':55,724 'environment-specif':723 'evalu':20,41,123 'execut':214,691 'expert':729 'file':223,240,515,639 'filter':488,674,678 'find':680 'folder':526 'foundri':13,34 'franc':154 'func':318 'func-ag':317 'function':311,328,329 'generat':399 'get':129,331,334,438,449,460,501,536,665 'getopenaicli':635 'gpt':69,146,184,209,236,259,288,324,363,509 'gpt-4o':68,145,183,208,235,258,287,323,362,508 'group':92,93 'hardcod':672 'hello':168,398 'help':190 'high':7,28 'high-level':6,27 'id':244,301 'idx':607 'idx.name':611 'import':73,77,568,622 'index':120,298,303,307,566,578,586,592,594,599,603,617 'indexconfig':573,601 'indexnam':583 'input':148,738 'instal':42,45,52 'instruct':186,211 'interpret':197,219 'item':162,392 'key':619 'kind':180,205,232,255,284,320,359 'label':369 'level':8,29 'limit':700 'list':102,107,426,473,546,602 'locat':267,338,345,349 'manag':98,113,118,122,126 'match':709 'mcp':350,357,367,372 'mcp-agent':356 'mcp-server.example.com':375 'memori':128 'messag':164,394 'metric':124 'miss':746 'model':65,108,144,182,207,234,257,286,322,361,682 'modeldeploy':484,626 'modelpublish':497,677 'my-ag':177 'my-connect':446,457 'my-dataset':520,531,542,554,562 'my-index':305,576,584,597,615 'my-mcp':370 'name':67,304,330,411,441,575 'new':83,89 'npm':44,51 'object':343 'openai':130,498 'openaicli':134,383 'openaiclient.conversations.create':161,391 'openaiclient.conversations.delete':418 'openaiclient.responses.create':143,406 'opentelemetry/api':54 'oper':91 'output':718 'overview':699 'paramet':341 'permiss':739 'practic':632 'preview':265 'process.env.azure':85 'project':4,14,23,35,60,87,299,668 'prompt':181,206,233,256,285,321,360 'properti':344 'publish':490 'purpos':94 'queri':308 'refer':415 'reproduc':650 'requir':348,376,737 'resourc':105,656 'respons':139,141,400,404,637 'review':730 'role':165,395 'run':379 'safeti':740 'scope':711 'sdk':9,24,30 'search':119,224,230,241,247,264,276,294,297,589 'search-ag':229 'search-connect':588 'seattl':273 'server':368,373 'services.ai.azure.com':63 'services.ai.azure.com/api/projects/':62 'simpl':310 'singl':514 'skill':687,703 'skill-azure-ai-projects-ts' 'source-sickn33' 'specif':502,681,725 'stop':731 'store':243,642 'strict':339 'string':347 'substitut':721 'success':743 'task':707 'test':727 'tool':194,216,238,261,290,312,326,351,365 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'trace':49 'treat':716 'true':340,470 'ts':5 'type':163,217,221,239,262,268,291,309,327,342,346,366,393,413,464,579,620 'typescript':26,72,132,172,195,381,425,472,512,567,621 'upload':111,513,525 'url':374 'us':271 'use':137,155,401,634,647,663,676,685,701 'user':166,266,396 'valid':726 'variabl':56 'vector':242,641 'vectorstoreid':245 'version':547,551,558,581,644 'weather':332,335 'web':246,253,263 'web-ag':252 'workflow':693","prices":[{"id":"22a3691d-7872-4a2d-b11f-d0a1583c02c5","listingId":"bd084cf5-709e-4d94-9b97-2a683289936a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:32:00.197Z"}],"sources":[{"listingId":"bd084cf5-709e-4d94-9b97-2a683289936a","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-ai-projects-ts","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-projects-ts","isPrimary":false,"firstSeenAt":"2026-04-18T21:32:00.197Z","lastSeenAt":"2026-04-24T18:50:28.393Z"}],"details":{"listingId":"bd084cf5-709e-4d94-9b97-2a683289936a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-ai-projects-ts","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"d9d1fc052f9ecf067ce917d33fed91534a2c03d1","skill_md_path":"skills/azure-ai-projects-ts/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-projects-ts"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-ai-projects-ts","description":"High-level SDK for Azure AI Foundry projects with agents, connections, deployments, and evaluations."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-projects-ts"},"updatedAt":"2026-04-24T18:50:28.393Z"}}