CreateCLI
danielmiessler
Generate TypeScript CLIs. USE WHEN create CLI, build CLI, command-line tool. SkillSearch('createcli') for docs.
bunx add-skill danielmiessler/personal_ai_infrastructure -s CreateCLILoadingβ¦
danielmiessler
Generate TypeScript CLIs. USE WHEN create CLI, build CLI, command-line tool. SkillSearch('createcli') for docs.
bunx add-skill danielmiessler/personal_ai_infrastructure -s CreateCLILoadingβ¦
Before executing, check for user customizations at:
~/.claude/skills/CORE/USER/SKILLCUSTOMIZATIONS/CreateCLI/
If this directory exists, load and apply any PREFERENCES.md, configurations, or resources found there. These override default behavior. If the directory does not exist, proceed with skill defaults.
You MUST send this notification BEFORE doing anything else when this skill is invoked.
Send voice notification:
curl -s -X POST http://localhost:8888/notify \
-H "Content-Type: application/json" \
-d '{"message": "Running the WORKFLOWNAME workflow in the CreateCLI skill to ACTION"}' \
> /dev/null 2>&1 &
Output text notification:
Running the **WorkflowName** workflow in the **CreateCLI** skill to ACTION...
This is not optional. Execute this curl command immediately upon skill invocation.
Automated CLI Generation System
Generate production-ready TypeScript CLIs with comprehensive documentation, type safety, error handling, and CLI-First Architecture principles.
Route to the appropriate workflow based on the request.
When executing a workflow, output this notification directly:
Running the **WorkflowName** workflow in the **CreateCLI** skill to ACTION...
Workflows/CreateCli.mdWorkflows/AddCommand.mdWorkflows/UpgradeTier.mdActivate 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 standards:
Generated CLIs go to:
~/.claude/Bin/[cli-name]/ - Personal CLIs~/Projects/[project-name]/ - Project-specific CLIs${PROJECTS_DIR}/PAI/Examples/clis/ - Example CLIs (if contributing to PAI)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:
~/.claude/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 cases
Usage:
ghcli repos --user exampleuser
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:
~/.claude/Bin/md2html/
βββ md2html.ts
βββ package.json
βββ README.md
βββ QUICKSTART.md
Usage:
md2html 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:
~/.claude/Bin/data-cli/
βββ data-cli.ts # Commander.js with subcommands
βββ package.json
βββ README.md
βββ QUICKSTART.md
Usage:
data-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 justifiedDevelopers repeatedly create 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 CLI-First Architecture.
Use when you need to run Flow type checking, or when seeing Flow type errors in React code.
Use when you want to validate changes before committing, or when you need to check all React contribution requirements.
Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.
Use when you need to check feature flag states, compare channels, or debug why a feature behaves differently across release channels.