Level one is the chatbot. You type, it answers.
It's the doorway, not the house.
if everyone has it…
it gives nobody an edge.
- The same brain
- And here's the thing about it: it's the same for everyone. You're all talking to the exact same brain.
- Forgets you
- Brilliant in the moment, and it forgets you the second you close the tab.
- The myth
- Most people think prompt engineering is what AI is.Flip it ↻AI is more than a chat screen for daily operations. Start with Claude.Flip back ↻
Same brain for everyone. Close the tab, and it forgets you.
My recommendation
What I did, as three steps you can take.
Start with Claude
Claude is more than just a chat screen. Complete the course for a good understanding of Claude.
Understand Claude's structure
Claude sets the AI standards, and the whole AI community evolves around it.
Build with Claude
Build Madav Coffee Cup's four helpers with Claude, one file at a time.
Claude structure
Every file Claude reads, and where it lives.
Claude sets the AI standards, and the whole AI community evolves around it. Most of what makes Claude work well in a project is a handful of plain files. Some are guidance Claude follows, such as CLAUDE.md, rules and skills; some are settings it must obey, such as permissions and hooks. Press any of them to see what it does, when Claude reads it, and what goes inside.
Madav Coffee Cup is three coffee shops run by you from one small head office: Station and Park are open, and Harbour opens on 3 November. You have a team of four AI helpers: the Manager hands out the week’s work, the Accountant keeps the money, the Customer Care Agent looks after the reviews and the regulars, and the Taster checks everything before it reaches you. Every concept on these three levels is shown on this one business, so learn it once and every example that follows is already familiar.
CLAUDE.md
The first file Claude reads
The guide the whole team shares: what the project is, where its files live, the rules every change keeps and what never to touch. Claude reads it before it does anything else, so it is the first file worth writing. It is guidance Claude follows, not a setting it is forced to obey. This file is for this project only; the CLAUDE.md in your home folder, ~/.claude/CLAUDE.md, holds instructions for every project on that machine, and Claude reads both.
When Claude reads it At the start of every session, in full.
- In the project: this project only. In ~/.claude/: every project on the machine
- The shops, and which one opens next
- Where the plans, the numbers and the menus live
- The helpers, and who does what
- The rules every change keeps
- What Claude must never do without asking
Good to know
Aim for under 200 lines: a longer file still loads, but Claude follows it less closely. Anything only some tasks need belongs in a skill or a rule with paths, so it loads only then. It can also live at .claude/CLAUDE.md, and /memory opens it for editing.
# Madav Coffee Cup
Three coffee shops: Station and Park are open,
and Harbour opens on 3 November.
## Where things live
- Each shop's plan: plans/
- Every cost and every price: numbers.csv
- The three menus, one to a shop: menus/
- Suppliers, and who has confirmed: suppliers.md
## The team
- manager hands out the week's work
- accountant keeps the money
- customer-care answers reviews, knows the regulars
- taster checks the work before it reaches me
## How we work
- One price in every shop
- Every price covers its cost by a third
- Nothing goes on a menu without an allergen line
## Never
- Pay, order, post a reply or hire without asking meCLAUDE.local.md
Your own notes, for this project only
Your private notes for this project: the things only you know, how you like to work, the task you are halfway through. Claude reads it beside the team's guide, but it is yours alone.
When Claude reads it At the start of every session, alongside CLAUDE.md.
- The things only you know
- The task you are halfway through
- How you like Claude to work with you
- Kept out of git by you
Good to know
Claude does not make this file for you: create it yourself and add it to .gitignore, so it never reaches the team.
# My notes
- Harbour's landlord: ring him, never email
- Station's grinder is noisy before seven; it is on the list
- Never order from the second roaster again
- I am halfway through Harbour's staff rota
- Explain a change to me before you make it.mcp.json
The outside tools the whole team connects
The outside tools this project connects Claude to through MCP - here the three shops' tills, the bank export, the shared calendar and the review site - written once so everyone on the team gets the same tools.
When Claude reads it When the session starts; each tool is loaded only when Claude needs it.
- Each tool's name
- How to reach it: a web address or a command
- Its settings, with secrets left on each machine
Good to know
It lives at the project root, not inside .claude/. Never write a secret here: ${NAME} is read from each person's own machine. A tool only you need goes in your personal configuration instead (claude mcp add --scope user).
{
"mcpServers": {
"tills": {
"type": "http",
"url": "https://tills.example.com/mcp"
},
"bank": {
"command": "node",
"args": ["tools/bank-export.js"],
"env": { "BANK_TOKEN": "${BANK_TOKEN}" }
},
"calendar": {
"type": "http",
"url": "https://calendar.example.com/mcp"
},
"reviews": {
"type": "http",
"url": "https://reviews.example.com/mcp"
}
}
}.worktreeinclude
Your local files, in every worktree
A worktree is a fresh copy of your project for work running side by side - one session on the new menu, another on Harbour's opening - so files git ignores, such as .env, are missing from it. This file names which of them to copy in, written the same way as .gitignore.
When Claude reads it Whenever Claude makes a new git worktree: a parallel session, a start with --worktree, or a helper working in isolation.
- One pattern to a line, as in .gitignore
- Only files git ignores are copied
- Comments start with #
Good to know
Only files that match a line here and are also ignored by git are copied, so a tracked file is never doubled. It lives at the project root, not inside .claude/.
# My own files, copied into every worktree
.env
notes/harbour-landlord.md.claude/
Claude's own folder in your project
The folder for everything else Claude Code reads in this project: its settings, rules, commands, skills, output styles, helpers, their memory, workflows and hook scripts. Commit it so the team shares it; only settings.local.json stays personal.
When Claude reads it Each file inside is read at its own moment, shown in its own detail.
- settings.json and settings.local.json: what Claude may do
- rules/, commands/, skills/ and output-styles/: how work is done
- agents/, agent-memory/ and workflows/: the helpers
- hooks/: the scripts your hooks run
.claude/
├── settings.json
├── settings.local.json
├── rules/
├── commands/
├── skills/
├── output-styles/
├── agents/
├── agent-memory/
├── workflows/
└── hooks/settings.json
What Claude may do, enforced for everyone
The team's settings. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced: permissions say what Claude may do without asking, must ask about first, or may never do; hooks run your own scripts at set moments; and a default model and environment variables can be set for every session.
When Claude reads it Before every action. Settings are enforced, whatever Claude decides.
- Permissions: allowed, asked about, never allowed
- Hooks that run your scripts at set moments
- A default model for the project
- Environment variables for every session
Good to know
A * in a permission matches the rest of a command: Bash(node tools/pay-supplier.js *) asks before any supplier is paid, whoever it is. Lists such as allow add up across every settings file; a single value such as model takes the most personal one.
{
"permissions": {
"allow": [
"Read(./numbers.csv)", "Read(./menus/**)",
"Bash(node tools/check-margin.js *)"
],
"ask": [
"Bash(node tools/pay-supplier.js *)",
"Bash(node tools/send-order.js *)",
"Bash(node tools/post-reply.js *)"
],
"deny": ["Read(./.env)", "Read(./staff/**)"]
},
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": ".claude/hooks/check-margin.sh" }]
}]
}
}settings.local.json
Your own settings for this project
Your personal settings for this project, in the same format as settings.json, such as a command you are happy to let Claude run without asking. It changes nothing for anyone else.
When Claude reads it With the team's settings. Where the two disagree, yours win; only settings your organisation manages and flags you start Claude with rank higher.
- Commands you allow for yourself
- Settings you are trying out
- The same format as settings.json
Good to know
When Claude Code saves a setting here, it keeps the file out of git for you.
{
"permissions": {
"allow": ["Bash(node tools/print-menu.js *)"]
}
}rules/
Short guides, one topic each
CLAUDE.md split into topic files, such as the prices or how a review is answered. A rule that names paths loads only when Claude works on matching files, which keeps every session's context small. Like CLAUDE.md, a rule is guidance, not a setting Claude is forced to obey.
When Claude reads it A rule without paths at the start of every session; a rule with paths only when Claude reads a file they match.
- One topic to a file, such as the prices or the replies
- paths: to load a rule only for matching files
- No paths: read in every session, like CLAUDE.md
Good to know
When CLAUDE.md nears 200 lines, start moving topics here. Folders inside rules/ work too, such as rules/kitchen/allergens.md.
---
paths:
- "numbers.csv"
- "menus/*.md"
---
# Prices
- One price in every shop
- Every price covers its cost by a third
- Round to the nearest ten pence
- A drink is priced before it is written on a menuprices.md
A rule for the prices alone
A rule with paths: Claude reads it only when it works on a file those paths match, here the numbers and the three menus.
When Claude reads it Only when Claude opens numbers.csv or a menu.
- The paths it is for, at the top
- How a price is worked out here
- What a price must never be
---
paths:
- "numbers.csv"
- "menus/*.md"
---
# Prices
- One price in every shop
- Every price covers its cost by a third
- Round to the nearest ten pence
- A drink is priced before it is written on a menureviews.md
A rule for the replies alone
A second rule with paths, for the replies under reviews/, so how we answer a customer loads only while Claude writes one.
When Claude reads it Only when Claude reads a file under reviews/.
- The paths it is for, at the top
- How every reply is shaped
- What a reply must never do
---
paths:
- "reviews/**/*.md"
---
# Answering a review
- Thank them by name, then answer the one thing they raised
- Greet a regular as a regular
- Three sentences at most
- Never argue, never offer moneycommands/
Prompts you run by typing /name
Prompts kept one to a file: commands/monday.md makes /monday, exactly as skills/monday/SKILL.md would. Whatever you type after the name arrives as $ARGUMENTS, and you or Claude can start one.
When Claude reads it When you type /its-name, or when Claude matches your task to its description.
- The file's name becomes /the-name
- A description of when it helps
- $ARGUMENTS for what you type after the name
Good to know
Commands and skills are now one mechanism. Commands still work, but new ones are best written as skills, which can carry files beside them; if a skill and a command share a name, the skill wins.
---
description: This week's note, handed out as jobs
argument-hint: <your note>
---
!`node tools/this-week.js`
My note: $ARGUMENTS
Give my note and the figures above to the manager helper.
It hands each job to the helper whose work it is
and brings back one report. Change no file yourself.monday.md
Your note, handed out as jobs
A prompt started with /monday and your note. Its first line pulls this week's figures from the three tills, your note arrives as $ARGUMENTS, and both go to the manager, which hands out the jobs.
When Claude reads it When you type /monday and your note.
- A description, and argument-hint for your note
- !`command` to bring in live figures
- $ARGUMENTS where your note goes
---
description: This week's note, handed out as jobs
argument-hint: <your note>
---
!`node tools/this-week.js`
My note: $ARGUMENTS
Give my note and the figures above to the manager helper.
It hands each job to the helper whose work it is
and brings back one report. Change no file yourself.friday.md
The week, on one page
A prompt started with /friday: every helper's week, gathered shop by shop onto one page, with what is still waiting for your yes.
When Claude reads it When you type /friday.
- A description of when it helps
- What the page gathers, shop by shop
- What not to do
---
description: The week's report, shop by shop, on one page
---
For Station, Park and Harbour: what sold,
what the taster sent back, and why,
and what is waiting for my yes.
One page. Change no file.pay-supplier.md
A routine only you start
A prompt started with /pay-supplier roaster: the word after the name arrives as $ARGUMENTS. Only you may start it, because paying is not a step Claude should take on its own.
When Claude reads it Only when you type /pay-supplier.
- disable-model-invocation: true, for you alone
- argument-hint: what to type after the name
- The steps, with $ARGUMENTS where your word goes
---
description: Pay one supplier from suppliers.md
disable-model-invocation: true
argument-hint: <supplier>
---
Find $ARGUMENTS in suppliers.md and show me the amount owed.
Only after I say yes, run node tools/pay-supplier.js $ARGUMENTS
and tell me the reference it prints.skills/
Know-how Claude uses when a task fits
Know-how packed as folders. Each holds a SKILL.md, whose description tells Claude when the skill helps and whose body gives the steps, plus any files those steps need: templates, checklists, reference notes or scripts.
When Claude reads it When you type /its-name, or when Claude matches your task to its description.
- One folder for each skill
- A SKILL.md: when it helps, then the steps
- Supporting files: templates, checklists, scripts
- Who may start it, set in its frontmatter
Good to know
The frontmatter decides who may start a skill: disable-model-invocation: true keeps it for you alone, such as paying a supplier; user-invocable: false leaves it to Claude and hides it from the / menu.
---
name: new-drink
description: Price a new drink and write its line on every menu
---
!`cat numbers.csv`
1. Work the drink's cost from the figures above
2. Price it so the cost is covered by a third, rounded to ten pence
3. Write the same line on every menu in menus/, from line.md
4. Put the allergen line under it
5. Ask the taster to check it before you finishnew-drink/
One skill, one folder
One skill is one folder: its SKILL.md, and beside it any file the steps use.
When Claude reads it When your task is about a new drink, or when you type /new-drink.
- A SKILL.md, always
- Any template, checklist or script the steps use
new-drink/
├── SKILL.md
└── line.mdSKILL.md
The skill's name, purpose and steps
The skill itself: a name, a description Claude reads to decide when the skill helps, and the steps. Its !`command` line brings the numbers in, and it points Claude to the menu line beside it.
When Claude reads it Its description at the start of a session; the rest when the skill is used.
- A name and a description of when it helps
- The steps to follow
- The files beside it, named where they are needed
---
name: new-drink
description: Price a new drink and write its line on every menu
---
!`cat numbers.csv`
1. Work the drink's cost from the figures above
2. Price it so the cost is covered by a third, rounded to ten pence
3. Write the same line on every menu in menus/, from line.md
4. Put the allergen line under it
5. Ask the taster to check it before you finishline.md
A file the skill carries with it
A supporting file bundled with the skill. Claude knows the skill's folder, so it reads this file when the steps name it.
When Claude reads it While the skill runs, when its steps mention it.
- The shape a menu line takes
- Read only when the skill needs it
**{name}** {price}
{one line on what it is}
_Contains: {allergens, or none}_reply-to-a-review/
One skill, one folder
A second skill, in a folder of its own, that Claude picks up when a task is about a customer review.
When Claude reads it When your task is about a review, or when you type /reply-to-a-review.
- A SKILL.md, always
- Any file its steps need
reply-to-a-review/
└── SKILL.mdSKILL.md
Find what they mean before you answer
The skill itself: its description says when it helps, and its steps find who the customer is and what they mean before a word is written.
When Claude reads it Its description at the start of a session; the rest when the skill is used.
- A name and a description of when it helps
- The steps to follow
---
name: reply-to-a-review
description: Draft a reply to a customer review, good or bad, in our voice
---
1. Read the whole review, and what we served that day
2. Check whether they are a regular
3. Find the one thing they are really saying
4. Draft a reply of three sentences at most, in our voice
5. Show me the draft; never post it yourselfopen-a-shop/
One skill, one folder
A third skill: the checklist for opening a shop, written down after the first two openings so the third goes the same way.
When Claude reads it When your task is about opening a shop, or when you type /open-a-shop.
- A SKILL.md, always
- Any file its steps need
open-a-shop/
└── SKILL.mdSKILL.md
Two openings, written down
The skill itself: what was learned opening Station and Park, as steps, with each step handed to the helper whose work it is.
When Claude reads it Its description at the start of a session; the rest when the skill is used.
- A name and a description of when it helps
- The steps, in order
- Which helper each step goes to
---
name: open-a-shop
description: The checklist for opening a shop, learned from the first two
---
1. The accountant confirms every supplier and the budget
2. Copy a menu from menus/; one price in every shop
3. Customer care drafts the opening post
4. The taster checks the budget, the menu and the post
5. Show me all of it before anything is ordered or postedoutput-styles/
How Claude answers, shared by the team
Instruction sets that change how Claude works and answers, such as a numbers-first mode for reading the week or a warm one for the socials. Most styles are personal and live in your own folder; one belongs here when the whole team shares it.
When Claude reads it At startup; the style chosen in the outputStyle setting shapes every answer.
- One style to a file
- A description, and whether to keep the coding instructions
- The instructions the style adds
Good to know
A style replaces Claude's built-in coding instructions unless its frontmatter says keep-coding-instructions: true. Choose one with /config or the outputStyle setting.
---
description: Answers numbers first, shop by shop
keep-coding-instructions: true
---
Start every answer with the numbers, largest first.
No adjectives.
End with the one figure to watch this week.numbers-first.md
Numbers first, then the rest
A style that puts the numbers first and cuts the adjectives, while keeping Claude's coding instructions. Setting outputStyle to numbers-first turns it on.
When Claude reads it When outputStyle is set to numbers-first.
- A description of the style
- keep-coding-instructions: true
- How every answer should read
---
description: Answers numbers first, shop by shop
keep-coding-instructions: true
---
Start every answer with the numbers, largest first.
No adjectives.
End with the one figure to watch this week.agents/
Helpers Claude hands work to
Helpers defined one to a file. The description tells Claude when to hand one work; the tools line limits what it may do; a model and a memory can be set too. The body is the helper's own instructions, and it works in a fresh context, reporting back so the main conversation stays clear.
When Claude reads it When Claude hands it a task that fits its description, or you name it by typing @agent- and its name.
- A description of when to use the helper
- The tools it may use
- Its model and memory, if you set them
- Its instructions, as its own prompt
Good to know
Give a helper only the tools it needs: an accountant that may only read can never change a price. The same files define agent team roles: ask Claude to spawn a teammate using the accountant agent. A team itself keeps nothing in your project; while it runs, Claude keeps its members, messages and task list in your own ~/.claude/ folder.
---
name: accountant
description: Keeps the money straight for the three shops -
margins, prices, what is paid and what is owed
tools: Read, Grep, Glob
model: opus
memory: project
---
Read numbers.csv, suppliers.md and each shop's takings.
Price to the prices rule; report every bill unpaid.
Draft an order when asked; never send or pay one.manager.md
The one who hands out the work
The helper that runs the week: it splits your note into jobs and hands each to the accountant, customer care or the taster, side by side where it can. Its tools line names Agent with those three inside, so it may hand work to them and to no one else.
When Claude reads it When /monday hands it your note, or you start a session as it with claude --agent manager.
- A description of when to use it
- tools: Agent(...), naming who it may hand work to
- Its instructions: split, hand out, report back
---
name: manager
description: Takes the owner's note, hands each job
to the right helper, brings back one report
tools: Agent(accountant, customer-care, taster), Read
memory: project
---
Split the note into jobs; hand them out side by side.
Bring back one report: done, sent back, waiting for a yes.
Never pay, order or post.accountant.md
The money keeper
A helper that keeps the money straight for the three shops, on the strongest model. It may only read, so it can never change a price, and memory: project gives it a memory of its own.
When Claude reads it When the manager hands it the figures, or you name it with @agent-accountant.
- A description of when to use it
- tools: only what it needs
- model: the strongest, for the numbers
- memory: project, so it learns each shop
---
name: accountant
description: Keeps the money straight for the three shops -
margins, prices, what is paid and what is owed
tools: Read, Grep, Glob
model: opus
memory: project
---
Read numbers.csv, suppliers.md and each shop's takings.
Price to the prices rule; report every bill unpaid.
Draft an order when asked; never send or pay one.customer-care.md
It knows the regulars
A helper that answers the reviews and writes the words on the menus, on a faster model. It may write a draft or a menu line, and it remembers each shop's regulars.
When Claude reads it When a task is about a review or a menu's words, or you name it with @agent-customer-care.
- A description of when to use it
- tools: read, and write drafts
- model: a faster one
- memory: project, so it knows the regulars
---
name: customer-care
description: Answers reviews and writes the menus' words;
knows each shop's regulars
tools: Read, Grep, Glob, Edit, Write
model: haiku
memory: project
---
Before you write, check your memory: is this a regular?
Draft replies into reviews/drafts/; never post one.taster.md
The helper that does the work never checks it
A helper that checks the other three's work before it reaches you: a drink against the prices rule, a reply against the house voice, an order against the budget. It may only read, so it never fixes what it checks.
When Claude reads it When the manager or a skill asks for a check, or you name it with @agent-taster.
- A description of when to use it
- tools: read only, so it cannot fix
- Its instructions: pass, or send back with the reason
---
name: taster
description: Checks a drink, a reply or an order
before it reaches the owner
tools: Read, Grep, Glob
memory: project
---
Check the work against the rules and the budget.
Pass it, or send it back with the one reason.
Never fix it yourself.agent-memory/
What each helper remembers
A memory folder for each helper whose file says memory: project. The helper reads its own MEMORY.md at the start of every task and writes back what it learned. It is separate from the memory of your own sessions.
When Claude reads it When a helper starts: the first 200 lines of its MEMORY.md, up to 25KB.
- A folder for each helper with memory
- A MEMORY.md the helper writes itself
- Committed, so the team's helpers share it
Good to know
Claude writes these files; you do not. memory: local keeps a helper's memory out of git (in agent-memory-local/), and memory: user keeps it across every project.
agent-memory/
├── manager/
│ └── MEMORY.md
├── accountant/
│ └── MEMORY.md
├── customer-care/
│ └── MEMORY.md
└── taster/
└── MEMORY.mdmanager/
One helper, one memory
The manager helper's memory folder, made because manager.md says memory: project.
When Claude reads it When the manager helper starts a task.
- Made by Claude the first time the helper remembers
- Holds the helper's MEMORY.md
manager/
└── MEMORY.mdMEMORY.md
Written by the helper, not by you
The manager's notes to itself: what you decided, and what is still waiting for your yes. It writes and trims this file itself.
When Claude reads it At the start of each task: the first 200 lines, up to 25KB.
- What you decided, and when
- What is waiting for your yes
- Kept short by the helper
# manager memory
## Decided
- One price in every shop
- Harbour opens on 3 November, not before
## Waiting for a yes
- The oat milk supplier switchaccountant/
One helper, one memory
The accountant helper's memory folder, made because accountant.md says memory: project.
When Claude reads it When the accountant helper starts a task.
- Made by Claude the first time the helper remembers
- Holds the helper's MEMORY.md
accountant/
└── MEMORY.mdMEMORY.md
Written by the helper, not by you
The accountant's notes to itself: what is paid, what is still owed, and each shop's pattern. It writes and trims this file itself.
When Claude reads it At the start of each task: the first 200 lines, up to 25KB.
- What is paid and what is owed
- Each shop's pattern, and costs creeping up
- Kept short by the helper
# accountant memory
## Paid
- The roaster, October, all three shops, on the 28th
- The milk, weekly, on Fridays
## Still owed
- Harbour's sign maker: half now, half at opening
## Watch
- Station sells most before nine, Park after twelve
- Harbour's oat milk costs more; the second supplier's does notcustomer-care/
One helper, one memory
The customer-care helper's memory folder, made because customer-care.md says memory: project.
When Claude reads it When the customer-care helper starts a task.
- Made by Claude the first time the helper remembers
- Holds the helper's MEMORY.md
customer-care/
└── MEMORY.mdMEMORY.md
Written by the helper, not by you
Customer care's notes to itself: the regulars at each shop, what they order, and what a reply must never say again. It writes and trims this file itself.
When Claude reads it At the start of each task: the first 200 lines, up to 25KB.
- The regulars, shop by shop
- What they order and what they asked for
- Kept short by the helper
# customer-care memory
## Regulars
- Park: the window table, every morning for three years;
has asked twice for oat milk
- Station: two nurses after the night shift, two large lattes
## Never again
- Mentioning the old roastertaster/
One helper, one memory
The taster helper's memory folder, made because taster.md says memory: project.
When Claude reads it When the taster helper starts a task.
- Made by Claude the first time the helper remembers
- Holds the helper's MEMORY.md
taster/
└── MEMORY.mdMEMORY.md
Written by the helper, not by you
The taster's notes to itself: what it sent back and why, and the bar it checks against. It writes and trims this file itself.
When Claude reads it At the start of each task: the first 200 lines, up to 25KB.
- What it sent back, and the reason
- The bar it checks against
- Kept short by the helper
# taster memory
## Sent back
- The oat flat white at Harbour, 20p over: one price in every shop
- A reply that offered money: the reviews rule says never
## The bar
- Twenty replies the owner approved, in reviews/approved/workflows/
Many helpers, run by one script
Scripts that run many helpers together, side by side or one after another, such as Harbour's last week before it opens: the accountant confirms the suppliers and the budget, customer care drafts the opening post, the taster checks both. Claude writes them: you run one, then save it from /workflows, rather than writing it by hand.
When Claude reads it At startup; each file becomes a /its-name command.
- One script to a file, started as /its-name
- The helpers it starts, and in what order
- Written by Claude, saved from /workflows
Good to know
A workflow saved in the project wins over one with the same name in your own folder.
export const meta = {
name: 'opening-week',
description: "Harbour's last week before it opens",
phases: [{ title: 'Confirm' }, { title: 'Draft' }, { title: 'Check' }],
}
const budget = await agent(
'Confirm the suppliers and the budget for 3 November',
{ phase: 'Confirm', agentType: 'accountant' })
const post = await agent(
"Draft Harbour's opening post",
{ phase: 'Draft', agentType: 'customer-care' })
const check = await agent(
'Check the budget and the post against the rules',
{ phase: 'Check', agentType: 'taster' })
return { budget, post, check }opening-week.js
The last week, in order
A saved workflow started with /opening-week: it runs Harbour's last week in order - the accountant confirms the suppliers and the budget, customer care drafts the opening post, the taster checks both - and gathers what each helper found.
When Claude reads it When you type /opening-week.
- Its name, description and phases
- The helper each step goes to
- What it gathers back
export const meta = {
name: 'opening-week',
description: "Harbour's last week before it opens",
phases: [{ title: 'Confirm' }, { title: 'Draft' }, { title: 'Check' }],
}
const budget = await agent(
'Confirm the suppliers and the budget for 3 November',
{ phase: 'Confirm', agentType: 'accountant' })
const post = await agent(
"Draft Harbour's opening post",
{ phase: 'Draft', agentType: 'customer-care' })
const check = await agent(
'Check the budget and the post against the rules',
{ phase: 'Check', agentType: 'taster' })
return { budget, post, check }hooks/
Scripts that run by themselves
A home for the scripts your hooks run. A hook reacts to an event, such as working every margin again the moment Claude edits a menu, and runs every time without Claude deciding to.
When Claude reads it Whenever the hook that calls a script fires: when a session starts, or just before or after Claude uses a tool.
- The scripts your hooks call
- The hooks themselves, declared in settings.json
- They run every time, not when Claude decides
Good to know
This folder is a common habit, not part of Claude's documented structure: the hooks themselves are declared in settings.json, as this example shows, and a short command can sit there with no script at all.
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": ".claude/hooks/check-margin.sh" }]
}]
}
}check-margin.sh
Every price, checked again
The script a PostToolUse hook runs after Claude edits a file. The event arrives as JSON, so the script reads which file was edited, and if it was a menu or the numbers it works every margin again.
When Claude reads it Right after Claude edits or writes a file.
- It reads the event from its input
- It works the margins if a menu or the numbers changed
- It is named by a hook in settings.json
#!/bin/sh
# Runs after Claude edits a file; the event arrives as JSON
file=$(jq -r '.tool_input.file_path')
case "$file" in
*menus/*.md|*numbers.csv) node tools/check-margin.js ;;
esaccheck-menu.sh
Nothing is done until the three menus agree
The script a Stop hook runs when Claude says it is finished. If the three menus do not carry the same drinks at the same prices, or a drink has no allergen line, exiting with 2 hands the message back to Claude to fix.
When Claude reads it When Claude finishes its answer.
- It checks the three menus against each other
- It exits with 2 to send Claude back
- It is named by a hook in settings.json
#!/bin/sh
# Runs when Claude finishes; exit 2 sends the message back
node tools/check-menus.js || {
echo "The menus disagree, or a drink has no allergen line." >&2
exit 2
}When Claude reads each one
Nothing is read all at once. Each file wakes at its own moment; press a name to open its detail.
Follow one task through: you ask Claude to put the oat flat white on all three menus.
The session starts
Then: Claude reads the guide, with the three shops and the four helpers, and your notes; it applies the settings and your output style, and connects the outside tools.
You type /monday
Then: Your note arrives with this week's figures, and the manager splits it into jobs and hands them out side by side.
The task is about a new drink
Then: The accountant picks up the new-drink skill and the prices rule wakes, because its paths match the menus; it remembers what oat milk costs at each shop.
The taster checks the price
Then: It sends Harbour's back, 20p over, because the rule is one price in every shop; the accountant finds cheaper oat milk and prices it again.
The menus are edited
Then: The permissions are checked first, check-margin.sh works every price again after each edit, and at Stop check-menu.sh sends Claude back until all three menus agree.
Two questions people ask
If two settings disagree, which wins?
Read the ladder from the top: the first one that says something wins.
Managed settingsset by your organisation, if it has anyclaude --model ...flags you start Claude with.claude/settings.local.jsonyours, in this project.claude/settings.jsonthe team's, in this project~/.claude/settings.jsonyours, in every project
Good to know
A list such as permissions.allow is not replaced: it adds up across every file.
Should I write a skill or a command?
A skill. Today they are one mechanism, and only their shape differs.
A command is one file
commands/deploy.md makes /deploy. Simple, and still supported.
A skill is a folder
skills/deploy/SKILL.md makes the same /deploy, and can carry templates, checklists and scripts beside it.
Who starts it
You or Claude, either way. Add disable-model-invocation: true when only you should, such as a deploy.
If both share a name
The skill wins. So write new ones as skills.
How Claude works
The files above steer nine parts of Claude Code. Press one to see what it is, what it does at Madav Coffee Cup, when it acts, and a small example.
Tools
What Claude does things with
Claude cannot touch your files by itself. Everything it does goes through a tool: Read opens a file, Edit and Write change one, Bash runs a command, Grep and Glob search, WebFetch reads a web page. When you watch Claude work, you are watching tools being used one after another.
Putting the oat flat white on the menus is a string of tools. Claude reads the three menus with Read and finds what oat milk costs with Grep. It changes each menu with Edit, one file at a time, asking you first. Then it uses Agent to hand the new price to the Taster to check.
When it acts Whenever Claude needs to act. Looking and searching run on their own; changing a file, running a command or reading the web ask you first, unless your permissions say otherwise.
- Read, Grep, Glob: look, without asking
- Edit, Write: change a file, asks first
- Bash: run a command, asks first
- WebFetch, WebSearch: read the web, asks first
- Agent: hand work to a helper
Good to know
A tool can be given to Claude or taken away: a helper in .claude/agents/ names the tools it may use, and a permission rule can say a tool is never used.
Read menus/station.md
Read menus/park.md
Read menus/harbour.md
Grep "oat" in numbers.csv
Edit menus/station.md
Edit menus/park.md
Edit menus/harbour.md
Agent taster, to check the pricePermissions
Who decides before Claude acts
Before Claude uses a tool that changes something, Claude Code checks your permissions. A rule can answer allow (go ahead), ask (check with me first) or deny (never). The permission mode sets the starting point for the whole session, and you can change it as you work.
The Accountant finds cheaper oat milk and drafts an order to the second supplier. Sending an order is on the ask list, so Claude stops and shows you the order before anything goes out. The staff files are on the deny list, so no helper ever opens them, whoever asks.
When it acts Before every tool call. A deny rule holds in every mode.
- default, called Manual: Claude asks before it edits or runs anything
- acceptEdits: file edits go through, commands still ask
- plan: Claude only reads, and writes a plan for you to approve
- auto: a second model checks each action instead of you
- Shift+Tab switches the mode during a session
Good to know
A rule reads as tool, then what it applies to: Bash(node tools/pay-supplier.js *) is every command that pays a supplier. Rules are enforced whatever Claude decides; CLAUDE.md is only guidance.
{
"permissions": {
"allow": ["Read(./numbers.csv)"],
"ask": [
"Bash(node tools/pay-supplier.js *)",
"Bash(node tools/send-order.js *)"
],
"deny": ["Read(./.env)"]
}
}Hooks
Your own scripts, run at set moments
A hook is a small script of yours that Claude Code runs at a fixed moment, every time, without Claude deciding. It is the way to make something always happen: work every margin again the moment Claude edits a menu, or check that the three menus agree before Claude is allowed to say it is done.
Every time a menu is edited, check-margin.sh works out every price again, without Claude deciding to. When Claude says the oat flat white is done, check-menu.sh runs at Stop, finds Harbour's opening menu still without the new line, and sends Claude back until all three menus agree.
When it acts At the moment you name. The most used: SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PostToolUseFailure, Stop and SessionEnd; the Hooks menu lists every moment there is.
- SessionStart: a session begins or resumes
- PreToolUse: before a tool runs; PostToolUse: after it works; PostToolUseFailure: after it fails
- Stop: Claude finishes answering; SubagentStop: a helper finishes
- PreCompact: before the conversation is squeezed to fit
- SessionEnd: the session closes
Good to know
A script that ends with exit code 2 says stop: before a tool, it blocks the tool; at Stop, it hands its message back to Claude and Claude keeps working. Hooks are declared in settings.json; the scripts can live in .claude/hooks/.
{
"hooks": {
"Stop": [{
"hooks": [{ "type": "command", "command": ".claude/hooks/check-menu.sh" }]
}]
}
}Memory
How Claude remembers between sessions
Every session starts fresh. Two things carry over. The CLAUDE.md files are instructions you write and Claude reads. Auto memory is notes Claude writes for itself, about your preferences and the corrections you give it, kept in your home folder, never in the project. Say "remember that Harbour opens on 3 November" and Claude saves a note.
You tell Claude once: remember that Harbour opens on 3 November. It saves that as a note, so every session after starts knowing the date without you saying it again. What must always hold, one price in every shop, you write yourself in CLAUDE.md.
When it acts Both are read at the start of every session: your CLAUDE.md files in full, the first 200 lines of Claude's own index of notes.
- CLAUDE.md: you write it, Claude follows it
- Auto memory: Claude writes it, in ~/.claude/projects/<project>/memory/
- /memory shows both and opens them for editing
- /context shows what actually loaded in this session
Good to know
Neither one is enforced: Claude reads them and tries to follow. For something that must always happen, use a hook; for something Claude must never do, a permission.
# Memory index
- Harbour opens on 3 November
- Park's till rounds to five pence
- Wants to see the margin before any price changes
- The second roaster is never used againMCP
How Claude reaches outside tools
MCP is how Claude Code connects to things outside your files: the three shops' tills, the bank export, the calendar, the review site, a browser. Add a server once and Claude can pull the week's takings or read the booking itself, instead of you pasting them in.
The three shops' tills live outside your files. Added once as an MCP server, they let Claude pull Monday's takings from Station, Park and Harbour itself, instead of you exporting three spreadsheets and pasting them in. The bank export and the review sites join the same way.
When it acts A server connects the first time Claude needs one of its tools. For a project's shared servers, Claude asks you once before it uses them.
- project scope: .mcp.json, shared with the team
- user scope: just you, in every project
- local scope: just you, in this project
- /mcp shows what is connected
- A secret goes in as ${NAME}, read from your machine
claude mcp add --transport http tills --scope project https://tills.example.com/mcp
# writes .mcp.json:
{
"mcpServers": {
"tills": { "type": "http", "url": "https://tills.example.com/mcp" }
}
}Subagents
Helpers with a context of their own
A subagent is a helper Claude hands a task to. It works in its own context window, so a long search or a review does not fill your conversation, and it reports back only what matters. Claude Code ships some - Explore searches the code without changing it, Plan gathers what a plan needs, general-purpose does both - and you add your own as files in .claude/agents/.
Your Monday note goes to the Manager, which hands out three jobs at once: the price to the Accountant, the menu line and a reply to the Customer Care Agent, the check to the Taster. Each works in its own context and hands back only its answer, so your conversation stays short. You can ask one yourself too: @agent-accountant what did Park make last Tuesday?
When it acts When a task fits a helper's description, or when you name one by typing @.
- Built in: Explore, Plan, general-purpose
- Your own: one file each in .claude/agents/, with the tools it may use
- @agent-name hands a task to that helper for sure
- A helper can hand work on to helpers of its own, as the manager hands out the week to the other three
- Agent teams: several full sessions working together; experimental, switched on in settings
Good to know
A helper with memory: project keeps its own notes in .claude/agent-memory/, separate from your session's auto memory.
@agent-accountant what did Park make last Tuesday?
# the helper, in .claude/agents/accountant.md
---
name: accountant
description: Keeps the money straight for the three shops
tools: Read, Grep, Glob
---
Report every price under its margin. Change nothing.Context window
What Claude has in front of it
Everything Claude knows in a session sits in one place, the context window: its instructions, your CLAUDE.md files, the tools it may use, and then the conversation itself as it grows, with every file it reads and every command's output. The window has a fixed size, so a long session fills it up.
A month of takings from Station and Park is thousands of lines, too many to sit in one conversation beside the guide, the rules and your questions. So the Accountant reads each shop in a window of its own and hands back one line each. When a long Monday still fills up, /compact told to keep the price and the plan folds the rest away.
When it acts It fills from your first message. When it is nearly full, Claude Code compacts it on its own: the conversation becomes a summary, and your CLAUDE.md files are read in again.
- /context shows what is taking room right now
- /compact squeezes the conversation into a summary; add a note to say what to keep
- /clear starts a fresh conversation; the old one is saved
- A rule with paths or a skill loads only when needed, which keeps the window small
- A helper reads a big thing in its own window and hands back a summary: a month of two shops' takings becomes one line each
Good to know
After a compact, your CLAUDE.md files and the rules that matched come back; something said only in the conversation may not. Put anything that must last in CLAUDE.md.
System prompt loaded first; you never see it
CLAUDE.md and rules your instructions
Auto memory Claude's notes, the first 200 lines
Tools and MCP names what Claude may use
The conversation grows with every file read and command runSessions
Coming back, and going back
A session is one saved conversation in a project. Claude Code saves it as you work, so you can close the terminal and pick it up later, give it a name, or branch it to try another way. Every prompt you send also takes a checkpoint of your files, so a change that went wrong can be undone.
You name the week's big job opening-harbour, and the next morning claude --resume opening-harbour puts you back exactly where you stopped. When the Taster sends Harbour's price back, /rewind takes the menus back to before the edit. A second session in its own worktree works on the new menu at the same time.
When it acts Saved all the time; a checkpoint at every prompt you send.
- claude --continue reopens the last conversation here; claude --resume picks one
- /rename names the session; /resume switches to another
- /rewind, or Esc twice, goes back to an earlier prompt: the code, the conversation, or both
- /branch copies the conversation so far, to try a different way
- claude --worktree <name> gives a session its own copy of the repository, so two can work side by side
Good to know
Rewind restores only the files Claude edited with its own tools; a change made by a command, such as rm, is not undone. Git is still your history.
claude --resume opening-harbour # pick up the named session
/rewind # undo back to the prompt before the change
claude --worktree new-menu # a second session in its own copyPlugins
Ready-made extras you install
A plugin is a bundle someone has already written - skills, helpers, hooks, MCP servers - that you install instead of writing your own. Anthropic keeps an official marketplace of them, and a team can run its own. A plugin's skills are called with the plugin's name in front, /plugin-name:skill, so two plugins never clash.
After the third opening, the four helpers, the open-a-shop skill and the menu checks are worth sharing. Packed as the plugin coffee-shop-starter, the next person opening a coffee shop installs it with /plugin and runs /coffee-shop-starter:open-a-shop on day one, without writing a single file.
When it acts Once installed and switched on, a plugin's parts load at the start of every session, like your own.
- /plugin opens the plugin manager: browse, install, switch on or off
- claude-plugins-official is added for you the first time you start Claude Code
- /plugin marketplace add <owner/repo> adds another marketplace
- Your own .claude/ files come first when a helper's name clashes; a plugin's skills keep their prefix
Good to know
Start with your own .claude/ files for a quick try; turn them into a plugin when you want to share them - a coffee shop starter, the four helpers and their skills, for the next person opening one.
/plugin # browse and install
/plugin marketplace add anthropics/claude-plugins-community
/coffee-shop-starter:open-a-shop # a plugin's skill, its name in frontClaude daily commands
A command starts with / and is typed where you talk to Claude. These are the ones you will use most, in the groups Claude Code uses. Press Example on a row to see what you type and what happens; every example follows one case, the oat flat white going on all three menus at Madav Coffee Cup.
| Command | What it does | Details |
|---|---|---|
| Setup and configuration | ||
/init | Writes a first CLAUDE.md for your project. | Use it once, in a new project. Claude reads the code and writes the build and test commands, the layout and the conventions it finds; you then trim it to what is true. If a CLAUDE.md already exists, it suggests improvements instead. |
/initClaude reads the Madav Coffee Cup folder and writes CLAUDE.md: the three shops, where the plans, the numbers and the menus live, and the rules it found written down. You read it and take out anything that is not true. | ||
/memory | Opens your CLAUDE.md files and Claude's own notes. | Lists every memory file, yours and the project's, opens the one you pick in your editor, and switches auto memory on or off. |
/memoryA list: ~/.claude/CLAUDE.md (every project), ./CLAUDE.md (this project), ./CLAUDE.local.md (just you), and the auto memory folder. Pick one and it opens in your editor. | ||
/permissions | Shows and edits the allow, ask and deny rules. | The same rules that live in settings.json, as a menu: add a rule, remove one, and see which file it is saved in. |
/permissionsThe rules, by answer: allow Read(./numbers.csv), ask Bash(node tools/pay-supplier.js *), deny Read(./.env). Add one, and it is saved to settings.json or settings.local.json. | ||
/hooks | Shows the hooks that are set, moment by moment. | Read-only: to add or change a hook, edit settings.json. Look here to know what will run on its own before Claude acts. |
/hooksThe moments, with what is set: PostToolUse runs check-margin.sh after every edit, Stop runs check-menu.sh before Claude may say it is done. | ||
/mcp | Shows the outside tools connected, and signs you in to one. | Each server with its state: connected, connects on first use, or waiting for your approval. A project's shared servers are approved here the first time. |
/mcptills: connected, 3 shops. calendar: connects on first use. bank: needs your approval. Approve it once, and Claude can pull the week's takings itself. | ||
/config | Opens the settings screen. | The face, the model, notifications and the rest, changed in a menu instead of a file. |
/configA settings screen. Change the theme or the default model, and it is saved to your settings. | ||
/doctor | Checks your setup and offers fixes. | Run it when something feels off: it checks the install and the settings files, and proposes trims for a CLAUDE.md that has grown too long. |
/doctorInstall ok. Settings ok. CLAUDE.md is 312 lines: it proposes what to cut. Accept a trim, and the file is edited for you. | ||
| Model and performance | ||
/model | Picks the model for this session. | The strongest for hard work, a faster one for the quick back-and-forth; the choice can be saved as your default. |
/modelA list of the models you may use. Pick one; it applies from your next message. | ||
/effort | Sets how hard Claude thinks before it answers. | Low for small edits, high for a tricky bug; auto lets Claude choose for each task. |
/effort highEffort set to high. Claude spends longer on the new drink's price before it edits anything. | ||
/fast | Turns fast mode on or off. | The same model, answering faster, for the small quick steps. |
/fastFast mode on. Turn it off the same way. | ||
| Context and memory | ||
/context | Shows what is filling the context window. | A breakdown by kind - instructions, memory, tools, the conversation - and which CLAUDE.md files loaded. Look here when Claude seems to have forgotten something. |
/contextInstructions 3k (./CLAUDE.md, rules/prices.md), auto memory 1k, tools 2k, the conversation 62k. Free: 130k. | ||
/compact | Squeezes the conversation into a summary. | Add a note to say what the summary must keep. Claude Code does this on its own when the window is nearly full. |
/compact focus on the new drinkConversation compacted. The summary keeps the new drink, the files read and the price so far; the rest of the chat is folded away. | ||
/clear | Starts a fresh conversation. | The old one is saved; come back to it with /resume. |
/clearA new, empty conversation. The old one is saved; /resume brings it back. | ||
| Tasks and workflow | ||
/plan | Puts Claude in plan mode for one prompt. | Claude reads and thinks but changes nothing until you approve its plan. Shift+Tab does the same for the whole session. |
/plan put the oat flat white on all three menusClaude reads the numbers and the menus, then shows a plan: 1. work the cost from numbers.csv; 2. price it a third over, rounded to ten pence, one price for all three; 3. write its line and its allergen line on each menu in menus/. Approve it, and Claude starts editing. | ||
/tasks | Lists the work running in the background. | Background helpers and commands, with where each one is. |
/tasksaccountant: running, pricing the oat flat white. customer-care: running, the menu line and a reply. taster: waiting to check both. | ||
| Code review and changes | ||
/diff | Shows the changes in your working tree. | What Claude has changed so far, file by file, before you commit. |
/diffmenus/station.md +3, menus/park.md +3, menus/harbour.md +3, numbers.csv +1. Open a file to read its diff. | ||
/code-review | Reviews a change for bugs and cleanups. | Point it at the working tree, a branch, or a pull request number. |
/code-reviewTwo findings: menus/harbour.md, the oat flat white has no allergen line (the menu rule); numbers.csv, oat milk is priced from last month's cost (it went up). | ||
/security-review | Checks a change for security problems. | Leaked secrets, injection, missing checks, on the current diff. |
/security-reviewNo secrets in the files. One note: the bank token sits in .env, and .env is denied; keep it that way when the bank export tool is added. | ||
| Sessions | ||
/resume | Switches to a saved conversation. | With no name it opens the picker; with a name it goes straight there. |
/resume opening-harbourBack in opening-harbour: the conversation, the model and the permission mode as they were. | ||
/rename | Names this session. | So you can find it in the picker later and resume it by name. |
/rename opening-harbourSession renamed to opening-harbour. | ||
/branch | Copies the conversation so far into a new one. | Try a different way without losing the path you were on; the original stays as it was. |
/branch try-a-smaller-menuBranched. You are now in try-a-smaller-menu; the original is untouched. | ||
/rewind | Goes back to an earlier prompt. | Restore the code, the conversation, or both, to any prompt you sent. Esc twice opens the same menu. |
/rewindYour prompts, newest first: round the oat price; add its allergen line; put the oat flat white on all three menus. Pick one, then restore the files, the conversation, or both. | ||
| Helpers and workspace | ||
/agents | Shows your helpers and lets you create one. | The built-in helpers and the files in .claude/agents/ and ~/.claude/agents/; a new one is written from a description. |
/agentsYour four from .claude/agents/: manager, accountant, customer-care and taster, then the built-in helpers, and Create new agent. | ||
/worktree | Manages the copies of the repository your sessions work in. | List them, open one, remove one you are done with. |
/worktreenew-menu in .claude/worktrees/new-menu; opening-harbour, 2 files changed. | ||
/status | Shows where you are. | The session, the model, the permission mode, the working directory and the account. |
/statusSession opening-harbour. Model Opus 5. Mode Manual. Directory C:/Projects/madav-coffee-cup. | ||
/add-dir | Lets Claude read another folder. | For a project spread across two folders, without leaving this one. |
/add-dir ../coffee-cup-photosAdded ../coffee-cup-photos. Claude can now read its files. | ||
| Output and help | ||
/export | Saves the conversation as plain text. | Copy it, or write it to a file, to share what was done. |
/export opening-harbour.txtThe conversation is saved to opening-harbour.txt. | ||
/copy | Copies Claude's last answer. | To the clipboard, ready to paste. |
/copyThe last answer is on your clipboard. | ||
/help | Lists what you can type. | Every command and every skill, with a line each. The first thing to try when you are lost. |
/helpEvery command with a line each, and a tab of your own skills. | ||
/usage | Shows what this session has used. | Tokens and cost so far. /cost does the same. |
/usageThis session: 48k tokens. Today: 212k. | ||
/plugin | Installs and manages plugins. | Browse a marketplace, install, switch a plugin on or off. |
/pluginDiscover, Installed and Marketplaces. Install one, and its skills appear as /plugin-name:skill. | ||
/skills | Shows your skills. | Every skill Claude can use, from your project, your home folder and your plugins. |
/skills/new-drink, /reply-to-a-review and /open-a-shop from .claude/skills/, and any from plugins. | ||
/release-notes | Shows what changed in the latest Claude Code. | Read it after an update. |
/release-notesThe latest version's notes, newest first. | ||
/exit | Closes Claude Code. | The session is saved; claude --continue brings it back. |
/exitClaude Code closes. claude --continue reopens this conversation. | ||
| Setup and configuration | ||
/keybindings | Opens your keyboard shortcuts file | |
/theme | Sets the prompt bar colour for this session | |
/chrome | Settings for Claude in Chrome | |
/ide | Manages the editor integration | |
/install-github-app | Installs the Claude GitHub app for a repository | |
/install-slack-app | Installs the Claude Slack app | |
/terminal-setup | Sets up the terminal integration | |
/reload-plugins | Reloads plugins without restarting | |
/import | Brings settings over from another coding tool | |
| Model and performance | ||
/advisor | Turns the advisor tool on or off | |
| Context and memory | ||
/autocompact | Sets how full the window gets before an automatic compact | |
| Tasks and workflow | ||
/batch | Makes a large change across a codebase in parallel | |
/goal | Sets a goal for Claude to keep working toward | |
/loop | Runs a prompt again and again on a schedule | |
/deep-research | Fans out web searches and writes a cited report | |
/schedule | Runs a prompt at a set time | |
| Code review and changes | ||
/verify | Checks the code for quality and correctness | |
| Sessions | ||
/fork | Copies the conversation into a new background session | |
/background | Sends this session to the background | |
/teleport | Pulls a web session into this terminal | |
/remote-control | Continues this session from another device | |
| Helpers and workspace | ||
/subtask | Hands a side task to a helper | |
/agent | Creates or manages one helper | |
/list-agents | Lists helpers and other sessions | |
/workflows | Manages dynamic workflows | |
/cd | Moves the session to another folder | |
/statusline | Sets up the status line | |
| Output and display | ||
/focus | Toggles the focus view | |
/output-style | Changes the output style | |
/design | Drafts screens and artboards as an artifact | |
/design-login | Signs in for design-system access | |
/design-sync | Uploads your design system to Claude Design | |
/dataviz | Guidance for charts and dashboards | |
| Utilities and help | ||
/cost | The same as /usage | |
/btw | Asks a side question without adding to the conversation | |
/skill-doctor | Finds and fixes problems in a skill | |
/debug | Turns on debug logging | |
/feedback | Sends product feedback | |
/bug | Reports a bug, sharing the conversation | |
/share | The same as /bug | |
/upgrade | Moves to a higher plan | |
/passes | Shares a free week of Claude Code | |
/mobile | Shows a code to get the mobile app | |
/desktop | Continues this session in the desktop app | |
/voice | Turns on voice input | |
/computer-use | Settings for the computer use tool | |
/stats | Shows session statistics | |
/vim | Turns on Vim keys | |
/sandbox | Manages sandboxed environments | |
/pr-comments | Manages pull request comments | |
/autofix-pr | Starts a session that watches a pull request and pushes fixes | |
/claude-api | Loads the Claude API reference for API work | |
/fewer-permission-prompts | Reads your transcripts and proposes allow rules | |
/insights | Writes a report on your recent sessions | |
/auto-mode-setup | Drafts the settings auto mode needs | |
/heapdump | Writes a memory snapshot for diagnosis | |
/login | Signs in | |
/logout | Signs out | |
















