Guide for creating effective skills for AI coding agents working with Azure SDKs and Microsoft Foundry services. Use when creating new skills or updating existing skills.
Guide for creating skills that extend AI agent capabilities, with emphasis on Azure SDKs and Microsoft Foundry.
Required Context: When creating SDK or API skills, users MUST provide the SDK package name, documentation URL, or repository reference for the skill to be based on.
Skills are modular knowledge packages that transform general-purpose agents into specialized experts:
The context window is a shared resource. Challenge each piece: "Does this justify its token cost?"
Default assumption: Agents are already capable. Only add what they don't already know.
Azure SDKs change constantly. Skills should instruct agents to verify documentation:
## Before Implementation
Search `microsoft-docs` MCP for current API patterns:
- Query: "[SDK name] [operation] python"
- Verify: Parameters match your installed SDK version
Match specificity to task fragility:
| Freedom | When | Example |
|---|---|---|
| High | Multiple valid approaches | Text guidelines |
| Medium | Preferred pattern with variation | Pseudocode |
| Low | Must be exact | Specific scripts |
Skills load in three levels:
Keep SKILL.md under 500 lines. Split into reference files when approaching this limit.
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter (name, description)
│ └── Markdown instructions
└── Bundled Resources (optional)
├── scripts/ — Executable code
├── references/ — Documentation loaded as needed
└── assets/ — Output resources (templates, images)
name and description. The description is the trigger mechanism.| Type | Purpose | When to Include |
|---|---|---|
scripts/ | Deterministic operations | Same code rewritten repeatedly |
references/ | Detailed patterns | API docs, schemas, detailed guides |
assets/ | Output resources | Templates, images, boilerplate |
Don't include: README.md, CHANGELOG.md, installation guides.
When creating skills for Azure SDKs, follow these patterns consistently.
Follow this structure (based on existing Azure SDK skills):
# SDK Namepip install, npm install, etc.DefaultAzureCredential/references/*.mdAlways use DefaultAzureCredential:
# Python
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
client = ServiceClient(endpoint, credential)
// C#
var credential = new DefaultAzureCredential();
var client = new ServiceClient(new Uri(endpoint), credential);
// Java
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
ServiceClient client = new ServiceClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
// TypeScript
import { DefaultAzureCredential } from "@azure/identity";
const credential = new DefaultAzureCredential();
const client = new ServiceClient(endpoint, credential);
Never hardcode credentials. Use environment variables.
Azure SDKs use consistent verbs across all languages:
| Verb | Behavior |
|---|---|
create | Create new; fail if exists |
upsert | Create or update |
get | Retrieve; error if missing |
list | Return collection |
delete | Succeed even if missing |
begin | Start long-running operation |
See references/azure-sdk-patterns.md for detailed patterns including:
ItemPaged, LROPoller, context managers, Sphinx docstringsResponse<T>, Pageable<T>, Operation<T>, mocking supportPagedIterable/PagedFlux, Reactor typesPagedAsyncIterableIterator, AbortSignal, browser considerations---