microsoft/skill-creator
Guide for creating effective GitHub Copilot skills (.github/skills/) in this repository. Use when creating a new skill, updating an existing skill, or when asked about skill structure, format, or best practices for the vscode-documentdb project.
npx skills add https://github.com/microsoft/skills --skill skill-creator
Create and maintain skills in .github/skills/ that extend GitHub Copilot's capabilities with project-specific knowledge.
Skills are SKILL.md files that provide specialized, procedural knowledge that Copilot doesn't inherently have. They turn Copilot from a general assistant into a domain expert for specific tasks in this codebase.
Skills provide:
.github/skills/
└── skill-name/
├── SKILL.md (required — frontmatter + instructions)
└── references/ (optional — detailed docs, loaded on demand)
---
name: my-skill-name
description: What this skill does and WHEN to use it. Include trigger words and scenarios. This is the primary mechanism for Copilot to decide whether to load the skill body.
---
# Skill Title
Concise instructions for using this skill.
## When to Use
- Bullet list of triggering scenarios
## Core Content
(workflow, patterns, examples)
After creating the SKILL.md, register it in .github/copilot-instructions.md under the <skills> section:
<skill>
<name>my-skill-name</name>
<description>Same or similar description as in SKILL.md frontmatter</description>
<file>${workspaceFolder}\.github\skills\my-skill-name\SKILL.md</file>
</skill>
> Note: Replace ${workspaceFolder} with the absolute path to the repository root on your machine (e.g. \home\user\repos\vscode-documentdb). VS Code resolves skill file paths at runtime and currently requires absolute paths.
Copilot reads skill metadata (name + description) to decide when to trigger. The SKILL.md body is loaded only after triggering.
The context window is shared with conversation history, other instructions, and user requests. Challenge each paragraph: "Does Copilot already know this?" and "Does this justify its token cost?"
Use a three-level loading system:
For skills with multiple variants or extensive reference material, keep the core workflow in SKILL.md and move details to references/:
## Advanced Topics
- **Detailed format spec**: See [FORMAT.md](./FORMAT.md)
- **Migration patterns**: See [references/migration.md](./references/migration.md)
| Freedom Level | When | Example |
| ----------------------------------- | ------------------------- | ---------------------------- |
| High (text guidance) | Multiple valid approaches | Architecture recommendations |
| Medium (patterns with examples) | Preferred pattern exists | tRPC router creation |
| Low (exact steps) | Fragile, error-prone | Release note formatting |
Identify concrete scenarios the skill addresses:
For each scenario, determine:
.github/skills/{skill-name}/SKILL.mdname and description (description is the trigger — be comprehensive about when to use).github/copilot-instructions.md.github/copilot-instructions.md and .github/instructions/).github/instructions/ files| Skill | Purpose |
| --------------------------- | ------------------------------------------------------ |
| writing-release-notes | Release notes and changelog generation |
| accessibility-aria-expert | Accessibility issues in React/Fluent UI webviews |
| webview-trpc-messaging | tRPC communication between extension host and webviews |
---
name: my-pattern
description: Implements the XYZ pattern for this codebase. Use when creating new XYZ instances, modifying existing XYZ behavior, or debugging XYZ-related issues.
---
# XYZ Pattern
## When to Use
- Creating a new XYZ
- Modifying XYZ behavior
- Debugging XYZ issues
## Pattern
\`\`\`typescript
// core pattern example
\`\`\`
## Common Pitfalls
- Don't do X because Y
- Always do Z when W
Take microsoft/skill-creator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.