Custom Slash Commands
In Trellis 0.5, only three slash commands ship out of the box (/trellis:start, /trellis:finish-work, /trellis:continue); anything else that used to be a command has moved to auto-trigger skills (see chapter 12). Use slash commands when you need an explicit entry point that the user will invoke on demand.
Command File Format and Location
Trellis groups the 13 configured platforms into three delivery models: Explicit slash commands — the user types/trellis:<name>; the platform injects the command file’s content as a prompt.
| Platform | Location | Invoked as |
|---|---|---|
| Claude Code | .claude/commands/trellis/{name}.md | /trellis:{name} |
| Cursor | .cursor/commands/trellis-{name}.md | /trellis-{name} |
| OpenCode | .opencode/commands/trellis/{name}.md | /trellis:{name} |
| Codex | .codex/prompts/trellis-{name}.md | /trellis-{name} |
| Gemini CLI | .gemini/commands/trellis/{name}.toml | /trellis:{name} |
| CodeBuddy | .codebuddy/commands/trellis/{name}.md | /trellis:{name} |
| Droid | .factory/commands/trellis/{name}.md | /trellis:{name} |
| Copilot | .github/prompts/trellis-{name}.prompt.md | prompt-file picker |
prompt = """...""" field).
Workflow files — platforms without a dedicated slash-command primitive; the user runs a “workflow” by name.
| Platform | Location | Invoked as |
|---|---|---|
| Kilo | .kilocode/workflows/{name}.md | /{name}.md (Kilo’s workflow UI) |
| Antigravity | .agent/workflows/{name}.md | opened from .agent/workflows/ |
| Windsurf | .windsurf/workflows/trellis-{name}.md | /trellis-{name} |
start / finish-work / continue are shipped as auto-trigger skills.
| Platform | start / finish-work / continue as… | Invoked as |
|---|---|---|
| Kiro | .kiro/skills/trellis-{name}/SKILL.md | skill match (or @trellis:{name}) |
| Qoder | .qoder/skills/trellis-{name}/SKILL.md | auto-triggered by user intent match |
When to use a command vs. a skill
| Use a slash command when… | Use a skill when… |
|---|---|
| The user should decide when to run it | The AI should trigger it automatically based on intent |
| It marks a session boundary (start, finish, resume) | It’s a phase inside a task (before-dev, check, update-spec) |
| There’s no natural trigger phrase that would match reliably | There’s a predictable user intent you can match on |
| You need it available even when no task is active | It only makes sense in the context of an active task |
Writing a command
A good command file:- Starts with a one-line description of what will happen.
- Lists the steps the AI should take, in order.
- Specifies files the AI should read before acting.
- Defines the expected output format (report, checklist, diff, etc.).
Example: a /trellis:deploy-check command
.claude/commands/trellis/deploy-check.md:
packages/cli/src/templates/common/commands/ and add platform adapters in packages/cli/src/configurators/.