3.7 KiB
@haylan/opencode-pocock
OpenCode v2 integration for Matt Pocock's skills: the upstream skills injected verbatim as OpenCode skills, plus generated agents that run his skill-driven engineering flow — grill an idea, turn it into a spec and tickets, build test-first with parallel workers in isolated git worktrees, review, retro.
All engineering discipline is Matt Pocock's; this package only supplies the OpenCode v2 wiring.
Upstream is synced nightly and the package republished on change (see CHANGELOG.md for the
upstream revision each release carries).
Install
-
Add the plugin (from the Gitea registry, or npm once published there):
// opencode.json { "$schema": "https://opencode.ai/config.json", "plugins": ["@haylan/opencode-pocock"] }The plugin injects all skills at startup — no files copied into your repo.
-
Install the agents (OpenCode discovers agents only as markdown files, and plugins cannot register them, so this one copy step is required):
npx @haylan/opencode-pocock init # project: .opencode/agents/ npx @haylan/opencode-pocock init -g # or global: ~/.config/opencode/agents/ -
Once per repo, run
/setup-matt-pocock-skillsin OpenCode. It configures the issue tracker, triage labels and domain docs thatto-spec,to-tickets,triage,implement,implement-spec,code-reviewandwayfinderdepend on.
Usage
Start OpenCode with the pocock agent selected and describe what you want to build:
opencode --agent pocock
| Agent | Role |
|---|---|
pocock |
Primary orchestrator. Routes with ask-matt, walks grill → spec → tickets → build → review → retro, proposes before each user-invoked step, runs implement-spec with one git worktree per ticket and parallel pocock-worker subagents. |
pocock-worker |
Subagent. Builds one ticket test-first (tdd at the spec's seams) inside its worktree, merges the integration tip, reports. Never pushes. |
pocock-reviewer |
Subagent. Read-only executor of one code-review axis (Standards or Spec). |
23 of the 31 vendored skills are user-invoked upstream (disable-model-invocation: true);
OpenCode v2 honors that natively — they stay out of the model's auto-selection and are run by you
as slash commands (/to-spec, /retro, ...).
Both agents may create worktrees under /tmp/pocock-workers. If you use subagents that write
there (exploration notes), consider a global permission rule:
{ "permission": { "external_directory": { "/tmp/pocock-workers/*": "allow" } } }
Plugin options
{
"plugins": [
{
"package": "@haylan/opencode-pocock",
// Ports skills/misc/git-guardrails-claude-code to OpenCode: blocks dangerous git
// commands (push --force, reset --hard, clean -f, branch -D, ...) before execution.
"options": { "guardrails": true }
}
]
}
Development
npm run sync— updateupstream/snapshot from mattpocock/skills (script-only; never hand-editupstream/orskills/).npm run generate— regenerateskills/+manifest.jsonfromupstream/and.opencode/state/classification.json.npm test/npm run check/npm run build— unit + integration tests (node --teston TS), prettier + tsc gate, build.npm run smoke— bootsopencode serveagainst a fixture and verifies plugin/skills/agents over the HTTP API (needs a localopencodebinary; no model calls).
Design and rationale: docs/architecture.md.
Per-skill classification: docs/skill-mapping.md.