The Quick Version

In Claude Code, there are two ways to extend what Claude can do: commands (also called skills) and agents. They live in similar places and look almost identical. But they work completely differently.

(If you see “skill” anywhere in Claude Code, it’s the same thing as a command. The terms are interchangeable.)

Commands are things you invoke. You type /chief-of-staff and suddenly Claude has a bunch of context loaded about how to be your chief of staff.

Agents are things Claude invokes. You ask Claude to review some code, and it decides to spawn a code-reviewer agent to handle that part of the job.

That’s it. That’s the whole distinction.

When to Use Which

Use a Command when…Use an Agent when…
You want to talk directlyClaude should handle it in the background
Interactive back-and-forthFocused, single-purpose task
You’re driving the conversationClaude is delegating work

Command examples: /chief-of-staff, /vibe-coach, /branding-coach

Agent examples: code-reviewer, code-builder, session-capture

One More Thing: Skills on Agents

Agents can have skills attached to them in their frontmatter:

This auto-loads those skills when the agent runs. It’s a way to give an agent access to workflows you’ve already defined as commands.

The Story

I spent an embarrassing amount of time confused about this. I had a /capture command and a code-reviewer agent and I genuinely didn’t understand why one was a slash command and one wasn’t.

The thing that finally made it click: who’s driving?

With /chief-of-staff, I’m driving. I invoke it, I ask questions, I get responses. It’s a conversation with special context loaded.

With code-reviewer, Claude is driving. I say “review this code” and Claude decides — without me telling it — to spawn the code-reviewer agent. The agent does its thing in a separate context, finishes, and Claude summarizes what it found.

I don’t type /code-reviewer. I don’t even have to know it exists. Claude just… uses it when it makes sense.

Which is kind of wild when you think about it. You can set up these little specialist workers, and Claude will deploy them as needed. Like hiring staff that your assistant manages.

I’m still not totally sure I’m using this correctly. But I have a /capture command for when I want to document something, and a session-capture agent for when Claude should just do it automatically after a big task.

Both feel useful. Both exist. I’ll figure out which one I actually use more.