Microsoft skill creator
Create agent skills for Microsoft technologies using Learn MCP tools. Use when users want to create a skill that teaches agents about any Microsoft technology, library, framework, or service (Azure, .NET, M365, VS Code, Bicep, etc.). Investigates topics deeply, then generates a hybrid skill storing essential knowledge locally while enabling dynamic deeper investigation.From its SKILL.md
npx -y skills add github/awesome-copilot --skill microsoft-skill-creatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
8.3 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Microsoft Skill Creator
Create hybrid skills for Microsoft technologies that store essential knowledge locally while enabling dynamic Learn MCP lookups for deeper details.
About Skills
Skills are modular packages that extend agent capabilities with specialized knowledge and workflows. A skill transforms a general-purpose agent into a specialized one for a specific domain.
Skill Structure
skill-name/
├── SKILL.md (required) # Frontmatter (name, description) + instructions
├── references/ # Documentation loaded into context as needed
├── sample_codes/ # Working code examples
└── assets/ # Files used in output (templates, etc.)
Key Principles
- Frontmatter is critical:
nameanddescriptiondetermine when the skill triggers—be clear and comprehensive - Concise is key: Only include what agents don't already know; context window is shared
- No duplication: Information lives in SKILL.md OR reference files, not both
Learn MCP Tools
| Tool | Purpose | When to Use |
|---|---|---|
microsoft_docs_search | Search official docs | First pass discovery, finding topics |
microsoft_docs_fetch | Get full page content | Deep dive into important pages |
microsoft_code_sample_search | Find code examples | Get implementation patterns |
CLI Alternative
If the Learn MCP server is not available, use the mslearn CLI from a terminal or shell (for example, Bash, PowerShell, or cmd) instead:
# Run directly (no install needed)
npx @microsoft/learn-cli search "semantic kernel overview"
# Or install globally, then run
npm install -g @microsoft/learn-cli
mslearn search "semantic kernel overview"
| MCP Tool | CLI Command |
|---|---|
microsoft_docs_search(query: "...") | mslearn search "..." |
microsoft_code_sample_search(query: "...", language: "...") | mslearn code-search "..." --language ... |
microsoft_docs_fetch(url: "...") | mslearn fetch "..." |
Generated skills should include this same CLI fallback table so agents can use either path.
Creation Process
Step 1: Investigate the Topic
Build deep understanding using Learn MCP tools in three phases:
Phase 1 - Scope Discovery:
microsoft_docs_search(query="{technology} overview what is")
microsoft_docs_search(query="{technology} concepts architecture")
microsoft_docs_search(query="{technology} getting started tutorial")
Phase 2 - Core Content:
microsoft_docs_fetch(url="...") # Fetch pages from Phase 1
microsoft_code_sample_search(query="{technology}", language="{lang}")
Phase 3 - Depth:
microsoft_docs_search(query="{technology} best practices")
microsoft_docs_search(query="{technology} troubleshooting errors")
Investigation Checklist
After investigating, verify:
- Can explain what the technology does in one paragraph
- Identified 3-5 key concepts
- Have working code for basic usage
- Know the most common API patterns
- Have search queries for deeper topics
Step 2: Clarify with User
Present findings and ask:
- "I found these key areas: [list]. Which are most important?"
- "What tasks will agents primarily perform with this skill?"
- "Which programming language should code samples prioritize?"
Step 3: Generate the Skill
Use the appropriate template from skill-templates.md:
| Technology Type | Template |
|---|---|
| Client library, NuGet/npm package | SDK/Library |
| Azure resource | Azure Service |
| App development framework | Framework/Platform |
| REST API, protocol | API/Protocol |
Generated Skill Structure
{skill-name}/
├── SKILL.md # Core knowledge + Learn MCP guidance
├── references/ # Detailed local documentation (if needed)
└── sample_codes/ # Working code examples
├── getting-started/
└── common-patterns/
Step 4: Balance Local vs Dynamic Content
Store locally when:
- Foundational (needed for any task)
- Frequently accessed
- Stable (won't change)
- Hard to find via search
Keep dynamic when:
- Exhaustive reference (too large)
- Version-specific
- Situational (specific tasks only)
- Well-indexed (easy to search)
Content Guidelines
| Content Type | Local | Dynamic |
|---|---|---|
| Core concepts (3-5) | ✅ Full | |
| Hello world code | ✅ Full | |
| Common patterns (3-5) | ✅ Full | |
| Top API methods | Signature + example | Full docs via fetch |
| Best practices | Top 5 bullets | Search for more |
| Troubleshooting | Search queries | |
| Full API reference | Doc links |
Step 5: Validate
- Review: Is local content sufficient for common tasks?
- Test: Do suggested search queries return useful results?
- Verify: Do code samples run without errors?
Common Investigation Patterns
For SDKs/Libraries
"{name} overview" → purpose, architecture
"{name} getting started quickstart" → setup steps
"{name} API reference" → core classes/methods
"{name} samples examples" → code patterns
"{name} best practices performance" → optimization
For Azure Services
"{service} overview features" → capabilities
"{service} quickstart {language}" → setup code
"{service} REST API reference" → endpoints
"{service} SDK {language}" → client library
"{service} pricing limits quotas" → constraints
For Frameworks/Platforms
"{framework} architecture concepts" → mental model
"{framework} project structure" → conventions
"{framework} tutorial walkthrough" → end-to-end flow
"{framework} configuration options" → customization
Example: Creating a "Semantic Kernel" Skill
Investigation
microsoft_docs_search(query="semantic kernel overview")
microsoft_docs_search(query="semantic kernel plugins functions")
microsoft_code_sample_search(query="semantic kernel", language="csharp")
microsoft_docs_fetch(url="https://learn.microsoft.com/semantic-kernel/overview/")
Generated Skill
semantic-kernel/
├── SKILL.md
└── sample_codes/
├── getting-started/
│ └── hello-kernel.cs
└── common-patterns/
├── chat-completion.cs
└── function-calling.cs
Generated SKILL.md
---
name: semantic-kernel
description: Build AI agents with Microsoft Semantic Kernel. Use for LLM-powered apps with plugins, planners, and memory in .NET or Python.
---
# Semantic Kernel
Orchestration SDK for integrating LLMs into applications with plugins, planners, and memory.
## Key Concepts
- **Kernel**: Central orchestrator managing AI services and plugins
- **Plugins**: Collections of functions the AI can call
- **Planner**: Sequences plugin functions to achieve goals
- **Memory**: Vector store integration for RAG patterns
## Quick Start
See [getting-started/hello-kernel.cs](sample_codes/getting-started/hello-kernel.cs)
## Learn More
| Topic | How to Find |
|-------|-------------|
| Plugin development | `microsoft_docs_search(query="semantic kernel plugins custom functions")` |
| Planners | `microsoft_docs_search(query="semantic kernel planner")` |
| Memory | `microsoft_docs_fetch(url="https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-memory")` |
## CLI Alternative
If the Learn MCP server is not available, use the `mslearn` CLI instead:
| MCP Tool | CLI Command |
|----------|-------------|
| `microsoft_docs_search(query: "...")` | `mslearn search "..."` |
| `microsoft_code_sample_search(query: "...", language: "...")` | `mslearn code-search "..." --language ...` |
| `microsoft_docs_fetch(url: "...")` | `mslearn fetch "..."` |
Run directly with `npx @microsoft/learn-cli <command>` or install globally with `npm install -g @microsoft/learn-cli`.
What ships with it: 1 file
7.7 KB alongside SKILL.md
references/
- skill-templates.md7.7 KB
Gives 0 of the 12 instructions most skill authoring skills give in ~1.8k tokens
Counted across 408 of the 422 authors here whose files we hold, read 2026-09-06
- Keep SKILL.md under 500 linesin 118 of 408, across 104 files
- Write skill instructions in imperative formin 44 of 408, across 37 files
- Move detailed reference material into references filesin 41 of 408, across 34 files
- Run init_skill.py to initialize new skillsin 40 of 408, across 33 files
- Draft assertions while test runs are in progressin 32 of 408, across 25 files
- Keep description under 1024 charactersin 31 of 408, across 18 files
- Run package_skill.py once the skill is completein 29 of 408, across 23 files
- Spawn with-skill and baseline runs in the same turnin 28 of 408, across 21 files
- Test added scripts by actually running themin 27 of 408, across 21 files
- Follow the creation steps in orderin 24 of 408, across 17 files
- Generate the eval viewer before evaluating outputs yourselfin 24 of 408, across 17 files
- Write the description in third personin 24 of 408, across 18 files
Said here and by no other author read
- Investigate the topic in three phases before generating
- Clarify priorities and language with the user
- Keep exhaustive or version-specific content dynamic
- Write clear, comprehensive frontmatter
- Keep skill content concise
- Test suggested search queries return useful results
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.