Commands and @ mentions
Type / in the message box to run a command, or @ to bring a subagent, a workflow, a
flow or a tool server into your message. Both menus list only what this conversation’s
agent has.
Run a command
Section titled “Run a command”-
Type
/. The menu groups what you can run: Commands, then Skills, then each tool server’s prompts. -
Keep typing to narrow it, use the arrow keys to choose, and press Enter. Words after the command are its arguments, for example
/component Button primary.
Each row says where it comes from (a plugin, this workspace or your own folder) and what it takes. A row that cannot run says why in words: Reserved name, Shadowed or Unavailable. Hover the label for the reason.
Commands, skills and prompts
Section titled “Commands, skills and prompts”- Commands run as a message to the agent: the command file’s text, with your
arguments filled in, becomes what you sent. The built-in ones (
/clear,/goal,/loop,/cronand its alias/schedule,/cache-statsand/dump-trace) do their job at once. - Skills load a skill for the agent before it reads your message, so it works from
that skill’s procedure. Your message records that you loaded it. A skill marked
user-invocable: falseis not listed; the agent can still load it when it needs it. - Prompts come from a tool server the agent is connected to, named
/mcp__<server>__<prompt>. Your words fill the prompt’s arguments in order, the last argument taking the rest. If a required argument is missing, the command says which one. The fetched prompt becomes your message, with any image or document it includes; open Prompt … from … under your message to read it. When a server adds a prompt while you work, it appears in the menu the next time you type/.
When two commands share a name
Section titled “When two commands share a name”Two plugins can ship a command of the same name. The menu then lists both under their
full names, such as /commands-fixture:review-notes and /commands-clash:review-notes,
marked Same name elsewhere. Type the full name to run one; the short name alone is
refused and the refusal names both.
Write your own commands
Section titled “Write your own commands”A command is a Markdown file. Its name is the file name, and its text is what the agent receives:
---description: Summarize what changed since yesterday.argument-hint: "<what you did>"---Write a three-line standup: yesterday, today, blockers. Yesterday: $ARGUMENTS| Where the file goes | Who sees it | Full name |
|---|---|---|
.clio/commands/ in the workspace |
this workspace | /project:<name> |
.claude/commands/ in the workspace |
this workspace | /project:<name> |
~/.config/clio-agent/commands/ |
you, in every workspace | /user:<name> |
~/.claude/commands/ |
you, in every workspace | /user:<name> |
a plugin’s commands/ folder |
conversations whose agent has the plugin | /<plugin>:<name> |
$ARGUMENTSis everything typed after the command;$1,$2and so on are its words, and quotes keep words together.- A file in a subfolder keeps its name; the folder becomes its label in the menu.
- When the same name exists in several of these folders, the first in the table wins and the others are listed as Shadowed, naming the file that wins.
- A built-in name, such as
goal, is reserved: a file namedgoal.mdis listed as Reserved name and/goalstill runs the built-in. agent: <subagent>orworkflow: <workflow>in the frontmatter asks for that subagent or workflow, the same as writing@<name>in the message.modelandallowed-toolsfrom Claude Code commands are read but not used. The menu says Some fields ignored.
Bring in a subagent, a workflow, a flow or a tool server with @
Section titled “Bring in a subagent, a workflow, a flow or a tool server with @”-
Type
@. Your workspace’s files are listed; Agents (the subagents this agent can start), Workflows (with the inputs they take), Flows and Tools (its tool servers) are collapsed, each with its count. Open one to browse it. -
Keep typing: every category shows what matches. Press Enter, and the name becomes a chip in your message. You can add several.
-
Send the message.
- A subagent, workflow or flow you name is what you ask the agent to use for this message. Nothing starts before the agent reads it: the agent writes the brief from the whole conversation (so “the folder we talked about” becomes the folder’s path), sets what the work needs (a model, a workflow’s inputs, a flow’s options), and starts it. Under your message you see You asked for explore on this message; under the answer, Started explore as you asked, and the work appears with its progress like any other, started by you. If the agent did not start it, the answer says so: explore was not started, with the reason when a call was refused. The agent keeps every tool while it works.
- A tool server you name has its tools loaded for this message, so the agent can use them straight away. Under your message: You pointed this message at the hdf5 tools.
- Typing the full name also works:
@exploreas its own word becomes a chip when you send. An address such asbob@example.orgstays text. - A name the agent has no subagent or server for never becomes a chip; it is sent as ordinary text.
Plugins written for Claude Code
Section titled “Plugins written for Claude Code”CLIO installs a Claude Code plugin as it is, through a translation: an importer reads
its files into CLIO’s own plugin records, and a hook adapter runs its hooks on the same
wire Claude Code uses. clio-agent plugin check names anything that has no CLIO
counterpart instead of dropping it silently. The writing method in
Write a paper is one such package, brought into
CLIO.
| In the Claude Code plugin | In CLIO | How it maps |
|---|---|---|
commands/*.md |
/ commands, /<plugin>:<name> |
exactly, with $ARGUMENTS and $1, $2 |
skills/*/SKILL.md |
skills, also / commands |
exactly |
agents/*.md |
subagents | exactly; each tool it names maps by the table below |
hooks/hooks.json |
hooks on the same events: PreToolUse, PostToolUse, UserPromptSubmit, UserPromptExpansion, Stop, SubagentStop, SessionStart, SessionEnd, PreCompact |
exactly; another event is reported as unmapped |
.mcp.json |
tool servers | exactly, with ${CLAUDE_PLUGIN_ROOT} |
Read, Glob, Edit, MultiEdit, Write |
the workspace file tools | exactly |
Bash |
the shell tool | exactly |
WebFetch, WebSearch |
the web tools | exactly |
Task, Agent |
spawn_agent_task |
exactly |
Grep |
the workspace text search | in part: its regex, glob and files, content and count modes map; multiline mode and split -A/-B context do not, and plugin check says so |
| another tool a subagent names | left out of that subagent | plugin check warns |
model, allowed-tools, disable-model-invocation in a command |
read, not used | the menu says Some fields ignored |
output-styles/, outputStyles, lspServers |
not used | plugin check warns |
Related
Section titled “Related”- Subagents: what subagents are and how their work appears.
- Tool servers: connect the servers whose tools and prompts you use.
- Agents and plugins: where commands, skills and subagents come from.