Using genie in your harness
genie is an MCP server. Every harness that speaks MCP can call its 20 tools — ping plus 19 workflow tools — but how much guidance and GUI you get depends on two independent harness capabilities:
- Agent Skills — does the harness load a bundled
SKILL.md? Claude, Cursor, Codex, GitHub Copilot, Continue, and Cline (via its ownskillsubcommand, confirmed 2026-07-14 — see cline.md) support the open Agent Skills format, with different install directories. The Skill teaches theconjure → plan → write_files → previewworkflow so a plain-English request ("build me a button and show me") just works. Tool descriptions remain the fallback when a host or session does not load the Skill. ui://rendering — can the harness render an MCP-Appsui://resource inline? If so,previewshows the card grid in-panel. If not, the genie server opens a browser tab only for a local stdio connection.
These are orthogonal, so harnesses fall into a grid:
| Harness | Renders ui:// inline? | Loads Agent Skills? | What it relies on |
|---|---|---|---|
| Claude Code / Desktop / claude.ai | yes | yes | Skill + /genie:preview + tool descriptions |
| Cursor | yes | yes | Skill + inline grid + tool descriptions |
| VS Code Copilot (≥ Jan 2026) | capability-dependent | yes | Skill + inline grid when MCP Apps is negotiated + descriptions |
| ChatGPT remote connector | yes | no | inline grid + tool descriptions |
| Codex CLI | no | yes | Skill + server-opened browser tab + descriptions |
| GitHub Copilot (host-dependent) | capability-dependent | yes | Skill + inline grid when negotiated; local fallback browser + descriptions |
| Continue IDE | yes | yes | Skill + inline MCP App + descriptions |
Continue CLI (cn) | no | yes | Skill + text fallback; headless cn -p; ${{ secrets.NAME }} |
| Cline | no | yes | Skill (cline skill add) + descriptions; local-stdio viewer/file://, remote HTTP degrades to text |
Takeaways:
- On Claude Code, install the Skill + command (or the whole plugin) — see claude-code.md.
- On Cursor, Codex, and GitHub Copilot, install the same portable Skill using the path in each harness guide; descriptions remain a fallback.
- On ChatGPT's remote connector, tool descriptions carry the workflow and
previewrenders inline. - On local stdio Codex / tools-only Copilot hosts, the genie server opens a browser tab itself when you call
preview. HTTP defaults to remote locality and never auto-opens a browser. A genuinely same-machine HTTP client can opt into a manually opened local viewer URL with--preview-locality local(orGENIE_PREVIEW_LOCALITY=local). Remote HTTP hosts require the inline MCP App plusGENIE_PREVIEWS_BASE_URL. Disable local stdio auto-open withGENIE_PREVIEW_NO_OPEN=1. - On Continue.dev, MCP tools only load in agent mode, not chat/autocomplete, and config secrets use
${{ secrets.NAME }}interpolation. Current Continue IDE builds include an MCP App renderer; thecnCLI remains text-only. Continue CLI loads Skills from.continue/skills,.claude/skills, and~/.continue/skills. Current Continue infers transport whentypeis omitted; genie's snippets keep it explicit for readability — see continue.md.
Guidance delivery channels
- Marketplace plugin — installs the Skill + namespaced command for an already registered genie MCP server in Claude Code. See claude-code.md.
- Portable Skill copy — copy
packages/plugin/skills/genieinto the harness-specific Agent Skills directory documented below. - Tool descriptions — always present as fallback guidance when a Skill is unavailable or disabled.
Server prerequisites (all harnesses)
The current CLI validates its known secrets before starting any transport. GENIE_LLM_API_KEY is required at startup, including for read-only tool calls. OAUTH_HS256_KEY is optional and HTTP-only. GENIE_LLM_BASE_URL is required only for conjure and refine; the current conjure_screen implementation is an offline deterministic scaffold:
GENIE_LLM_BASE_URL— the endpoint (must end in/v1).GENIE_LLM_API_KEY— its key (at least 16 characters).OAUTH_HS256_KEY— optional HTTP OAuth signing key (at least 32 characters when set).
Prefer environment variables or an owner-only mounted secrets file. Claude Desktop's manual local-server configuration is the exception: it has no separate secret prompt, so required values go in its owner-readable claude_desktop_config.json. Treat that file as sensitive and never commit it.
Per-harness registration snippets: claude-code.md · claude-desktop.md · cursor.md · codex.md · copilot.md · continue.md · cline.md