| Version | Supported |
|---|---|
| 0.3.x | ✅ |
| < 0.3 | ❌ |
Pre-1.0: only the latest minor receives fixes.
Please do not open a public issue. Use GitHub private vulnerability reporting:
https://github.com/wangyuchen5110/opencodeplugginprogram/security/advisories/new
Include the version, a reproduction, the impact, and a suggested fix if you have one. Best-effort response within 7 days.
- Runs locally with the privileges of the invoking user. No telemetry.
- Network access only for
update(HTTP catalogs) and fornpxwhen you install/run the package that way. - Reads skill files and frontmatter,
opencode.json(c)/opencode.jsonc, and.skills-doctor.lock.json. It does not read model credentials, API keys, or conversation content. - Writes only on explicit commands:
fix— moves shadowed definitions into.skills-doctor-archive/, optionally editsmetadata.opencode/autoinvoke(--hide);update— writes downloaded files into a skill directory and updates the lock;- everything else (
check,scan,mcp) is read-only.
- There is no signature verification. The catalog's
versionfield is trusted as-is. - Downloads are restricted to the same origin as
index.json; path traversal (.., absolute paths, schemes) is rejected; files are written only under the target skill directory. - Downloaded skills are instructions for an agent. Treat catalogs as code: use a catalog you control, pin it, review diffs, and run
update --check-onlybefore applying. - The updater executes no code from the catalog. It only fetches and writes files.
fixarchives only definitions that are shadowed (never loaded). The effective skill is not moved. Archived files go to.skills-doctor-archive/<timestamp>/and can be restored by moving them back.fixdefaults to project-only;--allextends it to global sources (~/.config/opencode/skills,~/.claude/skills, ...).update --prunedeletes skill directories that disappeared from a catalog. Without--prunethey are only reported.- Always use
--dry-runfirst and review the paths that would change.
skills-doctor mcponly runs the local audit. It does not proxy, execute, or store MCP content.- The OpenCode plugin runs inside the OpenCode process with your privileges. It registers one tool and one command; it does not intercept unrelated tool calls.
- The MCP client / plugin may start the package through
npx, which downloads the published package from npm. Pin a version (opencode-skills-doctor@0.3.9) if you need reproducibility.
This tool audits configuration and files. It does not constrain what an agent can do. Use the permission and sandbox controls of your agent runtime (OpenCode permissions, OS sandboxing, containers) for containment.
- Run
checkandfix --dry-runbefore lettingfixor--prunemodify anything. - Use
--no-globalon CI unless you explicitly want machine-wide skills audited. - Pin the package version in automation:
npx -y opencode-skills-doctor@0.3.9 check --strict. - Review
.skills-doctor-archive/and delete it when you no longer need the backups. - Treat every catalog and every downloaded
SKILL.mdas code you are installing.
- Vulnerabilities in OpenCode, Claude Code, Codex, Codeium/Kimi Code, DeepSeek Harness, or any other host runtime.
- Malicious content inside third-party skills or catalogs (that is a trust decision for the operator; see above).
- Behavior of the models that read the skills.