Openwork opencode-primitives
Reference OpenCode docs when implementing skills, plugins, MCPs, or config-driven behavior.
install
source · Clone the upstream repo
git clone https://github.com/different-ai/openwork
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/different-ai/openwork "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.opencode/skills/opencode-primitives" ~/.claude/skills/different-ai-openwork-opencode-primitives && rm -rf "$T"
manifest:
.opencode/skills/opencode-primitives/SKILL.mdsource content
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)
- Skills: https://opencode.ai/docs/skills
- Plugins: https://opencode.ai/docs/plugins/
- MCP servers: https://opencode.ai/docs/mcp-servers/
- Config (opencode.json, locations, precedence): https://opencode.ai/docs/config/
Key Facts To Apply
Skills
- Skill files live in
or global.opencode/skills/<name>/SKILL.md
.~/.config/opencode/skills/<name>/SKILL.md - Skills are discovered by walking up to the git worktree and loading any matching
inskills/*/SKILL.md
or.opencode/
..claude/skills/
requires YAML frontmatter:SKILL.md
+name
.description- Name rules: lowercase alphanumeric with single hyphens (
), length 1-64, must match directory name.^[a-z0-9]+(-[a-z0-9]+)*$ - Description length: 1-1024 characters.
- Access is governed by
permissions (opencode.json
allow/deny/ask).permission.skill
Plugins
- Local plugins live in
(project) or.opencode/plugins/
(global).~/.config/opencode/plugins/ - npm plugins are listed in
underopencode.json
and installed with Bun at startup.plugin - Load order: global config, project config, global plugins dir, project plugins dir.
MCP Servers
- MCP servers are defined in
underopencode.json
with unique names.mcp - Local servers use
+type: "local"
array; remote servers usecommand
+type: "remote"
.url - Servers can be enabled/disabled via
.enabled - MCP tools are managed via
in config, including glob patterns.tools - OAuth is handled automatically for remote servers; can be pre-registered or disabled.
Config (opencode.json)
- Supports JSON and JSONC.
- Precedence order: remote
-> global.well-known/opencode
-> custom path -> project~/.config/opencode/opencode.json
->opencode.json
directories -> inline env overrides..opencode/
subdirectories are plural by default (.opencode
,agents/
,commands/
,plugins/
,skills/
,tools/
), with singular names supported for compatibility.themes/
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.