Gemini CLI — Commands
- File format
- Markdown
- Discovery path
-
.gemini/commands - Global install path
-
~/.gemini/commands - Syllago install method
- Symlink, Direct copy
- Symlink support
- Yes
- Native frontmatter fields
-
name,description,prompt
Features
How each feature converts to syllago's canonical format. See format conversion for what these statuses mean.
Fields
Native frontmatter or config fields this provider exposes. The first column is the provider's own field name; the canonical key column links to syllago's cross-provider equivalent.
| Provider field | Conversion | Canonical key | Summary |
|---|---|---|---|
prompt | Translated Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | — | Commands are .toml files with a required prompt field and an optional one-line description; no other fields are documented in v1. |
Other features
Behaviors, conventions, and capabilities that aren't tied to a single named field — things like path-based activation, discovery rules, and lifecycle behavior.
| Feature | Conversion | Summary |
|---|---|---|
argument_substitution | Translated Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | {{args}} placeholder injects all user-provided arguments; processed before shell injection (!{...}) and other substitutions; default argument handling collapses newlines |
builtin_commands | Translated Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | built-in slash commands include /commands reload (reload command files without restart) and /help; user-defined commands supplement but do not replace built-ins |
| {{args}} argument injection placeholder | Conversion type: No canonical equivalent — appended as prose in a conversion notes block so nothing is silently lost. Learn more → | {{args}} in prompts is replaced with user-supplied text — raw in the body, shell-escaped inside !{...} blocks; absent placeholder appends args after two newlines. |
| File content injection with @{...} | Conversion type: No canonical equivalent — appended as prose in a conversion notes block so nothing is silently lost. Learn more → | @{...} inlines file content or directory listings (text, images, PDFs, audio, video) into the prompt, respecting .gitignore and .geminiignore. |
| Shell command injection with !{...} | Conversion type: No canonical equivalent — appended as prose in a conversion notes block so nothing is silently lost. Learn more → | !{...} executes a shell command and injects its stdout into the prompt, with user confirmation and automatic escaping of {{args}}. |
| Namespace via subdirectory path | Preserved Conversion type: Preserved Syntax survives conversion but the target provider may not interpret it. Learn more → | Path separators in the file path relative to commands/ become colons in the command name (e.g., git/commit.toml → /git:commit). |
| /commands reload for live updates | Not portable Conversion type: Not portable Unique to this provider — can’t be carried across providers. Learn more → | /commands reload picks up newly created or modified .toml files without restarting the CLI for iterative development. |
| Project commands override user commands | Not portable Conversion type: Not portable Unique to this provider — can’t be carried across providers. Learn more → | When the same command name exists in both project and user commands directories, the project version always wins. |
Sources
| Source |
|---|
| https://raw.githubusercontent.com/google-gemini/gemini-cli/main/docs/cli/custom-commands.md |