# CLI

> Guide for building Rust command-line applications. Use when parsing CLI arguments with clap, adding progress bars or verbosity flags, testing a CLI binary as a subprocess, choosing process exit codes, or reporting errors to end users with anyhow context.

- Skill: `vinnie357/cli` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add vinnie357/cli`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vinnie357/cli/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: vinnie357 (https://skillmd.com/u/vinnie357)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/vinnie357/cli

---


# Rust CLI Applications

Argument parsing, user-facing output, exit codes, signal handling, and subprocess testing for command-line tools.

For argument parsing, error context, output, signals, exit codes, and testing patterns, see `references/cli.md`.

## Example

```rust
use clap::Parser;

#[derive(Parser)]
struct Cli {
    pattern: String,
    path: std::path::PathBuf,
}

fn main() {
    let cli = Cli::parse(); // derives parsing, validation, and --help
}
```

The full argument-parsing, error-context, output, signals, exit-code, and testing patterns are in `references/cli.md`.

This skill covers CLI-specific ecosystem crates. For custom error enum design (thiserror) shared with non-CLI code, see `rust:error-handling`. For unit and integration test structure not specific to CLI binaries, see `rust:testing`.

See `/core:anti-fabrication` — crate versions and behavior claims in this skill are verified against crates.io and the upstream Rust CLI Book, not assumed.

