Skip to main content

cli-craft

This skill should be used when designing, implementing, or reviewing CLI tools, or when flags, subcommands, help text, exit codes, or CLI patterns are mentioned.

Informações da origem

Repositório
outfitter-dev/outfitter
Última atividade na origem
24 de fevereiro de 2026 às 23:09
Idioma detectado do SKILL.md
inglês
Estrelas
6
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
9 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
cli-craft
description
This skill should be used when designing, implementing, or reviewing CLI tools, or when flags, subcommands, help text, exit codes, or CLI patterns are mentioned.
license
CC-BY-SA-4.0 (docs, adapted from clig.dev); MIT (scripts)
compatibility
Scripts use Python 3.10+ (scripts/cli_audit.py).
metadata
{"version":"0.1.1","upstream":"clig.dev + POSIX/GNU/Heroku/12-factor + Agent Skills spec"}
# CLI Development Guidelines ## When to activate this skill - You are _designing_, _implementing_, or _reviewing_ a command-line tool. - The user mentions (explicitly or implicitly): `--help`, flags, subcommands, exit codes, stdout/stderr, piping, JSON output, color, prompts, config files, env vars, “works in CI”, install/uninstall, telemetry. ## What this skill produces - A _CLI contract_ (what users can rely on): commands, flags, IO behavior, exit codes, config/env, examples, and safety behavior. - Draft _help output_ and docs structure (example-first). - A _compliance audit_ (when runnable) using `scripts/cli_audit.py`. ## Non-negotiable CLI citizenship - Exit codes: - `0` on success. - Non-zero on failure (and ideally meaningful, documented codes). - Streams: - `stdout` is for primary output and machine-readable output. - `stderr` is for errors, warnings, progress, and “what I’m doing” messaging. - Discoverability: - `--help` (and usually `-h`) shows help and exits. - `--version` prints version and exits. - Interactivity: - Prompts only when `stdin` is a TTY. - Provide `--no-input` to force non-interactive behavior. - Scripting friendliness: - No ANSI color / spinners when output isn’t a TTY. - Support `NO_COLOR` and `--no-color`. - Consider `--json` and `--plain` for stable output. ## Workflow ### Sketch the CLI contract first - Start from the user’s jobs-to-be-done (what they’re trying to accomplish). - Decide: - Command shape: single command vs subcommands (`noun verb` is common). - Inputs: args vs flags vs stdin vs prompts vs config/env. - Outputs: human default, plus machine modes (`--json`, `--plain`, `--quiet`). - Safety: confirmations, `--dry-run`, `--force`, secret handling. Use: - [CLI reference](references/REFERENCE.md) - [CLI spec template](templates/cli-command-spec-template.json) ### Implement with safe defaults - Use a CLI parsing library (don’t hand-roll). - Make “boundary-crossing” actions explicit: - Network calls - Writing files not explicitly provided - Mutating remote state - Avoid footguns: - Don’t accept secrets via flags or environment variables. - Don’t print stack traces by default. - Don’t assume TTY (detect it). ### Validate and iterate - Run an automated sanity check (when possible): - `python scripts/cli_audit.py -- <your-cli> [subcommand]` - Fix in this order: - Broken stdout/stderr separation - Incorrect exit codes - Help that’s missing or undiscoverable - Unsafe defaults (destructive ops, secrets, hidden network writes) - Unscriptable output (no stable modes) Use: - [Checklist](references/CHECKLIST.md) - `scripts/cli_audit.py` ## Reference library - Core reference: [references/REFERENCE.md](references/REFERENCE.md) - Quick audit checklist: [references/CHECKLIST.md](references/CHECKLIST.md) - Evaluation prompts: [references/EVAL_PROMPTS.md](references/EVAL_PROMPTS.md) ## Templates and scripts - CLI spec template: `templates/cli-command-spec-template.json` - Help text template: `templates/help-text-template.md` - Error message template: `templates/error-message-template.md` - Audit a CLI: `scripts/cli_audit.py`
Ver no GitHub