Type to search the docs and updates.

Browse documentation

Commands

commands/ holds slash commands: saved prompts a person starts by name, such as /deploy or /review-pr. The body is the prompt the tool sends when someone runs the command.

  • Repeatable prompts. The team runs the same /review-pr instead of retyping it slightly differently each time.
  • Started by a person. A command runs when someone types it, which suits steps with side effects, such as a deploy.
  • Same name everywhere. Each tool with a command surface lists it in its own picker.

A skill is the better fit when the model should pick the workflow itself or when it needs bundled files. Set outputs.<target>.emit-skills-as-commands: true to get both from one skill.

Write one

Markdown with optional YAML frontmatter. Each spec becomes one native slash command.

---
name: deploy
description: Deploy the app to staging.
argument-hint: <env>
---

Deploy the app to the environment the user names. Run the smoke tests afterwards and report the result.

Fields

FieldRequiredDefaultDescription
namenofilenameCommand identifier and slash name, such as /deploy.
descriptionnoemptyOne-liner shown in slash-command pickers.
argument-hintnoemptyHint shown after the command, on Claude Code, Augment, and Factory.

Any other frontmatter passes through. Put target-specific keys under x-<target>, for example x-claude.allowed-tools:

---
name: review-pr
description: Review the current branch against main.
x-claude:
  allowed-tools: [Bash(git diff:*), Read, Grep]
---

Diff the branch against `main` and list bugs with `file:line`, most severe first.

Output

Codex emits commands only when outputs.codex.commands-dir is set. Gemini writes each command as a .toml file named after name. Targets without a command surface log a warning and skip. Each target page gives the exact directory.