Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build CLI tools with Commander.js. Use when creating command-line applications, parsing arguments, implementing subcommands, or building developer tools with flags and options.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-21 | ✗→✓ | ▲ Improved | -24% | 0% |
Commander is the standard library for building Node.js CLIs. Parse arguments, define subcommands, generate help text, and handle options. Powers thousands of CLIs including create-react-app, eslint, and prisma.
typescript// cli.ts — CLI with commands and options import { Command } from 'commander' const program = new Command() .name('mytools') .description('Developer productivity toolkit') .version('1.0.0') program .command('init') .description('Initialize a new project') .argument('<name>', 'project name') .option('-t, --template <type>', 'project template', 'default') .option('--no-git', 'skip git initialization') .option('-d, --dry-run', 'show what would be created') .action(async (name, opts) => { console.log(`Creating project: ${name}`) console.log(`Template: ${opts.template}`) if (opts.dryRun) { console.log('(dry run)'); return } await createProject(name, opts) }) program .command('deploy') .description('Deploy to production') .option('-e, --env <environment>', 'target environment', 'production') .option('--force', 'skip confirmation') .action(async (opts) => { if (!opts.force) { const ok = await confirm(`Deploy to ${opts.env}?`) if (!ok) process.exit(0) } await deploy(opts.env) }) program.parse()
json{ "name": "mytools", "bin": { "mytools": "./dist/cli.js" }, "scripts": { "build": "tsc", "dev": "tsx src/cli.ts" } }
bash# Development npx tsx src/cli.ts init my-project --template react # After build + npm link mytools init my-project --template react mytools deploy --env staging mytools --help
--help from your command definitions.argument() for required positional args, option() for flags.--no-* flags automatically create boolean negations (e.g., --no-git → opts.git === false).Other measured skills in the registry, with their headline benchmark lift.