
About
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.
name: skill-creator-ms description: "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." risk: unknown source: community date_added: "2026-02-27"
Skill Creator
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.
About Skills
Skills are modular knowledge packages that transform general-purpose agents into specialized experts:
- Procedural knowledge — Multi-step workflows for specific domains
- SDK expertise — API patterns, authentication, error handling for Azure services
- Domain context — Schemas, business logic, company-specific patterns
- Bundled resources — Scripts, references, templates for complex tasks
Core Principles
1. Concise is Key
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.
2. Fresh Documentation First
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
3. Degrees of Freedom
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 |
4. Progressive Disclosure
Skills load in three levels:
- Metadata (~100 words) — Always in context
- SKILL.md body (<5k words) — When skill triggers
- References (unlimited) — As needed
Keep SKILL.md under 500 lines. Split into reference files when approaching this limit.
Skill Structure
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)
SKILL.md
- Frontmatter:
nameanddescription. The description is the trigger mechanism. - Body: Instructions loaded only after triggering.
Bundled Resources
| 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.
Creating Azure SDK Skills
When creating skills for Azure SDKs, follow these patterns consistently.
Skill Section Order
Follow this structure (based on existing Azure SDK skills):
- Title —
# SDK Name - Installation —
pip install,npm install, etc. - Environment Variables — Required configuration
- Authentication — Always
DefaultAzureCredential - Core Workflow — Minimal viable example
- Feature Tables — Clients, methods, tools
- Best Practices — Numbered list
- Reference Links — Table linking to
/references/*.md
Authentication Pattern (All Languages)
Always 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.
Standard Verb Patterns
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 |
Language-Specific Patterns
See references/azure-sdk-patterns.md for detailed patterns including:
- Python:
ItemPaged,LROPoller, context managers, Sphinx docstrings - .NET: `R