shadr.us

Claude Code Plugins

A few Claude Code skills I use every day, packaged as a plugin marketplace so they’re one command to install. Source lives at github.com/shad/claude-plugins.

Add the marketplace once:

/plugin marketplace add shad/claude-plugins

Then install whichever you want.

cmux-control

/plugin install cmux-control@shad

cmux is a terminal whose entire UI is drivable from a CLI, which means a Claude session running inside it can reshape the terminal it lives in. The hard part isn’t the commands, it’s deciding what the sidebar means — so the plugin carries a contract. Every channel belongs to one of three axes and never borrows from another: identity (title, group, color, icon) changes only when the work changes; state (status pills, progress, spinner) is always a promise to clear it; attention (pins, order, collapse) is scarce by definition. Color is the stream, never the status. The default is nothing pinned.

Enforcement is split by cost. cmux-sidebar-sync fixes everything decidable from state alone — color follows group, ungrouped rows carry no hue, anchor titles match their group — and runs on a Stop hook after every turn, silently and for free. What it can’t decide, it reports: a title that names the prompt instead of the work, a row holding two streams. That goes to a cheap-model agent that reads each session and retitles it, and only when you ask, because a rename you didn’t watch happen is a sidebar that lies to you.

Requires: cmux.

plugin-authoring

/plugin install plugin-authoring@shad

The marketplace maintaining itself. new-plugin takes a skill that already works in ~/.claude/skills/ and makes it installable — plugin directory, manifest, catalog entry, validation, docs, commit, push, install — in one pass. release-plugin ships a later change to it: version bump in both manifests, tag, push, update.

Mostly it exists to stop me from half-publishing things. A plugin directory with no catalog entry, or a version that agrees with itself in one file and not the other, both fail quietly and only when someone else tries to install.