Skip to content
Back to skills

Cli Anything

ASecurity

Build a command-line harness that lets an agent drive GUI-only software — Blender, LibreOffice, GIMP, Inkscape, Audacity, QGIS, video editors, CAD tools — by generating the app's native project format and handing it to the real binary for rendering. Use when a task needs software that has no usable CLI, when an agent must produce a real artifact (render, export, conversion) from a desktop application, or when asked to wrap, automate, or headlessly drive a GUI program. Not for software that al...

  • 145 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentspythonrustgitbackendsecuritydocumentation

Works with

  • cli

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add dmae97/omk --skill cli-anything --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cli Anything?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cli Anything
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dmae97-cli-anything/badge)](https://www.skillsdirectory.com/skills/dmae97-cli-anything)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cli-anything
description: Build a command-line harness that lets an agent drive GUI-only software — Blender, LibreOffice, GIMP, Inkscape, Audacity, QGIS, video editors, CAD tools — by generating the app's native project format and handing it to the real binary for rendering. Use when a task needs software that has no usable CLI, when an agent must produce a real artifact (render, export, conversion) from a desktop application, or when asked to wrap, automate, or headlessly drive a GUI program. Not for software that already ships an adequate CLI.
---

# CLI-Anything

Turn GUI-only software into something an agent can drive, without a display or a mouse.

## The rule that makes it work

**Build the data → call the real software → verify the output.**

The harness is an interface *to* the application, never a replacement for it. It
generates the app's native project file, then invokes the actual binary to render.

This one rule decides whether the harness is useful or a liability:

- The application is a **hard dependency**. If it is not installed, fail with install
  instructions. Never fall back to a Python library that approximates the render.
- A fallback renderer produces plausible output that is wrong in ways nobody checks.
  That is worse than an error, because the agent reports success.

## When to reach for this

Use it when the target has no adequate CLI and the task needs a real artifact:
a render, an export, a format conversion, a scripted edit.

Skip it when the software already ships a CLI that covers the task. `ffmpeg`,
`pandoc`, and `ImageMagick` are the harness you would have written.

## How to build one

**1. Find the engine.** GUI apps separate presentation from logic. Locate the core
library and any CLI the backend already ships — `melt` for Shotcut, `sox` for
Audacity, `libreoffice --headless`, `blender --background --python`. Those are the
building blocks, not things to reimplement.

**2. Read the native format.** The project file is the data layer: MLT XML, ODF ZIP,
SVG, `.blend` driven by a bpy script. Manipulate it directly.

**3. Map GUI actions to calls.** Every button and menu item is a function call. If the
app has undo/redo it almost certainly uses a command pattern, and those commands are
your CLI operations.

**4. Choose the interaction model.** A stateful REPL suits agents that keep context; a
subcommand CLI suits one-shot scripting. Supporting both is usually right. Decide what
persists between commands and where that state lives.

**5. Give the agent introspection.** `info`, `list`, and `status` matter more here than
in a human CLI: an agent cannot look at the screen to see what it just did. Fail loudly
with unambiguous messages so it can self-correct, and keep commands idempotent.

## The trap: the rendering gap

A harness can write a perfectly valid project file and still render nothing. The
registry says a filter exists; the render path never applies it. Every effect the CLI
advertises needs a render mapping, or explicit documentation that it is project-only.

Verify by probing the artifact, not by trusting exit code 0 — sample frames, compare
pixel statistics against the source, check audio RMS at the boundaries. When comparing
across resolutions, exclude letterbox padding or the numbers lie.

## Before installing anything

The upstream registry (`cli-hub install <name>`) distributes community-contributed
Python packages that an agent then executes. That is a supply-chain surface, and
upstream's own security policy is explicit that an agent may autonomously construct and
run commands from untrusted input.

Read a harness before installing it. Prefer writing the harness for the one application
the task needs over installing a registry entry you have not reviewed.

## Upstream

Methodology from [HKUDS/CLI-Anything](https://github.com/HKUDS/CLI-Anything)
(Apache-2.0). The full harness specification, per-phase guides, and 80+ reference
harnesses live there; this skill is a condensed operating procedure, not a copy.

The `/cli-anything` command in the `.omk/extensions/cli-anything` extension loads this
skill with a target path or repository already filled in.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.