Stelladocs
Agent Tools

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:

.stella/commands/review.md
---
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 $ARGUMENTS occurrence in the body is replaced with whatever follows the command name (auth module above).
  • 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

ScopePathTravels 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.

Stella is totally free and open source, dual-licensed MIT or Apache 2.0— your choice: MIT's three-paragraph simplicity, or Apache 2.0's explicit patent grant that enterprises prefer. Use it, fork it, embed it, ship it — no account, no phone-home, no strings. What that means →

On this page