Skip to content

Latest commit

 

History

1,214 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Usage

Usage is a spec and CLI for defining CLI tools. Arguments, flags, environment variables, and config files can all be defined in a Usage spec. It can be thought of like OpenAPI (swagger) for CLIs. Here are some potential reasons for defining your CLI with a Usage spec:

  • Generate autocompletion scripts
  • Generate markdown documentation
  • Generate man pages
  • Use an advanced arg parser in any language
  • Scaffold one spec into different CLI frameworks—even different languages
  • [coming soon] Host your CLI documentation on usage.sh

See more at usage.jdx.dev.

Sponsors

usage is sponsored by entire.io and 37signals.

View all sponsors.

Acknowledgements

Usage's design owes a great deal to clap — the derive attribute vocabulary, the help output shape, and the diagnostic conventions all follow it deliberately so clap CLIs can be ported field by field. clap's license is reproduced in NOTICE.md.

License

MIT. Third-party notices are in NOTICE.md.

About

A specification for CLIs

Resources

Contributing

Stars

838 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages