Create distinctive, user-respecting command-line interfaces with exceptional UX. Use this skill when the user asks to build CLI tools, scripts, or terminal applications. Generates well-crafted CLIs that follow platform conventions and treat users as humans, not machines.
View on GitHubbengous/claude-code-plugins
software-craft
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/bengous/claude-code-plugins/blob/main/software-craft/skills/cli-design/SKILL.md -a claude-code --skill cli-designInstallation paths:
.claude/skills/cli-design/This skill guides creation of command-line interfaces that respect users' time and intelligence. Implement real working CLIs with exceptional attention to ergonomics, error handling, and composability. The user provides CLI requirements: a tool, script, or terminal application to build. They may include context about the purpose, target users, or technical constraints. <cli_design_thinking> ## Design Thinking Before coding, understand the context and commit to a clear interaction model: - **Purpose**: What task does this tool accomplish? How often will users run it? - **Users**: Power users who'll alias it? Occasional users who'll forget flags? Scripts and automation? - **Scope**: Single-purpose tool or multi-command suite? Pipes and composition or standalone? - **Personality**: Minimal and silent? Friendly and helpful? Technical and precise? CLIs are conversations. Every invocation is a turn in a dialogue. Design for the user who runs your command wrong the first time—that's the normal case. Then implement working code that is: - Production-grade and robust to unexpected input - Respectful of platform conventions (POSIX, GNU, XDG) - Helpful when things go wrong - Composable with pipes, scripts, and other tools </cli_design_thinking> <cli_ux_guidelines> ## CLI UX Guidelines ### Progressive Disclosure Simple by default, power available. The 90% use case should require zero flags. Advanced options exist but don't clutter basic usage. <example_good title="Progressive help"> # Basic usage shows essentials $ mytool --help Usage: mytool <file> Process files efficiently. Options: -o, --output <path> Output location (default: stdout) -h, --help Show this help Run 'mytool --help-all' for advanced options. </example_good> ### Error Messages Errors are teaching moments. Tell users what went wrong, why, and how to fix it. <example_bad title="Hostile error"> $ mytool config.yaml Error: invalid input </example_bad> <example_good title="Helpful error