9.3 KiB
Skill mapping — mattpocock/skills → OpenCode v2
Upstream: mattpocock/skills@49dd158 (v1.3.1, 2026-10-09). Analyzed 2026-10-14.
Machine-readable source of truth: .opencode/state/classification.json (this doc will be generated
from it once scripts/generate.ts exists — until then keep both in sync by hand).
Validation status legend: pending = not yet runtime-verified (Phase 1.9); validated = loads and
behaves correctly in a real OpenCode v2 session.
Summary
| Classification | Count | Skills |
|---|---|---|
| skill | 27 | all vendored verbatim; see matrix |
| agent+skill | 1 | code-review (+ pocock-reviewer subagent) |
| orchestrator | 2 | implement-spec (→ pocock + pocock-worker), chief-of-staff (excluded, in-progress) |
| plugin | 1 | git-guardrails-claude-code (→ opt-in guardrails hook) |
| not-convertible | 1 | claude-handoff (Claude-CLI-bound, excluded) |
| agent (dedicated, no skill) | 0 | research evaluated → rejected as dedicated agent (D8) |
Vendored: 31 skills (engineering 20, productivity 7, misc 4). Excluded: 7 in-progress + deprecated
bucket (empty upstream). 23 of 31 vendored skills are user-invoked upstream
(disable-model-invocation: true) → manifest sets autoinvoke: false; OpenCode v2 honors this
natively (hidden from model auto-selection, still loadable via /name or explicit id).
Generated agents
| Agent | Mode | Purpose | Key permissions |
|---|---|---|---|
pocock |
primary | Orchestrator: routes via ask-matt, walks grill→spec→tickets→build→review→retro, gates user-invoked skills behind explicit proposals, runs the implement-spec dispatch loop (integration branch, one worktree per ticket, frontier from own merge record, merges, cleanup) | edit/shell allow; destructive-git denies on main checkout; skill * allow; task allow |
pocock-worker |
subagent | Builds one ticket test-first (tdd at the spec's seams) inside its prepared worktree; merges integration tip; reports; never pushes/PRs/stashes/worktrees; asks nothing | skill deny * + allow-list (tdd, codebase-design, diagnosing-bugs + stack skills); shell denies push/stash/reset --hard/clean/worktree/switch, gh pr/issue-close; edit allow |
pocock-reviewer |
subagent | Read-only executor of one code-review axis (Standards or Spec) with the skill's fully-specified prompt; findings returned to the caller for verbatim aggregation | edit deny; shell allow git-read only; skill allow code-review only |
Rejected agents (recorded so they are not re-proposed without new evidence): pocock-researcher
(D8 — built-in general + the 12-line research brief is equivalent), per-phase agents
(spec-writer/ticket-planner/debugger/... — Matt's phases are conversation steps sharing one context,
not roles; splitting them shreds the grilling→spec context the methodology depends on), triage agent
(every step waits on the maintainer), teach/tutor agent (continuous human dialogue).
Matrix
DMI = disable-model-invocation: true upstream (user-invoked). All vendored skills ship verbatim
(D1); "extra artifact" lists anything generated on top. Validation: all pending until Phase 1.9.
| Upstream skill | Bucket | DMI | Classification | Extra artifact | Depends on (skill-tool) | Rationale (abridged; full text in classification.json) |
|---|---|---|---|---|---|---|
| ask-matt | eng | ✓ | skill | informs pocock system |
— | pure router prose; must stay in sync upstream, vendored as-is |
| code-review | eng | agent+skill | pocock-reviewer |
— | two parallel isolated axis reviewers = dedicated read-only subagent; aggregation stays in caller | |
| codebase-design | eng | skill | — | — | shared-vocabulary reference consumed by tdd et al. | |
| diagnosing-bugs | eng | skill | — | — | six-phase inline discipline, no isolation needed | |
| domain-modeling | eng | skill | — | — | dialogue discipline writing GLOSSARY/ADRs; isolation would break it | |
| grill-with-docs | eng | ✓ | skill | — | grilling, domain-modeling | 7-line wrapper; orchestrator verifies both loads (known upstream failure mode) |
| implement | eng | ✓ | skill | embodied by pocock-worker |
tdd, code-review | thin single-context per-ticket procedure |
| implement-spec | eng | ✓ | orchestrator | pocock, pocock-worker |
tdd, code-review | frontier + worktree fleet; OpenCode task tool lacks worktrees → agents supply them |
| improve-codebase-architecture | eng | ✓ | skill | — | codebase-design, grilling, domain-modeling | interactive survey-and-grill; subagents are internal delegation |
| pr | eng | skill | — | — | PR-body template; verbatim vendoring preserves Dex Horthy attribution (metadata.credits, CREDITS.md) | |
| prototype | eng | skill | — | — | throwaway-artifact generation procedure | |
| research | eng | skill | — | — | the skill IS a background-agent brief; built-in general executes it (dedicated agent rejected, D8) |
|
| retro | eng | ✓ | skill | — | writing-for-agents | mines the current session — must not be isolated |
| setup-matt-pocock-skills | eng | ✓ | skill | — | — | creates docs/agents/* state that 7 skills hard-depend on; required first run per repo |
| tdd | eng | skill | — | codebase-design | the build discipline; worker allow-list core | |
| to-spec | eng | ✓ | skill | — | — | synthesis from conversation, no interview |
| to-tickets | eng | ✓ | skill | — | — | decomposition + human approval loop |
| triage | eng | ✓ | skill | — | grilling, domain-modeling | maintainer-driven state machine; agent rejected (HITL at every step) |
| wayfinder | eng | ✓ | skill | — | grilling, domain-modeling, research, prototype | tracker-based map/fog/frontier protocol |
| wizard | eng | skill | — | — | bash-wizard generator; bundled template.sh ships with the skill dir | |
| grill-me | prod | ✓ | skill | — | grilling | 7-line stateless wrapper |
| grilling | prod | skill | — | — | the interview primitive; isolation would make it worse | |
| handoff | prod | ✓ | skill | — | — | handoff doc to OS temp dir |
| teach | prod | ✓ | skill | — | — | stateful tutor; state lives in workspace files |
| to-questionnaire | prod | ✓ | skill | — | — | interviews + questionnaire template |
| wait-what | prod | ✓ | skill | — | — | 7-line re-pitch corrective |
| writing-for-agents | prod | skill | — | — | pure theory reference | |
| git-guardrails-claude-code | misc | plugin | guardrails hook (opt-in) | — | Claude PreToolUse hook → OpenCode ctx.tool.hook on shell; skill text kept verbatim for reference |
|
| migrate-to-shoehorn | misc | skill | — | — | codemod recipe (frozen bucket) | |
| scaffold-exercises | misc | skill | — | — | environment-bound: needs Matt's private ai-hero-cli; caveat documented, no fix possible |
|
| setup-pre-commit | misc | skill | — | — | husky/lint-staged recipe (frozen bucket) | |
| chief-of-staff | in-prog | ✓ | orchestrator | excluded (D6) | — | coordinator persona; revisit if upstream promotes |
| claude-handoff | in-prog | ✓ | not-convertible | excluded (D6) | handoff | Claude-CLI --bg launcher; harness-bound |
| loop-me | in-prog | ✓ | skill | excluded (D6) | grilling | workflow-spec grilling workspace |
| setup-ts-deep-modules | in-prog | ✓ | skill | excluded (D6) | codebase-design | dependency-cruiser enforcement setup |
| writing-beats | in-prog | ✓ | skill | excluded (D6) | writing-fragments | beat-by-beat exploit writing |
| writing-fragments | in-prog | ✓ | skill | excluded (D6) | grilling | explore-phase fragment mining |
| writing-shape | in-prog | ✓ | skill | excluded (D6) | writing-fragments | paragraph-level shaping |
Cross-cutting notes for the conversion
- Hard dependency chain:
setup-matt-pocock-skillswritesdocs/agents/{issue-tracker,domain, triage-labels}.md+ the## Agent skillsblock; to-spec, to-tickets, triage, implement, implement-spec, code-review, wayfinder all break without it. README + pocock agent must flag it. - Wrapper semantics: grill-me/grill-with-docs/wait-what are 7-line compositions relying on cross-skill invocation ("Call the Skill tool with X"). OpenCode's skill tool loads by name — the loading agent must load both named skills itself (upstream docs report wrappers failing to chain; pocock agent verifies).
- Invariant: user-invoked skills are never callable from other skills upstream; V2's
autoinvoke: falsereproduces exactly this (hidden from model, loadable by human via slash). - Frontmatter census: only
name,description,disable-model-invocation,argument-hint(4 skills),metadata.credits(pr) exist upstream — no allowed-tools/model/context fields, so all permission/isolation design is ours (authored fresh in agent templates, not translated). agents/openai.yamlin every skill dir is Codex UI metadata (display_name, short_description, policy mirroring DMI) — stripped from the generated OpenCode tree by the generator.- 17 pending upstream changesets (patch) target code-review, to-tickets, wayfinder, wizard, tdd, teach, implement, grilling, handoff, diagnosing-bugs, ask-matt, setup — the next upstream release will touch ~1/3 of the vendored skills; the nightly sync + drift tests are the safety net.
- scaffold-exercises only works in Matt's course repos (private
ai-hero-cli); vendored for fidelity, documented as environment-bound.