Agent skill
clap-scaffolder
Generate Clap-based Rust CLI applications with derive macros, subcommands, and modern Rust patterns. Creates production-ready Rust CLI with proper cargo structure.
Install this agent skill to your Project
npx add-skill https://github.com/a5c-ai/babysitter/tree/main/library/specializations/cli-mcp-development/skills/clap-scaffolder
SKILL.md
Clap Scaffolder
Generate a complete Clap CLI application with Rust, derive macros, and best practices.
Capabilities
- Generate Rust-based Clap CLI projects using derive macros
- Create subcommand hierarchies with nested enums
- Set up argument parsing with type validation
- Configure shell completion generation
- Implement colored output with anyhow error handling
- Set up cargo workspace and build configurations
Usage
Invoke this skill when you need to:
- Bootstrap a new CLI application using Clap
- Create a Rust CLI with type-safe argument parsing
- Leverage derive macros for declarative command definitions
- Build fast, native cross-platform binaries
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectName | string | Yes | Name of the CLI project (kebab-case) |
| description | string | Yes | Short description of the CLI |
| commands | array | No | List of commands to scaffold |
| deriveFeatures | array | No | Clap derive features to enable |
| colorOutput | boolean | No | Enable colored output (default: true) |
Command Structure
{
"commands": [
{
"name": "run",
"description": "Run the application",
"args": [
{ "name": "target", "help": "Target to run", "required": true }
],
"options": [
{ "long": "watch", "short": "w", "help": "Watch for changes" },
{ "long": "port", "short": "p", "value_name": "PORT", "default": "3000" }
]
}
]
}
Output Structure
<projectName>/
├── Cargo.toml
├── Cargo.lock
├── README.md
├── .gitignore
├── src/
│ ├── main.rs # Entry point
│ ├── cli.rs # Clap definitions
│ ├── commands/
│ │ ├── mod.rs # Command exports
│ │ └── <command>.rs # Individual commands
│ ├── config.rs # Configuration
│ └── error.rs # Error types
├── tests/
│ └── cli.rs # CLI integration tests
└── completions/
├── _<projectName> # Zsh completions
├── <projectName>.bash # Bash completions
└── <projectName>.fish # Fish completions
Generated Code Patterns
CLI Definition (src/cli.rs)
use clap::{Parser, Subcommand, Args};
#[derive(Parser)]
#[command(name = "<projectName>")]
#[command(author, version, about, long_about = None)]
pub struct Cli {
/// Enable verbose output
#[arg(short, long, global = true)]
pub verbose: bool,
/// Configuration file path
#[arg(short, long, global = true)]
pub config: Option<PathBuf>,
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand)]
pub enum Commands {
/// Run the application
Run(RunArgs),
/// Build the project
Build(BuildArgs),
/// Generate shell completions
Completions {
/// Shell to generate completions for
#[arg(value_enum)]
shell: clap_complete::Shell,
},
}
#[derive(Args)]
pub struct RunArgs {
/// Target to run
pub target: String,
/// Watch for changes
#[arg(short, long)]
pub watch: bool,
/// Port to use
#[arg(short, long, default_value = "3000")]
pub port: u16,
}
Main Entry (src/main.rs)
use anyhow::Result;
use clap::Parser;
use colored::Colorize;
mod cli;
mod commands;
mod config;
mod error;
use cli::{Cli, Commands};
fn main() -> Result<()> {
let cli = Cli::parse();
// Setup logging based on verbosity
if cli.verbose {
env_logger::Builder::from_env(
env_logger::Env::default().default_filter_or("debug")
).init();
}
match cli.command {
Commands::Run(args) => commands::run::execute(args)?,
Commands::Build(args) => commands::build::execute(args)?,
Commands::Completions { shell } => {
generate_completions(shell);
}
}
Ok(())
}
Command Implementation
use anyhow::Result;
use colored::Colorize;
use crate::cli::RunArgs;
pub fn execute(args: RunArgs) -> Result<()> {
println!("{} Running target: {}", "→".blue(), args.target.green());
if args.watch {
println!("{} Watch mode enabled", "!".yellow());
}
println!("{} Listening on port {}", "✓".green(), args.port);
Ok(())
}
Dependencies
[package]
name = "<projectName>"
version = "0.1.0"
edition = "2021"
[dependencies]
clap = { version = "4.4", features = ["derive", "env"] }
clap_complete = "4.4"
anyhow = "1.0"
thiserror = "1.0"
colored = "2.0"
env_logger = "0.10"
log = "0.4"
[dev-dependencies]
assert_cmd = "2.0"
predicates = "3.0"
Workflow
- Validate inputs - Check project name, commands structure
- Create directory structure - Set up Rust project layout
- Generate Cargo.toml - Configure dependencies and metadata
- Create CLI definition - Clap derive structs
- Generate commands - Individual command modules
- Create utilities - Config, error handling
- Generate completions - Shell completion scripts
- Set up tests - CLI integration tests
Best Practices Applied
- Derive macros for declarative definitions
- Anyhow for error handling
- Colored output for user feedback
- Environment variable support
- Built-in completion generation
- Cross-platform compatible
References
- Clap Documentation: https://docs.rs/clap/
- Clap GitHub: https://github.com/clap-rs/clap
- Rust CLI Book: https://rust-cli.github.io/book/
Target Processes
- cli-application-bootstrap
- argument-parser-setup
- shell-completion-scripts
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
gsd-tools
Central utility skill for GSD operations. Provides config parsing, slug generation, timestamps, path operations, and orchestrates calls to other specialized skills. Acts as the unified entry point that the original gsd-tools.cjs provided via its lib/ modules (commands, config, core, init).
model-profile-resolution
Resolve model profile (quality/balanced/budget) at orchestration start and map agents to specific models. Enables cost/quality tradeoffs by selecting appropriate AI models for each agent role.
verification-suite
Plan structure validation, phase completeness checks, reference integrity verification, and artifact existence confirmation. Provides the structured verification layer ensuring GSD artifacts are well-formed and complete.
state-management
STATE.md reading, writing, and field-level updates. Provides cross-session state persistence via .planning/STATE.md with structured fields for current task, completed phases, blockers, decisions, and quick tasks.
git-integration
Git commit patterns, formats, and conventions for GSD methodology. Provides atomic commits per task, structured commit messages, planning file commits, branch management, and milestone tag operations.
frontmatter-parsing
YAML frontmatter parsing and manipulation for .planning/ documents. Provides read, write, update, query, and validation operations on frontmatter blocks in GSD markdown artifacts.
Didn't find tool you were looking for?