AI Guides › Workbench
By Nigel Guy · 7 min read
The usual move is to install a wrapper, open Claude Code and type "open my project and export it", assuming the wrapper can now do everything the app can. Then Claude spends ten minutes failing to load a file the wrapper was never built to read, and you decide the tool is broken. It isn't. It works on its own terms, and nobody read them.
The rule: install the hub, install one ready-made wrapper, read its command list, and only then ask Claude to use it. Build your own wrapper only when the hub has nothing.
CLI-Anything is an open-source project published by the HKUDS team on GitHub under the Apache 2.0 licence. It wraps apps such as Blender, GIMP and LibreOffice as typed terminal commands with a --json switch Claude Code can read. It is not an Anthropic product, and the wrappers ("harnesses") come from the project team and community, not the app makers.
All four parts are free. What you pay for is Claude Code: the Free claude.ai plan does not include it, so you need Pro or above. At time of writing Anthropic lists Pro at $20 a month ($17 billed annually), which is roughly £18 a month in the UK including VAT. Check the figure at checkout.
| Part | What it does | Cost | Best for | Catch |
|---|---|---|---|---|
cli-anything-hub (the cli-hub command) |
Browses, searches, installs, updates and removes wrappers | Free (PyPI, Python 3.10+) | Everyone, first | Many installs pull straight from GitHub, so you need Git installed |
A ready-made wrapper, e.g. cli-anything-blender |
Turns one app into commands Claude can run | Free; the app itself must be installed too | Apps already in the registry | Works on its own project format, not always the app's native files |
The Claude Code plugin (/cli-anything) |
Reads an app's source code and generates a new wrapper | Free; uses your Claude usage | Apps or internal tools with no wrapper yet | Long, usage-hungry run; output needs testing |
| The CLI-Hub meta-skill | Lets an agent find and install the right wrapper itself | Free; needs Node.js for npx |
Repeat use across many apps | You approve fewer steps, so you see less of what was installed |
You need Python 3.10 or newer and Git. Open Terminal (macOS) or PowerShell (Windows) and check both:
python3 --version
git --version
On Windows, type python. If either says "not found", install it from python.org or git-scm.com. Then:
pip install cli-anything-hub
cli-hub list
cli-hub search "3d"
cli-hub info blender
Other commands at time of writing: install, update, uninstall and launch. cli-hub info is the one people skip, and it tells you what the wrapper needs. If pip reports a permissions error, use a virtual environment (python3 -m venv ~/cli-env, then activate it) rather than sudo.
cli-hub install blender
cli-anything-blender --help
The hub installs only the wrapper. The registry entry says Blender 4.2 or later must be installed separately; the wrapper calls it in the background to render. Install it from blender.org and confirm blender --version works, or the wrapper will fail too.
Per-tool notes worth knowing before you start:
| Wrapper | Needs | Watch for |
|---|---|---|
| Blender | Blender 4.2+ | Scenes live in a .blend-cli.json file the wrapper creates. In the version checked, scene open reads that JSON format, not a native .blend file. Use absolute file paths, as its own instructions require |
| GIMP | GIMP, run in batch mode | Same pattern: its own project JSON, real GIMP for the output |
| LibreOffice | LibreOffice | Uses headless mode for conversions; close the app if exports hang |
That is the biggest beginner trap: "open my scene.blend and render frame 1" is not something this wrapper does. It builds a scene through its own commands, then renders that.
Start Claude Code in your output folder (cd into it, type claude) and give it this brief:
You are operating the CLI-Anything Blender wrapper (command: cli-anything-blender) on my machine.
Goal: produce one rendered PNG of a simple scene so I can confirm the setup works.
Scene: [DESCRIBE_THE_SCENE, e.g. "a red cube on a grey plane, lit from the left"]
Project file: [ABSOLUTE_PATH_FOR_PROJECT].blend-cli.json
Output image: [ABSOLUTE_PATH_FOR_PNG]
Frame to render: [FRAME_NUMBER, default 1]
Steps:
1. Run `cli-anything-blender --help` and the --help for any command group you plan to use. Use only commands that appear there.
2. Create the project with `scene new`, then add objects, a material, a camera and a light.
3. Run every command with --json and an absolute path. After each one, check the exit code; stop and show me any error rather than retrying blindly.
4. Render the chosen frame with `render execute` and confirm the PNG file exists and is not empty.
Output: a numbered list of the exact commands you ran, the path of the PNG, and one line on anything that did not behave as expected.
Rules: do not install or uninstall anything without asking me. Do not touch files outside the two paths above. If an input is missing or the wrapper lacks a command you need, ask me instead of improvising.
Before you finish, check: did every command come from --help output, and does the PNG exist at the path I gave?
Fill in the scene, the two absolute paths and the frame. Claude Code asks before running each command unless you have allowed it, so read them as they pass.
Inside Claude Code, add the project's plugin marketplace and install the plugin:
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
Then point it at a folder or public repo: /cli-anything https://github.com/[OWNER]/[REPO]. Follow-ups are /cli-anything:refine, :test, :validate and :list. If you see "Unknown skill: cli-anything", run /reload-plugins first. On Windows, the project recommends Git for Windows or WSL.
Before generating, run a scoping pass:
You are helping me decide whether to generate a CLI-Anything wrapper for an application.
Application: [APP_NAME]
Source code or docs: [REPO_OR_DOCS_LINK]
The three jobs I want Claude to do with it: [JOB_1], [JOB_2], [JOB_3]
My operating system: [MACOS_WINDOWS_OR_LINUX]
Steps:
1. Run `cli-hub search [APP_NAME]`. If a wrapper exists, stop and tell me.
2. Read the source or docs and say whether the app has a scriptable or headless mode a wrapper could call, quoting the file or page.
3. For each job, say whether it looks achievable through that interface.
4. List what must be installed on my machine.
Output: a table (job, yes/no/unclear, evidence), the install list, then one line: generate, use an existing wrapper, or don't bother.
Rules: do not run the generator or install anything. If you cannot read the repo, say so and stop. Mark inferences "unclear".
Before answering, check that every "yes" is backed by a file or doc you actually opened.
Fill in the app, the link, your three jobs and your operating system.
| Your situation | Use |
|---|---|
The app appears in cli-hub list |
Parts 1 to 3 and nothing else |
| The app is open source but not listed | Run the scoping prompt, then part 4 |
| The app is closed source with no scripting mode | Probably none of this; see guardrails |
| You switch between many apps daily | Add the meta-skill (npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill -g -y) once you trust the basics |
cli-anything-blender --json scene info (with --project and your file) returns JSON, not a stack trace.preview capture renders real preview images, a better check than reading JSON.| Symptom | Likely cause | Fix |
|---|---|---|
| Install fails mentioning git | Git missing | Install Git, rerun cli-hub install |
| Wrapper runs, render fails | The real app is missing or too old | Install it and check --version |
| "Invalid scene file" | You pointed it at a native file | Create a project with the wrapper's new command |
| Output lands somewhere odd | Relative paths | Use absolute paths throughout |
cli-hub info and the source link before installing, and keep Claude Code's command approvals switched on./cli-anything:test and :validate, then try them on copies of real work before trusting them.