11: add 'Port a workspace to OpenCode'
Records the port-to-opencode skill: what it does, that it is primary-side only, why a porting tool is the wrong reach (OpenCode reads CLAUDE.md natively; the Codex translation corrupted a never-commit rule), and the two gotchas — a stale AGENTS.md shadows CLAUDE.md, and skills do not cross.
+26
@@ -30,6 +30,7 @@ six weeks, and the table alone will not carry it.
|
||||
| [Durable reply inbox](#durable-reply-inbox) | `broker:` | CB-307 | `msg/AmqpReplyInbox` |
|
||||
| [Pin an opencode endpoint](#pin-an-opencode-endpoint) | profile `baseUrl:` | CB-508 | `worker/OpenCodeLauncher` |
|
||||
| [Onboard a project with the plugin](#onboard-a-project-with-the-plugin) | `/plugin install claude-bridge` → `/claude-bridge:setup` | CB-527 | `plugin/` |
|
||||
| [Port a workspace to OpenCode](#port-a-workspace-to-opencode) | `port-to-opencode` skill + `opencode.json` | CB-529 | `.claude/skills/port-to-opencode` |
|
||||
|
||||
Nearly every knob above lives in one file, on one profile:
|
||||
|
||||
@@ -229,6 +230,31 @@ at the repo would collide with the very isolation CB-525 exists to enforce.
|
||||
|
||||
---
|
||||
|
||||
## Port a workspace to OpenCode
|
||||
|
||||
**What.** A `port-to-opencode` skill that makes an OpenCode session a first-class participant in a
|
||||
Claude Code workspace — same instructions, same MCP servers, same bridge mount — by writing a single
|
||||
`opencode.json` and nothing else.
|
||||
|
||||
**On.** Load the `port-to-opencode` skill in the primary. It is a primary-side skill, not a
|
||||
delegation playbook: a worker mounts only the bridge MCP and cannot run it.
|
||||
|
||||
**Why.** OpenCode reads `CLAUDE.md` natively — including `~/.claude/CLAUDE.md` — so the rules cross
|
||||
for free and only MCP servers need mapping. That is worth writing down because the obvious move is
|
||||
the wrong one: the Codex attempt translated `CLAUDE.md` into a second rules file with a third-party
|
||||
tool, and the translation silently corrupted a "never commit" rule into one naming a path that
|
||||
cannot be committed at all. The skill exists to stop anyone reaching for a porting tool again.
|
||||
Secrets cross by `{env:VAR}` reference, which is what makes `opencode.json` committable — and it
|
||||
must be, because a peer in a worktree receives tracked files only.
|
||||
|
||||
**Gotcha.** An `AGENTS.md` left in the repo **shadows `CLAUDE.md`** — opencode takes the first match
|
||||
walking up from the cwd, so a stale file from an earlier port silently wins over the live rules.
|
||||
Delete it before anything else. And skills do not cross: `.claude/skills/**` is not read by opencode,
|
||||
so a brief telling a peer to "load the *implementer* skill" is a no-op there — spell the procedure
|
||||
out in the brief instead.
|
||||
|
||||
---
|
||||
|
||||
## Backfill status
|
||||
|
||||
This page was started after the fact, so it is **not yet complete**. Entries above are written from
|
||||
|
||||
Reference in New Issue
Block a user