Platforms · OpenCode

Runtime `.opencode/` self-contained với TypeScript plugins.

CafeKit cài runtime OpenCode hoàn chỉnh, không chia sẻ file với `.claude/`. Hooks được port thành plugin TypeScript có type, load lúc session start.

Layout sau khi cài#

.opencode/
├── skills/         # Skill packs self-contained
├── agents/         # Subagent prompts (không có hapo: prefix)
├── commands/       # Slash commands không có hapo: prefix
├── plugins/        # TypeScript plugins (xem bên dưới)
├── rules/          # Workflow, dev, docs, hook, state-sync rules
├── scripts/        # Helper scripts
├── references/     # Static lookup material
├── runtime.json    # Locale, paths, docs.maxLoc, gemini model
├── cafekit.json    # CafeKit marker + version
└── package.json    # Khai báo @opencode-ai/plugin
AGENTS.md           # Operating instructions ở project root
opencode.json       # Được merge bởi installer (file rỗng vẫn hợp lệ)

Sau khi cài, dependency của plugin được install tự động bằng bun install trong .opencode/.

TypeScript plugins#

Hooks Claude Code được port thành OpenCode plugin có type:

PluginOpenCode eventPurpose
privacy-block.tstool.execute.beforeChặn read path nhạy cảm cho đến khi user approve
inspect-block.tstool.execute.beforeGate inspection scan diện rộng
state.tstool.execute.afterTừ chối task done khi chưa có verification receipt
docs-sync.tssession.createdFlag missing docs, sync hash drift
session.tssession.createdInject session banner + context
usage.tssession.createdTrack token/usage hints
rules.tssession.createdRefresh dynamic rules block bên trong AGENTS.md

OpenCode không có channel inject per-prompt, nên rules.ts upsert managed block trong AGENTS.md giữa <!-- CAFEKIT DYNAMIC RULES START --><!-- CAFEKIT DYNAMIC RULES END -->. OpenCode tự load AGENTS.md mỗi session, nên dynamic rules vẫn tới model lúc session start.

Commands#

OpenCode cố ý bỏ prefix hapo::

/question     /brainstorm    /specs       /develop
/test         /code-review   /sync        /debug
/hotfix       /docs          /inspect     /git

Cộng tất cả domain skill dưới dạng /<skill>.

Detection#

Installer detect OpenCode khi có:

  • Thư mục .opencode/
  • AGENTS.md ở project root
  • opencode.json hoặc opencode.jsonc ở project root (file rỗng cũng tính)

Nếu chỉ có opencode.json rỗng, installer coi đó là marker hợp lệ và populate $schema, instructions: ["AGENTS.md"], kèm block permission ở lần cài đầu.