Skip to content

Installation

Always pin to an exact version in scripts and hooks — never use @latest:

Terminal window
# Explore (one-off)
npx universal-plugin@latest --help
# Scripts and CI (pin to current version)
npx universal-plugin@$(npm view universal-plugin version) plugin build
Terminal window
npm install -g universal-plugin
universal-plugin plugin build

upx runs an already-installed CLI matching a semver range instead of resolving one on every call. It ships as its own package:

Terminal window
npm i -g @repobuddy/upx
upx cyber-skills@^2 audit validate

Use a caret range (@^2), not an exact pin. That is what lets one global install serve every caller at that major. upx only exists once installed, so keep npx anywhere you cannot guarantee the global install. Choosing a runner covers when to reach for which runner.

Terminal window
npm install --save-dev universal-plugin
# or
pnpm add -D universal-plugin

Then use it from package.json scripts:

{
"scripts": {
"build:plugin": "universal-plugin plugin build",
"postinstall": "universal-plugin plugin build"
}
}
  • Node.js >= 22
  • A plugin.json at the plugin root (see Introduction)