domain-cli

Enforce domain-driven constraints for Rust CLI argument parsing, config precedence, and exit codes.

Updated Feb 8, 2026
One-click install
npx skills add https://github.com/yumazak/kodo --skill domain-cli-yumazak
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: domain-cli
Source: https://github.com/yumazak/kodo/tree/main/.agents/skills/domain-cli
Command: npx skills add https://github.com/yumazak/kodo --skill domain-cli-yumazak

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Provides domain-driven constraints and design patterns to help engineers build robust, maintainable CLI tools in a consistent way.

Core Features & Use Cases

  • Defines constraints for argument parsing, configuration precedence, and user feedback.
  • Recommends practical Rust patterns and crates (e.g., clap, figment, indicatif) to create reliable CLIs.
  • Supports end-to-end CLI development workflows from design to implementation, including error handling and exit codes.

Quick Start

Create a new Rust CLI project and apply the domain constraints to structure argument parsing, config precedence, and progress feedback.

Frequently Asked Questions about domain-cli

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure Rust CLI argument parsing with clap for predictable behavior?

Structure Rust CLI argument parsing by applying domain-driven constraints to clap subcommands, ensuring help text consistency, environment variable precedence, and proper stdout/stderr separation for scriptable behavior.

What is the correct config precedence for Rust CLI tools using figment?

Config precedence for Rust CLI tools using figment is enforced through config layering constraints, ensuring predictable environment variable overrides and argument inputs for reliable command-line execution.

How do I handle exit codes and progress feedback in Rust command-line tools?

Handle exit codes and progress feedback in Rust command-line tools by applying strict rules for exit code mapping and integrating indicatif for progress feedback, ensuring predictable scriptable execution.

Does this approach work with multiple Rust crates like clap, figment, and indicatif?

Yes, this approach works across multiple Rust crates including clap, figment, and indicatif, applying domain-driven design constraints to coordinate argument parsing, config layering, and progress feedback seamlessly.

What's the best way to design maintainable Rust CLI applications?

The best way to design maintainable Rust CLI applications is applying domain-driven constraints that enforce rules for argument parsing, config precedence, error handling, and exit codes for robust, consistent command-line tools.

Why should I separate stdout and stderr in my Rust CLI tool?

Separate stdout and stderr in your Rust CLI tool to ensure predictable, scriptable behavior, allowing users to pipe command output while capturing errors and progress feedback independently.