Command Line Interface website screenshot

Command Line Interface

Command Line Interface (CLI) is a text-based way of interacting with software by typing commands at a prompt. Modern CLI design draws on decades of UNIX conventions while incorporating contemporary practices around discoverability, human-friendly output, machine-readable formats, configuration, subcommands, and progressive disclosure of complexity. CLIs remain a central surface for developer tools, infrastructure automation, package managers, build systems, and anything that benefits from scripting and composition.

4 APIs 0 Features
AutomationCLICommand LineDeveloper ExperienceDeveloper ToolsScriptingShellTerminalToolingUNIX

APIs

Command Line Interface Guidelines

An open source guide that distills decades of CLI design wisdom into concrete, actionable guidelines. Authored by engineers from Docker, Squarespace, and others, it covers philo...

POSIX Utility Conventions

The POSIX Utility Conventions specify the expected behavior of command line utilities including argument parsing, flag styles, end-of-options separators, and exit status. Follow...

CLI Frameworks Landscape

A survey of widely adopted CLI frameworks across programming language ecosystems. These libraries handle argument parsing, subcommand routing, flag validation, help text generat...

Heroku CLI Style Guide

Heroku's internal style guide for CLI design, made public to share their lessons in building a polished developer experience. Covers naming, output, error handling, JSON output,...

Pricing Plans

Rate Limits

Command Line Interface Rate Limits

5 limits

RATE LIMITS

FinOps

Resources

🔗
Website
Website
🔗
Documentation
Documentation
🔗
Reference
Reference
🔗
Guide
Guide
🔗
Resources
Resources

Sources

apis.yml Raw ↑
aid: command-line-interface
url: https://raw.githubusercontent.com/api-evangelist/command-line-interface/refs/heads/main/apis.yml
name: Command Line Interface
kind: topic
description: Command Line Interface (CLI) is a text-based way of interacting with software by typing commands at a prompt.
  Modern CLI design draws on decades of UNIX conventions while incorporating contemporary practices around discoverability,
  human-friendly output, machine-readable formats, configuration, subcommands, and progressive disclosure of complexity. CLIs
  remain a central surface for developer tools, infrastructure automation, package managers, build systems, and anything that
  benefits from scripting and composition.
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg
tags:
- Automation
- CLI
- Command Line
- Developer Experience
- Developer Tools
- Scripting
- Shell
- Terminal
- Tooling
- UNIX
created: '2025-01-01'
modified: '2026-04-28'
specificationVersion: '0.19'
apis:
- aid: command-line-interface:design-guidelines
  name: Command Line Interface Guidelines
  description: An open source guide that distills decades of CLI design wisdom into concrete, actionable guidelines. Authored
    by engineers from Docker, Squarespace, and others, it covers philosophy, arguments and flags, output, errors, help, configuration,
    subcommands, and interactivity. A practical reference for designing modern command line tools.
  humanURL: https://clig.dev/
  baseURL: https://clig.dev
  tags:
  - Best Practices
  - CLI Design
  - Developer Experience
  - Guidelines
  - Open Source
  properties:
  - type: Documentation
    url: https://clig.dev/
  - type: GitHubRepository
    url: https://github.com/cli-guidelines/cli-guidelines
  - type: License
    url: https://creativecommons.org/licenses/by-sa/4.0/
  x-features:
  - Codifies nine high-level design principles for human-first CLIs
  - Covers arguments, flags, subcommands, help, configuration, output, and errors
  - Provides language-agnostic guidance applicable across ecosystems
  - Open source under Creative Commons license, accepting community contributions
  - Distinguishes human-readable from machine-readable output modes
  x-useCases:
  - Reviewing existing CLI tools against an industry-recognized rubric
  - Bootstrapping a CLI design style guide for a new product or platform
  - Educating teams on CLI conventions like POSIX flags and subcommands
  - Justifying UX decisions in code reviews of CLI changes
- aid: command-line-interface:posix-utility-conventions
  name: POSIX Utility Conventions
  description: The POSIX Utility Conventions specify the expected behavior of command line utilities including argument parsing,
    flag styles, end-of-options separators, and exit status. Following POSIX makes a tool feel native to UNIX-like environments
    and predictable when composed in pipelines and shell scripts.
  humanURL: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
  baseURL: https://pubs.opengroup.org
  tags:
  - Conventions
  - POSIX
  - Standards
  - UNIX
  properties:
  - type: Specification
    url: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
  - type: Reference
    url: https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
  x-features:
  - Defines short flags, long flags, and option arguments
  - Specifies the `--` end-of-options sentinel
  - Standardizes exit status conventions
  - Foundation for getopt and getopts utilities
  x-useCases:
  - Writing portable CLI utilities for UNIX-like systems
  - Implementing argument parsers that match user expectations
  - Documenting tool behavior in man pages
- aid: command-line-interface:cli-frameworks
  name: CLI Frameworks Landscape
  description: A survey of widely adopted CLI frameworks across programming language ecosystems. These libraries handle argument
    parsing, subcommand routing, flag validation, help text generation, shell completion, and other cross-cutting concerns
    so developers can focus on the actual command logic.
  humanURL: https://github.com/agarrharr/awesome-cli-apps
  baseURL: https://github.com
  tags:
  - Frameworks
  - Libraries
  - Open Source
  - Tooling
  properties:
  - type: Reference
    url: https://github.com/spf13/cobra
  - type: Reference
    url: https://github.com/click-contrib
  - type: Reference
    url: https://oclif.io/
  - type: Reference
    url: https://github.com/tj/commander.js
  - type: Reference
    url: https://github.com/yargs/yargs
  - type: Reference
    url: https://docs.python.org/3/library/argparse.html
  - type: Reference
    url: https://github.com/clap-rs/clap
  x-features:
  - Cobra (Go) used by kubectl, hugo, gh, and many CNCF projects
  - Click (Python) provides decorator-based command definition
  - oclif (Node.js) used by Heroku, Salesforce, and Adobe CLIs
  - Commander.js and yargs are popular in the Node.js ecosystem
  - clap (Rust) provides derive macros for ergonomic argument parsing
  - argparse ships in the Python standard library
  x-useCases:
  - Selecting an argument parsing library for a new CLI project
  - Generating shell completion scripts for bash, zsh, and fish
  - Standardizing CLI structure across a portfolio of internal tools
  - Adding subcommands and nested command trees to an existing CLI
- aid: command-line-interface:heroku-cli-style-guide
  name: Heroku CLI Style Guide
  description: Heroku's internal style guide for CLI design, made public to share their lessons in building a polished developer
    experience. Covers naming, output, error handling, JSON output, and progressive disclosure of power-user features.
  humanURL: https://devcenter.heroku.com/articles/cli-style-guide
  baseURL: https://devcenter.heroku.com
  tags:
  - Best Practices
  - Developer Experience
  - Heroku
  - Style Guide
  properties:
  - type: Documentation
    url: https://devcenter.heroku.com/articles/cli-style-guide
  x-features:
  - Real-world style guide from a CLI-first developer platform
  - Covers naming, output, errors, and machine-readable formats
  - Aligns with broader CLI Guidelines philosophy
  x-useCases:
  - Establishing tone and output conventions for a new CLI
  - Comparing alternative approaches to error reporting and progress
common:
- type: Website
  url: https://clig.dev/
- type: Documentation
  url: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
- type: Reference
  url: https://en.wikipedia.org/wiki/Command-line_interface
- type: Guide
  url: https://devcenter.heroku.com/articles/cli-style-guide
- type: Resources
  url: https://github.com/agarrharr/awesome-cli-apps
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com