cli-framework-cli-commander
CLI Application Development with Commander.js
Quick Guide: Use Commander.js for command structure and option parsing. Use @clack/prompts for interactive UX (spinners, selects, confirms). Always handle Ctrl+C cancellation with
p.isCancel(). Use named exit code constants. UseparseAsync()for async actions. Structure commands in separate files. Resolve config with precedence: flag > env > project > global > default.
<critical_requirements>
CRITICAL: Before Building CLI Applications
All code must follow project conventions in CLAUDE.md (kebab-case, named exports, import ordering,
import type, named constants)
(You MUST handle SIGINT (Ctrl+C) gracefully and exit with appropriate codes)
(You MUST use p.isCancel() to detect cancellation in ALL @clack/prompts calls and handle gracefully)
(You MUST use named constants for ALL exit codes - NEVER use magic numbers like process.exit(1))
(You MUST use parseAsync() for async actions to properly propagate errors)