VS Code Skills Guide
Everything you need to know about Copilot skills: what they are, how to install them, and how to write great ones.
What is a VS Code Skill?
A VS Code Skill is a Markdown file that teaches GitHub Copilot how to behave in a specific domain. Instead of re-explaining your stack every conversation, you write the instructions once, store them in a structured file, and Copilot picks them up automatically.
Skills are especially powerful for:
- Teaching students a consistent workflow across a course
- Encoding team coding standards and conventions into Copilot
- Domain-specific tooling: Docker, pandas, hardware, cloud, etc.
- Saving time on repetitive explanations in every chat session
How It Works
When you open a chat with GitHub Copilot, the extension scans your configured skill folders. Each skill has a description — Copilot uses this to decide whether the skill is relevant to your current request.
If you type "help me containerize this app" and you have a docker-basics skill installed, Copilot automatically reads that skill and gives you expert Docker guidance — without you having to ask.
Where to Install Skills
Skills live as folders each containing a SKILL.md file. You can install them globally (available in all projects) or per repository (shared with your team).
Global Installation — available in every project
%USERPROFILE%\.copilot\skills\
├── docker-basics\
│ └── SKILL.md
└── pandas-data-analysis\
└── SKILL.md
~/.copilot/skills/
├── docker-basics/
│ └── SKILL.md
└── pandas-data-analysis/
└── SKILL.md
Repository-Level Installation — shared with your team
Place skills inside your project so anyone who clones the repo benefits from them automatically:
my-project/
└── .copilot/
└── skills/
├── docker-basics/
│ └── SKILL.md
└── pandas-data-analysis/
└── SKILL.md
Skill File Structure
A SKILL.md file has two parts: optional YAML frontmatter (between --- lines) and the instruction body.
---
name: My Skill
description: What this skill does. Include trigger keywords here.
Example: TRIGGER: docker, container, dockerfile.
version: 1.0.0
category: DevOps
tags: [docker, containers, devops]
---
# My Skill
## Overview
What this skill enables Copilot to do.
**Trigger words:** "keyword1", "keyword2", "keyword3"
---
## 1. Common Task Name
```python
# Concrete, copy-paste-ready code example
```
## Best Practices
- Be specific, not abstract
- Use real working code, not pseudocode
- List common pitfalls and warnings
Frontmatter fields
| Field | Required | Purpose |
|---|---|---|
name |
Yes | Human-readable display name |
description |
Yes | Used by Copilot to determine relevance. Include trigger keywords here. |
version |
Recommended | Semantic version string, e.g. 1.0.0 |
category |
No | DevOps, Data Science, Frontend, Backend, etc. |
tags |
No | Array of keywords for store search & discovery |
Writing a Good Skill
1. Write a precise description
The description is what Copilot reads to decide if your skill is relevant. It must be specific and keyword-rich.
"Helps with Python coding tasks and data work."
"Analyze tabular data with pandas: read CSV/Excel, filter rows, groupby aggregate, merge DataFrames, plot charts. TRIGGER: pandas, dataframe, read csv, groupby, pivot table."
2. List trigger words explicitly
In the very first paragraph of your skill body, list the exact words that should activate this skill:
**Trigger words:** "docker", "container", "dockerfile", "docker-compose", "docker run"
3. Use copy-paste-ready code
Don't describe what code should look like — show actual, runnable examples. Copilot learns patterns from examples, not prose.
4. Cover the 80% use cases
Focus on what your students hit most often. A skill with 5 excellent examples beats one with 20 mediocre ones. Depth over breadth.
5. End with a Best Practices section
The last section should list common pitfalls, security warnings, and conventions specific to your domain. This is what elevates a skill from good to great.
6. Test it before sharing
Install the skill, open a fresh Copilot chat, and ask a few questions using your trigger words. Make sure you get the expected, expert-level responses.
Do's & Don'ts
✅ Do
- Use concrete, runnable code examples
- List explicit trigger keywords in the description
- Version your skill — start at
1.0.0 - Keep each skill focused on one domain
- Add a "Best Practices" section at the end
- Test by actually chatting with Copilot after installing
- Update the description when you add new content
- Use clear headings to organize task sections
❌ Don't
- Write vague prose without concrete examples
- Put every topic into one giant skill file
- Include secrets, tokens, or credentials
- Use skills to bypass security policies
- Write instructions in first person ("I will…")
- Copy entire documentation pages verbatim
- Forget to test before sharing with students
- Leave the description empty or vague