
Cli Anything Hermes
- 137 installs
- 46.6k repo stars
- Updated August 3, 2026
- hkuds/cli-anything
Have Hermes Agent build, refine, test, and validate a CLI-Anything Python harness for a GUI application or source repository following the CLI-Anything methodology.
About
Adapts the CLI-Anything harness-builder methodology to Hermes Agent so it can generate and validate a Python CLI harness for a given app or repo. A developer uses it when they want Hermes to wrap a GUI application or source tree as an agent-native CLI.
- Reads HARNESS.md from the CLI-Anything repo as source of truth
- Accepts a local source path or a GitHub repository URL
Cli Anything Hermes by the numbers
- 137 all-time installs (skills.sh)
- +17 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #3,529 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hkuds/cli-anything --skill cli-anything-hermesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 137 |
|---|---|
| repo stars | ★ 46.6k |
| Last updated | August 3, 2026 |
| Repository | hkuds/cli-anything ↗ |
What it does
Have Hermes Agent build, refine, test, and validate a CLI-Anything Python harness for a GUI application or source repository following the CLI-Anything methodology.
Files
CLI-Anything for Hermes Agent
Use this skill when the user wants Hermes Agent to act like the CLI-Anything builder.
Before implementation, use the full methodology source of truth when available:
1. If this skill is being used from inside the CLI-Anything repository, read ../cli-anything-plugin/HARNESS.md first. 2. If that local file is unavailable, clone or download cli-anything-plugin from https://github.com/HKUDS/CLI-Anything/tree/main/cli-anything-plugin, then use HARNESS.md and the resources around it from that folder. 3. Only if both local and network retrieval fail, follow the condensed rules below.
Inputs
Accept either:
- A local source path such as
./gimpor/path/to/software - A GitHub repository URL
Derive the software name from the local directory name after cloning if needed.
Hermes Tool Bindings
Hermes agents build harnesses by combining these built-in tools:
| Tool | Role in Harness Workflow |
|---|---|
terminal | Run shell commands, install packages, execute CLI tools, run tests |
execute_code | Generate and write Python files (Click CLI, backend modules, tests) |
delegate_task | Parallelize analysis or generation subtasks |
read_file / write_file | Read and write harness source files |
patch | Make targeted edits to generated code |
Consult the Hermes Agent documentation for the exact tool invocation syntax.
Modes
Build
Use when the user wants a new harness.
Produce this structure:
<software>/
└── agent-harness/
├── <SOFTWARE>.md
├── setup.py
└── cli_anything/
└── <software>/
├── README.md
├── __init__.py
├── __main__.py
├── <software>_cli.py
├── core/
├── utils/
└── tests/Implement a stateful Click CLI with:
- one-shot subcommands
- REPL mode as the default when no subcommand is given
--jsonmachine-readable output- session state with undo/redo where the target software supports it
Refine
Use when the harness already exists.
First inventory current commands and tests, then do gap analysis against the target software. Prefer:
- high-impact missing features
- easy wrappers around existing backend APIs or CLIs
- additions that compose well with existing commands
Do not remove existing commands unless the user explicitly asks for a breaking change.
Test
Plan tests before writing them. Keep both:
test_core.pyfor unit coveragetest_full_e2e.pyfor workflow and backend validation
When possible, test the installed command via subprocess using cli-anything-<software> rather than only module imports.
Validate
Check that the harness:
- uses the
cli_anything.<software>namespace package layout - has an installable
setup.pyentry point - supports JSON output
- has a REPL default path
- documents usage and tests
Backend Rules
Prefer the real software backend over reimplementation. Wrap the actual executable or scripting interface in utils/<software>_backend.py when possible. Use synthetic reimplementation only when the project explicitly requires it or no viable native backend exists.
Packaging Rules
- Use
find_namespace_packages(include=["cli_anything.*"]) - Keep
cli_anything/as a namespace package without a top-level__init__.py - Expose
cli-anything-<software>throughconsole_scripts
Workflow
1. Acquire the source tree locally (clone or use existing path). 2. Analyze architecture, data model, existing CLIs, and GUI-to-API mappings. 3. Design command groups and state model. 4. Implement the harness. 5. Write TEST.md, then tests, then run them. 6. Update README usage docs. 7. Verify local installation with pip install -e .
Existing Harnesses (Reference)
For an up-to-date list of supported harnesses and their backend patterns, see `registry.json` at the repository root.
Output Expectations
When reporting progress or final results, include:
- target software and source path
- files added or changed
- validation commands run
- open risks or backend limitations
interface:
display_name: "CLI-Anything"
short_description: "Build or refine CLI-Anything harnesses from Hermes Agent."
default_prompt: "Use CLI-Anything to build, refine, test, or validate a harness for the user's target software or source repository."
$ErrorActionPreference = "Stop"
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$skillDir = Split-Path -Parent $scriptDir
$hermesHome = if ($env:HERMES_HOME) {
$env:HERMES_HOME
} elseif ($env:USERPROFILE) {
Join-Path $env:USERPROFILE ".hermes"
} else {
throw "HERMES_HOME is not set and USERPROFILE is unavailable."
}
$destRoot = Join-Path $hermesHome "skills"
$destDir = Join-Path $destRoot "cli-anything-hermes"
New-Item -ItemType Directory -Path $destRoot -Force | Out-Null
if (Test-Path $destDir) {
Write-Error "Refusing to overwrite existing skill: $destDir`nRemove it manually if you want to reinstall."
}
Copy-Item -Path $skillDir -Destination $destDir -Recurse
Write-Host "Installed Hermes skill to: $destDir"
Write-Host "Restart Hermes Agent to pick up the new skill."
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
DEST_ROOT="${HERMES_HOME:-$HOME/.hermes}/skills"
DEST_DIR="${DEST_ROOT}/cli-anything-hermes"
mkdir -p "${DEST_ROOT}"
if [[ -e "${DEST_DIR}" ]]; then
echo "Refusing to overwrite existing skill: ${DEST_DIR}" >&2
echo "Remove it manually if you want to reinstall." >&2
exit 1
fi
cp -R "${SKILL_DIR}" "${DEST_DIR}"
echo "Installed Hermes skill to: ${DEST_DIR}"
echo "Restart Hermes Agent to pick up the new skill."