Cheat sheets

Cheat sheets are the heart of Commando: parameterized, reusable command templates you author once and fill in interactively forever after.

The format

Cheat files are TOML, stored in ~/.config/commando/cheats/*.toml. Each file holds one or more [[cmd]] entries. Here's a complete example:

[[cmd]]
title = "Search git log"                           # (1)!
desc = "Search git log by author for a file."      # (2)!
tmpl = "git log [--author=<author>] [-n <count>] -- <file>"  # (3)!
tags = ["git", "log"]                              # (4)!

  [[cmd.var]]                                       # (5)!
  name = "author"
  src  = "git log --all --format='%an' | sort -u"

  [[cmd.var]]
  name    = "count"
  default = "20"

  [[cmd.var]]
  name     = "file"
  multi    = true
  each     = '"{}"'
  remember = "project"
  1. title — the short name shown in the result list and searched.
  2. desc — optional detail shown for the selected command and searched. If omitted, Commando uses the title as the selected detail too. Older desc-only cheats still load; their desc is treated as the title.
  3. tmpl — the command template. See Template syntax for <var> and [...].
  4. tags — extra searchable keywords (also fuzzy-matched).
  5. [[cmd.var]] — one block per variable, declaring how to resolve it. See Variables.

Entry fields

Field Required Meaning
title Short searchable name shown in the list.
desc Optional searchable detail shown for the selected command.
tmpl The command template with <var> placeholders and [...] optional segments.
tags List of extra searchable keywords.
use Names of shared variable groups to pull in.
[[cmd.var]] Zero or more variable specs. See Variables.

Where cheat files live

~/.config/commando/cheats/
├── git.toml         ← seeded on first run
├── docker.toml      ← seeded on first run
├── kubectl.toml     ← seeded on first run
├── files.toml       ← seeded on first run
└── user.toml        ← where `commando add` appends

Every .toml file in this directory is loaded. Group commands however you like — by tool, by project, by team convention. On first run, Commando seeds a starter set (git, docker, kubectl, files) so the list isn't empty.

Data files for candidate lists

A variable's src command runs with COMMANDO_DATA_DIR set to ~/.local/share/commando/data/. Drop a plain text file there and read it:

[[cmd.var]]
name = "service"
src  = 'cat "$COMMANDO_DATA_DIR/service-names.txt"'

Authoring interactively with commando add

Rather than hand-writing TOML, let Commando do it:

$ commando add
Title: Restart deployment
Description (optional): Restart a Kubernetes deployment.
Command template (use <var> and [optional <var>]): kubectl rollout restart deploy/<name> [-n <ns>]
Tags (comma-separated, optional): k8s, deploy

Variable <name>:
  Candidate command (src, optional): kubectl get deploy -o name
  Default value (optional):
  Allow multiple selections? [y/N]: n
  Remember scope [none/global/project/dir] (default none): project

Variable <ns> (optional):
  Candidate command (src, optional): kubectl get ns -o name
  Default value (optional):
  Allow multiple selections? [y/N]: n
  Remember scope [none/global/project/dir] (default none): global

Added to ~/.config/commando/cheats/user.toml

commando add:

  • Parses your template and discovers each variable, including whether it's optional (inside [...]).
  • Prompts for each variable's options.
  • Validates the generated TOML before writing.
  • Appends the entry to cheats/user.toml.

Editing by hand

Cheat files are plain TOML — open them in any editor. Commando validates every cheat file on load; a malformed file surfaces an error rather than silently disappearing. Use the examples in the repo as templates:

  • examples/git.toml — optional segments, multi-select, candidate src, memory.
  • examples/shared-and-crossvar.toml — shared variable groups, candidate post-processing, previews, and cross-variable lookups.

Next

>_

Search the Commando documentation

Try “optional parameters”, “shell history”, or “bookmarks”.