Skip to content

Build a Hadron skills plugin

CLI onlyIntermediate~10 min

One installable plugin that carries every skill your Hadron memories publish. Install it in Claude Code with two commands and no git repository. Keep it current by rebuilding it. You can also hand the zip to someone else.

This one needs the hadron CLI, v0.17.0 or later, signed in as you. If your coding agent has a terminal, you can ask it:

Run hadron skill plugin --out ~/hadron-plugins --dry-run, show me what it would include, then build it and install it in Claude Code.

The rest of this page is what that does. If you only want the skills on your own machine as separate files, use Install and update your Hadron skills instead: hadron skill export writes them straight into your skills folders. The two are independent. Installing the plugin doesn't touch skills that skill export wrote, and the reverse is also true.

Before you start

  • The hadron CLI, signed in (hadron auth status). If hadron skill plugin --help answers unknown command "plugin" for "hadron skill", your CLI is older than v0.17.0: upgrade first.
  • An empty directory to build into, outside your skills folders. The command refuses to build at, inside or above ~/.claude/skills, ~/.agents/skills or ~/.codex/skills, because a plugin there would load every skill twice.

Build

Preview first. A dry run lists every skill it would include and writes nothing:

hadron skill plugin --out ~/hadron-plugins --dry-run

Then build:

hadron skill plugin --out ~/hadron-plugins

Add --zip to also get zip files you can upload or send.

What's included

By default, every enabled skill you can read, including skills from customer and personal memories. The report says so above its table. To include only the skills in one scope, pass --scope <name|id>. A scope name resolves in an App's context, so pass --app <ref> too, or set an active App; with neither, the command refuses (exit 2). A scope that doesn't exist, or that you can't read, exits 4. A scope with no memory you can read builds nothing and exits 2. None of these ever falls back to everything.

What you get

Under --out, one artifact per host:

Artifact What it is
hadron/ A Claude plugin that is also a one-plugin marketplace, so Claude Code can install it straight from the directory.
hadron-codex/ Skill folders for Codex, to copy into ~/.agents/skills.
hadron.zip, hadron-codex.zip With --zip: the same artifacts zipped, the plugin at the zip's root.

--name changes hadron to your own name (lowercase words joined by hyphens, up to 64 characters). The name is permanent for an install: skills are invoked as /<name>:<skill>.

If none of your enabled skills is declared for Codex, the Codex artifact is empty (and hadron-codex.zip is a nearly empty file). That isn't a failure.

Install in Claude Code

claude plugin marketplace add ~/hadron-plugins/hadron
claude plugin install hadron@hadron

claude plugin list then shows hadron@hadron, enabled, with its version. Restart your Claude Code session to load the skills.

Update

When your skills change, rebuild into the same --out, then update:

hadron skill plugin --out ~/hadron-plugins
claude plugin update hadron@hadron

Restart the session to apply it. The plugin's version is a hash of its contents (0.0.0-h…), so it changes exactly when a skill does, and Claude Code picks up any version change, even to one that sorts lower. The rebuild replaces the artifact it wrote earlier as a whole.

Codex

Copy the folders in hadron-codex/ into ~/.agents/skills.

Share it

--zip produces hadron.zip for uploading to Claude's plugin settings, in Cowork or your organization. A personal upload in Cowork has been verified: the plugin installs and its skills trigger in a real conversation. An organization upload, and re-uploading after a change, have not been verified yet, so check the result on your side. Before you share a zip, run the build with --dry-run and check what it would include: unless you pass --scope, it carries your personal and customer skills too.

Read the report

State Meaning
included Bundled into the artifact.
skipped Not bundled, and not an error. A switched-off skill, for example.
refused Not bundled: two skills claim one name, or similar.
failed Not bundled: over a host limit, or couldn't be written.
notForHost Declared only for the other host.

A dry run labels the first state would include.

The command exits 5 after the full report if any item was refused or failed, or an artifact couldn't be written, and 0 otherwise: skipped and notForHost items are expected and don't count. It exits 2 for a bad flag or an unusable --out, before contacting the server, and for an empty scope, before building anything. Expect 5 if two of your skills claim one name: both are refused, and the rest are still built.

When the build is refused

You see Why What to do
"… is at, inside or above the host skills directory …", exit 2 --out is in, or contains, a skills folder. Choose a directory outside them.
"… exists and was not written by hadron skill plugin, so it was left alone", exit 5 Something else already sits at the artifact path. Move it, or choose another --out or --name. The command only replaces an artifact it wrote itself.
"… is a symbolic link, so nothing was written through it", exit 5 The artifact path is a symbolic link, and the command never writes through one. Replace the link with a real directory.