# Shell completion

Source: https://libtmux.org/en/java/latest/workspace/cli/completion/

> Generate completion from command definitions and check native availability.

**tmuxp compatibility reference.** Examples using `tmuxp` run the Python reference. [Local CLI status](../../reference/compatibility/) describes this port's implemented coverage.

tmuxp uses the separately installed `shtab` package for experimental completion. The parser entry point is [`tmuxp.cli.create_parser`](https://github.com/tmux-python/tmuxp/blob/618b398acc05506d3c682906c36cdeb29dcfa1ff/src/tmuxp/cli/__init__.py). Generate a script in an environment that can import both packages, then use the shell-specific installation procedure from the [upstream completion guide](https://tmuxp.git-pull.com/cli/completion/).

## Native completion

Picocli defines the native command graph. `--generate schema` exports metadata
and `--generate bash` emits completion through its code generator. Other manual
and completion formats are not exposed by the workspace executable.

Normal Bash generation writes the script directly. Add `--json` for a versioned
artifact with `"command": "generate"`, `"format": "bash"`, the exact text in
`"script"`, and `"status": "ok"`. `--ndjson` emits that artifact as one
`completed` event with `"sequence": 1` and takes precedence over `--json`.
Schema generation retains its metadata document in every output mode. See the
[native generation contract](https://github.com/libtmux/libtmux-java/blob/887a5e079d38898bdffaad19a7961936eabe1ce0/workspace-cli/README.md#generated-reference-and-development).

Completion is derived from actual command metadata. It must include nested
import commands, local short flags, positional arity, mutually exclusive
choices, and all-command machine options. Verify generated scripts with the installed
executable and target shell.

See the [command tree](../) and [compatibility
reference](../../reference/compatibility/).

[tmuxp reference source](https://github.com/tmux-python/tmuxp/blob/618b398acc05506d3c682906c36cdeb29dcfa1ff/src/tmuxp/cli/__init__.py).
