UXC Skill
Use this skill when a task requires calling a remote interface and the endpoint can expose machine-readable schema metadata.
When To Use
- You need to call APIs/tools from another skill and want one consistent CLI workflow.
- The interface may be OpenAPI, GraphQL, gRPC reflection, MCP, or JSON-RPC/OpenRPC.
- You need deterministic, machine-readable output (
ok, kind, data, error).
Do not use this skill for pure local file operations with no remote interface.
Docs Search & Support
- UXC docs support full-text search at
https://uxc.holon.run/api/search?q=<query>.
- Prefer searching docs first when operation names, auth flags, or protocol behavior are unclear.
- If docs are unclear or behavior looks wrong, open an issue in
holon-run/uxc:
https://github.com/holon-run/uxc/issues/new/choose
- include command, endpoint, and the JSON envelope (
ok, error, meta) for faster triage.
Prerequisites
uxc is installed and available in PATH.
- For gRPC runtime calls,
grpcurl is installed and available in PATH.
Install uxc
Choose one of the following methods:
Homebrew (macOS/Linux):
brew tap holon-run/homebrew-tap
brew install uxc
Install Script (macOS/Linux, review before running):
curl -fsSL https://raw.githubusercontent.com/holon-run/uxc/main/scripts/install.sh -o install-uxc.sh
# Review the script before running it
less install-uxc.sh
bash install-uxc.sh
Cargo:
cargo install uxc
For more options, see the Installation section in the UXC README.
Core Workflow
- Discover operations:
- Inspect a specific operation:
uxc <host> <operation> -h
- Execute with structured input:
uxc <host> <operation> key=value
uxc <host> <operation> '<payload-json>'
- Parse result as JSON envelope:
- Success:
.ok == true, consume .data
- Failure:
.ok == false, inspect .error.code and .error.message
- For disambiguation, use operation-level help first:
uxc <host> <operation> -h
- For auth-protected endpoints, use the right auth track:
- simple bearer / single-secret API key: see
references/auth-configuration.md
- multi-field auth or request signing: see
references/auth-configuration.md
- OAuth flows: see
references/oauth-and-binding.md
Link-First Workflow For Wrapper Skills
Wrapper skills should default to a fixed local link command instead of calling uxc <host> ... directly on every step.
- Pick a fixed command name during skill development:
- naming convention:
<provider>-mcp-cli
- examples:
notion-mcp-cli, context7-mcp-cli, deepwiki-mcp-cli
- Check whether the command already exists:
- If command is missing, create it:
uxc link <link_name> <host>
- For OpenAPI services whose schema is hosted at a separate fixed URL, create the link with
uxc link <link_name> <host> --schema-url <schema_url>
- For stdio hosts that need credential-driven child env auth, create the link with
uxc link <link_name> <host> --credential <credential_id> --inject-env NAME={{secret}}
- If the link is being created as part of a wrapper skill, persist source metadata with
--skill <skill_name> --skill-doc <docs_url> --skill-path <local_skill_path> so later help output preserves skill context.
- Validate link command:
- Use only the link command for the rest of the skill flow.
Import Existing MCP Config First
If an MCP server is already configured in a supported editor or local agent, prefer
importing it before hand-writing a new link:
- Preview imports:
uxc config import mcp --dry-run
- Auto-discover common MCP config sources and import them:
uxc config import mcp --from auto
- Import from a specific source preset:
uxc config import mcp --from cursor
uxc config import mcp --from codex
Supported presets in v1 include:
auto
cursor
claude-code
claude-desktop
vscode
codex
windsurf
opencode
Naming Governance
- Link naming is a skill author decision, not a runtime agent decision.
- Resolve ecosystem conflicts during skill development/review.
- Do not implement dynamic rename logic inside runtime skill flow.
- If runtime detects a command conflict that cannot be safely reused, stop and ask for skill maintainer intervention.
Equivalence Rule
<link_name> <operation> ... is equivalent to uxc <host> <operation> ....
- If the link was created with
--schema-url <schema_url>, it is equivalent to uxc <host> --schema-url <schema_url> <operation> ....
- If the link was created with
--credential <credential_id> --inject-env NAME={{secret}}, it is equivalent to uxc --auth <credential_id> --inject-env NAME={{secret}} <host> <operation> ....
- Callers can still override that persisted schema by passing
--schema-url <other_url> explicitly at runtime.
- Use
uxc <host> ... only as a temporary fallback when link setup is unavailable.
Input Modes
- Preferred (simple payload): key/value
uxc <host> <operation> field=value
- Bare JSON positional:
uxc <host> <operation> '{"field":"value"}'
Do not pass raw JSON through --args; use positional JSON.
Output Contract For Reuse
Other skills should treat this skill as the interface execution layer and consume only the stable envelope:
- Success fields:
ok, kind, protocol, endpoint, operation, data, meta
- Failure fields:
ok, error.code, error.message, meta
Default output is JSON. Do not use --text in agent automation paths.
Reuse Rule For Other Skills
- If a skill needs remote API/tool execution, reuse this skill instead of embedding protocol-specific calling logic.
- Wrapper skills should adopt a fixed link command (
<provider>-mcp-cli) as the default invocation path.
- Upstream skill inputs should be limited to:
- target host
- operation id/name
- JSON payload
- required fields to extract from
.data
Reference Files (Load On Demand)
- Workflow details and progressive invocation patterns:
references/usage-patterns.md
- Generated runtime client flow:
https://uxc.holon.run/ecosystem/typescript-client/
- Protocol operation naming quick reference:
references/protocol-cheatsheet.md
- Public endpoint examples and availability notes:
references/public-endpoints.md
- Authentication configuration (simple
secret, named fields, headers/query params, and request signers):
references/auth-configuration.md
- OAuth and credential/binding lifecycle:
references/oauth-and-binding.md
- Failure handling and retry strategy:
references/error-handling.md
1---2name: uxc3description: Discover and call remote schema-exposed interfaces with UXC. Use when an agent or skill needs to list operations, inspect operation schemas, and execute OpenAPI, GraphQL, gRPC, MCP, or JSON-RPC calls via one CLI contract.4---56# UXC Skill78Use this skill when a task requires calling a remote interface and the endpoint can expose machine-readable schema metadata.910## When To Use1112- You need to call APIs/tools from another skill and want one consistent CLI workflow.13- The interface may be OpenAPI, GraphQL, gRPC reflection, MCP, or JSON-RPC/OpenRPC.14- You need deterministic, machine-readable output (`ok`, `kind`, `data`, `error`).1516Do not use this skill for pure local file operations with no remote interface.1718## Docs Search & Support1920- UXC docs support full-text search at `https://uxc.holon.run/api/search?q=<query>`.21- Prefer searching docs first when operation names, auth flags, or protocol behavior are unclear.22- If docs are unclear or behavior looks wrong, open an issue in `holon-run/uxc`:23 - `https://github.com/holon-run/uxc/issues/new/choose`24 - include command, endpoint, and the JSON envelope (`ok`, `error`, `meta`) for faster triage.2526## Prerequisites2728- `uxc` is installed and available in `PATH`.29- For gRPC runtime calls, `grpcurl` is installed and available in `PATH`.3031### Install uxc3233Choose one of the following methods:3435**Homebrew (macOS/Linux):**36```bash37brew tap holon-run/homebrew-tap38brew install uxc39```4041**Install Script (macOS/Linux, review before running):**42```bash43curl -fsSL https://raw.githubusercontent.com/holon-run/uxc/main/scripts/install.sh -o install-uxc.sh44# Review the script before running it45less install-uxc.sh46bash install-uxc.sh47```4849**Cargo:**50```bash51cargo install uxc52```5354For more options, see the [Installation](https://github.com/holon-run/uxc#installation) section in the UXC README.5556## Core Workflow57581. Discover operations:59 - `uxc <host> -h`602. Inspect a specific operation:61 - `uxc <host> <operation> -h`623. Execute with structured input:63 - `uxc <host> <operation> key=value`64 - `uxc <host> <operation> '<payload-json>'`654. Parse result as JSON envelope:66 - Success: `.ok == true`, consume `.data`67 - Failure: `.ok == false`, inspect `.error.code` and `.error.message`685. For disambiguation, use operation-level help first:69 - `uxc <host> <operation> -h`706. For auth-protected endpoints, use the right auth track:71 - simple bearer / single-secret API key: see `references/auth-configuration.md`72 - multi-field auth or request signing: see `references/auth-configuration.md`73 - OAuth flows: see `references/oauth-and-binding.md`7475## Link-First Workflow For Wrapper Skills7677Wrapper skills should default to a fixed local link command instead of calling `uxc <host> ...` directly on every step.78791. Pick a fixed command name during skill development:80 - naming convention: `<provider>-mcp-cli`81 - examples: `notion-mcp-cli`, `context7-mcp-cli`, `deepwiki-mcp-cli`822. Check whether the command already exists:83 - `command -v <link_name>`843. If command is missing, create it:85 - `uxc link <link_name> <host>`86 - For OpenAPI services whose schema is hosted at a separate fixed URL, create the link with `uxc link <link_name> <host> --schema-url <schema_url>`87 - For stdio hosts that need credential-driven child env auth, create the link with `uxc link <link_name> <host> --credential <credential_id> --inject-env NAME={{secret}}`88 - If the link is being created as part of a wrapper skill, persist source metadata with `--skill <skill_name> --skill-doc <docs_url> --skill-path <local_skill_path>` so later help output preserves skill context.894. Validate link command:90 - `<link_name> -h`915. Use only the link command for the rest of the skill flow.9293### Import Existing MCP Config First9495If an MCP server is already configured in a supported editor or local agent, prefer96importing it before hand-writing a new link:9798- Preview imports:99 - `uxc config import mcp --dry-run`100- Auto-discover common MCP config sources and import them:101 - `uxc config import mcp --from auto`102- Import from a specific source preset:103 - `uxc config import mcp --from cursor`104 - `uxc config import mcp --from codex`105106Supported presets in v1 include:107108- `auto`109- `cursor`110- `claude-code`111- `claude-desktop`112- `vscode`113- `codex`114- `windsurf`115- `opencode`116117### Naming Governance118119- Link naming is a skill author decision, not a runtime agent decision.120- Resolve ecosystem conflicts during skill development/review.121- Do not implement dynamic rename logic inside runtime skill flow.122- If runtime detects a command conflict that cannot be safely reused, stop and ask for skill maintainer intervention.123124### Equivalence Rule125126- `<link_name> <operation> ...` is equivalent to `uxc <host> <operation> ...`.127- If the link was created with `--schema-url <schema_url>`, it is equivalent to `uxc <host> --schema-url <schema_url> <operation> ...`.128- If the link was created with `--credential <credential_id> --inject-env NAME={{secret}}`, it is equivalent to `uxc --auth <credential_id> --inject-env NAME={{secret}} <host> <operation> ...`.129- Callers can still override that persisted schema by passing `--schema-url <other_url>` explicitly at runtime.130- Use `uxc <host> ...` only as a temporary fallback when link setup is unavailable.131132## Input Modes133134- Preferred (simple payload): key/value135 - `uxc <host> <operation> field=value`136- Bare JSON positional:137 - `uxc <host> <operation> '{"field":"value"}'`138Do not pass raw JSON through `--args`; use positional JSON.139140## Output Contract For Reuse141142Other skills should treat this skill as the interface execution layer and consume only the stable envelope:143144- Success fields: `ok`, `kind`, `protocol`, `endpoint`, `operation`, `data`, `meta`145- Failure fields: `ok`, `error.code`, `error.message`, `meta`146147Default output is JSON. Do not use `--text` in agent automation paths.148149## Reuse Rule For Other Skills150151- If a skill needs remote API/tool execution, reuse this skill instead of embedding protocol-specific calling logic.152- Wrapper skills should adopt a fixed link command (`<provider>-mcp-cli`) as the default invocation path.153- Upstream skill inputs should be limited to:154 - target host155 - operation id/name156 - JSON payload157 - required fields to extract from `.data`158159## Reference Files (Load On Demand)160161- Workflow details and progressive invocation patterns:162 - `references/usage-patterns.md`163- Generated runtime client flow:164 - `https://uxc.holon.run/ecosystem/typescript-client/`165- Protocol operation naming quick reference:166 - `references/protocol-cheatsheet.md`167- Public endpoint examples and availability notes:168 - `references/public-endpoints.md`169- Authentication configuration (simple `secret`, named `fields`, headers/query params, and request signers):170 - `references/auth-configuration.md`171- OAuth and credential/binding lifecycle:172 - `references/oauth-and-binding.md`173- Failure handling and retry strategy:174 - `references/error-handling.md`