DEV Community

Cover image for Agent Skills and how to use them
Majdi Zlitni
Majdi Zlitni

Posted on

Agent Skills and how to use them

If your AI assistant keeps giving generic, unreliable answers, the problem is not the model. It is the missing structure around it. That is exactly what Agent Skills solve.

Modern LLMs are strong enough to handle complex tasks. The real issue is that they are working without stable context, rules, or domain-specific instructions that guide how they should behave in your environment.

This is where Agent Skills change the equation.

Agents

Table of Contents


Agent Skills Overview

Agent skills are instructions and resources that a model can use for a given task to improve its output.

Working agent

Agent skills are designed to work with modern AI coding assistants and LLM-based agents. While our current implementation leverages GitHub Copilot across tools like VS Code and CLI workflows, the architecture remains provider-agnostic and can be adapted to any compatible AI platform.

You can create your own skills so an agent can perform tasks in a specific way.

You can use both skills and custom instructions to teach Copilot how to work in your repository and how to perform specific tasks.


Why Agent Skills?

Agents are massively capable, but often they don't have the needed context for more reliable output. Using skills we can solve this by packaging user-specific context into a portable version an agent can load on demand so agents can be:

Domain expertise: Capture specialized knowledge as reusable instructions and resources.

Repeatable workflows: Turn multi-step tasks into consistent, auditable procedures.

Cross-product reuse: Build a skill once and use it across any skills-compatible agent.

Brain to Brain


How Do Agent Skills Work?

Agents load skills in three stages:

Discovery: At startup, agents load only the name and description of each available skill, just enough to know when it might be relevant.

Activation: When a task matches a skill's description, the agent reads the full SKILL.md instructions into context.

Execution: The agent follows the instructions, optionally executing bundled code or loading referenced files as needed.

Full instructions load only when a task calls for them, so agents can keep many skills on hand with only a small context footprint.

Confused Pulp Fiction


Start from real expertise

A common pitfall in skill creation is asking an LLM to generate a skill without providing domain-specific context, relying solely on the LLM’s general training knowledge. The result is vague, generic procedures (“handle errors appropriately,” “follow best practices for authentication”) rather than the specific API patterns, edge cases, and project conventions that make a skill valuable.

Effective skills are grounded in real expertise. The key is feeding domain-specific context into the creation process.

feeding


Project skills vs personal skills

Project skills, stored in your repository (.github/skills, .claude/skills, or .agents/skills)

Personal skills, stored in your home directory and shared across projects (~/.copilot/skills or ~/.agents/skills)


How Copilot uses agent skills

When performing tasks, Copilot will decide when to use your skills based on your prompt and the skill's description.

When Copilot chooses to use a skill, the SKILL.md file will be injected in the agent's context, giving the agent access to your instructions. It can then follow those instructions and use any scripts or examples you may have included in the skill's directory.

For Copilot code review on GitHub:

If you want to ensure Copilot code review uses a skill, place it in a review-focused directory like code-review.

Skills in .github/skills can also be picked up automatically when relevant.


Creating and adding a skill

To create an agent skill, you write a SKILL.md file and optionally add supporting files like scripts or examples.

Create a skills directory in one of these locations:

Project skills:

.github/skills  
.claude/skills  
.agents/skills  
Enter fullscreen mode Exit fullscreen mode

Personal skills:

~/.copilot/skills  
~/.agents/skills
Enter fullscreen mode Exit fullscreen mode

Each skill must live in its own folder:
.github/skills/webapp-testing

Folder names must be lowercase and use hyphens.

Inside it, create SKILL.md.


Important

Skill files must be named SKILL.md.

It must include:

YAML frontmatter:

- name (required): lowercase identifier matching folder name
- description (required): when the skill should be used
- license (optional)
Enter fullscreen mode Exit fullscreen mode

Markdown body:

- Instructions
- Examples
- Guidelines for the agent
Enter fullscreen mode Exit fullscreen mode

Example SKILL.md file

---
name: resume-update
description: Use this skill when the user asks to update, rewrite, or tailor a resume for a job application.
---

# Resume Update Skill

## Instructions
- Rewrite resumes based on job description
- Improve clarity and structure
- Use concise bullet points
- Highlight relevant skills and achievements
- Keep it ATS-friendly

## Example
User: Update my resume for a .NET backend role  
Assistant: Returns a rewritten resume emphasizing .NET, APIs, and backend experience.

Enter fullscreen mode Exit fullscreen mode

Triggering a skill in VS Code

Option 1: Natural language

Just ask normally:

Help me update my resume for a .NET backend role

If skill matches description → it auto-loads


Option 2: Slash command

/resume-update
/webapp-testing
/github-actions-debugging

Enter fullscreen mode Exit fullscreen mode

You can also add extra context:

/resume-update for senior backend role


SKILL.md structure

---
name: skill-name
description: When and why this skill should be used
---

Then markdown instructions:

### Instructions
- Step 1
- Step 2
- Step 3
Enter fullscreen mode Exit fullscreen mode

Skills vs custom instructions

We recommend using custom instructions for simple instructions relevant to almost every task (for example information about your repository's coding standards), and skills for more detailed instructions that Copilot should only access when relevant.

Top comments (0)