Best for
- Expert-level rules for building and auditing command-line tools: the grammar of commands/flags/args, config layering, human-vs-machine output, TTY-aware interaction, exit codes, signal handling, lifecycle behavior, and…
martinholovsky/SOTA-skills/skills/sota-cli-ux/SKILL.md
State-of-the-art CLI and developer-tool UX guidance (2026) covering command and flag design, output and interaction (stdout/stderr, --json, TTY detection, exit codes, prompts), runtime behavior and lifecycle (signals, dry-run, idempotency, XDG paths, completions, telemetry), and distribution (packaging, checksums, docs). Use when designing or building any command line tool, subcommand, TUI, or developer tool — in any framework (argparse, click, typer, clap, cobra, oclif, commander) — AND when au
Decision brief
State-of-the-art CLI and developer-tool UX guidance (2026) covering command and flag design, output and interaction (stdout/stderr, --json, TTY detection, exit codes, prompts), runtime behavior and lifecycle (signals, dry-run, idempotency, XDG paths, completions, telemetry), and distribution (packaging, checksums, docs).
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/martinholovsky/SOTA-skills --skill "skills/sota-cli-ux"Inspect the Agent Skill "sota-cli-ux" from https://github.com/martinholovsky/SOTA-skills/blob/7c8ae3e03ba5c8ec3292c581d92d458035240f4c/skills/sota-cli-ux/SKILL.md at commit 7c8ae3e03ba5c8ec3292c581d92d458035240f4c. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Expert-level rules for building and auditing command-line tools: the grammar of commands/flags/args, config layering, human-vs-machine output, TTY-aware interaction, exit codes, signal handling, lifecycle behavior, and distribution. The core thesis: a CLI has three users — a hum…
When designing or implementing a CLI:
When reviewing an existing CLI:
Critical — corrupts data or destroys trust: destructive op with no
Order findings by severity; one finding per root cause; include the reproducing command line whenever the issue was observed by running the tool.
Permission review
The documentation asks the agent to run terminal commands or scripts.
**`--dry-run` on every mutating command**, printing the real plan throughEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 85/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 10 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Expert-level rules for building and auditing command-line tools: the grammar of commands/flags/args, config layering, human-vs-machine output, TTY-aware interaction, exit codes, signal handling, lifecycle behavior, and distribution. The core thesis: a CLI has three users — a human at a TTY, a script in CI, and an AI agent driving the tool (a stricter script) — and every design decision must serve all three without flags-gymnastics. Rules are imperative with rationale and good/bad terminal examples; every rules file ends with an audit checklist. Load only the files relevant to the task via the index below.
When designing or implementing a CLI:
--help text
first: subcommand tree, every flag (short + long), args, examples. If the
help is hard to write, the grammar is wrong (rules/01).rules/01 §3).rules/02 §1).NO_COLOR; ship --json with every listing/reading
command from v0.1, because output format is API (rules/02).rules/02 §3, rules/03 §7).--dry-run
on mutating commands, re-runnable/resumable operations, stdin-closed CI
behavior, offline behavior (rules/03).--help (rules/03 §8, rules/04).tool cmd | cat,
tool cmd > out.txt 2> err.txt, tool cmd < /dev/null, echo $?.When reviewing an existing CLI:
tool --help, tool <sub> -h, tool --version, tool definitelynotacmdtool list | cat and tool list | head -1 (color codes? broken pipe panic?)tool list > /dev/null — does anything still reach the human? (it should, on stderr)tool mutate < /dev/null — hang waiting for a prompt = CI killerecho $? after success, after a usage error, after a real failure--force and no dry-run; non-zero work reported as exit 0 (or
vice versa) so CI lies; prompt hangs forever with stdin closed; secrets
echoed to terminal/logs/argv; auto-update or telemetry without disclosure.--json on listing commands; SIGINT
leaves corrupt partial state; undocumented/colliding exit codes; config
precedence nondeterministic; breaking flag removal without deprecation.$HOME dotfile
litter instead of XDG; no completions; no -q/-v; >500ms --help.[SEVERITY] <one-line title>
Where: <file:line | command invocation that reproduces it>
Rule: <rules-file §section>
Issue: <what is wrong, with observed evidence (transcript or code)>
Impact: <who breaks: the human at the TTY, the script in CI, an agent driving the tool, or all>
Fix: <specific change; exact flag/stream/exit-code where load-bearing>
Order findings by severity; one finding per root cause; include the reproducing command line whenever the issue was observed by running the tool.
| File | Read this when... |
|---|---|
rules/01-commands-flags-config.md | Designing/auditing the command surface: subcommand grammar (noun-verb consistency), POSIX/GNU flag conventions, short/long forms, -- separator, args vs flags vs stdin, defaults, dangerous-op flags, config precedence chain, env var naming, help text quality, suggest-on-typo. |
rules/02-output-interaction.md | Anything the tool prints or asks: stdout vs stderr contract, --json/--plain, TTY detection, color and NO_COLOR/TERM, exit codes as API, streaming vs buffering, progress indication, prompts and --yes/CI behavior, quiet/verbose levels, error message anatomy, --debug vs stack traces, agent-facing design (--fields, confirmation envelopes, frozen output contracts). |
rules/03-behavior-lifecycle.md | Runtime behavior and tool lifecycle: startup latency, idempotent re-runnable commands, --dry-run, SIGINT/SIGTERM handling, crash-only resumable design, network-op responsiveness and offline behavior, self-update caution, telemetry consent, XDG base directories, shell completions, semantic versioning of the CLI surface. |
rules/04-distribution-docs.md | Shipping and documenting: single-binary packaging, install channels (brew/curl-script/registry) with checksums + signatures, docs generated from the --help source of truth, man pages, README quickstart, version pinning for CI. |
tool x | next must receive only data. (rules/02 §1)NO_COLOR (set and non-empty) and TERM=dumb; --json on
every command that lists or reads data. (rules/02 §2, §4)exit 0 after printing an error. (rules/02 §3)-f, --flag, --flag=value, -- ends flags). (rules/01 §2)--force/typed confirmation on a
TTY and refuse (don't hang) without one. (rules/01 §3, §5)--yes/--no-input equivalent exists; stdin
closed or non-TTY ⇒ use default or fail fast with the flag to pass — never
block CI. (rules/02 §6)--debug. (rules/02 §7)--dry-run on every mutating command, printing the real plan through
the real code path. (rules/03 §2)Alternatives
K-Dense-AI/scientific-agent-skills
Use when working directly with the `esm` Python SDK, ESM3 or ESMC model IDs, Forge/Biohub inference clients, or ESMFold2 folding workflows.
mgiovani/cc-arsenal
Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r
eugenelim/agent-ready-repo
Use when implementing or resuming a non-trivial repository change: a feature, behavior-changing fix, refactor, migration, framework or dependency upgrade, schema or API change, performance work, infrastructure or build-system change, reversion, or an existing build spec under `docs/specs/`. Also use for bare continuation commands ('resume', 'continue', 'keep going', 'pick up where I left off', 'let's get going') when conversation or workspace context identifies active build work. Do not use for
wshobson/agents
Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.