Skip to content

Skills

The npm package ships ten skills. They are the main way to work with universal-plugin — each owns one job in the life of a plugin, from scaffolding it through publishing it, and the CLI underneath it is there for scripting and CI, not the primary interface. In Claude Code they are invoked as /universal-plugin:<name>; other runtimes match them against your request.

Five skills cover the life of a plugin. Each is scoped by the thing it touches, which is what keeps them from competing for the same request.

SkillOwns
init-universal-pluginwhat the manifest declares
doctor-universal-pluginnothing; it only reads
versionthe released number
build-pluginthe derived manifests, written
remove-pluginthe artifacts, deleted

Exactly one of them writes the canonical plugin.json. That is init-universal-plugin.

SkillUse it to
marketplacegenerate the catalogs that let users install from this repository, and write the README install section
migrate-pluginmove a repository-root plugin into the npm package that ships it
publish-pluginlist a packaged plugin in the shared marketplace repository
upgrade-pluginbump the pinned universal-plugin@<version> a project calls
adopt-upxrewrite npx pins in your skills to the upx runner

upgrade-plugin moves the version your project calls. version moves the version your plugin publishes. They are different numbers.

init-universal-plugin, doctor-universal-plugin, version, build-plugin, and marketplace each ship a launcher in their own scripts/ directory. The launcher imports the CLI that shipped beside it, so a scaffold or a diagnosis needs no network fetch and cannot resolve a different version than the one you installed.

Terminal window
node scripts/doctor.mjs

Every skill body keeps a pinned npx fallback for the case where the path cannot be resolved. See Running a CLI your own plugin ships for the four requirements that make the pattern work.

The authoring four started as a single gateway skill with a route table. No one name covered create, adopt, update, inspect, version, and delete, and one description that has to match all six matches each of them weakly.

The rule that replaced it: a new verb earns a route on the skill whose object it shares, and a skill of its own only when its object differs. Competing writers on one object are what fragments a surface, not the number of skills. ADR-0009 records the decision.