Skip to main content

LLM-powered zsh completion scaffolding for arbitrary CLIs

Project description

completion-ai

LLM-powered zsh completion scaffolding for arbitrary CLIs. Point it at any command on your PATH and it will:

  1. Recursively run <cmd> --help (and discovered subcommand --helps). Subcommand discovery is done by the LLM, not regex — so install [options], plugin|plugins, and other oddly-formatted entries are picked up.
  2. Ask Qwen (via DashScope OpenAI-compatible API) to extract a structured schema of flags, subcommands, and positional arguments.
  3. Render a #compdef zsh completion script using a deterministic template (the LLM never writes shell directly).
  4. Run zsh -n against the result and warn on syntax errors.

The output is meant to be reviewed by a human before installation — it's a scaffold, not a runtime completion engine.

Install

Recommended (global CLI, isolated venv managed by uv):

uv tool install -e .

Other options:

uv pip install -e .       # into the current uv venv
pip install -e .          # into the active python (conda, system, ...)

Requires DASHSCOPE_API_KEY in the environment.

Usage

completion-ai claude                     # writes ./_claude
completion-ai claude --install           # install straight into oh-my-zsh
completion-ai claude -o ~/.zsh/completions/_claude
completion-ai docker --depth 3 -v        # crawl deeper, verbose
completion-ai gh --dump-schema gh.json   # also save intermediate schema

Options

Flag Default Notes
-o, --output PATH ./_<cmd> Where to write the completion script
-d, --depth N 2 How deep to crawl subcommand help
--model ID qwen-plus Override via COMPLETION_AI_MODEL too
--dump-schema PATH Also save the JSON the LLM produced
--no-syntax-check off Skip zsh -n validation
--install off Install into $ZSH/custom/plugins/completion-ai/
-v, --verbose off Progress logs to stderr

Environment

  • DASHSCOPE_API_KEY — required
  • COMPLETION_AI_MODEL — defaults to qwen-plus
  • COMPLETION_AI_BASE_URL — defaults to DashScope OpenAI-compatible endpoint
  • ZSH — oh-my-zsh root, used by --install (defaults to ~/.oh-my-zsh)

Installing the generated completion

Option A — oh-my-zsh users (recommended)

completion-ai claude --install

This creates $ZSH/custom/plugins/completion-ai/_claude plus a plugin stub. First time only, add the plugin to ~/.zshrc:

plugins=(git ... completion-ai)

Then refresh:

rm -f ~/.zcompdump* && exec zsh

Subsequent completion-ai <cmd> --install calls drop new completions into the same plugin directory — no zshrc edits needed.

Option B — plain zsh

completion-ai claude -o ~/.zsh/completions/_claude

# in ~/.zshrc (one-time):
fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit

How it works

[crawler]   run `<cmd> --help`
    ↓
[llm]       discover subcommand names from help text  (1 call per node)
    ↓
[crawler]   recursively run discovered subcommands' --help
    ↓
[llm]       extract structured JSON schema from all help texts  (1 call)
    ↓
[renderer]  JSON → #compdef zsh template (deterministic, not LLM)
    ↓
[validator] zsh -n syntax check

For depth=2, that's 2 LLM calls total (1 discover + 1 extract).

Limitations

  • Static only: dynamic completions (e.g. git checkout <branch>) are not generated — the script may suggest a hint type (branch, host, ...) but won't query live state.
  • The LLM may miss hidden flags or mislabel value hints. Always diff against <cmd> --help before trusting.
  • Only zsh for now.

Development

git clone <repo> && cd completion-ai
uv venv && source .venv/bin/activate
uv pip install -e .

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

completion_ai-0.2.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

completion_ai-0.2.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file completion_ai-0.2.0.tar.gz.

File metadata

  • Download URL: completion_ai-0.2.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.10

File hashes

Hashes for completion_ai-0.2.0.tar.gz
Algorithm Hash digest
SHA256 343017bceafa222b6b893105ce6fb86f6bc16b9b48229da9c1cd40dd34747dc3
MD5 62a7c8ae73199bdf34be290b100fd8e3
BLAKE2b-256 5a35f32eabed409d1a27d2878d66d03d77e8b7f2041c28b3617f9cb8c29c1f5c

See more details on using hashes here.

File details

Details for the file completion_ai-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for completion_ai-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 34722c57889d07715fe22bd254a48f409c7d279b6cd43fde6535aa932062ba4a
MD5 b3147f90375e9ed48fda9b59a014fc2b
BLAKE2b-256 945649d42063ba53b94e5049f2461c3ccafbcdfca9fe818548521fc470e30c88

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page