Checks whether one of your skills should become a Claude Code mod, and builds the plugin only when it should. Most of the time the answer is “keep it a skill”.
npx skills add arm-pz/skill-to-mod --skill skill-to-mod
An agent skill for Claude Code 2.1.287 or later, with Python 3 and the claude command on your path. Version 0.1.0, free under MIT.
Real output from check_skill.py on two skills published on this site, run on 2026-10-21 against their main branches.
KEEP_SKILL
wordsmith: KEEP_SKILL - nothing in it happens at a particular moment, so there is nothing for a mod to hook - substantial guidance: keep the skill text intact and bundle it
Nothing to hook, so it generates nothing.
HYBRID
pre-ship-security-red-team: HYBRID - it has instructions worth keeping as a skill and moments a mod can trigger it at - moments found: before-risky-action, after-edit - interface words found (needs a hand-written pane, band or status line) - substantial guidance: keep the skill text intact and bundle it Trust notes: mentions secrets or credentials; bundles scripts Scaffoldable: gate, command By hand: pane / band / status line (see plugin-authoring and Anthropic's sample mods); hooks for: after-edit
The verdict is evidence, not a decision. “Interface words found” is a false alarm here: the match is “hosting dashboard” inside a safety rule, not an interface the skill shows. That is why the skill has Claude weigh the evidence against a written rubric before it answers.
A skill is instructions Claude reads when it decides they are relevant. A Claude Code mod is code that runs inside Claude Code on events: a command about to run, a prompt being submitted, a turn ending. So a skill that keeps getting skipped before git push can be made to run there.
Your skill stays unchanged and is bundled in the plugin. The mod only adds a thin trigger; it never copies your skill’s logic into code and never writes into your skill’s folder.
git push or npm publish until the skill has run.Panes, bands, status lines that draw, model calls and compaction handoffs are not generated. For those it points you to Claude Code’s built-in plugin-authoring skill and Anthropic’s sample mods.
| Ask | What happens |
|---|---|
| “Can my release-gate skill be a mod?” | Runs the checker, reports KEEP_SKILL, HYBRID or MOD_FIRST with the evidence, and says why in a few lines. |
| “Turn this skill into a mod that runs before git push” | Scaffolds a plugin: the skill, a hooks module with a gate on ship commands, tests and a README. |
| “Should this be a mod or a settings hook?” | Compares mod, settings hook, skill and MCP server for your skill and recommends one. |
| “Verify the mod” | Runs claude plugin validate and claude plugin test, prints the hooks it registers and the calls it makes, and writes that into the README. |
As a Claude Code plugin, from its own marketplace.
/plugin install skill-to-mod --marketplace arm-pz/skill-to-mod
claude --plugin-dir ./skill-to-modskills/skill-to-mod/ into .claude/skills/.No. If nothing in the skill happens at a particular moment, it stops at KEEP_SKILL and generates nothing. Of five published skills it was run on, two came out KEEP_SKILL.
No. The skill is copied unchanged into skills/<name>/ inside the new plugin, and the generator refuses to write its output inside the source skill’s folder.
The generated mods call only $.ui.ask, $.ui.status, $.ui.toast and $.command.register: no files, processes, network, environment variables or model calls. claude plugin validate prints the exact list for every mod and the skill copies it into the README. Mods are not sandboxed, so read that list before you install anyone’s mod, including this one’s output.
It is a keyword heuristic over the skill’s text, plus a written rubric Claude applies. It can miss an unusual phrasing or over-read an example. It counts a moment only with two points of evidence and lists weaker hits separately, and regression tests cover the wordings that fooled it before. A verdict you disagree with is a bug report.
No. It reads the text of a command, so echo "git push" also matches and a rewritten command can slip past. It is a reminder that fails open. Use permission rules or managed settings for enforcement.
No. A Claude Code mod is a plugin whose code runs inside Claude Code. This is not made or endorsed by Anthropic.
Read it before you install it: the skill lives at skills/skill-to-mod in arm-pz/skill-to-mod.