Agent Skills
Command Code supports Agent Skills — a lightweight, open standard for extending AI agents with specialized knowledge and workflows.
Agent Skills are modular, self-contained instruction sets that teach Command Code how to perform specific tasks. Each skill is a folder containing a skill.md file with metadata and step-by-step guidance.
Think of skills as expert playbooks that Command Code can reference when needed. Instead of explaining the same process repeatedly, you define it once in a skill, and Command Code automatically applies it when needed.
Skills use progressive disclosure to manage context efficiently:
- Discovery: Command Code loads only the name, description, and file path of each skill at startup.
- Activation: When a task matches a skill or invoked directly with
/skill-name, Command Code reads its fullSKILL.mdinstructions. - Execution: Command Code follows the instructions, optionally loading referenced files as needed
This keeps Command Code fast while giving access to more context on demand.
Let's create your first user-level and project-level skill.
User-level skill
Create a global code review skill
Project-level skill
Create a project-specific API skill
Using .agents/skills/ instead
If you already have skills in .agents/skills/, Command Code picks them up automatically. No migration needed.
.commandcode/skills/ takes priority on name conflicts. Skills from .agents/ show a [.agents] badge in the /skills UI.
Command Code fully implements the Agent Skills open standard with two storage locations:
User-level skills (global)
Stored in ~/.commandcode/skills/ and available across all your projects.
Perfect for:
- General development workflows
- Exploratory workflows
- Cross-project best practices
Project-level skills (local)
Stored in .commandcode/skills/ within your project and only available in that project.
Perfect for:
- Project-specific patterns
- Team conventions
- Architecture guidelines
- Domain-specific workflows
.agents/skills/ compatibility
Command Code also discovers skills from .agents/skills/ (project) and ~/.agents/skills/ (user). If another tool already stores your skills under .agents/, they load automatically and show a [.agents] badge in the /skills menu.
Priority: .commandcode/skills/ wins on name conflicts. If the same skill exists in both, the .commandcode/ version is used and the .agents/ version is skipped. See Selection priority for the full four-way order.
Discovery: Command Code walks up to 10 directory levels from your working directory to find .agents/skills/, stopping at your home directory. This keeps ~/.agents/skills/ from being picked up as a project-level source.
Selection priority
Skills, custom commands, and built-ins all share the same / menu. Skills from any of these four locations are checked in this order:
.commandcode/skills/(project).agents/skills/(project)~/.commandcode/skills/(user)~/.agents/skills/(user)
Put simply: project-level always trumps user-level, and within the same level .commandcode/ is favored over .agents/.
What happens on a collision. When a skill name matches a built-in or a custom command:
- Typing
/<name>always resolves to the higher-precedence owner — the skill is not invoked. - The skill still appears in the
/menu with a[skill]badge and a— shadowed by /<owner>note, so you can see it exists and understand why/<name>runs the built-in command instead. Command Code prefers visibility with a marker over silently dropping the row.
Use the /skills slash command to view all your skills:
Open skills menu
This opens an interactive menu showing:
- All user-level skills with
(user)label - All project-level skills with
(project)label - Skills from
.agents/skills/(user or project) show a dim[.agents]badge - Use arrow keys to navigate
- Press Enter to open any skill in your editor (or toggle it — see Enable or disable skills)
- Press Esc to close and return to your session
Every installed skill is also surfaced as a first-class slash command in the / menu. If you install a skill named pr-desc, you will see /pr-desc, sorted after built-ins and any custom commands in the slash menu.
If a skill name collides with a built-in or a custom command, the skill still appears in the / menu with a [skill] badge and a — shadowed by /<owner> note. Typing /<name> always resolves to the higher-precedence owner, not the skill. See Selection priority above for the full order.
Command Code supports three ways to use a skill in a conversation. Pick whichever matches the task at hand.
1. Exact slash invocation
Type /skill-name at the start of your prompt to run that skill for the current turn:
2. Inline slash reference
Drop /skill-name anywhere inside a longer prompt to pin that skill without losing your natural phrasing. You can mix multiple skills in a single prompt:
3. Inferred suggestion
Command Code scans your prompt and suggests a matching skill when one clearly fits. Ordinary prompts keep working exactly like before — inferred suggestions just help you discover what is available.
User-level skills
User-level skills are available across all your projects.
Location: ~/.commandcode/skills/
Create a user skill
Use cases:
- Personal coding preferences
- General development workflows
- Cross-project best practices
- Your own code style guidelines
Example:
Code review skill
Project-level skills
Project-level skills are available only in that specific project.
Location: .commandcode/skills/ (in your project root)
Create a project skill
Use cases:
- Project-specific patterns
- Team conventions
- Architecture guidelines
- Domain-specific workflows
Example:
API guidelines skill
You can also install community skills directly from GitHub without manually creating files — see cmd skills add in the command reference.
You can edit using the /skills command.
- Type
/skillsin Command Code - Navigate to the skill you want to edit
- Press Enter
This opens the SKILL.md file in your default editor (configured via $EDITOR environment variable).
Manual editing
You can also edit skills directly via the following paths:
Edit a skill
After editing, the changes are immediately applied and ready to use. No restart is required.
Setting up your editor
The /skills command uses your $EDITOR environment variable to open files. See setting up your editor for setup instructions.
Toggle a skill on or off without deleting it. Disabled skills are hidden from the model and won't be invoked.
In the /skills picker, highlight a skill and press Enter to toggle it.
Where the setting lives
Disabled skills are tracked under the disabledSkills key in a settings.json file. Command Code looks for settings.json in the following paths:
| Scope | Config file | Applies to |
|---|---|---|
| User | ~/.commandcode/settings.json | Across all projects |
| Project | .commandcode/settings.json | Anyone using the project |
The shape is the same in both settings files:
To disable a skill across every project on your machine, edit ~/.commandcode/settings.json directly. The next session will pick it up.
You can organize your skills using the following best practices:
Single skill per directory
Each skill must be in its own directory:
Adding supporting files
Skills can include additional files:
Reference these files in your SKILL.md:
Skill names
- Use lowercase letters, numbers, and hyphens only
- Max 64 characters
- Must not start or end with hyphen
- No consecutive hyphens
Good names:
Bad names:
Directory names
The directory name must match the skill name field:
Every SKILL.md file should start with the frontmatter block followed by the markdown instructions in the body.
Frontmatter (required)
You can add the following optional fields to the frontmatter as needed:
| Field | Required | Constraints |
|---|---|---|
name | Yes | Max 64 characters. Lowercase letters, numbers, and hyphens-separated only. Should not start or end with a hyphen. |
description | Yes | Max 1024 characters. Describes what the skill does and when to use it. |
license | No | License name or reference to a bundled license file. |
compatibility | No | Max 500 characters. Describes environment requirements (packages, system tools, network access, etc.). |
metadata | No | Arbitrary key-value mapping for additional metadata (author, version, etc.). |
allowed-tools | No | Space-delimited list of pre-approved tools the skill may use. (Experimental) |
Body content
The markdown body that follows the frontmatter contains the skill instructions. There are no format restrictions. Write whatever helps Command Code perform the task effectively.
Recommended sections:
- When to use this skill: Clear triggers for activation
- Step-by-step instructions: Detailed guidance
- Examples: Input/output examples
- Common edge cases: Known pitfalls and solutions
Optional directories
Your skill folder can also include these optional subdirectories to organize related files:
scripts/
Contains executable code that agents can run. Scripts should:
- Be self-contained or clearly document dependencies
- Include helpful error messages
- Handle edge cases gracefully
references/
Contains additional documentation that agents can read when needed:
Keep individual reference files focused. Command Code loads these on demand, so smaller files mean less context usage.
assets/
Contains static resources:
Complete reference for all cmd skills commands. Install, list, and remove agent skills.
| Command | Description |
|---|---|
cmd skills add | Install a skill from a GitHub repository |
cmd skills list | List all installed skills |
cmd skills remove | Remove an installed skill |
cmd skills add
Install a skill from a GitHub repository into your project or global skills directory.
cmd skills add
Options
| Option | Short | Description |
|---|---|---|
--global | -g | Install to global skills (~/.commandcode/skills/) |
--force | -f | Overwrite if skill already exists |
--skill <name> | -s | Pick a specific skill from a multi-skill repo |
Examples
Single-skill repo
Specific path in repo
Pick one skill from a multi-skill repo
Specific branch
Install globally
Install from community
Install locations
| Flag | Location | Availability |
|---|---|---|
| (default) | .commandcode/skills/<skill-name>/ | Current project only |
--global | ~/.commandcode/skills/<skill-name>/ | All projects on your machine |
Multi-skill repos. When a repo contains multiple skills and --skill is not specified, Command Code shows an interactive prompt to select which skills to install.
Name collisions. Skill names share the / menu with built-in commands (/clear, /help, /share, /rewind, …) and with the custom commands in .commandcode/commands/. Built-ins and custom commands take precedence — typing /<name> resolves to the owner, not to the skill.
If you install a skill whose name collides with one of those, cmd skills add still completes normally — nothing blocks the install. The skill then appears in the / menu with a [skill] badge and a shadowed by /<owner> note so you can see it exists, while /<name> continues to route to the higher-precedence owner. See Selection priority for the full order.
cmd skills list
List all installed skills, grouped by location.
cmd skills list
Options
| Option | Description |
|---|---|
--debug | Show every skill that failed to load, grouped by error category |
Output
Shows all installed skills split into Project and Global sections:
Example output
If any skills failed to load, a quiet hint appears under the listing:
With skipped skills
Re-run with --debug to see the grouped report. Each row is categorized and tagged with the path and the one-line reason:
cmd skills list --debug
If no skills are installed, the command shows where it looked and how to install one:
Empty output
cmd skills remove
Remove an installed skill by name. Prompts for confirmation before deleting.
cmd skills remove
Options
| Option | Short | Description |
|---|---|---|
--global | -g | Remove from global skills (~/.commandcode/skills/) |
--yes | -y | Skip the confirmation prompt |
Examples
Remove from project
Remove from global
Skip confirmation
Skill name rules. Skill names must use lowercase letters, numbers, and hyphens only — no path separators, dots, or uppercase.
Follow these best practices to create effective and maintainable skills.
Writing effective descriptions
Good descriptions help Command Code know when to use a skill:
Specific and keyword-rich:
Too vague:
Keep skills focused
Each skill should do one thing well:
Focused:
code-review- Code review checklistcommit-messages- Commit message formattesting-patterns- Testing conventions
Too broad:
development- All development tasks
Pick a name that does not collide
Skill names share the / menu with built-in commands like /clear, /help, /share, and /rewind, and with any custom commands you define in .commandcode/commands/. Those take precedence — typing /<name> routes to the owner and the skill renders with a shadowed by note next to its [skill] badge.
Prefer task-oriented names that are unlikely to overlap:
Safe: pr-desc, api-guidelines, release-notes, code-review
Risky: clear, help, share, rewind — these are built-in.
Use progressive disclosure
Keep SKILL.md concise. Move detailed content to references/, for example:
Version control
Track your skills in Git:
Git tracking
Don't ignore .commandcode/skills/ - these should be shared with your team.
Command Code fully implements the Agent Skills open standard. Skills you create are:
- Portable: Work with any agent that supports the standard
- Versionable: Track changes with Git
- Shareable: Publish for your team or community
- Auditable: Plain text files anyone can read
Skills are explicit, authored playbooks you write and share; Taste is the implicit, continuously-learned profile of your preferences. See the full guide at commandcode.ai/blog/taste-skills-rules.
- Set up your taste profile to pair learned preferences with authored skills
- Join our Discord community for support