← Back to Skills Marketplace
openlark

Commander.js is the most popular command-line interface (CLI) framework for Node.js.

by OpenLark · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ pending
75
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install commander
Description
Commander.js is the most popular command-line interface (CLI) framework for Node.js. Used to create professional CLI programs, supporting option parsing, sub...
README (SKILL.md)

Commander.js

Trigger Scenarios

  • Quickly create CLI scaffolding
  • Define options and arguments
  • Create subcommands
  • Customize help information
  • TypeScript support

Quick Start

// 1. Install
npm install commander

// 2. Create CLI
const { Command } = require('commander');
const program = new Command();

program
  .name('my-cli')
  .description('My CLI Tool')
  .version('1.0.0');

program.parse();

Option Definition

Basic Option Types

// Boolean option (no argument)
program.option('-d, --debug', 'Enable debug mode');

// Value option (requires argument)
program.option('-p, --port \x3Cnumber>', 'Server port', '3000');

// Optional value option
program.option('--cheese [type]', 'Add cheese (optional type)');

// Negated boolean option
program.option('--no-sauce', 'No sauce');

// Required option
program.requiredOption('-c, --cheese \x3Ctype>', 'Must choose a cheese type');

// Variadic option (array)
program.option('--items \x3Citems...>', 'Multiple items');

Accessing Option Values

const options = program.opts();
console.log(options.debug); // or program.opts().debug

// Camel-case naming conversion: --template-engine → opts().templateEngine

Custom Option Processing

program.option('--date \x3Cdate>', 'Date', (value) => new Date(value));

Subcommands

Inline Subcommands

program.command('serve')
  .description('Start server')
  .option('-p, --port \x3Cport>')
  .action((options) => {
    console.log('Server running on port', options.port);
  });

program.command('build')
  .description('Build project')
  .option('--watch')
  .action((options) => {
    console.log('Building...');
  });

Standalone Executable Subcommands

// Main program
program.command('git hooks', { isDefault: true });

// Subcommand file: commands/git-hook.js
#!/usr/bin/env node
console.log('Running git hook');

Argument Definition

// Required argument
program.argument('\x3Cfile>', 'Input file');

// Optional argument
program.argument('[file]', 'Input file (optional)');

// Variadic argument
program.argument('\x3Cfiles...>', 'Multiple files');

// Access in action handler
program.command('split')
  .argument('\x3Cstring>', 'String to split')
  .option('--separator \x3Cchar>', 'Separator', ',')
  .action((str, options) => {
    console.log(str.split(options.separator));
  });

Help System

Automatic Help

node app.js --help
node app.js help command

Custom Help

program.on('option:help', () => {
  console.log('Custom help information');
  program.help();
});

program.addHelpCommand(false); // Disable help subcommand

Global Object Shortcut

For simple scripts, you can use the global object:

const { program } = require('commander');

program
  .name('my-tool')
  .option('-v, --verbose')
  .action(() => {
    console.log(program.opts().verbose ? 'Verbose mode' : 'Normal mode');
  });

program.parse();

TypeScript Support

import { Command } from 'commander';

const program = new Command();

program
  .name('ts-cli')
  .option('-n, --name \x3Cname>', 'Name')
  .action((options) => {
    console.log('Hello', options.name);
  });

program.parse();

Common Configuration

// Configure parsing behavior
program.configureOutput({
  writeErr: (str) => process.stderr.write(str),
  outputWidth: 80,
});

// Enable conflict checks
program.allowUnknownOption();
program.passThroughOptions();

// Lifecycle hooks
program
  .hook('preAction', (thisCommand) => {
    console.log('Pre-action hook');
  })
  .hook('postAction', (thisCommand) => {
    console.log('Post-action hook');
  });

Best Practices

  1. Use a local Command object (not global) for easier unit testing
  2. Always call program.parse() to start parsing
  3. Prefer .option() over directly processing process.argv
  4. Use camelCase option names for automatic conversion: --template-engineopts().templateEngine
  5. Use .description() to provide clear help information
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install commander
  3. After installation, invoke the skill by name or use /commander
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of the Commander.js skill. - Provides guidance for building CLI tools with Commander.js in Node.js. - Covers option/argument definitions, subcommands, and help customization. - Includes TypeScript usage examples. - Shares best practices for configuration and testing.
Metadata
Slug commander
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Commander.js is the most popular command-line interface (CLI) framework for Node.js.?

Commander.js is the most popular command-line interface (CLI) framework for Node.js. Used to create professional CLI programs, supporting option parsing, sub... It is an AI Agent Skill for Claude Code / OpenClaw, with 75 downloads so far.

How do I install Commander.js is the most popular command-line interface (CLI) framework for Node.js.?

Run "/install commander" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Commander.js is the most popular command-line interface (CLI) framework for Node.js. free?

Yes, Commander.js is the most popular command-line interface (CLI) framework for Node.js. is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Commander.js is the most popular command-line interface (CLI) framework for Node.js. support?

Commander.js is the most popular command-line interface (CLI) framework for Node.js. is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Commander.js is the most popular command-line interface (CLI) framework for Node.js.?

It is built and maintained by OpenLark (@openlark); the current version is v1.0.0.

💬 Comments