Add and ship OpenCode support for one Claude Code plugin at a time. Includes core migration to a reviewable `opencode-plugin/` adapter, maintainer-facing docs, and follow-up CI/versioning setup for package publishing or skill-copy drift checks.
92
92%
Does it follow best practices?
Impact
97%
1.25xAverage score across 2 eval scenarios
Passed
No known issues
Tessl tile (tessltest3/cc2oc, v0.1.0) that adds local OpenCode support to one existing Claude Code plugin at a time. Produces a reviewable opencode-plugin/ adapter package with hooks ported by intent, MCP config migrated to opencode.jsonc, plugin skills packaged when needed, and tests proving parity. Stops before CI and publishing; those land in a separate follow-up skill so the local migration stays auditable on its own.
This repo is a tile, not an application. There is no build, no lint target, no test runner at the root. The tile bundles three skills, supporting docs, eval scenarios, and vendored Tessl tooling. The skills/ content is the deliverable.
tile.json — skill registry (registers the three skills below).tessl.json — vendored dependencies: nine tessl-labs/* tiles for evals/audit/optimization, plus anthropics/skills (skill-creator) and uinaf/skills (skill-audit).skills/ — three skills described below.docs/maintainer-explanations.md, docs/versioning-and-release.md — reusable maintainer-facing snippets and CI guidance referenced by the skills.evals/instructions.json, evals/summary.json — instruction inventory (14 rules) and scenario summary (caveman + claude-mem). Fixtures live under each scenario directory.Skills run in order. Each phase has a hard stop before the next.
migrate-plugin (skills/migrate-plugin/SKILL.md) — primary migration skill. Triggers when the user says "port a Claude plugin to OpenCode", "add OpenCode support", or the target repo has .claude-plugin/, .mcp.json, or plugin-local .claude/skills/. Writes a reviewable opencode-plugin/ package, optional opencode.jsonc MCP config, and OPENCODE_SUPPORT.md to the target repo. Stops before any CI, PR, or publishing automation.docs (skills/docs/SKILL.md) — polishes README, OPENCODE_SUPPORT.md, PR notes, install instructions, and caveats for maintainers reviewing the adapter. Documentation only; no automation.ci-setup (skills/ci-setup/SKILL.md) — proposes versioning, publishing, and skill-drift CI after the local adapter and tests work. Requires explicit user approval before writing any workflow files.Future skill: debug-plugin for diagnosing migrated plugin behavior after user/manual testing exposes issues.
migrate-plugin. Hand those off to ci-setup.opencode-plugin/ is the neutral package root. .opencode/ only as an explicitly documented local dogfooding shim.opencode-plugin/package.json. OpenCode plugin packages do not install MCP servers..claude/, .codex/, .serena/, .tessl/tiles/, etc.) in published opencode-plugin/ files.The only first-party tooling is three Python validators used by migrate-plugin. Run from any working directory; pass the target repo path:
python3 skills/migrate-plugin/scripts/inspect_repo.py <repo> --format markdown
python3 skills/migrate-plugin/scripts/validate_skills.py <repo> --format markdown
python3 skills/migrate-plugin/scripts/validate_opencode_package.py <repo> --format markdowninspect_repo.py produces the surface inventory (skills, hooks, MCP, commands, agents, package metadata). validate_skills.py checks SKILL.md frontmatter parses and required fields exist. validate_opencode_package.py checks the generated opencode-plugin/ package shape (ESM, main/exports, keywords, files allowlist).
Eval scenarios and instructions live in evals/:
evals/instructions.json — 14 structured instructions covering classification, asset inventory, skill validation, hook porting, plugin-code triggers, package layout, testing, and maintainer boundaries.evals/summary.json — two scenarios (migrate-plugin-caveman-*, migrate-plugin-claude-mem-*) with 100% instruction coverage.evals/migrate-plugin-*/fixture/ — fixture data for each scenario.Run, analyze, and improve evals via the vendored Tessl skills: tessl__setup-skill-performance (baseline), tessl__optimize-skill-performance (debug + fix loop), tessl__eval-improve (targeted fixes), tessl__compare-skill-model-performance (cross-model). All vendored under .tessl/tiles/ per tessl.json.
Work happens primarily in skills/*/SKILL.md and the supporting references/, assets/, and scripts/ under skills/migrate-plugin/. The skill activation rules live in the YAML frontmatter — keep description accurate to ensure correct triggering. Do not add CI, publishing automation, or release workflows to this tile itself; the tile teaches target repos how to handle those, but its own publication is managed via Tessl tooling.