ring/platforms/opencode
Gandalf f85aa61440
feat: add OpenCode platform integration (consolidate ring-for-opencode)
Move OpenCode runtime plugin and installer into Ring monorepo under platforms/opencode/.
The installer reads skills, agents, and commands directly from the Ring monorepo's
canonical directories (default/, dev-team/, pm-team/, etc.) — zero asset duplication.

What's included:
- installer.sh: reads from Ring dirs, applies frontmatter/tool transforms, installs to ~/.config/opencode/
- plugin/: TypeScript runtime (RingUnifiedPlugin) with hooks, lifecycle, loaders
- src/: CLI (doctor, config-manager)
- prompts/: session-start and context-injection templates
- standards/: coding standards (from dev-team/docs/)
- ring.jsonc: default config with full 86-skill/35-agent/33-command inventory

What's NOT included (intentionally):
- assets/ directory: eliminated, content comes from Ring monorepo
- scripts/codereview/: eliminated, replaced by mithril
- using-ring-opencode skill: uses canonical using-ring instead

Transforms applied by installer:
- Agent: type→mode, strip version/changelog/output_schema/input_schema
- Skill: keep name+description frontmatter, body unchanged
- Command: strip argument-hint (unsupported by OpenCode)
- All: normalize tool names (Bash→bash, Read→read, etc.)
- All: strip Model Requirement sections from agents

Replaces: LerianStudio/ring-for-opencode repository
Generated-by: Gandalf
AI-Model: claude-opus-4
2026-03-07 22:46:47 -03:00
..
__tests__ feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
docs/handoffs feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
plugin feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
prompts feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
src feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
standards feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
templates feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
biome.json feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
installer.sh feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
package.json feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
README.md feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
ring-config.schema.json feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
ring.jsonc feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
ring.jsonc.template feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00
tsconfig.json feat: add OpenCode platform integration (consolidate ring-for-opencode) 2026-03-07 22:46:47 -03:00

Ring for OpenCode

OpenCode platform integration for the Ring skills library. This directory contains the runtime plugin and installer that brings Ring's skills, agents, and commands to OpenCode.

Architecture

platforms/opencode/
├── installer.sh          # Installer script (reads from Ring monorepo)
├── plugin/               # TypeScript runtime plugin (RingUnifiedPlugin)
│   ├── config/           # Configuration handler and schema
│   ├── hooks/            # Session-start, context-injection hooks
│   ├── lifecycle/        # Event routing
│   ├── loaders/          # Agent, skill, command loaders
│   ├── tools/            # Custom Ring tools
│   └── utils/            # State management
├── prompts/              # Prompt templates (session-start, context-injection)
├── standards/            # Coding standards (from dev-team/docs/standards/)
├── templates/            # Project templates
├── src/                  # CLI (doctor, config-manager)
├── ring.jsonc            # Default Ring configuration
└── ring-config.schema.json  # JSON schema for ring.jsonc

How It Works

The installer reads skills, agents, and commands directly from the Ring monorepo's canonical directories (default/, dev-team/, pm-team/, etc.) and applies transformations for OpenCode compatibility:

  1. Agent transform: typemode, strip unsupported frontmatter (version, changelog, output_schema), normalize tool names, remove Claude-specific model requirement sections
  2. Skill transform: Keep name and description in frontmatter, normalize tool references in body
  3. Command transform: Strip argument-hint (unsupported), normalize tool references
  4. Hooks: Not installed (OpenCode uses plugin-based hooks incompatible with Ring's file-based hooks)

After transformation, files are installed to ~/.config/opencode/:

  • agent/*.md — Agents (35 from 6 Ring plugins)
  • skill/*/SKILL.md — Skills (86 from 6 Ring plugins)
  • command/*.md — Commands (33 from 6 Ring plugins)
  • skill/shared-patterns/*.md — Shared patterns (merged from all plugins)

Installation

# From the Ring monorepo root:
./platforms/opencode/installer.sh

# Or with custom config dir:
OPENCODE_CONFIG_DIR=~/.config/opencode ./platforms/opencode/installer.sh

Configuration

User config lives at ~/.config/opencode/ring/config.jsonc. Use it to disable specific agents, skills, commands, or hooks:

{
  "disabled_agents": ["finops-analyzer"],
  "disabled_skills": ["regulatory-templates"],
  "disabled_commands": []
}

Key Differences from Claude Code

Feature Claude Code OpenCode
Directory names Plural (agents/, skills/) Singular (agent/, skill/)
Tool names Capitalized (Bash, Read) Lowercase (bash, read)
Hooks File-based (JSON + scripts) Plugin-based (TypeScript)
Agent type field type: reviewer mode: subagent
Argument hints argument-hint: "[files]" Not supported

Previously: ring-for-opencode

This was previously a separate repository (LerianStudio/ring-for-opencode). It was consolidated into the Ring monorepo to eliminate content drift and sync overhead. The runtime plugin and installer are maintained here; skills, agents, and commands come from the Ring monorepo's canonical sources.