
In this article we will deep dive into Claude's Skills, Agents and Commands. We will understand what skills, agents and commands are, why we need them, how we can create them and how we can use them in Claude. Let's jump into actual work and first understand Claude's skills.
Let's start with basic understanding. A skill is knowledge Claude reads. An agent is a separate helper that does a whole job.
To be able to use skills and agents we need to create folder .claude on our project root directory. This is how the folder structure looks like.
.claude/
└── agents/ ← folder that contains all the agents
└── figma-to-react-native-agent.md ← agent file
└── skills/
└── figma-to-react-native
└── SKILL.md ← skill file
└── commands/
└── rn-figma-screen.md ← command file
A skill is a set of instructions and reference notes that Claude reads when it needs them.
figma-to-react-native skill tells Claude how to turn a Figma screen into React Native code, step by step, and which component and token to use for each element.An agent is another Claude that you hand a job to. It does the job away from your chat and comes back with a report.
figma-to-react-native-agent agent reads the skill above.| Skill | Agent | |
|---|---|---|
| What it is | Know-how | A helper that does work |
| Where it works | In your chat | Separately |
| Ask you questions? | Yes | No |
| What you see | Every step | Only the final report |
Rule of thumb: if you’d rather sit next to someone while they work, use a skill. If you’d hand it over and say “tell me when it’s done”, use an agent.
Question: Do agents pick skills automatically whatever is required or we have to define which skills are to use in an agent ?
Answer: Both. Agents can pick skills on their own, but you can also tell them which to use, and that’s more reliable.
Automatic: possible, not guaranteed
Every agent sees a list of the installed skills, with each skill’s name and a one-line description. If the task matches a description, the agent may load that skill without being told.
Told in the agent’s instructions: reliable in practice
You write it in the agent file, for example:
“Step 1: Load the figma-to-react-native skill and follow it.”
This is how our agents work:
figma-to-react-native-agent is told to load figma-to-react-native skill.Preloaded in the agent’s header: guaranteed
Agent files have a skills: field at the top. Any skill listed there is fully loaded when the agent starts, so it can’t be skipped:
---
name: figma-to-react-native-agent
description: ...
skills: ethr-figma-to-react-native
---
Location: a folder with a SKILL.md file inside.
skills/
└── my-skill/ ← folder name = skill name
├── SKILL.md ← required
├── REFERENCE.md ← optional extra files, read only when needed
└── scripts/… ← optional helper scripts
SKILL.md structure:
---
name: my-skill
description: What it does AND when to use it. Claude reads this to decide whether to load the skill.
---
# My Skill
Your instructions in plain Markdown: steps, rules, examples, links to REFERENCE.md.
name and description.Location: a single .md file in an agents/ folder.
agents/
└── my-agent.md
Agent file structure:
---
name: my-agent
description: What job it does and when Claude should hand work to it.
tools: Read, Grep, Glob, Write # optional; leave out to give it all the standard tools
model: sonnet # optional; leave out to use the same model as your chat
skills: # optional; skills to preload when it starts
- my-skill
---
You are a … Your job is to …
Your rules, steps and the report format you want back.
name and description./agents command in a terminal Claude Code session. It walks you through creating one.skill-creator skill: “Use skill-creator to make a skill for…”. It also helps test whether the skill triggers when it should.| Do | Avoid |
|---|---|
Write a specific description with real trigger words (“Figma URL”, “build this screen”) |
Vague descriptions like “helps with UI” |
Keep SKILL.md short (under ~500 lines) and move big tables into separate files |
One huge file |
| Give agents a clear role, numbered steps and a final report format | Assuming the agent can ask you things (it can’t) |
| Refer to other skills by name | Pointing to file paths like .claude/skills/... |
A command is a saved prompt that you run by typing “/” and its name.
A command is a saved message. Typing /rn-figma-screen is just a short way to send a long, carefully written message to Claude.
It’s a Markdown file in a commands/ folder. When you type /command-name something, Claude Code takes the file’s text, swaps in what you typed after the name (the file marks that spot with $ARGUMENTS), and sends the result to Claude as if you had typed all of it.
commands/rn-figma-screen.md → you type: /rn-figma-screen <figma link>
This is how a minimal command file looks like:
---
description: Shown in the / menu
argument-hint: <figma url>
---
Convert this Figma design into an Ethr React Native screen: $ARGUMENTS
Load the ethr-figma-to-react-native skill and follow it.
The command (recommended for one screen)
/rn-figma-screen <link>
Output: src/screens/login
Component name: LoginScreen
Purpose: "Sign in" navigates to Home
Plain English, naming the skill
Use the figma-to-react-native skill to build the login screen from <link>
into src/screens/login. Sign in navigates to Home.
Start the skill directly with a slash
/ethr-figma-to-react-native <link> into src/screens/login
Hand it to the agent
Use the figma-to-react-native-agent agent to implement <link>
Output: src/screens/login
Component name: LoginScreen
"Sign in" navigates to Home. Leave the API call as a TODO.
Just ask, without naming anything
Build the login screen from <link>
| Way | You type | Uses skill | Who works | You see | Can ask you | Best for |
|---|---|---|---|---|---|---|
| 1. Command | /rn-figma-screen <link> | Always | Your chat | Every step | Yes | Day-to-day single screens |
| 2. Name the skill | “Use the … skill…” | Always | Your chat | Every step | Yes | Custom instructions |
| 3. Slash the skill | /ethr-figma-to-react-native … | Always | Your chat | Every step | Yes | Quick, skill only |
| 4. Agent | “Use the … agent…” | Always (preloaded) | Separate helper | Final report | No | Hand-offs, batches |
| 5. Just ask | “Build … from <link>” | Maybe | Your chat | Every step | Yes | Quick experiments |