Implement mcpctl as an opencode addon mirroring the pi/prime-agent
integrations. Mounts the active project's MCP gateway through opencode's own
live MCP API, so switching projects needs no restart and opencode.json is
never touched (the bearer token stays in a 0600 state file).
- server plugin (plugin/mcpctl.ts): headless mount under a stable 'mcpctl'
name, re-asserted on first contact + before each turn; skips re-registering
an unchanged mount so a gated project's begin_session state survives.
- TUI plugin (mcpctl/mcpctl-tui.tsx): /mcpctl filterable picker (live switch),
/mcpctl-status, /mcpctl-skills, and a mcpctl:<project> footer indicator
right of the model name, directly above the token counter.
- mcpctl config opencode: mint/reuse project mcptoken, install + register
plugins, write 0600 state, write marker, sync skills.
- skills sync --agent opencode: new shared-tree target (XDG-aware).
- shared credential plumbing lifted from config prime-agent and parameterised
by agent so both hosts share mint/reuse/retire logic.
- embedded-source generator + freshness test; typechecked against the real
@opencode-ai/plugin types (1.18.15); unit tests for settings, order, embed.
typecheck (incl. opencode-ext) and the full cli suite (619 tests) pass.