olo-dot-io/uni-cli/unicli-claude-code

Claude Code and agent skill by olo-dot-io/uni-cli

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Make Uni-CLI reliable when invoked from Claude Code. MANDATES JSON-in channels (stdin / --args-file) for any payload containing quotes, emoji, newlines, or inline JSON — shell-quoted invocations hit TC0 circuit limits and drop to <50% success above ICS=4. Also covers --describe introspection and next_actions-driven navigation.

Install

npx vskill@latest install olo-dot-io/uni-cli/unicli-claude-code

SKILL.md

Uni-CLI × Claude Code — Reliable Invocation

TL;DR — If the payload contains ANY of: quotes, emoji, newlines, JSON,
non-ASCII, or is longer than ~60 chars, PIPE IT. Never inline.

Why this skill exists

Transformers live in TC0. Matching balanced " and ' pairs with arbitrary nesting is a mod-2 state-tracking problem that TC0 cannot solve in constant decode depth. Empirically, top LLMs land <43% on 0→1 CLI generation (CLI-Tool-Bench arXiv:2604.06742) and 62% of agent-tool bugs cluster at the tool-invocation / execution stages (arXiv:2603.20847).

Uni-CLI gives you THREE invocation channels. One of them (shell-args) inherits the TC0 bottleneck. The other two do not.

The decision rule

If the payload has …Use channel
Only ASCII, no quotes, <60 charsshell OK
Any quote or backslashstdin-JSON
Emoji / CJK / non-ASCIIstdin-JSON
Newlines or inline JSONstdin-JSON
Being reused across multiple invocations--args-file

When unsure → stdin-JSON. It never makes things worse.

The three channels

1 — stdin-JSON (preferred for complex payloads)
bash
echo '{"query": "she said \"hi\" 🎉", "limit": 10}' | unicli twitter search
  • Uni-CLI auto-detects non-TTY stdin whose body starts with {
  • Precedence: stdin-JSON > --args-file > shell flags > defaults
  • Works for EVERY command — no per-adapter opt-in needed
2 — --args-file (preferred when payload is reused)
bash
cat > /tmp/q.json <<'EOF'
{ "query": "machine learning", "limit": 20, "locale": "en_US" }
EOF
unicli arxiv search --args-file /tmp/q.json
  • Absolute paths recommended
  • JSON only (YAML and TOML deliberately not supported — minimize format ambiguity)
3 — shell args (only for trivial payloads)
bash
unicli hackernews top --limit 5

Fine when every value is ASCII, no quotes, no emoji.

Runtime introspection — unicli describe

Before invoking any unfamiliar command, run:

bash
unicli describe <site> <command>

You get back a JSON object containing:

  • args_schema — JSON Schema draft-2020-12 for the argument bag
  • example_stdin — a realistic JSON body you can modify and pipe
  • channels — the three invocation templates
  • next_actions — hints for what to run next

This replaces reading docs. The CLI is the documentation.

The response envelope (v2)

Every successful call returns:

json
{
"ok": true,
"schema_version": "2",
"command": "twitter.search",
"meta": { "duration_ms": 847, "count": 10, "surface": "web" },
"data": [ ... ],
"error": null,
"next_actions": [
{ "command": "unicli describe twitter search", "description": "…" },
{ "command": "unicli twitter search --args-file <path.json>", "description": "…" }
]
}

Errors return ok: false with a structured error object (adapter_path, step, suggestion) and failure-classified next_actions. unicli repair appears only for established adapter-drift classes and verifies an edit; it never edits automatically. If you see invalid_input from the hardening layer, the arg bag tripped a safety check — read error.suggestion for the exact fix.

--dry-run — preview before committing

bash
echo '{"query": "🎉", "limit": 5}' | unicli twitter search --dry-run

Prints the resolved ArgBag, the source channel, and the pipeline step count without touching the network / filesystem. Use this whenever you want to confirm the agent built the payload correctly.

Common failure modes → fixes

SymptomRoot causeFix
invalid_input: control charactersEmbedded 0x01..0x1F in a string argStrip control chars; use \\t \\n \\r only
invalid_input: path escapes CWD../ or absolute path outside $HOMEKeep outputs inside cwd or $HOME/.unicli
invalid_input: id contains URL punctuationYou pasted a full URL as a resource idStrip the ?, #, or %XX sequences
Command appears to run but gets wrong argsShell ate your quotesSwitch to stdin-JSON
Unexpected shell expansion ($HOME, ` ``)Bash interpolated your payloadSingle-quote, or better, use stdin-JSON

Recipes

Search with a complex query
bash
printf '%s\n' '{"query": "large language models \"emergent\" behaviour", "limit": 25}' \
| unicli arxiv search
Multi-arg desktop command
bash
cat > /tmp/render.json <<'EOF'
{ "scene": "/Users/me/project/main.blend", "output_dir": "~/renders", "frame_start": 1, "frame_end": 240 }
EOF
unicli blender render --args-file /tmp/render.json
Debug-first workflow
bash
unicli describe youtube transcript # 1. understand the contract
echo '{"url": "https://…"}' | unicli youtube transcript --dry-run # 2. preview
echo '{"url": "https://…"}' | unicli youtube transcript # 3. run

Version contract

  • v0.214.0+ required for stdin-JSON auto-detect, --describe, and consistent MCP tool discovery metadata
  • v0.213.1 or earlier agents should fall back to unicli schema <site> <cmd>

and explicit -- flag args

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
235
Repository forks
1
7-day trend score
28

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/olo-dot-io/uni-cli/unicli-claude-code/badge)](https://verified-skill.com/skills/olo-dot-io/uni-cli/unicli-claude-code)

Something wrong with this skill or its page? Tell us.