docs/users/features/skills.md
Create, manage, and share Skills to extend Qwen Code's capabilities.
This guide shows you how to create, use, and manage Agent Skills in Qwen Code. Skills are modular capabilities that extend the model's effectiveness through organized folders containing instructions (and optionally scripts/resources).
Agent Skills package expertise into discoverable capabilities. Each Skill consists of a SKILL.md file with instructions that the model can load when relevant, plus optional supporting files like scripts and templates.
Skills are model-invoked — the model autonomously decides when to use them based on your request and the Skill's description. This is different from slash commands, which are user-invoked (you explicitly type /command).
If you want to invoke a Skill explicitly, use the /skills slash command:
/skills <skill-name>
Use autocomplete to browse available Skills and descriptions.
Skills are stored as directories containing a SKILL.md file.
Personal Skills are available across all your projects. Store them in ~/.qwen/skills/:
mkdir -p ~/.qwen/skills/my-skill-name
Use personal Skills for:
Project Skills are shared with your team. Store them in .qwen/skills/ within your project:
mkdir -p .qwen/skills/my-skill-name
Use project Skills for:
Project Skills can be checked into git and automatically become available to teammates.
SKILL.mdCreate a SKILL.md file with YAML frontmatter and Markdown content:
---
name: your-skill-name
description: Brief description of what this Skill does and when to use it
---
# Your Skill Name
## Instructions
Provide clear, step-by-step guidance for Qwen Code.
## Examples
Show concrete examples of using this Skill.
Qwen Code currently validates that:
name is a non-empty stringdescription is a non-empty stringRecommended conventions (not strictly enforced yet):
namedescription specific: include both what the Skill does and when to use it (key words users will naturally mention)Create additional files alongside SKILL.md:
my-skill/
├── SKILL.md (required)
├── reference.md (optional documentation)
├── examples.md (optional examples)
├── scripts/
│ └── helper.py (optional utility)
└── templates/
└── template.txt (optional template)
Reference these files from SKILL.md:
For advanced usage, see [reference.md](reference.md).
Run the helper script:
```bash
python scripts/helper.py input.txt
```
Qwen Code discovers Skills from:
~/.qwen/skills/.qwen/skills/Extensions can provide custom skills that become available when the extension is enabled. These skills are stored in the extension's skills/ directory and follow the same format as personal and project skills.
Extension skills are automatically discovered and loaded when the extension is installed and enabled.
To see which extensions provide skills, check the extension's qwen-extension.json file for a skills field.
To view available Skills, ask Qwen Code directly:
What Skills are available?
Or inspect the filesystem:
# List personal Skills
ls ~/.qwen/skills/
# List project Skills (if in a project directory)
ls .qwen/skills/
# View a specific Skill's content
cat ~/.qwen/skills/my-skill/SKILL.md
After creating a Skill, test it by asking questions that match your description.
Example: if your description mentions "PDF files":
Can you help me extract text from this PDF?
The model autonomously decides to use your Skill if it matches the request — you don't need to explicitly invoke it.
If Qwen Code doesn't use your Skill, check these common issues:
Too vague:
description: Helps with documents
Specific:
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDFs, forms, or document extraction.
~/.qwen/skills/<skill-name>/SKILL.md.qwen/skills/<skill-name>/SKILL.md# Personal
ls ~/.qwen/skills/my-skill/SKILL.md
# Project
ls .qwen/skills/my-skill/SKILL.md
Invalid YAML prevents the Skill metadata from loading correctly.
cat SKILL.md | head -n 15
Ensure:
--- on line 1--- before Markdown contentRun Qwen Code with debug mode to see Skill loading errors:
qwen --debug
You can share Skills through project repositories:
.qwen/skills/git add .qwen/skills/
git commit -m "Add team Skill for PDF processing"
git push
Edit SKILL.md directly:
# Personal Skill
code ~/.qwen/skills/my-skill/SKILL.md
# Project Skill
code .qwen/skills/my-skill/SKILL.md
Changes take effect the next time you start Qwen Code. If Qwen Code is already running, restart it to load the updates.
Delete the Skill directory:
# Personal
rm -rf ~/.qwen/skills/my-skill
# Project
rm -rf .qwen/skills/my-skill
git commit -m "Remove unused Skill"
One Skill should address one capability:
Help the model discover when to use Skills by including specific triggers:
description: Analyze Excel spreadsheets, create pivot tables, and generate charts. Use when working with Excel files, spreadsheets, or .xlsx data.