# Claude Code: Skills vs Custom Slash Commands

From my video "Claude Code Skills vs Commands: The Key Difference".

## The path: request, then command, then skill

1. Run the task once as a normal request:

```
Can you please generate ten thousand fake entries of just random fake people using the Faker library for me, please?
```

2. Save it as a custom slash command:

```
Can you please create a custom slash command for this use case? Make sure it's a command and not a skill, though.
```

   - Restart Claude Code, then type /generate and pick the command.

3. Turn the command into a skill:

```
Can you now turn this custom slash command into a whole skill, please?
```

   - Test it with vague phrasing, for example: "Hey, I'm going to need help generating some fake people information."

## Side by side

| | Skills | Custom slash commands |
|---|---|---|
| What it is | Markdown file in the skills folder | Markdown file in the .claude folder (a mega prompt) |
| Can keep code | Yes, saves and reuses the same code | No, only the markdown file |
| Does Claude always know it exists? | Yes, its short description stays in the context window | No, you have to call it |
| How you run it | Vague, everyday phrasing works | You must type /name-of-command |
| Can run by accident | Yes | No |
| Sharing | Share the file, or call it via API | Share the file only, no API |
| Usable by agents | Yes | No |
| Needs a restart after creation | Not mentioned | Yes |

## How they use Claude's memory (context window)

- Command: nothing is loaded until you type it. Then the whole prompt from the markdown file is added to the conversation.
- Skill: only a short description sits in memory all the time. Claude loads the rest when your request matches. This keeps the memory Claude uses for your conversation small.

## Rule of thumb

Anthropic is moving custom slash commands over to skills. Build new things as skills. Keep a command only when it must never run unless you type its name.
