A custom slash command is just a Markdown file. You drop a file like truth.md into a commands folder, and its name becomes the command. truth.md gives you /truth. That's the whole trick, no config, no code.
There are two places to save them:
~/.claude/commands/ (older layout) or ~/.claude/skills/<name>/SKILL.md (newer layout). Personal commands follow you everywhere..claude/commands/ or .claude/skills/<name>/SKILL.md. Great for team commands you commit to Git..claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy and work the same way. Your existing commands files keep working, so you do not have to migrate anything. Skills just add extras (a folder for supporting files, and the option to let Claude auto-run them). Source: Claude Code skills docs.mkdir -p ~/.claude/commands for a personal command (or mkdir -p .claude/commands inside a project).~/.claude/commands/truth.md and paste the /truth content from below./truth followed by your question. Claude runs your saved instructions every time, no copy-paste.Each one is a full file. Copy the block, save it as the named .md file in your commands folder, and it becomes a /command.
truth.md โ /truth (Claude flags where it's guessing instead of making things up)
--- description: Answer with radical honesty. Flag every uncertain claim and never fill gaps with confident nonsense. --- Answer my question below with radical intellectual honesty. Rules: - Separate what you actually know from what you are inferring or guessing. Label guesses clearly as guesses. - If you are not confident, say so and give a rough confidence level, do not smooth it over. - Never invent facts, sources, numbers, quotes, or links. If you don't know, say "I don't know." - Point out where I might be wrong or missing context, even if I didn't ask. - Short and direct over polished and padded. My question: $ARGUMENTS
redteam.md โ /redteam (Claude attacks your own idea before you ship it)
--- description: Red-team my idea. Find the 3 biggest ways it fails before I ship it. --- Red-team the idea or plan below. Your job is to stress-test it, not cheerlead. 1. List the 3 most likely ways this fails in the real world, ranked by how damaging each one is. 2. For each, explain the mechanism (why it happens) and one early warning sign I'd actually notice. 3. Name the single riskiest assumption I'm making that, if wrong, breaks the whole thing. 4. End with the smallest test I could run this week to de-risk it before committing. Be specific to my idea, no generic startup advice. My idea: $ARGUMENTS
predict.md โ /predict (Claude calls the likely outcome and shows its reasoning)
--- description: Predict the likely outcome from the context I give, with reasoning and a confidence level. --- Based only on the information below, predict the most likely outcome. 1. State your single most likely prediction in one sentence. 2. Show the reasoning chain that got you there, step by step. 3. Give a rough probability and the 2-3 factors that would most change it. 4. Give one realistic alternative outcome and what would have to be true for it to happen. Flag clearly if the context is too thin to predict well, instead of guessing confidently. Context: $ARGUMENTS
The reel version is already useful, but three built-in tricks turn a command into a real tool. All three are documented in the official skills docs.
$ARGUMENTS drops in whatever you type after the command. /truth is my pricing too high? feeds "is my pricing too high?" straight into the file. For separate inputs, use $1, $2 (or $ARGUMENTS[0], $ARGUMENTS[1]) to grab them by position.@file pulls in a file's contents. Put @notes.md or @$1 in your command and Claude reads that file before answering. This is what makes a /predict command that "reads your notes" actually work: point it at a real doc.!`command` runs a shell command first and pastes the output into your prompt before Claude sees it. Example: a line like !`git diff HEAD` feeds your live code changes in, so /redteam critiques what you actually changed, not a guess.The bit between the --- lines at the top is called frontmatter, and it's optional but worth adding. Useful fields (all optional, from the docs):
description is the one-liner shown in the / menu so future-you remembers what the command does.argument-hint shows expected inputs in autocomplete, e.g. [filename] or [issue-number].allowed-tools pre-approves tools so Claude doesn't stop to ask, e.g. allowed-tools: Read Grep.disable-model-invocation: true means only you can run it by typing /name, Claude won't trigger it on its own. Good for anything with side effects.Same idea, saved as new files in your commands folder. These are the ones I reach for most.
eli.md โ /eli (explain anything at the level you actually need)
--- description: Explain a concept simply, then go one layer deeper. --- Explain the topic below in three passes: (1) a plain one-paragraph version a smart friend would get, (2) the mechanism underneath (how it actually works), (3) the one nuance most explanations skip. Use a concrete example. No jargon without defining it. Topic: $ARGUMENTS
hooks.md โ /hooks (turn one idea into scroll-stopping hooks)
--- description: Generate 10 distinct short-form hooks for a topic. --- Write 10 short-form video hooks for the topic below, aimed at a non-technical creator audience. Vary the angle: curiosity, contrarian, outcome-led, "did you know", and problem-first. Second person, no fearmongering, no clickbait I couldn't back up. One line each, no numbering fluff. Topic: $ARGUMENTS
steelman.md โ /steelman (the opposite of red-team: argue the strongest case FOR)
--- description: Build the strongest possible case for an idea before I dismiss it. --- Steelman the idea below. Give me the most compelling, good-faith version of the argument FOR it, including the strongest evidence and the scenario where it clearly wins. Then note the single condition under which it stops being true. No strawmanning, no hedging. Idea: $ARGUMENTS
/truth is the best first pick), save it personally in ~/.claude/commands/ so it works everywhere, and use it for a week before adding more. The filename literally becomes the command, so a file named truth.md gives you /truth. That's the whole learning curve..claude/commands/ folder to your repo so your whole team shares the same commands, and lean on !`command` and @file to feed live context in (your git diff, a spec file, a data export). That's the difference between a saved prompt and an actual workflow tool.