Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate production-quality TypeScript CLIs with full documentation, error handling, and best practices. Creates deterministic, type-safe command-line tools following PAI's CLI-First Architecture. USE WHEN user says "create a CLI", "build a command-line tool", "make a CLI for X", or requests CLI generation. (user)
.claude/skills/microck-system-createcli/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 124% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 58% | 0% |
Automated CLI Generation System
Generate production-ready TypeScript CLIs with comprehensive documentation, type safety, error handling, and PAI's CLI-First Architecture principles.
When user requests CLI creation, follow this routing:
Triggers: "create CLI", "build command-line tool", "make CLI for X", "generate CLI" Route to: workflows/create-cli.md Action: Generate complete CLI from requirements
Triggers: "add command to CLI", "extend CLI with", "add feature to existing CLI" Route to: workflows/add-command.md Action: Add new command to existing CLI
Triggers: "upgrade CLI", "migrate to Commander", "CLI needs more complexity" Route to: workflows/upgrade-tier.md Action: Migrate Tier 1 → Tier 2 (manual → Commander.js)
Triggers: "add tests to CLI", "test scaffolding", "need CLI tests" Route to: workflows/add-testing.md Action: Generate comprehensive test suite
Triggers: "publish CLI", "distribute CLI", "make standalone binary" Route to: workflows/setup-distribution.md Action: Configure npm publishing or binary distribution
Activate when you see these patterns:
Tier 1: llcli-Style (DEFAULT - 80% of use cases)
When to use Tier 1:
Tier 2: Commander.js (ESCALATION - 15% of use cases)
When to use Tier 2:
Tier 3: oclif (REFERENCE ONLY - 5% of use cases)
1. Complete Implementation
2. Comprehensive Documentation
3. Development Setup
4. Quality Standards
Generated CLIs follow PAI's standards:
Generated CLIs go to:
${PAI_DIR}/bin/[cli-name]/ - Personal CLIs (like llcli)~/Projects/[project-name]/ - Project-specific CLIs~/Projects/PAI/examples/clis/ - Example CLIs (PUBLIC repo)SAFETY: Always verify repository location before git operations
Every generated CLI follows:
For detailed information, read these files:
workflows/create-cli.md - Main CLI generation workflow (decision tree, 10-step process)workflows/add-command.md - Add commands to existing CLIsworkflows/upgrade-tier.md - Migrate simple → complexworkflows/add-testing.md - Test suite generationworkflows/setup-distribution.md - Publishing configurationframework-comparison.md - Manual vs Commander vs oclif (with research)patterns.md - Common CLI patterns (from llcli analysis)testing-strategies.md - CLI testing approaches (Jest, Vitest, Playwright)distribution.md - Publishing strategies (npm, standalone binaries)typescript-patterns.md - Type safety patterns (from tsx, vite, bun research)tools/templates/tier1/ - llcli-style templates (default)tools/templates/tier2/ - Commander.js templates (escalation)tools/generators/ - Generation scripts (TypeScript)tools/validators/ - Quality gates (validation)examples/api-cli/ - API client (reference: llcli)examples/file-processor/ - File operationsexamples/data-transform/ - Complex CLI (Commander.js)User Request: "Create a CLI for the GitHub API that can list repos, create issues, and search code"
Generated Structure:
${PAI_DIR}/bin/ghcli/
├── ghcli.ts # 350 lines, complete implementation
├── package.json # Bun + TypeScript
├── tsconfig.json # Strict mode
├── .env.example # GITHUB_TOKEN=your_token
├── README.md # Full documentation
└── QUICKSTART.md # Common use casesUsage:
bashghcli repos --user danielmiessler ghcli issues create --repo pai --title "Bug fix" ghcli search "typescript CLI" ghcli --help
User Request: "Build a CLI to convert markdown files to HTML with frontmatter extraction"
Generated Structure:
${PAI_DIR}/bin/md2html/
├── md2html.ts
├── package.json
├── README.md
└── QUICKSTART.mdUsage:
bashmd2html convert input.md output.html md2html batch *.md output/ md2html extract-frontmatter post.md
User Request: "Create a CLI for data transformation with multiple formats, validation, and analysis commands"
Generated Structure:
${PAI_DIR}/bin/data-cli/
├── data-cli.ts # Commander.js with subcommands
├── package.json
├── README.md
└── QUICKSTART.mdUsage:
bashdata-cli convert json csv input.json data-cli validate schema data.json data-cli analyze stats data.csv data-cli transform filter --column=status --value=active
Every generated CLI must pass these gates:
any types except justifiedDaniel repeatedly creates CLIs for APIs and tools. Each time:
This skill automates steps 1-7.
The llcli CLI (Limitless.ai API) proves this pattern works:
This skill replicates that success.
This skill turns "I need a CLI for X" into production-ready tools in minutes, following proven patterns from llcli and PAI's CLI-First Architecture.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 20,535 | 23,844 | +16% | 1 | 1 | 0% | 4,651 | 8,142 | +75% | 0 | 0 | — |
case-02 | fail→pass | 13,468 | 12,594 | -6% | 1 | 1 | 0% | 2,871 | 5,020 | +75% | 0 | 0 | — |
case-03 | fail→pass | 20,615 | 22,559 | +9% | 1 | 1 | 0% | 4,420 | 7,745 | +75% | 0 | 0 | — |
case-04 | pass→pass | 15,728 | 16,787 | +7% | 1 | 1 | 0% | 3,515 | 6,094 | +73% | 0 | 0 | — |
case-05 | fail→pass | 14,053 | 25,491 | +81% | 1 | 1 | 0% | 2,978 | 6,656 | +124% | 0 | 0 | — |
case-06 | pass→pass | 14,525 | 9,515 | -34% | 1 | 1 | 0% | 2,639 | 4,337 | +64% | 0 | 0 | — |
case-07 | fail→pass | 18,582 | 16,906 | -9% | 1 | 1 | 0% | 4,054 | 6,406 | +58% | 0 | 0 | — |
case-08 | fail→fail | 10,982 | 6,572 | -40% | 1 | 1 | 0% | 1,867 | 3,744 | +101% | 0 | 0 | — |
case-09 | pass→pass | 15,116 | 14,354 | -5% | 1 | 1 | 0% | 2,958 | 5,245 | +77% | 0 | 0 | — |
case-10 | fail→pass | 12,692 | 9,756 | -23% | 1 | 1 | 0% | 2,071 | 4,048 | +95% | 0 | 0 | — |
case-11 | fail→fail | 8,435 | 7,641 | -9% | 1 | 1 | 0% | 1,522 | 3,945 | +159% | 0 | 0 | — |
case-12 | fail→pass | 10,081 | 7,493 | -26% | 1 | 1 | 0% | 1,747 | 3,754 | +115% | 0 | 0 | — |
case-13 | pass→pass | 13,338 | 11,925 | -11% | 1 | 1 | 0% | 2,220 | 4,669 | +110% | 0 | 0 | — |
case-14 | pass→pass | 14,038 | 10,661 | -24% | 1 | 1 | 0% | 2,373 | 4,459 | +88% | 0 | 0 | — |
case-15 | fail→pass | 9,724 | 3,023 | -69% | 1 | 1 | 0% | 1,666 | 3,109 | +87% | 0 | 0 | — |
case-16 | pass→pass | 11,400 | 8,679 | -24% | 1 | 1 | 0% | 2,046 | 4,080 | +99% | 0 | 0 | — |
case-17 | fail→pass | 11,417 | 7,307 | -36% | 1 | 1 | 0% | 2,029 | 3,803 | +87% | 0 | 0 | — |
case-18 | pass→pass | 8,151 | 8,200 | +1% | 1 | 1 | 0% | 1,769 | 4,227 | +139% | 0 | 0 | — |
case-19 | fail→pass | 6,609 | 2,257 | -66% | 1 | 1 | 0% | 1,275 | 2,982 | +134% | 0 | 0 | — |
case-20 | fail→pass | 13,686 | 4,751 | -65% | 1 | 1 | 0% | 2,527 | 3,397 | +34% | 0 | 0 | — |
case-21 | pass→pass | 9,518 | 4,401 | -54% | 1 | 1 | 0% | 1,727 | 3,342 | +94% | 0 | 0 | — |
case-22 | fail→pass | 11,855 | 2,993 | -75% | 1 | 1 | 0% | 2,104 | 3,102 | +47% | 0 | 0 | — |
case-23 | fail→pass | 7,603 | 2,382 | -69% | 1 | 1 | 0% | 1,455 | 2,981 | +105% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +57 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.