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.

Datos de origen

Repositorio
outfitter-dev/outfitter
Última actividad en el origen
24 de febrero de 2026 a las 23:09
Idioma detectado de SKILL.md
inglés
Estrellas
6
Forks
1

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
9 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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 en GitHub