Alpha·APIs and harness behavior are still changing·no packaged installer yet, build from source
uze
Concepts

Capabilities

Skills, MCP servers, agents, and portable hooks — and how invocation policy survives delivery

Capabilities

uze routes four resource kinds. For each one, the question is: can this harness preserve the canonical semantics through its own native mechanism?

Agent Skills — one capability, invocation policy as semantics

A Skill is the canonical capability. Its portable semantics are who may invoke it:

---
invoke:
  model: true   # the model may invoke it on its own (background knowledge)
  user: true    # the user may invoke it explicitly
---

The invocation policy is never a separate capability kind and never a second surface: it is the invoke: {model, user} block in SKILL.md. Integrations translate that policy into their own encoding — Claude's frontmatter, Codex's agents/openai.yaml, OpenCode's metadata.opencode — or report the degradation honestly when it cannot be expressed.

Every UZE-projected skill gets a stable, plugin-qualified invocation label (flow:review, ADR-026), so installation order and other plugins can never change how it is invoked.

MCP servers

Delivered natively where the harness has a native mechanism (claude mcp add, codex mcp add, agy mcp add, OpenCode's global config) or inside the native/generated plugin when the package already ships the envelope.

Agents

Markdown agent definitions projected to each harness's native agent surface — Claude's agents directory, Codex's standalone TOML files, OpenCode's config agents, Antigravity's global agents.

Hooks (portable, ADR-033)

One authored hooks.json + a shell-command ABI (normalized stdin/stdout, bounded output and timeout, first-deny-wins) is the canonical hook surface. Each harness gets its own projection:

  • Claude/Codex — merged entries in their own hook config (settings.json / hooks.json)
  • Antigravity — named entries in the generated native plugin
  • OpenCode — an owned, regenerable plugin bridge (no native declarative hook surface exists)

Projections are receipt-owned and content-identity inspected; foreign hooks, plugins, and ordering are never touched.

A hook whose route cannot preserve its declared semantics is reported as a finding — a degraded hook is actionable, never hidden behind a healthy row.

On this page