Compare · claude skills vs commands

Claude Skills vs Commands

Updated Sep 15, 2026 · By fisher

Current answer, not the old mental model

Claude Code’s extension model has evolved. A command and a skill are no longer two completely separate systems where one is always a shortcut and the other always activates automatically.

The skill folder is the richer current format. It can contain metadata, detailed instructions, references, scripts, and assets. Skills may be discovered automatically from their description and can also support explicit invocation.

Legacy custom command files continue to work. They remain useful as explicit, lightweight prompts, but new workflows that need more structure generally belong under .claude/skills/.

Comparison table

QuestionSkillLegacy custom command
Project path.claude/skills/<name>/SKILL.md.claude/commands/<name>.md
Automatic discoveryYes, based on skill metadata and task matchUsually invoked explicitly
Slash invocationSupported when configured as invocablePrimary interaction model
Supporting filesNative folder structure for scripts, references, and assetsPossible only through paths the prompt manages itself
MetadataYAML frontmatter describes name, activation, and behaviorCommand frontmatter and prompt content
Best fitReusable workflow with context or resourcesSmall explicit action or existing compatible shortcut
DistributionCopy/upload the folder or package it in a pluginCopy the command file or include compatible files in a package

Use a skill for reusable behavior

Choose a skill when the workflow needs one or more of these:

  • Claude should recognize the task without the user memorizing a command.
  • Detailed instructions should load only when relevant.
  • Scripts make part of the work deterministic.
  • Reference documents, examples, or templates belong with the procedure.
  • The workflow needs a clear activation description.
  • The same package should work as both discovered knowledge and an explicit action.

A debugging method is a good example. The skill can require reproduction, evidence gathering, one hypothesis at a time, verification, and regression checks. It may include reference material without putting the whole procedure in every session.

Keep a command for a deliberate shortcut

An explicit command is still a sensible interface when:

  • the action is small and unambiguous;
  • automatic activation would be surprising;
  • the user must choose the exact moment it runs;
  • an existing team workflow already depends on the command name;
  • no scripts, references, assets, or progressive loading are needed.

For example, a command that formats the current branch name into a release note heading may not need a full skill. The explicit trigger is part of its usefulness.

When to migrate a command

Migrate an existing command when it has become a miniature application hidden inside one Markdown file:

  1. Create .claude/skills/<name>/SKILL.md.
  2. Move the reusable workflow and metadata into the skill.
  3. Put long references, templates, and scripts in adjacent files.
  4. Write a precise description for automatic discovery.
  5. Preserve explicit invocation when users still need it.
  6. Test the task both by natural-language matching and direct invocation.

Do not migrate merely to use a newer folder name. The change should improve discoverability, maintainability, or resource organization.

Examples

WorkflowBetter starting pointWhy
Run a full pre-release verification processSkillOrdered checks, scripts, and references
Insert a standard issue templateCommandSmall, explicit, predictable action
Diagnose a failing test suiteSkillReusable method and progressive evidence gathering
Rename the current terminal sessionCommandNarrow shortcut with deliberate invocation
Generate a branded slide deckSkillTemplates, assets, file-generation rules, and validation
Create another skillSkillMulti-step format and quality workflow

Browse Writing Skills, Systematic Debugging, and Verification Before Completion for public source profiles. They are not hands-on ratings.

Common mistakes

Treating every slash command as a separate architecture

Invocation syntax is an interface choice. First decide where the reusable instructions and resources belong, then decide whether the user should invoke them explicitly.

Giving an automatic skill a vague description

If the description says only “helps with code,” discovery will be noisy. Name the trigger, scope, expected input, and result.

Hiding a large workflow in one command file

Long prompts with embedded scripts and references are difficult to review. A skill folder separates the main procedure from supporting material.

Removing a working command without checking users

Legacy command files remain compatible. Preserve familiar entry points when migration would disrupt a team, then phase them out deliberately.

Decision rule

Use the skill format as the default for new reusable Claude Code workflows. Keep an explicit command when deliberate invocation is the feature, not a limitation. A skill can still expose a command, so you often do not need to choose between rich packaging and a fast trigger.

For folder and installation details, read Claude Code Skills. For distribution, compare Skills vs Plugins.

Primary sources

FAQ

What is the difference between Claude Skills and commands?

Skills support reusable instructions, automatic discovery, metadata, and supporting files. Commands emphasize explicit slash invocation. Current Claude Code supports legacy command files while treating skills as the richer extension format.

Do old Claude Code custom commands still work?

Claude Code documentation says legacy .claude/commands files continue to work. New reusable workflows can use the skills directory format.

Should I migrate a command to a skill?

Migrate when the workflow needs automatic activation, references, scripts, assets, or clearer metadata. A simple explicit shortcut can remain a command if it still works and is easy to maintain.

Can a skill be invoked with a slash command?

Yes. Supported skills can be directly invocable while also allowing automatic discovery, depending on their metadata and package.

Where do Claude Code skills and commands live?

Project skills use .claude/skills/<name>/SKILL.md. Legacy project commands use Markdown files under .claude/commands. User-level and plugin-provided locations are also supported.