Commands
Slash commands you type, how they differ from skills and hooks, and when to add your own.
A command runs because you typed it. That is the whole distinction, and it is why commands are the safest of the three extension mechanisms.
| Mechanism | Runs when | Who decides |
|---|---|---|
| Command | You type it | You, every time |
| Skill | An agent invokes it | The agent, within permissions |
| Hook | An event fires | Nobody, after install |
When you can express something as a command, prefer it. You keep the decision.
Built-in commands
49 commands ship with the TUI, grouped by purpose — session, route, work, fleet and A2A, code, context, extensibility, voice, presence, and meta.
The complete generated list, with descriptions taken straight from the registry, is at TUI slash commands. It is generated from source, so it cannot drift from what the build actually registers.
/help
Shows the same grouping in the app, and /help <command> gives detail for one.
Anatomy
Each registered command carries:
| Field | Purpose |
|---|---|
name | What you type after / |
summary | One line, shown in the list |
description | Full explanation, shown in help |
category | Grouping |
args | Named arguments with types and suggestions |
availableIn | Which surfaces expose it |
keybinding | Optional shortcut |
Arguments get autocomplete, including dynamic suggestions where the set is known at runtime — agent names, task ids, model names.
Aliases
Some commands accept aliases. /orchestrate also answers to /orch and
/plan-goal. Aliases are declared in the command's own description rather than
maintained separately, which is why the generated reference shows them.
Adding your own
Before writing a command, check whether a prompt would do. A reusable instruction is not a command; it is text you can send.
Write a command when you need:
- Arguments with validation or suggestions.
- Something reachable without leaving the keyboard.
- A deterministic action rather than a model turn.
IMPORTANT
A command that only wraps a prompt adds a name to remember without adding capability. Prefer a prompt until the argument handling is real.
Scope and precedence
Commands can be defined at project or user scope. Project scope is trust-gated — see customization overview.
Where both define the same name, the more specific scope wins, and the resolution is visible rather than silent.
SECURITY
A project-defined command is content from whoever wrote the repository. Read what it does before trusting it, especially in a repo you did not write.
Commands versus the palette
The command palette (Ctrl K in the desktop) surfaces workspace and pane actions — splitting, layouts, workspace management. Slash commands act on the session and the work.
Overlapping vocabulary, different targets:
| You want | Use |
|---|---|
| Split a pane, apply a layout | Command palette |
| Change mode, delegate, write an artifact | Slash command |
Errors
Commands fail with structured errors, not prose. A malformed invocation returns
a validation error with a remediation line; transport failures are a separate
family carrying a retryable flag.
Retry transport failures. Never retry validation failures — a malformed command will be malformed the second time. See exit codes.
Related
- TUI slash commands — the generated list
- The composer
- Customization overview