XP-Gate OpenCode Plugin
OpenCode plugin exposing xp-gate quality gates and AI workflow skills.
Tools
-
gate-check ⇄
xp-gate check <path>: Run user-invokable quality gates (Gate 4 Principles + Gate 6 Architecture) on a file or directory. -
gate-principles ⇄
xp-gate principles <path>: Run Clean Code + SOLID principles checker (Gate 4 standalone). -
gate-arch ⇄
xp-gate arch: Run architecture validation (Gate 6 standalone) with the pinned local @archlinter/cli built-in rules and baseline ratchet; an optional config file opts into archlint's own--configpath. -
session-reload-model: Reload session model from config. After switching provider configs (opencode.json + oh-my-openagent.json via switch-coding-plan.sh), updates the session model in OpenCode DB to match the new config, so restarted sessions use the current provider/model.
Usage:
// Reload current session model from config session-reload-model() // Reload a specific session session-reload-model({ sessionId: "ses_xxx" }) -
session-rename: Rename an OpenCode session. When called without a
newTitle, analyzes the session's recent user messages and auto-generates a descriptive title. Works by directly updating the OpenCode SQLite database (~/.local/share/opencode/opencode.db).Usage:
// Rename current session with auto-generated title session-rename() // Rename a specific session with a custom title session-rename({ sessionId: "ses_xxx", newTitle: "Fix auth middleware bug" })
Earlier docs said "all 6 quality gates" — that was inaccurate.
gate-checkintentionally runs only the two user-invokable gates (Principles + Arch); the full 10-gate pre-commit suite (Gate 0-9) is enforced byxp-gate init's git hooks, not by this tool. Fixes #208.
Installation
In your opencode.json:
{
"plugin": ["@boyingliu01/opencode-plugin"]
}
Or via local path (development):
{
"plugin": ["./plugins/opencode"]
}
OpenCode v2
v2 validates the plugin's default export against a schema requiring id plus
effect or setup. This package ships both keys from 0.35.15 onwards, so the
same published version loads under v1 and v2 — no separate build, no manifest
change on your side.
Register it the same way (v2 reads the same plugin array):
{
"plugin": ["@boyingliu01/opencode-plugin"]
}
Do not register @boyingliu01/opencode-plugin/tui. The TUI panel was
abandoned in v0.13.0 and there is no /tui entry; v2's npm installer treats the
whole string as a package name, so it fails on every startup with
NpmInstallFailedError. The subpath export was removed in 0.35.15 for exactly
that reason.
Requirements
- OpenCode v0.11+ (v2.1.4+ supported)
- One of:
xp-gateCLI installed globally (npm install -g @boyingliu01/xp-gate) — preferred, or- the xp-gate repo checked out locally with
src/principles/index.tsreachable — fallback (the tool will shell out vianpx -y tsx)
@archlinter/cliinstalled locally or on PATH (forgate-archonly; the default built-in-rules path needs noarchitecture.yaml— passing one opts into archlint's own--configschema validation, which rejects pre-0.16 files)
Graceful Degradation
Every tool runs a chained shell-out: it first tries xp-gate <subcommand> and,
only if that's not on PATH, falls back to invoking the underlying checker
source directly. If both paths fail, the tool returns install instructions
instead of throwing.