From cli
CLI application design: argument conventions, output streams, exit codes, configuration hierarchy, interactive modes, and terminal UX. Invoke whenever task involves any interaction with command-line tools or terminal applications — building, reviewing, debugging, or designing CLI interfaces.
npx claudepluginhub xobotyi/cc-foundry --plugin cliThis skill uses the workspace's default tool permissions.
**Programs are composable by default.** stdout carries data, stderr carries diagnostics, exit codes carry status, and
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Programs 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.
${CLAUDE_SKILL_DIR}/references/arguments.md] — Full POSIX guidelines, GNU long option table,
subcommand patterns, flag design${CLAUDE_SKILL_DIR}/references/output.md] — Stream separation details, color codes, ANSI escapes,
NO_COLOR spec, pager setup${CLAUDE_SKILL_DIR}/references/exit-codes.md] — Standard/extended code tables, signal exit codes,
partial success patterns${CLAUDE_SKILL_DIR}/references/interaction.md] — TTY detection, prompting patterns, confirmation
levels, progress display, error format${CLAUDE_SKILL_DIR}/references/configuration.md] — Full hierarchy, XDG spec, env var catalog,
config file formats, secret handling${CLAUDE_SKILL_DIR}/references/signals.md] — Full signal table, SIGPIPE handling, crash-only design,
child process signalsThis 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.