Engineering CLITerminalCommand Line

CLI Developer

CLI tool development: argument parsing (commander, click, cobra), interactive prompts, progress indicators, shell completions, distribution, and cross-platform.

A CLI tool expert who designs intuitive command-line interfaces with subcommand trees, interactive prompts via Inquirer/Clack, progress bars for long-running operations, and shell completion scripts for bash, zsh, and fish. Packages CLIs for distribution via npm, PyPI, Homebrew, and GitHub releases with cross-platform Windows/macOS/Linux support.

Added Mar 20, 2026

$npx skills add johnefemer/skillfish --skill cli-developer

What This Skill Can Do

Concrete capabilities you get when you install this skill.

Design subcommand trees and flag schemas that follow CLI conventions (POSIX, GNU)

Implement interactive prompts with Inquirer.js, Clack, or Prompt (Go) for guided UX

Add progress indicators, spinners, and tables with Ora, Listr, and Ink

Generate shell completion scripts for bash, zsh, and fish

Package and distribute CLIs via npm, PyPI (pipx), Homebrew, and GitHub releases

Handle stdin/stdout/stderr correctly for composable Unix pipelines

Real Conversations

See how the CLI Developer skill responds to actual requests. These are representative examples of what your AI agent will produce.

You

I'm building a CLI tool in Node.js that should have subcommands like mytool deploy, mytool rollback, and mytool status. It also needs to read from a config file. What's the best structure?

Agent

Use Commander.js for argument parsing and cosmiconfig for config file resolution:

npm install commander cosmiconfig chalk ora
// src/cli.ts
import { Command } from 'commander';
import { cosmiconfig } from 'cosmiconfig';

const program = new Command();

program
  .name('mytool')
  .version('1.0.0')
  .description('Deployment management tool');

// Global option available to all subcommands
program.option('--config <path>', 'path to config file');

program
  .command('deploy')
  .description('Deploy to the target environment')
  .argument('<environment>', 'Target environment (staging|production)')
  .option('--dry-run', 'Preview changes without applying')
  .action(async (environment, options, cmd) => {
    const config = await loadConfig(cmd.parent?.opts().config);
    await deployCommand(environment, options, config);
  });

program
  .command('rollback')
  .description('Roll back the last deployment')
  .option('--steps <n>', 'Number of versions to roll back', '1')
  .action(async (options, cmd) => {
    const config = await loadConfig(cmd.parent?.opts().config);
    await rollbackCommand(parseInt(options.steps), config);
  });

async function loadConfig(configPath?: string) {
  const explorer = cosmiconfig('mytool'); // looks for .mytoolrc, mytool.config.js, etc.
  const result = configPath
    ? await explorer.load(configPath)
    : await explorer.search();
  if (!result) throw new Error('No config file found. Run `mytool init` to create one.');
  return result.config;
}

program.parseAsync(process.argv);

File structure:

src/
  cli.ts          # entry point, command tree
  commands/
    deploy.ts     # deploy logic
    rollback.ts   # rollback logic
  lib/
    config.ts     # config loading
    api.ts        # API client

package.json bin field:

{ "bin": { "mytool": "./dist/cli.js" } }

Users run npm install -g mytool and get the mytool command in their PATH.

Get Started

How to install and use this skill in your preferred environment.

Skills are designed for AI coding agents (Claude Code, Cursor, Windsurf) and IDE-based workflows where the agent can read files, run scripts, and act on your codebase.

Models & Context

Which AI models and context windows work best with this skill.

Recommended Models

Claude Sonnet 4 or GPT-4o for CLI design and cross-platform packaging. Verify shell completion syntax for each shell (bash/zsh/fish differ significantly).

Context Window

SKILL.md ~4KB. Fits in 32K context; CLIs with many subcommands benefit from 64K+ to hold the full command tree.

Pro tips for best results

1

Be specific

Include numbers — users, budget, RPS — so the skill can size the architecture.

2

Share constraints

Compliance needs, team size, and existing stack all improve the output.

3

Iterate

Start with a high-level design, then ask follow-ups for IaC, cost analysis, or security review.

4

Combine skills

Pair with companion skills below for end-to-end coverage.

Works Great With

These skills complement CLI Developer for end-to-end coverage. Install them together for better results.

$ skillfish add johnefemer/skillfish --all # install all skills at once

Ready to try CLI Developer?

Install the skill and start getting expert-level guidance in your workflow — any agent, any IDE.

$npx skills add johnefemer/skillfish --skill cli-developer
← Browse all skills