Skip to content

Guide · Agent skill

How to use the CreateCLI agent skill to build TypeScript CLIs

Updated · written with AI from the project's own documentation and checked against our catalogue data

CreateCLI is an agent skill from the danielmiessler/LifeOS project, released under the MIT licence. It teaches an AI agent to turn a request such as 'build a CLI for this API' into a complete TypeScript command-line tool with documentation, strict configuration and a defined output contract. This guide covers what the skill does, how to install it, how to trigger it, and what to check before you trust the generated code.

Create TypeScript CLIsdanielmiessler/LifeOS · MIT

Quick start

  1. 1Install the skill. Download the ZIP from this page and unzip it into ~/.claude/skills/, or into a project's .claude/skills/ folder. In the Claude apps, upload it under Settings → Capabilities → Skills.
  2. 2Check your environment. Make sure Bun and TypeScript are available, since the skill requires both and forbids npm and npx.
  3. 3Describe the CLI in plain words. Say what the tool should do, which API or task it wraps, and which commands you need. Include a trigger phrase such as build a CLI or wrap this API.
  4. 4Answer the agent's questions. The agent asks about open details like authentication and install location rather than guessing them.
  5. 5Review the generated files. Read the source, README, QUICKSTART, package.json and tsconfig.json against your requested commands, output and docs.
  6. 6Run the checks. Run bunx tsc --noEmit in the CLI directory, then test a command and --help to confirm it works.
  7. 7Add or upgrade later. Use requests like add a command to <cli> or upgrade tier to move the tool to Commander when it outgrows Tier 1.

What the CreateCLI skill makes the agent do

Once the skill is installed, the agent can generate a production-oriented TypeScript CLI from a plain-language request. Each generated CLI ships with a full implementation, a README and QUICKSTART, a Bun package.json, a strict tsconfig.json, an .env.example, and a --help output that lists every command with examples.

The skill picks one of three complexity tiers. Tier 1 uses hand-written argument parsing with zero framework dependencies and is the default for most cases. Tier 2 uses Commander.js and is used when a tool needs grouped or git-style subcommands, a plugin architecture, complex nested options, or multiple output format engines. Tier 3 (oclif) is reference documentation only and is never generated.

  • Tier 1: API clients, data transformers and simple automation with 2-10 commands and no subcommands
  • Tier 2: 10+ commands that need grouping, git-style subcommands, plugins, or several output formats
  • Output contract: JSON to stdout, errors with context to stderr, exit code 0 on success and 1 on error

Install the CreateCLI skill from the ZIP or the Claude apps

Download the CreateCLI ZIP from this page. To make it available to Claude Code for your own use, unzip it into ~/.claude/skills/. To limit it to a single project, unzip it into that project's .claude/skills/ folder instead.

If you use the Claude apps, you can upload the skill instead. Open Settings, go to Capabilities, then Skills, and upload the ZIP there.

  • Personal install: unzip into ~/.claude/skills/
  • Project install: unzip into the project's .claude/skills/
  • Claude apps: Settings → Capabilities → Skills

Trigger the skill with natural requests

You do not need a special command to use the skill. Describe the tool you want in plain words and include one of the trigger phrases the skill is written to respond to. The skill's description lists create CLI, build CLI, command-line tool, wrap API, add command, upgrade tier and TypeScript CLI.

Be specific about the API or task, the commands you want, and how the tool authenticates. The skill's CreateCli intent asks for these details and will not guess where the request leaves them open.

  • Create a CLI for the GitHub API that can list repos, create issues, and search code
  • Build a command-line tool that wraps my invoicing API
  • Add a search command to ghcli
  • Upgrade tier for notioncli and move it to Commander

Review and verify the generated CLI

The skill includes a checker script, Tools/CheckCli.ts, that verifies the output contract: strict tsc, --help naming every command, --version, unknown commands exiting 1, and --json-args stdout that parses as JSON. The skill's own notes say generated CLIs still need human review against the commands, output and documentation you asked for.

To confirm the TypeScript is clean, run the type checker from the CLI directory. The skill's AddCommand intent uses this check, which should exit 0.

  • Confirm strict type checking passes
  • Run the new command with a test value and confirm it exits 0
  • Check that --help lists every command, including new ones
  • Check that unknown commands exit 1
bunx tsc --noEmit

Set up secrets and optional configuration

If the CLI wraps an API that needs credentials, the skill reads them from the canonical ~/.claude/.env file. Generated CLIs include an .env.example showing the variable names. Slice values after the first = sign so that keys containing = (such as padded base64) are not truncated.

Optionally, a Config.md file in the skill's customization folder can name a Reference CLI. When set, new public-app CLIs match that reference's command catalog, device login, exit codes and install script. Setup details are in the skill's Setup.md.

  • Secrets go in ~/.claude/.env, not in a project .env file
  • Optional key: Reference CLI in Config.md, for public-app CLIs only
  • Example variable format from a generated .env.example: GITHUB_TOKEN=your_token
GITHUB_TOKEN=your_token

Safety notes: scripts, network and package managers

The skill runs scripts, including the bundled checker, so review them as you would any code you run locally. The skill itself does not use the network. Any network calls come from the API the generated CLI wraps.

The skill requires Bun for the runtime and package manager. It forbids npm, npx and Python helpers. Placement follows the skill's rules: personal CLIs go under ~/.claude/LIFEOS/TOOLS/ and project CLIs under ~/Projects/. These are different git repositories, so confirm which one a directory belongs to before running git commands in it.

  • Runs scripts: yes. Uses network: no (the skill itself)
  • Requires Bun and TypeScript; not for projects that cannot use them
  • Confirm the git repository before any git operation in a generated CLI folder

What people use it for

  • Wrap a REST API you use often in a CLI that prints JSON for scripts to read
  • Build a personal productivity tool that runs inside a LifeOS or Claude setup
  • Automate a repetitive file or data task with a documented command-line interface
  • Give a team a shared CLI contract: JSON to stdout, exit 0 or 1, and clear help text

Frequently asked questions

How do I install the CreateCLI skill?

Download the CreateCLI ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder for one project. In the Claude apps, upload the ZIP under Settings → Capabilities → Skills.

What do I need to use CreateCLI?

The skill requires the Bun runtime and package manager, and TypeScript with a strict tsconfig checked by tsc. It forbids npm, npx and Python helpers, so projects that do not use Bun or TypeScript are not a good fit.

Is CreateCLI free?

The skill is released under the MIT licence. The source does not mention pricing, so check the licence and the page for terms of use.

Does CreateCLI use the network?

According to its metadata, the skill does not use the network, but it does run scripts, including the bundled Tools/CheckCli.ts checker. Any network calls come from the API that a generated CLI wraps.

Can CreateCLI create a skill for Claude instead of a CLI?

No. The skill's description says it is not for LifeOS skill scaffolding, and that task should use the CreateSkill skill instead.

Why won't the generated CLI work after I changed it?

Check that strict type checking passes with bunx tsc --noEmit, that --help lists every command, and that required secrets are set in ~/.claude/.env. The skill's notes also say generated CLIs need human review against the requested commands and output.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

CreateCLI suits developers and personal-productivity users who want a consistently structured TypeScript CLI on Bun, with JSON output, documented help and exit codes. Skip it if your project does not use Bun or TypeScript, or if you need a finished, audited product, since generated code still needs human review.

Download the skill