Purpose
Use this skill whenever OpenWork behavior is implemented directly on top of OpenCode primitives (skills, plugins, MCP servers, opencode.json config, tools/permissions). It anchors decisions to the official OpenCode documentation and keeps terminology consistent in the UI.
Doc Sources (Always cite when relevant)
Key Facts To Apply
Skills
- Skill files live in
.opencode/skills/<name>/SKILL.md or global ~/.config/opencode/skills/<name>/SKILL.md.
- Skills are discovered by walking up to the git worktree and loading any matching
skills/*/SKILL.md in .opencode/ or .claude/skills/.
SKILL.md requires YAML frontmatter: name + description.
- Name rules: lowercase alphanumeric with single hyphens (
^[a-z0-9]+(-[a-z0-9]+)*$), length 1-64, must match directory name.
- Description length: 1-1024 characters.
- Access is governed by
opencode.json permissions (permission.skill allow/deny/ask).
Plugins
- Local plugins live in
.opencode/plugins/ (project) or ~/.config/opencode/plugins/ (global).
- npm plugins are listed in
opencode.json under plugin and installed with Bun at startup.
- Load order: global config, project config, global plugins dir, project plugins dir.
MCP Servers
- MCP servers are defined in
opencode.json under mcp with unique names.
- Local servers use
type: "local" + command array; remote servers use type: "remote" + url.
- Servers can be enabled/disabled via
enabled.
- MCP tools are managed via
tools in config, including glob patterns.
- OAuth is handled automatically for remote servers; can be pre-registered or disabled.
Config (opencode.json)
- Supports JSON and JSONC.
- Precedence order: remote
.well-known/opencode -> global ~/.config/opencode/opencode.json -> custom path -> project opencode.json -> .opencode/ directories -> inline env overrides.
.opencode subdirectories are plural by default (agents/, commands/, plugins/, skills/, tools/, themes/), with singular names supported for compatibility.
When to Invoke
- Adding or adjusting OpenWork flows that reference skills, plugins, MCP servers, or OpenCode config.
- Designing onboarding guidance that mentions skill/plugin installation, config locations, or permission prompts.
- Implementing UIs that surface OpenCode primitives (skills tab, plugin manager, MCP toggles).
Usage
Call skill({ name: "opencode-primitives" }) before implementing or documenting any OpenWork behavior that maps to OpenCode primitives.
1---2name: opencode-primitives3description: Reference OpenCode docs when implementing skills, plugins, MCPs, or config-driven behavior.4---5
6## Purpose
7Use this skill whenever OpenWork behavior is implemented directly on top of OpenCode primitives (skills, plugins, MCP servers, opencode.json config, tools/permissions). It anchors decisions to the official OpenCode documentation and keeps terminology consistent in the UI.
8
9## Doc Sources (Always cite when relevant)
10- Skills: https://opencode.ai/docs/skills
11- Plugins: https://opencode.ai/docs/plugins/
12- MCP servers: https://opencode.ai/docs/mcp-servers/
13- Config (opencode.json, locations, precedence): https://opencode.ai/docs/config/
14
15## Key Facts To Apply
16### Skills
17- Skill files live in `.opencode/skills/<name>/SKILL.md` or global `~/.config/opencode/skills/<name>/SKILL.md`.
18- Skills are discovered by walking up to the git worktree and loading any matching `skills/*/SKILL.md` in `.opencode/` or `.claude/skills/`.
19- `SKILL.md` requires YAML frontmatter: `name` + `description`.
20- Name rules: lowercase alphanumeric with single hyphens (`^[a-z0-9]+(-[a-z0-9]+)*$`), length 1-64, must match directory name.
21- Description length: 1-1024 characters.
22- Access is governed by `opencode.json` permissions (`permission.skill` allow/deny/ask).
23
24### Plugins
25- Local plugins live in `.opencode/plugins/` (project) or `~/.config/opencode/plugins/` (global).
26- npm plugins are listed in `opencode.json` under `plugin` and installed with Bun at startup.
27- Load order: global config, project config, global plugins dir, project plugins dir.
28
29### MCP Servers
30- MCP servers are defined in `opencode.json` under `mcp` with unique names.
31- Local servers use `type: "local"` + `command` array; remote servers use `type: "remote"` + `url`.
32- Servers can be enabled/disabled via `enabled`.
33- MCP tools are managed via `tools` in config, including glob patterns.
34- OAuth is handled automatically for remote servers; can be pre-registered or disabled.
35
36### Config (opencode.json)
37- Supports JSON and JSONC.
38- Precedence order: remote `.well-known/opencode` -> global `~/.config/opencode/opencode.json` -> custom path -> project `opencode.json` -> `.opencode/` directories -> inline env overrides.
39- `.opencode` subdirectories are plural by default (`agents/`, `commands/`, `plugins/`, `skills/`, `tools/`, `themes/`), with singular names supported for compatibility.
40
41## When to Invoke
42- Adding or adjusting OpenWork flows that reference skills, plugins, MCP servers, or OpenCode config.
43- Designing onboarding guidance that mentions skill/plugin installation, config locations, or permission prompts.
44- Implementing UIs that surface OpenCode primitives (skills tab, plugin manager, MCP toggles).
45
46## Usage
47Call `skill({ name: "opencode-primitives" })` before implementing or documenting any OpenWork behavior that maps to OpenCode primitives.