CLI application design: argument conventions, output streams, exit codes, configuration hierarchy, interactive modes, and terminal UX. Invoke whenever task involves building command-line tools or terminal applications.
Generates CLI application designs following POSIX conventions for arguments, output streams, exit codes, and terminal UX.
npx claudepluginhub xobotyi/cc-foundryThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/arguments.mdreferences/configuration.mdreferences/exit-codes.mdreferences/interaction.mdreferences/output.mdreferences/signals.mdPrograms are composable by default. stdout carries data, stderr carries diagnostics, exit codes carry status, and signals carry intent. Get the boundaries right and everything else follows.
| Topic | Reference | Contents |
|---|---|---|
| Arguments | references/arguments.md | Full POSIX guidelines, GNU long option table, subcommand patterns, flag design |
| Output | references/output.md | Stream separation details, color codes, ANSI escapes, NO_COLOR spec, pager setup |
| Exit codes | references/exit-codes.md | Standard/extended code tables, signal exit codes, partial success patterns |
| Interaction | references/interaction.md | TTY detection, prompting patterns, confirmation levels, progress display, error format |
| Configuration | references/configuration.md | Full hierarchy, XDG spec, env var catalog, config file formats, secret handling |
| Signals | references/signals.md | Full signal table, SIGPIPE handling, crash-only design, child process signals |
This is the single most important convention. Mixing data and diagnostics in stdout is the #1 way to break composability.
-x,
multi-letter use --long-name. Every short flag must have a long
equivalent. Reserve one-letter flags for frequently-used options.-- terminates options. Everything after -- is an operand, even if
it starts with -. This is POSIX Guideline 10 and is non-negotiable.rm file.txt,
cat file.txt). Two or more positional args for different things is a
design smell.- means stdin/stdout. When a command accepts file arguments, -
means read from stdin (or write to stdout when context is clear).-h/--help, --version, -v/--verbose,
-q/--quiet, -f/--force, -n/--dry-run, -o/--output,
--json, --no-color, --no-input. Don't reinvent these.mycmd --flag subcmd and mycmd subcmd --flag should both
work where possible.noun verb or verb noun, pick one and be consistent. Don't mix
ordering styles. docker container create and docker image pull follow
noun verb.mycmd --help, mycmd subcmd --help,
and mycmd help subcmd should all work.mycmd i aliases mycmd install,
you can never add mycmd init. Aliases must be explicit and stable.$? and
set -e. A false success silently breaks pipelines.$XDG_CONFIG_HOME/myapp/ (default
~/.config/myapp/), not ~/.myapp. Respect XDG_DATA_HOME,
XDG_STATE_HOME, XDG_CACHE_HOME.NO_COLOR, FORCE_COLOR,
DEBUG, EDITOR, PAGER, HTTP_PROXY/HTTPS_PROXY, TMPDIR, HOME,
TERM, LINES, COLUMNS. Check these before inventing app-specific
alternatives.ps,
Docker inspect, systemd, and process listings. Accept secrets via
--password-file, stdin, or a credential helper.--password=secret leaks into ps
output and shell history. Use --password-file or stdin.NO_COLOR is set and non-empty, TERM=dumb, or
--no-color is passed.FORCE_COLOR or --color to override detection and force
color output when the user explicitly wants it.--no-input. An explicit flag to disable all prompts. Required
for CI/CD, cron, and automation.y/N interactively,
require --force non-interactively. For severe operations (deleting
infrastructure), require typing the resource name.--dry-run. For any state-modifying command, let users
preview what would happen without executing it.--password-file as a non-interactive alternative.head,
don't print an error when the pipe closes. Exit quietly with code 141
or 0.-h and --help. Both must show help. Don't overload -h
for anything else.--help for the full listing.--version. Print the version and exit. Format: program name
and version, optionally with build metadata.error: <what went wrong> followed by hint: <how to fix it>.--verbose or write to a
debug log file. Signal-to-noise ratio matters.--json for machine-readable output. Output well-formed JSON
to stdout. Use consistent field names across commands.--plain for scriptable tabular output. One record per line,
no color, no decorations. Useful for grep and awk pipelines.less -FIRX when stdout
is a TTY. Respect the PAGER environment variable. Don't page when
output fits one screen.curl not DownloadURL. Use only
lowercase letters and hyphens. Keep it easy to type.--json or --plain
for scripts. Human-readable output is not a stable interface.When writing CLI code:
When reviewing CLI code:
--help, --version, and --no-color are supported.This skill covers CLI platform concerns -- the interface between a program and the terminal/shell/pipeline. Language-specific implementation details (argument parsing libraries, terminal I/O APIs) come from language skills (golang, javascript, etc.). The coding discipline skill governs general workflow.
Programs are composable when they respect boundaries.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.