Skip to main content

Adding Your Marketplace to OpenCode

This guide walks you through using your Willow plugins in OpenCode.

OpenCode works differently

OpenCode has no plugin marketplace — its native "plugins" are JavaScript/TypeScript modules, not bundles you install from a marketplace.json. Instead, OpenCode natively discovers skills, commands, and agents from config files, and reads MCP servers from opencode.json. So Willow publishes your plugins to OpenCode as an OpenCode-native config layout rather than a marketplace manifest.

Prerequisites

  • OpenCode Terminal or Desktop installed
  • OpenCode enabled under Plugins → Settings → Target marketplace platforms (it is on by default)
  • Your marketplace repository ready (from Willow — see Managed Marketplace Sync or GitHub Integration)

Repository structure

For OpenCode, Willow generates a native config layout at the repository root, alongside the marketplace directories used by other platforms:

your-org-slug/
├── opencode.json # MCP servers (Willow gateways + any raw servers)
├── .opencode/
│ ├── skills/
│ │ └── <skill-slug>/
│ │ └── SKILL.md
│ ├── commands/
│ │ └── <command-slug>.md
│ └── agents/
│ └── <agent-slug>.md
└── plugins/ # other platforms' layout — ignored by OpenCode

Key differences from other platforms:

  • There is no marketplace.json and no per-plugin plugin.json for OpenCode.
  • Skills, commands, and agents from all your OpenCode-targeted plugins are aggregated into one shared .opencode/ tree (OpenCode discovers them by directory, not by plugin).
  • MCP servers are collected into a single root opencode.json.
  • Hooks are not exported: OpenCode hooks are executable code, which has no data-driven equivalent.

Step 1: MCP config file

The root opencode.json is generated automatically. Toolkits and integrations become remote MCP servers pointing at your Willow gateway:

{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-toolkit": {
"type": "remote",
"url": "https://yourorg.mcp-s.com/mcp?toolkit=my-toolkit",
"enabled": true
}
}
}

Step 2: Make the files available to OpenCode

OpenCode discovers config by walking up from your working directory to the git worktree root, and also reads global config from ~/.config/opencode/. Choose one:

  • Per project (recommended): clone/pull the marketplace repo and work inside it, or copy the .opencode/ folder and opencode.json into your project root.
  • Global: copy the contents of .opencode/ into ~/.config/opencode/ and merge opencode.json into ~/.config/opencode/opencode.json.
Skills are also Claude/agents-compatible

OpenCode additionally discovers skills from .claude/skills/ and .agents/skills/. If you already sync the Claude or Codex layouts, those skills are picked up too.

Step 3: Authorize MCP servers

Willow gateways use OAuth. After the config is in place, authorize OpenCode against your Willow server:

opencode mcp auth willow

For the full connection and authentication walkthrough (including the Dynamic MCP Gateway), see Connect OpenCode to Willow.

Step 4: Verify

  1. Restart OpenCode so it re-reads config.
  2. Type /mcps to confirm your Willow servers are connected.
  3. Skills appear via the native skill tool (<available_skills> in its description); commands appear under /, and agents under @.

Updating

After Willow syncs changes to your repository, pull the latest and restart OpenCode so it picks up the new .opencode/ files and opencode.json.

Further reading