JFrog integration for OpenCode. The plugin ships the official JFrog Agent Skills with the package and registers them with OpenCode at load time, so JFrog capabilities are available to the agent out of the box.
The plugin bundles two canonical skills, vendored (pinned) from
jfrog/jfrog-skills and committed under skills/:
jfrog— interact with the JFrog Platform via the JFrog CLI, MCP server, and REST/GraphQL APIs (Artifactory, Xray, builds, permissions, projects, release lifecycle, advanced security, and more).jfrog-package-safety-and-download— check package safety/curation status and download packages through JFrog.
The skills ship with the plugin (vendored and pinned). They are not downloaded at runtime, so the plugin works offline and the skill set is reproducible for a given plugin version.
The plugin is self-contained: everything it needs is in the published npm tarball (dist/ + the
vendored skills/). There are no runtime downloads and no dependency on releases.jfrog.io or any other
external artifact host.
- A JFrog Platform instance you can authenticate against.
- OpenCode installed (verified against OpenCode 1.17.7 and newer, which
honors
config.skills.pathsin object form). - For running the skills at runtime, the following must be on your
PATH:jf(JFrog CLI),jq, andcurl.- A configured JFrog CLI server (e.g. via
jf login/jf config add).
The plugin is published to public npm as
@jfrog/opencode-jfrog-plugin and is
listed on the OpenCode ecosystem page. OpenCode has no plugin
marketplace — you install by referencing the npm package in your OpenCode config.
Add the plugin to your OpenCode config (opencode.json):
{
"plugin": ["@jfrog/opencode-jfrog-plugin"]
}OpenCode resolves the package from npm and loads it. To pin a specific version, use
"@jfrog/opencode-jfrog-plugin@<version>"; omitting the version tracks the latest release.
For an organization-wide rollout, set the plugin in OpenCode's remote configuration so every developer gets it automatically.
The plugin is intentionally thin. On load it:
- Resolves its bundled
skills/directory (shipped inside the package). - Registers that directory with OpenCode through the
confighook by adding it toconfig.skills.paths.
OpenCode then discovers the skills the same way it discovers any skill — they appear via the skill
tool and /skills, and the agent invokes them when relevant. There is no runtime download, unzip, or
network call on load.
The skills are vendored at a pinned version. Updating them is a build-time step and requires a new
plugin release (there are no runtime skill updates). See VENDOR.md for the pin-bump
workflow (mise run sync-skills).
The plugin does not log by default. To enable debug logging:
export JFROG_DEBUG_LOGS=trueLogs are written to <project-root>/.opencode/event-log.txt.
If you see a "bundled skills not found" error (a toast in the TUI and/or an ERROR line in the log),
the installed package is incomplete or corrupted — reinstall @jfrog/opencode-jfrog-plugin.
This release changes behavior in ways that are not backward compatible:
- Skill catalog changed (7 → 2). The previous Artifactory skills —
skill-install,skill-publish,jfrog-cli,opencode-jfrog-mcp,jfrog-setup-package-managers,jfrog-curation,jfrog-packages— are replaced by the two canonical skills above. Invocations of the removed skill names no longer exist; that functionality now folds into thejfrogskill. - Package-manager auto-setup was removed. Earlier versions ran
jf setup <pm>automatically on session start. That is gone; the plugin now emits an interim one-line nudge to runjf setup <pm>yourself. Durable package-manager setup is being recovered upstream injfrog/jfrog-skills. - Old skills are not auto-cleaned. The plugin no longer touches
~/.config/opencode/skills. If you used a version < 0.0.3, remove the old managed skill directories yourself (e.g.skill-install,skill-publish,jfrog-cli,opencode-jfrog-mcp,jfrog-setup-package-managers,jfrog-curation,jfrog-packages) under~/.config/opencode/skills. - No more runtime artifacts. The plugin no longer injects an instructions file
(
.jfrog/instructions/...) or writes.jfrog/local/package-managers.json, and it no longer downloads skills at runtime. - Dependencies resolve from public npm. Internal registry references were removed; the build and CI now resolve from public npm.
Tasks are run with mise:
mise run build— build the modulemise run test— run tests (bun test)mise run typecheck— type-check withtsc --noEmitmise run lint— lint with ESLintmise run lint:fix— auto-fix lint issuesmise run format— format with Prettiermise run sync-skills— re-vendor the bundled skills (see VENDOR.md)
See RELEASE.md for how to release a new version.
Contributions are welcome! See CONTRIBUTING.md. Please file issues or open pull requests on the GitHub repository.
See the LICENSE file for details.
Verified against OpenCode 1.17.7 and newer (the first version confirmed to honor
config.skills.paths in object form). Older versions are not supported.