gunshi-cli

Build TypeScript CLIs with Gunshi-based DSL for argument parsing and subcommands.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/aster-void/dotfiles --skill gunshi-cli
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gunshi-cli
Source: https://github.com/aster-void/dotfiles/tree/main/modules/home/profile-dev/programs/claude-code/skills/gunshi-cli
Command: npx skills add https://github.com/aster-void/dotfiles --skill gunshi-cli

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill simplifies the creation of powerful and type-safe command-line interfaces (CLIs) in TypeScript, eliminating the boilerplate and complexity often associated with argument parsing, subcommand management, and plugin integration. It ensures your CLI tools are robust, maintainable, and easy to use.

Core Features & Use Cases

  • Type-Safe Argument Parsing: Define arguments with rich types (string, number, boolean, enum, positional, custom) and get automatic type inference, reducing runtime errors.
  • Subcommand & Lazy Loading: Organize complex CLIs with subcommands and improve performance by lazy loading heavy modules only when needed.
  • Extensible Plugin System: Easily add global options, decorate command execution, and extend the command context with custom functionality through a powerful plugin API.
  • Use Case: Develop a new CLI tool for managing project configurations, including subcommands for create, update, and delete, with robust argument validation and clear help messages.

Quick Start

Create a new gunshi-cli command in TypeScript that takes a --name argument (string, required) and a --times argument (number, default 1), then prints a greeting message.

Frequently Asked Questions about gunshi-cli

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

FAQPage Schema
How do I build a type-safe CLI with argument parsing in TypeScript?

Type-safe argument parsing in TypeScript eliminates runtime errors by defining arguments with rich types (string, number, boolean, enum, custom) and getting automatic type inference. Gunshi provides a DSL for ArgSchema definitions that enforce typing at compile time and validate inputs automatically, reducing boilerplate.

What's the best way to organize complex CLIs with subcommands?

Organize CLIs by defining subcommands through a structured schema that supports lazy loading—loading heavy modules only when needed. This approach improves performance for multi-command tools and keeps command definitions maintainable and type-safe without manual routing logic.

Can I add custom validation and parsing logic to CLI arguments?

Yes. Custom parsers and validators let you define domain-specific argument handling beyond standard types. Gunshi supports custom parser functions alongside positional arguments, enums, and conflict detection, enabling flexible validation that integrates seamlessly with type inference.

How do I extend a CLI with plugins and global options?

A plugin system lets you decorate command execution and extend context with custom functionality. Add global options that apply across all commands and inject shared behavior through the plugin API without modifying individual command handlers.

Does this work for converting camelCase argument names to kebab-case CLI syntax?

Yes. Automatic camelCase to kebab-case conversion maps TypeScript property names to standard CLI flag naming conventions. This keeps your schema readable while producing idiomatic command-line interfaces users expect.

What's the entry barrier for setting up a CLI with type-safe argument definitions?

No external dependencies required. Define arguments using TypeScript's type system with Gunshi's DSL, which generates automatic type inference and validation. Start with basic string and number arguments, then add enums, custom parsers, and subcommands as complexity grows.