CLI Tool Scaffolder
Prerequisites & Dependencies
- Node.js 18+ with npm or pnpm
- CLI framework:
npm i commander or npm i yargs (choose one)
- Optional:
npm iora for spinners, chalk for terminal colors, inquirer for interactive prompts
Execution Steps
- Initialize the project:
npm init -y and npm i commander chalkora inquirer
- Define the command structure:
program.command('<command>').description('<desc>') or yargs.argv._
- Add supported flags/options:
--name, -e, --verbose, etc., with description and default values
- Implement argument validation: check required flags, parse types (
string, number, boolean), show help on --help
- Add runtime UI enhancements:
ora spinner for long operations, chalk colored output, inquirer for confirmation prompts
- Wire a help command:
program.help() or yargs.showHelp(), and output a README.md or man page
- Publish globally or locally:
npm link for testing, or npm pack / publish to npm registry
// Commander CLI with spinner and color
const { Command } = require('commander');
const { green, bold } = require('chalk');
const ora = require('ora');
const program = new Command();
program
.name('my-tool')
.description('A helpful CLI scaffolder')
.option('-n, --name <string>', 'name to greet', 'world')
.option('-v, --verbose', 'enable verbose output')
.parse();
const args = program.opts();
const spinner = ora(`Hello, ${green(args.name)}!`).start();
setTimeout(() => {
spinner.stop();
console.log(bold('Operation completed successfully!'));
}, 1500);
// Access via: node index.js --name Alice --verbose
1---2name: cli-tool-scaffolder3description: Scaffold interactive command-line interface tools with argument parsing, flags, spinners, and help menus.4metadata:5 source: skills/cli-tool-scaffolder/cli-tool-scaffolder.md6---78# CLI Tool Scaffolder910## Prerequisites & Dependencies11- Node.js 18+ with npm or pnpm12- CLI framework: `npm i commander` or `npm i yargs` (choose one)13- Optional: `npm iora` for spinners, `chalk` for terminal colors, `inquirer` for interactive prompts1415## Execution Steps161. Initialize the project: `npm init -y` and `npm i commander chalkora inquirer`172. Define the command structure: `program.command('<command>').description('<desc>')` or `yargs.argv._`183. Add supported flags/options: `--name`, `-e`, `--verbose`, etc., with description and default values194. Implement argument validation: check required flags, parse types (`string`, `number`, `boolean`), show help on `--help`205. Add runtime UI enhancements: `ora` spinner for long operations, `chalk` colored output, `inquirer` for confirmation prompts216. Wire a help command: `program.help()` or `yargs.showHelp()`, and output a `README.md` or `man` page227. Publish globally or locally: `npm link` for testing, or `npm pack` / publish to npm registry2324```javascript25// Commander CLI with spinner and color26const { Command } = require('commander');27const { green, bold } = require('chalk');28const ora = require('ora');2930const program = new Command();31program32 .name('my-tool')33 .description('A helpful CLI scaffolder')34 .option('-n, --name <string>', 'name to greet', 'world')35 .option('-v, --verbose', 'enable verbose output')36 .parse();3738const args = program.opts();39const spinner = ora(`Hello, ${green(args.name)}!`).start();4041setTimeout(() => {42 spinner.stop();43 console.log(bold('Operation completed successfully!'));44}, 1500);4546// Access via: node index.js --name Alice --verbose47```