Agent skill

Opencode V2

by openchamber in openchamber/openchamber

Load for any work that touches OpenCode — its routes, events, message or session shapes, plugins, the pinned CLI/client version, "what's new in OpenCode 2.0.x", or a bug that looks like OpenCode…

MITAuto-check passed

Install Opencode V2

skills CLI
$ npx skills add openchamber/openchamber --skill opencode-v2 -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openchamber/openchamber opencode-v2 --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/opencode-v2 .claude/skills/opencode-v2 && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
opencode-v2
GitHub stars
11k
Token cost
~2.2k tokens
SKILL.md length
1,131 words
Files
2 (incl. references)
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

Load for any work that touches OpenCode — its routes, events, message or session shapes, plugins, the pinned CLI/client version, "what's new in OpenCode 2.0.x", or a bug that looks like OpenCode…

  • Works in 3 steps: In the reference checkout: git fetch… → Classify each change to a route, event,… → Report in that order with the…
  • SKILL.md covers Where the boundary lives, Every directory-scoped read…, Workarounds for what 2.x… and Behaviour to expect, plus 3 more sections
  • Calls git, opencode and bun; needs OPENCODE_PASSWORD and OPENCODE_SERVER_PASSWORD

What it does

Opencode V2 is an agent skill from openchamber/openchamber. Load for any work that touches OpenCode — its routes, events, message or session shapes, plugins, the pinned CLI/client version, "what's new in OpenCode 2.0.x", or a bug that looks like OpenCode behaving differently than OpenChamber expects. OpenChamber runs on OpenCode 2.x since 2026-09; 1.x code paths are gone.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/mcp-spawn-probe.md`).

The repository describes itself as: Agentic Development Environment based on OpenCode AI agent. The licence is MIT.

Example prompts

  • “s new in OpenCode 2.0.x”
  • “/opencode-v2”

Requirements

  • Docker

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. In the reference checkout: git fetch origin --tags, pinned = opencodeCli.version,
  2. Classify each change to a route, event, schema or plugin hook
  3. Report in that order with the maintainer's decisions explicit: remove,

What it can do on your machine

Read from SKILL.md and the folder at commit de84da2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • opencode
    • bun

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • OPENCODE_PASSWORD
    • OPENCODE_SERVER_PASSWORD

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Opencode V2 loads about 2.2k tokens when it runs, and up to ~2.8k if it reads all its reference files. Until then it costs about 82 tokens; SKILL.md has 1,131 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from openchamber/openchamber at commit de84da2, republished under its MIT licence (© openchamber). 1,131 words, ~2,249 tokens.

Download SKILL.mdSave it as .claude/skills/opencode-v2/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
opencode-v2
description
Load for any work that touches OpenCode — its routes, events, message or session shapes, plugins, the pinned CLI/client version, "what's new in OpenCode 2.0.x", or a bug that looks like OpenCode behaving differently than OpenChamber expects. OpenChamber runs on OpenCode 2.x since 2026-09; 1.x code paths are gone.

OpenCode 2.x in this repository

OpenChamber moved from the OpenCode 1.x API to 2.x in one cutover (PR #3837, 2026-09). Everything OpenCode-facing speaks 2.x: routes under /api/*, one global /api/event stream of session.* events, sessions as cursor-paged lists, messages with their parts inline, plugins hot-reloaded from watched config, @opencode/client + @opencode/schema as the only SDK. A bug report that mentions 1.x behaviour (/session without /api, message.updated events, auth.json, @opencode-ai/sdk) describes the old world; answer from the 2.x code, not from memory of 1.x.

Where the boundary lives

  • packages/ui/src/lib/opencode/client.ts — every official OpenCode call the shared UI makes; projection.ts turns wire shapes into the OpenChamber domain model in model.ts; events.ts translates wire events; plugins.ts translates the experimental plugin routes; session-stats.ts translates the experimental session.stats usage route; websearch.ts translates web search (providers, the websearch config choice, keys, the tool's text result and its first-use consent form). These files are the only place that knows 2.x wire shapes. Rendering and stores read the domain model; fix a missing field there, never with a shim.
  • packages/web/server/lib/opencode/proxy.js forwards /api/* as-is (2.x serves under /api itself) and folds OpenChamber-owned session state into the records it serves. env-runtime.js launches opencode serve.
  • Plugins OpenChamber generates for OpenCode: plugin-spec.js and agent-tool/runtime.js, declared through the watched <dataDir>/opencode.managed.json (OPENCODE_CONFIG), so a settings change applies without a restart. Only the binary, port and external toggle restart.

Every directory-scoped read starts a location

On 2.x a read through the location middleware builds that directory's location, and the build starts every configured local MCP server for it. The location then lives until an hour without session events. So each read names a directory, and only one the user is working in:

  • Which routes: agent, plugin, model, provider, integration, mcp, project, form, permission request list, fs, command, skill, rpc, pty, shell, reference, vcs, websearch, config, location (protocol/src/api.ts lists the groups with locationMiddleware). Session routes resolve the session's own location; GET /api/session, /api/session/active and /api/credential are global and start nothing.
  • How the directory travels: the x-opencode-directory header, percent-encoded, or a location[directory] query. A ?directory= query is ignored.
  • A read without one answers for OpenCode's own working directory, the user's home for a managed OpenCode, and starts a fleet there. The UI reads through opencodeClient with the current directory; server code with no directory of its own uses the lifecycle's getDefaultOpenCodeDirectory(), the last-used directory it warmed at startup.
  • Fan-out is the failure: a loop over every project, worktree or store directory starts one fleet each. A refresh after a catalog event re-reads only the directories the events named; they are already running.

A report of processes multiplying, memory climbing with MCP servers enabled, or MCP servers starting in projects nobody opened: reproduce it with references/mcp-spawn-probe.md before reading code.

Workarounds for what 2.x cannot do

Each exists because 2.x has no route for it. When a tag adds the route, the workaround goes and the record comes from OpenCode.

  • Archive: 2.x has no archive route. openchamber-sessions/archive-store.js keeps it per data dir and the proxy folds it into session reads. Session metadata is not a workaround since 2.0.15: it lives on the OpenCode record, written by merge-then-PATCH in session-metadata-store.js, which also migrates the old sessions-metadata.json. Provider credentials are not one either since 2.0.20: opencode/auth.js reads GET /api/credential.
  • 1.x sessions created after the one-shot migration: v1-migration-topup.js rewinds the migration cursor before a managed start, only when no revisited session has 2.x activity.
  • Error bodies: the generated client drops the body of an HTTP status a route does not declare, so session update/delete/archive report the status without OpenCode's message or log ref.

Open asks upstream (OpenCode Slack): declaring 500 bodies on session mutations. Dropped: an import route for missing 1.x sessions (the top-up workaround is enough). Check the newest tag before re-asking.

Show full SKILL.md (512 more words)Show less

Behaviour to expect

Verified against live 2.x servers; re-check on a newer tag before relying on a gap.

  • A cold location's catalog is not authoritative. The first provider/model read for a directory not started yet answers an empty list, then a partial one without plugin providers, and the full list about two seconds later, announced by provider.updated / model.updated with that location.directory. Recovery rides on those events (markConfigCatalogStale).
  • Plugin providers exist only in the running OpenCode. Nothing about them reaches opencode.json or auth.json; /api/provider is the only view, and it strips options.fetch, so nothing tells a directly callable provider from one that only works through OpenCode. Without a zen login OpenCode sets options.apiKey = "public" on zen and trims it to free models: those run on OpenCode's infrastructure and are called only through OpenCode.
  • A session whose directory was deleted still reads, but location-scoped requests answer 404 LocationNotFoundError. STATUS_BY_TAG does not map it to 404 on purpose: fetchPermission reads 404 as "settled", which would let auto-accept fail open. POST /api/session/:id/move works on such a session.
  • A background shell has no clean cancel. shell.remove kills the process but hands the agent a Shell.NotFoundError, and agents relaunch the command, so stopBackgroundShell posts a cancellation note to the agent first.
  • opencode run --agent X uses the default model, not the agent's: pass -m provider/model#variant in batch runs.
  • A scratch opencode serve started from the app's shell answers 401: the shell inherits the desktop's OPENCODE_PASSWORD, which wins over OPENCODE_SERVER_PASSWORD. Start it with env -u OPENCODE_PASSWORD (Basic auth user opencode).

Sources of truth

  • Reference checkout ~/projects/opencode, branch origin/v2 and its v2.x.y tags (git fetch origin --tags there; never edit it). Server behaviour: packages/core/src, HTTP surface: packages/server/src/handlers/*, wire types: packages/schema/src, packages/protocol/src/groups.
  • Minimum supported version: MINIMUM_OPENCODE_VERSION in packages/web/server/lib/opencode/compatibility.js; raise it when OpenChamber starts depending on a route a newer tag added.
  • Pinned version: opencodeCli.version in packages/electron/package.json (the bundled binary) and @opencode/client / @opencode/schema in the root, ui, web and vscode manifests, plus @opencode/cli@ in the Dockerfile. They move together.

"What's new in OpenCode 2.0.x?"

Answer from the diff. Done when every API-facing change between the pinned tag and the newest tag is classified.

  1. In the reference checkout: git fetch origin --tags, pinned = opencodeCli.version, newest = git tag -l 'v2.*' | sort -V | tail -1, then git diff --stat vPINNED..vNEWEST -- packages/schema/src packages/protocol/src packages/server/src packages/client packages/plugin/src. Ignore packages/tui, packages/app, packages/web.
  2. Classify each change to a route, event, schema or plugin hook: breaks us (name the consuming OpenChamber file), fixes a workaround (name the one above that can go and what the user gains), closes an open ask, or neutral.
  3. Report in that order with the maintainer's decisions explicit: remove, adopt, still ask.

Bumping the pinned OpenCode

Move every pin to the same tag and check out that tag in the reference checkout (git checkout vX.Y.Z in ~/projects/opencode), bun install, then tsc in packages/ui, packages/web, packages/vscode; the isolated ui suites; web vitest; vscode tests. A new message type or event needs a case in model.ts and events.ts before it renders. Verify @opencode/cli@<tag> exists on npm: the desktop packaging and the Docker image install it.

© openchamber, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .agents/skills/opencode-v2 of openchamber/openchamber.

  • SKILL.md
  • references/mcp-spawn-probe.md

Open the folder on GitHubat commit de84da2

Compare with similar skills

Opencode V2 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Opencode V2 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Opencode V2 this skillopenchamber/openchamber11k—~2.2kAutomated safety check: PassMIT
OmniRoute Routing CLIdiegosouzapw/OmniRoute74k—~342Automated safety check: PassMIT
OmniRoute Combo Routingdiegosouzapw/OmniRoute74k—~2.1kAutomated safety check: PassMIT
Intelligence Routeruvnet/ruflo74k—~874Automated safety check: NotesMIT
SPA Routes and Featureslobehub/lobehub83k—~3.2kAutomated safety check: PassCustom licence
Routingalsk1992/CloddsBot2.9k—~1.6kAutomated safety check: PassMIT

Similar skills

  • OmniRoute Routing CLI

    diegosouzapw/OmniRoute

    Creates, switches, and inspects OmniRoute model-routing combos, plus a suggestion command with cost and latency constraints.

    74k GitHub stars~342 tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • OmniRoute Combo Routing

    diegosouzapw/OmniRoute

    Manages OmniRoute routing combos through its REST API: create and update combos, choose from 19 strategies, set fallback chains, test outcomes and read metrics.

    74k GitHub stars~2.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Intelligence Route

    ruvnet/ruflo

    Route tasks via the 3-tier model selector and learned patterns; emits a routing rationale via hooksexplain

    74k GitHub stars~874 tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Explains LobeHub's split between src/routes page segments and src/features domain code, and where router config, redirects and platform adapters belong.

    83k GitHub stars~3.2k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Routing

    alsk1992/CloddsBot

    Multi-agent routing, channel bindings, and tool policies. An agent skill from alsk1992/CloddsBot.

    2.9k GitHub stars~1.6k tokensUpdated 5 days ago
    Agent WorkflowsAuto-check passed
  • Ibm A11y Route Scan

    langflow-ai/langflow

    Batch-scan Langflow frontend routes for accessibility issues using the Python IBM Equal Access scanner (scripts/a11y/a11yscan.py) and produce JSON/Markdown/HTML reports.

    156k GitHub stars~1.6k tokensUpdated today
    Frontend & DesignAuto-check passed

More from openchamber/openchamber

All 20 skills in this repo
  • Theme System

    openchamber/openchamber

    A skill your agent uses when creating or modifying OpenChamber UI components, styling, colors, buttons, visual states, themes, or icons.

    11k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • UI API Decoupling

    openchamber/openchamber

    A skill your agent uses when creating or modifying OpenChamber shared UI data access, OpenCode SDK calls, RuntimeAPIs, runtime fetch/auth/URLs, authenticated browser assets, bridges/proxies, runtime…

    11k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Drag To Reorder

    openchamber/openchamber

    A skill your agent uses when implementing or modifying OpenChamber sortable or drag-to-reorder behavior, especially @dnd-kit, touch/mobile interactions, variable-width items, or wrapping layouts.

    11k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Locale UI Patterns

    openchamber/openchamber

    A skill your agent uses when creating or modifying OpenChamber UI text, labels, buttons, placeholders, aria labels, empty states, toasts, dialogs, settings copy, navigation labels, or any…

    11k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Performance Engineering

    openchamber/openchamber

    A skill your agent uses when implementing or reviewing code on interaction, render, event, polling, synchronization, list-processing, store-selector, cache, indexing, or high-volume data paths; when…

    11k GitHub stars~4.9k tokensUpdated today
    Auto-check passed
  • Serve Sim

    openchamber/openchamber

    A skill your agent uses when working with the OpenChamber iOS Simulator app without opening Xcode - boot/install/launch the Capacitor iOS app, start a browser stream, tap/type/gesture/rotate…

    11k GitHub stars~619 tokensUpdated today
    Auto-check passed

Questions about Opencode V2

What does Opencode V2 do?

Load for any work that touches OpenCode — its routes, events, message or session shapes, plugins, the pinned CLI/client version, "what's new in OpenCode 2.0.x", or a bug that looks like OpenCode…. Opencode V2 is an agent skill from openchamber/openchamber.x", or a bug that looks like OpenCode behaving differently than OpenChamber expects.

How do I install Opencode V2 in Claude Code?

Run `npx skills add openchamber/openchamber --skill opencode-v2 -a claude-code`. Or copy the skill folder (.agents/skills/opencode-v2 in openchamber/openchamber) into .claude/skills/opencode-v2 in your project. Claude Code loads it when a task matches its description.

How do I install Opencode V2 in Codex?

Run `npx skills add openchamber/openchamber --skill opencode-v2 -a codex`. Or copy the skill folder (.agents/skills/opencode-v2 in openchamber/openchamber) into .agents/skills/opencode-v2 in your project. Codex loads it when a task matches its description.

Can I use Opencode V2 in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openchamber/openchamber --skill opencode-v2 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/opencode-v2, .gemini/skills/opencode-v2, .github/skills/opencode-v2 and .opencode/skills/opencode-v2 in your project.

What does Opencode V2 need to run?

Going by SKILL.md and its folder, Opencode V2 needs the command-line tools its instructions call (git, opencode and bun) and credentials named OPENCODE_PASSWORD and OPENCODE_SERVER_PASSWORD. Our summary lists: Docker.

Does Opencode V2 access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Opencode V2 safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Opencode V2 use?

Opencode V2 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Opencode V2 use?

About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 592 tokens, read only when the agent opens those files.

What are the alternatives to Opencode V2?

Skills that share tags, products or a category with Opencode V2: OmniRoute Routing CLI (diegosouzapw/OmniRoute, 74k stars), OmniRoute Combo Routing (diegosouzapw/OmniRoute, 74k stars), Intelligence Route (ruvnet/ruflo, 74k stars) and SPA Routes and Features (lobehub/lobehub, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Opencode V2?

openchamber (a GitHub organization) maintains it in openchamber/openchamber, which has 11,227 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.

Source: openchamber/openchamber on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.