Editing the skill, or a plugin under plugins/, is a change to the
~/.config/opencode repository. That had no rule attached to it, so work
landed locally and the remote silently drifted.
Add "Push every change" near the top of SKILL.md, where it is read before
the reference material rather than buried at the end, plus a fifth item in
"Verifying before you answer" so the push is part of the final check rather
than a separate task that gets skipped.
The section records the three constraints that are not guessable:
- Push over SSH. origin is git@git.xsinfo.vip:xiaoshuai/oc.git; an HTTPS push
prompts for a password and there is no TTY, so it fails outright.
- Never git init inside skills/ or plugins/. OpenCode discovers every immediate
subdirectory of plugins/ as a plugin package, so a .git there is loaded as
plugins/.git/index and fails on each startup. The repository belongs at the
config root, one level above both scan roots.
- Do not git add -f past .gitignore. opencode.jsonc, cli.json, service.json,
package.json and node_modules/ are machine-local by design.
Repository sits at the OpenCode config root rather than inside skills/ or
plugins/. OpenCode scans exactly those two subdirectories, and a .git
directory inside either one is picked up as a plugin and fails to load:
loading plugin id=.../plugins/.git entrypoint=.../plugins/.git/index
failed to load plugin ... AggregateError: 2 errors building .../plugins/.git/index
The watcher.ignore config option does not help: it only suppresses filesystem
update events, not plugin discovery, and the "-" disable prefix only applies to
plugins listed in opencode.json(c), not auto-discovered ones.
.gitignore admits only skills/ and plugins/ (plus itself). Personal config
(opencode.jsonc, cli.json, service.json) and node_modules stay local.
skills/opencode-plugins V2-only plugin authoring reference and 7 templates,
transcribed from the V2 docs with the URL on every file
plugins/searxng-search searxng_search tool over a self-hosted SearXNG JSON API