bgclick-rev
Reverse-engineer a macOS GUI automation app's background-click path and produce a Swift reproduction. Use only when the user…
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
$ npx -y skills add olo-dot-io/Uni-CLI --skill unicli-claude-code --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/unicli-claude-codeContext preview
The summary Claude sees to decide when to auto-load this skill.
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
name: unicli-claude-code description: > 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. version: 1.3.0 depends-on: - human-writing triggers: - "unicli" - "ics" - "args-file" - "stdin-json" - "quoted payload" - "emoji in query"
> **TL;DR** — If the payload contains ANY of: quotes, emoji, newlines, JSON, > non-ASCII, or is longer than ~60 chars, PIPE IT. Never inline.
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.
| If the payload has … | Use channel | | ---------------------------------------- | --------------- | | Only ASCII, no quotes, <60 chars | `shell` OK | | Any quote or backslash | **stdin-JSON** | | Emoji / CJK / non-ASCII | **stdin-JSON** | | Newlines or inline JSON | **stdin-JSON** | | Being reused across multiple invocations | **--args-file** |
When unsure → stdin-JSON. It never makes things worse.
echo '{"query": "she said \"hi\" 🎉", "limit": 10}' | unicli twitter searchcat > /tmp/q.json <<'EOF'
{ "query": "machine learning", "limit": 20, "locale": "en_US" }
EOF
unicli arxiv search --args-file /tmp/q.jsonunicli hackernews top --limit 5
Fine when every value is ASCII, no quotes, no emoji.
Before invoking any unfamiliar command, run:
unicli describe <site> <command>
You get back a JSON object containing:
This replaces reading docs. The CLI is the documentation.
Every successful call returns:
{
"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.
echo '{"query": "🎉", "limit": 5}' | unicli twitter search --dry-runPrints 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.
| Symptom | Root cause | Fix | | --------------------------------------------- | -------------------------------------- | ----------------------------------------- | | `invalid_input: control characters` | Embedded 0x01..0x1F in a string arg | Strip control chars; use \\t \\n \\r only | | `invalid_input: path escapes CWD` | `../` or absolute path outside $HOME | Keep outputs inside cwd or $HOME/.unicli | | `invalid_input: id contains URL punctuation` | You pasted a full URL as a resource id | Strip the `?`, `#`, or `%XX` sequences | | Command appears to run but gets wrong args | Shell ate your quotes | Switch to stdin-JSON | | Unexpected shell expansion (`$HOME`, `` ` ``) | Bash interpolated your payload | Single-quote, or better, use stdin-JSON |
printf '%s\n' '{"query": "large language models \"emergent\" behaviour", "limit": 25}' \
| unicli arxiv searchcat > /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.jsonunicli describe youtube transcript # 1. understand the contract
echo '{"url": "https://…"}' | unicli youtube transcript --dry-run # 2. preview
echo '{"url": "https://…"}' | unicli youtube transcript # 3. runOne command for every interface—search, run, and inspect real software across APIs, browsers, desktops, local tools, and MCP.
Reverse-engineer a macOS GUI automation app's background-click path and produce a Swift reproduction. Use only when the user…
Control broker-owned hidden, existing-Chrome, or remote browser targets with explicit Agent identity, visibility, profile…
Create new Uni-CLI adapters by exploring websites and APIs. Use when adding support for a new site, desktop app, or service that…
Use Uni-CLI to interact with the current website, desktop-app, and system-tool catalog. Trigger when: user asks to check a…
Quick single-command adapter generation for unicli. Use when you need to create a one-off command for a specific URL and goal — 4…