Skip to content
mutastic

Claude Code

The mutastic plugin brings the gate and the mutastic skill into Claude Code. It’s in the tasticlabs marketplace, on GitHub at tasticlabs/plugins.

  • mutastic, with its Java edition 0.5.0 or later, which has the gate: curl -fsSL https://mutastic.io/install.sh | sh. The plugin tells you, and Claude, if it’s missing or too old.
  • A Java project in git, built with Gradle or Maven. Anywhere else, the plugin stays out of the way: it’s on in every project, and does nothing where there’s nothing to gate.

In Claude Code in a terminal:

/plugin marketplace add tasticlabs/plugins
/plugin install mutastic@tasticlabs

then /reload-plugins, or start claude again.

In VS Code, the extension has no /plugin command. Install from a terminal instead, then reload VS Code’s window, so the extension starts Claude Code with the plugin:

Terminal window
claude plugin marketplace add tasticlabs/plugins
claude plugin install mutastic@tasticlabs

If your user settings are read-only, as they are when a tool such as Nix’s home-manager manages ~/.claude/settings.json, installing for your user fails. Install it for the project instead, which records it in the project’s .claude/settings.json, where everyone working on the project gets it too:

Terminal window
claude plugin install mutastic@tasticlabs --scope project

A plugin can’t grant permissions. Without one, Claude asks each time it runs mutastic. To allow it, add this to the project’s .claude/settings.json, or your own:

{ "permissions": { "allow": ["Bash(mutastic:*)"] } }
  • The gate, as two hooks. When you send a prompt, mutastic gate open notes where the task starts, once per session, and tells Claude. When Claude says it’s finished, mutastic gate check runs mutastic on the lines changed since. If a mutant there is missed, Claude’s stop is blocked, and its cards are Claude’s next instruction. When it passes, or the gate hands over to you, you see the gate’s message in the conversation (“Stop says: …”).
  • The mutastic skill. It teaches Claude the loop: run mutastic on what it changed, write the test each card asks for, prove it with the card’s mutastic verify, and propose an ignore, rather than contrive a test, when a case can’t happen. Running the loop as it goes is quicker than waiting for the gate to send it back.

Where mutastic can’t run (it fails, or the build doesn’t), the gate says so and lets Claude stop: a gate that can’t check holds nothing.

/plugin marketplace update tasticlabs

then /reload-plugins. claude plugin update mutastic@tasticlabs does the same from a terminal.

To stop gating one task, mutastic gate close; the next prompt opens a new one. To turn the plugin off, /plugin disable mutastic@tasticlabs.