Usage is a specification and CLI tool for defining command-line interfaces, analogous to OpenAPI/Swagger but for CLIs. Specs are written in KDL (a document language combining XML and JSON traits) and can define arguments, flags, environment variables, config files, subcommands, and aliases. From a single spec, you can generate autocompletion scripts for multiple shells, markdown documentation, and man pages, or scaffold CLI code across different frameworks and languages. The spec supports priority ordering for flag resolution (CLI flag > env var > config file > default) and is designed around GNU-style options. CLI framework developers can use it similarly to how LSP abstracts language tooling, avoiding the need to implement shell completions per framework.
Sort: