Custom Commands
Extend the slash menu with your own COMMAND.md prompt templates — $ARGUMENTS expansion, project and user scopes, and automatic adoption from .claude/ and .agents/ directories.
The Command Deck's slash menu is extensible: alongside the built-ins
(/help, /models, /export, …), your ⚡
skills, and your
custom agents, you can define
commands — reusable prompt templates invoked as /name.
The format
A COMMAND.md (nested <slug>/COMMAND.md or flat <slug>.md) with
optional frontmatter and a Markdown body:
---
name: review
description: Review the working diff like our team does.
---
Review the current diff for correctness first, style second.
Focus areas: $ARGUMENTS
- Flag any change without a matching test.
- Check error paths before happy paths.Both frontmatter fields are optional: name: falls back to the filename
stem (or the directory name in the nested layout), and description: falls
back to the body's first non-empty line. Only the body is required — a
command with an empty body is skipped with a diagnostic, never a fatal
error.
Argument expansion
Typing /review auth module expands the template and runs the result as
the prompt:
- Every
$ARGUMENTSoccurrence in the body is replaced with whatever follows the command name (auth moduleabove). - A body without the placeholder still takes arguments — non-empty arguments are appended as a trailing paragraph, so plain prompt files written for other tools work unchanged.
Where commands live
| Scope | Path | Travels with |
|---|---|---|
| Project | <workspace>/.stella/commands/ | The repo — commit it, the team shares it |
| User | ~/.config/stella/commands/ | You, across every workspace |
Definitions load user-global first, then workspace — workspace wins on a name collision. In the slash menu, built-ins can never be shadowed, and when a custom name collides across kinds, commands shadow skills shadow agents.
Adopted from tools you already use
stella init (and /init) adopts command definitions from other agent
tools' directories as symlinks — .claude/commands/ and
.agents/commands/ (workspace scope), ~/.claude/commands/ and
~/.agents/commands/ (user scope) — so your existing setup carries over
instead of being rewritten. .claude wins over .agents on a name
collision, existing Stella-side definitions are never clobbered, and the
sync is idempotent. The same adoption covers skills and agents — the full
mechanics are documented on the
Custom Agents
page.
Commands are prompt-level extensions — templates. For a reusable persona with an optional restricted toolbelt, define a custom agent; to give the agent a genuinely new action (a deploy script, a database query), define a custom tool; to run shell commands on lifecycle events, use hooks.
Agent Skills
Reusable capabilities in SKILL.md files — project and user scopes, versioning and pinning, the public registry, and how skills reach the model through recall.
Custom Agents
Define reusable personas in AGENT.md files — the frontmatter schema, where definitions live, versioned editing, and how stella init adopts agents from .claude/ and .agents/ directories.