Replace partial YAML parsing with JSON frontmatter accepted by both loading paths. Read asynchronously, preserve metadata types and existing commands, and document the bundled format.
Merge current main, preserving Rule 9 and contributor history. Validation: 50 tests pass; OpenCode 1.18.27 live native/global parity, metadata, and override checks pass. No model calls.
Owner-directed amendment prepared with Codex (GPT-6).
OpenCode's TUI only lists commands with source "command" in its /
menu; it explicitly skips source "skill" entries. The plugin was only
registering the skills path, so /i-have-adhd resolved as a skill-sourced
command and never showed up outside a project-scope run (where
.opencode/command/i-have-adhd.md is picked up natively).
Parse that same command file's frontmatter/template in the plugin's
config hook and register it directly, so a global install gets the
command too. Verified end to end: started a headless opencode server
with the plugin loaded from a path outside any checkout (no project-scope
command directory in play) and confirmed GET /command now reports
i-have-adhd with source "command".
Mirrors tests/test_always_on_hooks.py for the OpenCode server plugin: the
always-on flag gates injection, frontmatter fences with trailing whitespace
are stripped, and an unclosed fence keeps the whole file.