Agents, skills, commands and output styles are all the same shape: a Markdown file with frontmatter on top and instructions below, in a folder, either yours or the project's. What differs is who uses them and when. Config Studio for Claude Code has an editor for each, with every field Claude Code accepts.
Know which one you need
| Surface | What it is | Folder |
|---|---|---|
| Agents | A subagent: its own context and instructions, does a job and reports back | ~/.claude/agents or .claude/agents |
| Skills | A folder with a SKILL.md; you run it as /name, and Claude can load it when it fits | ~/.claude/skills or .claude/skills |
| Commands | A slash command that turns into a prompt | ~/.claude/commands or .claude/commands |
| Output styles | Added to the system prompt; changes the voice and shape of every reply | ~/.claude/output-styles or .claude/output-styles |
Commands have been merged into skills: both create the same slash command, and if both exist the skill wins. Skills are the better choice for new work, because they can carry supporting files.
Each editor starts with Where it lives: yours in every project, or the repository's, committed so the team gets it.
Write a description that gets picked
For an agent or a skill, the description is the only thing Claude reads when deciding whether to use it. A vague one means it never runs.
Open Try it and pick Will this ever get picked? Paste your description. It checks six things, for example:
- It starts with what it does
- It says when to use it ("Use when..." or "Use after...")
- It names something concrete: file types, tools, artefacts
- It has no vague word like "helps", "various" or "things"
Compare:
Weak: Helps with code
Strong: Reviews a diff for correctness and security issues. Use after writing or changing code.Check the name resolves
Will this name resolve? checks the name before you need it. Names are lowercase with hyphens. A colon is reserved for plugins, so review:deep will not resolve to your file.
The name is also the file name. Leave it empty and the plan warns you: a skill would be written as skills/SKILL.md and run as /skills.
Make an agent
Open Agents. The basic fields are Name, When Claude should use it, Tools it may use (empty inherits the usual set) and Model (empty uses the session's). The body, Instructions for the subagent, becomes its system prompt: write it for a colleague who cannot see your screen.
The advanced fields go further, among them:
- Permission mode, where
planlets it read and reason but not act, ideal for reviewers - Stop after this many turns, a ceiling for an agent that misunderstood
- Run in its own worktree, an isolated copy of the repository
- MCP servers to connect, only for this agent
- Always run in the background, so you keep working
Make a skill or a command
Open Skills. Besides the name and description:
- Only I can run it stops Claude loading it on its own. Use it for anything with a side effect, like deploying
- Pre-approved tools run without asking for the turn that runs the skill
- Only load it for these files keeps a skill out of the way until Claude touches a matching file
- Run in its own context set to
forkruns it in a subagent, so it does not fill your conversation
Set an output style
Output styles change how Claude talks, not what it can do. Keep the software engineering instructions should stay on while you are still coding and only changing the voice. Pick the style in Claude Code with /config.
The next lesson connects Claude Code to outside tools with MCP servers.