SKILL.md that teaches Qoder CLI how to do something specific: reviewing PRs using your team’s standards, generating commit messages in your preferred format, or querying your company’s database schema. When you ask Qoder CLI something that matches a Skill’s purpose, Qoder CLI automatically applies it.
Key features:
- Intelligent invocation: The model autonomously decides when to use a Skill based on user requests and Skill descriptions
- Modular design: Each Skill focuses on solving a specific type of task
- Flexible extension: Supports both user-level and project-level custom Skills
Quick Start
This example creates a Skill for generating API documentation.1. Create the Skill directory
Create a directory in your personal Skills folder. Personal Skills are available across all your projects. You can also create project Skills in.qoder/skills/ to share with your team.
2. Write SKILL.md
Every Skill needs aSKILL.md file, starting with YAML metadata between --- markers that must include name and description, followed by Markdown instructions.
Create ~/.qoder/skills/api-doc-generator/SKILL.md:
3. Load and verify the Skill
Skills are automatically loaded in new sessions after creation or modification. Verify successful loading:api-doc-generator with its description.
4. Test the Skill
Open an API route file in your project and ask a question matching the Skill’s description:api-doc-generator Skill and generates relevant API documentation. If not triggered, try rephrasing using keywords from the description.
How Skills Work
Skills can be loaded via command or automatically invoked by the model. The model decides which Skill to use based on request content—no explicit specification needed.- Discovery: At startup, Qoder CLI loads each Skill’s name and description, enabling fast startup while letting the model understand each Skill’s applicable scenarios.
- Activation: When a request matches a Skill’s description, the model requests to use that Skill. After showing a confirmation prompt, it loads the full
SKILL.md. Write descriptions that include keywords users commonly use. - Execution: The model executes according to Skill instructions, loading referenced files or running scripts as needed.
Where Skills live
Storage location determines a Skill’s availability:| Location | Path | Scope | Use cases |
|---|---|---|---|
| Personal | ~/.qoder/skills/{skill-name}/SKILL.md | All projects for current user | Personal workflows, experimental Skills, personal tools |
| Project | .qoder/skills/{skill-name}/SKILL.md | Current project only | Team workflows, project-specific knowledge, shared scripts |
Skills vs Commands
Core difference: Skills are triggered automatically based on your request, while Commands require you to type/command-name explicitly.
| Feature | Skill | Command |
|---|---|---|
| Trigger method | Automatic (model-based) or manual (/skill-name) | Manual (/command-name) |
| Primary use | Domain expertise, complex workflows | Quick preset tasks |
| Storage | skills/ directory | commands/ directory |
| Permission | Required | Not required |
Note: Internally, Skills convert to a special Command type and share the same execution mechanism.
When to Use Skills
Use Skills for:- Complex specialized tasks: Workflows requiring domain expertise (code review, PDF processing, API design)
- Standardized processes: Tasks following fixed steps (commit conventions, deployment flows)
- Team knowledge sharing: Package best practices for sharing
- Repetitive work: Frequently executed tasks requiring specialized guidance
- Simple, quick operations
- Tasks requiring explicit user triggering
- Tasks not needing complex prompt guidance
Create a Skill
Choose Storage Location
| Location | Path | Applies to |
|---|---|---|
| Personal | ~/.qoder/skills/{skill-name}/SKILL.md | All projects for current user |
| Project | .qoder/skills/{skill-name}/SKILL.md | Current project only |
Tip: Project Skills override Personal Skills with the same name.Create the directory:
Organize Directory Structure
Directory structure example:SKILL.md for progressive disclosure:
Write SKILL.md
CreateSKILL.md with YAML frontmatter and Markdown content:
| Field | Required | Description | Constraints |
|---|---|---|---|
name | Yes | Unique Skill identifier | Lowercase letters, numbers, hyphens only; max 64 chars |
description | Yes | Functional description for model to determine when to use | Max 1024 chars |
Important: The description field is critical for the model to discover when to use your Skill. Include what it does and when to use it. See “Best Practices” section for details.
Use Skills
Automatic Trigger
Describe your need directly, the model automatically determines whether to use a Skill:log-analyzer Skill.
Manual Trigger
Use/skill-name to trigger manually:
View Available Skills
In CLI:Update and Delete
Update a Skill
Edit SKILL.md directly. Changes take effect when you next start Qoder CLI. If the CLI is already running, restart to load updates.Delete a Skill
Delete the Skill directory:Warning: Deleting a Skill directory permanently removes all files with no recovery.
Best Practices
Keep Skills Focused
Each Skill should focus on one specific domain or task type. Recommended:log-analyzer- Log analysissecurity-auditor- Security auditingdatabase-migrator- Database migration
coding-helper- Too broad
Write Clear Descriptions
Thedescription should include: what the Skill does, when to use it, and key trigger words.
Comparison:
Test Before Sharing
Before sharing, ensure:- Skill triggers in expected scenarios
- Instructions are clear
- Common edge cases are covered