# OpenCode Integration [OpenCode](https://opencode.ai/) discovers provider-neutral skills directly from `.agents/skills/` and pre-migration piker skills from `.claude/skills/`. There is no second copy of each skill to keep in sync. ## Available Skills | Skill | Activation | Specialization | |-------|------------|----------------| | `commit-msg` | `/commit-msg` or explicit request | Piker commit-message style and artifacts | | `piker-clearing-expert` | automatic | Clearing, order-control, and accounting invariants | | `piker-conc-expert` | automatic | `tractor` actor topology, RPC, and cancellation | | `piker-profiling` | automatic | Cross-actor `Profiler` instrumentation | | `piker-slang` | automatic | Project communication style | | `py-codestyle` | automatic | Python source conventions | | `pyqtgraph-optimization` | automatic | Batched Qt graphics rendering | | `timeseries-optimization` | automatic | NumPy and Polars timeseries performance | OpenCode's project command lives at `.opencode/commands/commit-msg.md`. It delegates to the shared `commit-msg` skill and only supplies command arguments; workflow logic remains in the skill. A user-local skill with the same name may override a repo skill. Treat `opencode debug skill` as authoritative when diagnosing which source is active. ## Verify Discovery From the repository root: ```console opencode debug skill opencode debug config ``` `opencode debug skill` should list the piker skills from the project checkout. Restart OpenCode after changing a skill or command because configuration-time files are not hot-reloaded into an active session. ## Portability Rules - Use only portable Agent Skills frontmatter in shared `SKILL.md` files. - Keep harness-specific command syntax under `.opencode/commands/`. - Detect the active harness and model at runtime; do not hardcode Claude Code attribution in shared workflows. - Keep supporting references beside each shared skill so relative links resolve in every harness. - Put new provider-neutral bundles under `.agents/skills/`; use relative provider links only when a harness requires one.