# Claude Code commands and skills worth using

Most of Claude Code's power is one keystroke away. Type `/` and you get a menu of slash commands, and you can teach it new tricks with skills. Knowing which ones to reach for is the difference between fighting the tool and flying with it.

This is a tour of the ones that earn their place, what each does, and when to use it. You run all of these from the CLI; none of them need you to write code.

Type slash to browse commands, then run a review skill that surfaces issues in a diff. Illustrative session.

## Which Claude Code commands will I use every day?

| Command | What it does | When to reach for it |
| --- | --- | --- |
| `/help` | Lists every command and the docs. | When you forget the exact name of one of these. |
| `/init` | Scans the repo and writes a `CLAUDE.md` memory file. | First thing in a new project, so Claude knows your conventions. |
| `/clear` | Wipes the conversation and starts fresh. | When you switch tasks. A clean context is a focused agent. |
| `/compact` | Summarises the conversation so far and keeps going. | A long session is filling the context window but you are not done. |
| `/model` | Switches which model is answering. | Drop to a faster model for easy work, jump up for hard problems. |
| `/effort` | Sets how hard the model thinks per turn. | Up for a big refactor, down for quick edits. See [effort levels](/guides/claude-code-effort-levels). |

The two habits worth building: run `/init` once per repo, and run `/clear` between unrelated tasks. The first gives Claude your context for free on every future session; the second stops old context from bleeding into new work.

## Commands for control and context

These come up the moment you do anything serious: managing a long session, wiring up tools, or tightening what the agent is allowed to do.

| Command | What it does | When to reach for it |
| --- | --- | --- |
| `/memory` | Opens your `CLAUDE.md` to edit the project's standing rules. | When Claude keeps making the same wrong call. Write [the rule](/guides/rules-and-memory-files) down once. |
| `/agents` | Lists and manages the subagents available in the project. | Setting up specialised workers. See [subagents](/guides/how-agents-fan-out). |
| `/mcp` | Shows and manages connected MCP servers. | Checking what tools and data sources the agent can reach. |
| `/permissions` | Reviews and edits what the agent can do without asking. | Locking down anything that can write or delete. |
| `/hooks` | Configures hooks that run around tool calls. | Auto-formatting, linting, or blocking risky actions. See [hooks & guardrails](/guides/hooks-and-guardrails). |
| `/review` | Asks Claude to review a diff or pull request. | Before you merge, for a second set of eyes. |

## Commands that save a session

| Command | What it does | When to reach for it |
| --- | --- | --- |
| `claude --continue` | Resumes your most recent session where you left off. | You closed the terminal and want the thread back. |
| `claude --resume` | Picks an older session from a list to resume. | You want a specific past conversation, not only the last one. |
| `/cost` | Shows the token and dollar usage of the session. | Keeping an eye on a long or expensive run. See [token usage and cost](/guides/token-usage-and-cost). |

Plan mode is the other one worth a mention. Press `Shift+Tab` to cycle into a read-only mode where Claude proposes a plan and waits for your approval before touching anything. It is the safest way to [start a big change](/guides/break-big-tasks-into-steps).

## How do I create a custom slash command?

You are not limited to the built-ins. Drop a markdown file in `.claude/commands/` and it becomes a slash command for the whole project. The file is just the instructions you would otherwise type every time.

```markdown
Run the test suite, then summarise only the failures: the test name, the file,
and a one-line guess at the cause. Do not try to fix anything yet.
```

Save that as `.claude/commands/triage.md` and `/triage` runs it on demand. Anything you find yourself asking for repeatedly is a candidate for a custom command.That folder is project-scoped, so the command only exists in this repo and is not committed unless you add it. For a command you want in every project, put the file in `~/.claude/commands/` instead.

## What is a Claude Code skill?

A skill is a step up from a command. It lives under `.claude/skills/` as a `SKILL.md` file with a short description, and Claude pulls it in automatically when a task matches, rather than you invoking it by name.The description is the trigger, not a label. Claude only loads a skill when your task matches the words in its `description`, so a vague or thin line means the skill sits unused while you wonder why it never fires. Write the description as a list of the exact tasks and phrases that should pull it in.

```markdown
---
name: pr-review
description: Review a diff for correctness, edge cases, and security before merge.
---

When asked to review changes, run the diff against the main branch. Check, in
order: correctness bugs, missing edge cases, error handling, and security. Quote
the exact line for each issue. Skip style nits. End with a one-line verdict.
```

The difference that matters:

| | Slash command | Skill |
| --- | --- | --- |
| **How it runs** | You type it: `/triage` | Claude loads it when the task fits |
| **Best for** | A specific action you trigger | A standing capability or checklist |
| **Lives in** | `.claude/commands/` | `.claude/skills/` |

Use a command when *you* want to kick something off. Use a skill when you want Claude to *always* handle a kind of task the same way, without being reminded.

## Which Claude Code commands should I start with?

If you only adopt three, make them `/init` (give Claude your context), `/clear` (keep that context clean between tasks), and one custom command for the thing you repeat most. Add `/effort` and a review skill once you are doing serious work, and the rest will come up naturally as you need them.

I keep asking you to do the same release checklist by hand. Turn it into a custom command in .claude/commands so I can run it with one word. Ask me for the steps first.
