Repository navigation
v3.9.1
What's new
A performance-focused release: Systematic trims a redundant chunk out of every bootstrap prompt now that OpenCode's native skill discovery covers the same ground.
Performance Improvements
Systematic no longer injects an <available_skills> block into the bootstrap prompt. OpenCode already registers bundled skills under native skills.paths, renders its own permission-aware catalog, and the systematic_skill tool description exposes the same names and descriptions — so the bootstrap-injected catalog was pure duplication. Removing it cuts the generated bootstrap payload from 18,145 to 6,232 characters and eliminates 23 absolute machine paths from prompt output.
renderCatalogVerbose() and formatSkillsXml() are removed along with their supporting escaping helpers, and CatalogEntry no longer carries path and skillFile, since those fields only existed for the deleted verbose path. The receipt-workflow fixture now requires exactly one opening and one closing workflow marker and verifies retained systematic_skill discovery guidance in place of the removed bootstrap catalog. ARCHITECTURE.md documents the per-harness discovery semantics this change relies on: OpenCode and Pi discovery surfaces, the unavailable-tool contract, and host-upgrade revalidation requirements — Pi has no registerSkillsPaths() equivalent, so denying systematic_skill removes the remaining catalog discovery path there.
The eval host pin moved from 1.18.5 to 1.18.18 to match the repository's @opencode-ai/plugin and @opencode-ai/sdk dependency versions, and a drift check now fails the build if the pin and dependency version diverge. Because host catalog rendering is version-dependent, the bootstrap-catalog deletion was re-proven rather than assumed: the real-host eval suite passes 51/51 at 1.18.18, with the host still covering every bundled skill.