SLOPSHOPPER

__NAME__

__DESCRIPTION__

newcommand
v0.1.0Apache-2.0updated 2026-10-15claudezss/claude-tools/templates/mod
A shopper browsing a rack in a slop shop
Preview · a replayed session in a sandbox
claude · ~/work/app · __NAME__
› fix the failing auth test and add an audit log call ⏺ Read(src/auth.ts) ⎿ Read 6 lines ⏺ Update(src/auth.ts) ⎿ Added 2 lines, removed 1 line ⏺ Bash(bun test) ⎿ 3 pass, 1 fail ● Done. refresh now rejects expired claims and logs an audit event. ✻ Worked for 42s · done 4:20 PM › /__NAME__ ⎿ __NAME__: Hello from __NAME__! ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › ? for shortcuts
README

claude-tools

A Claude Code marketplace of mods and plugins.

  • Mods (mods/) change Claude Code's own interface or behaviour through a TypeScript hooks module: panes, status line entries, toasts, slash commands, and hooks on tool calls or prompts.
  • Plugins (plugins/) bundle classic extensions: slash commands, skills, subagents, command hooks, and MCP servers.

Both kinds are listed in .claude-plugin/marketplace.json and install the same way.

Install

At the prompt of a Claude Code terminal session:

/plugin install <name> --marketplace claudezss/claude-tools

Answer y to add the marketplace, then pick a scope. From a shell:

claude plugin install <name> --marketplace claudezss/claude-tools

In the desktop app, click + next to the prompt box, then Plugins → Add marketplace with claudezss/claude-tools, then Add plugin.

Catalog

NameKindDescription
sysmonmodCPU, RAM, GPU and GPU RAM usage and totals in the status line or a pane (macOS, Windows, Linux)

Repository layout

.claude-plugin/marketplace.json   the marketplace: one entry per mod or plugin
mods/<name>/                      function-hook mods
  .claude-plugin/plugin.json
  hooks/hooks.json                { "modules": ["./register.ts"] }
  hooks/register.ts               export const register: Register = on => { ... }
  hooks/*.test.ts                 run with `claude plugin test`
plugins/<name>/                   classic plugins
  .claude-plugin/plugin.json
  skills/  agents/  commands/  hooks/hooks.json  .mcp.json
templates/                        what scripts/new.mjs copies
scripts/
  new.mjs                         scaffold a mod or plugin and list it
  validate.mjs                    validate everything, run mod tests

Development

Create a new mod or plugin (copies the template, fills in the name, adds the marketplace entry):

node scripts/new.mjs mod my-mod "One-line description"
node scripts/new.mjs plugin my-plugin "One-line description"

Try it from disk without installing; an interactive session reloads it on save:

claude --plugin-dir mods/my-mod

Or add this checkout as a marketplace, so installed entries are read straight from the folder (/reload-plugins picks up edits):

claude plugin marketplace add ./
claude plugin install my-mod@claude-tools

Before committing, validate the marketplace and every entry, check that entries and folders agree, and run the mods' tests:

node scripts/validate.mjs

The mod API's TypeScript declarations are written by the engine into <mod>/.claude-plugin/types/ the first time it loads the mod (git-ignored); with them in place, tsc -p mods/my-mod type-checks it. The mod API is early access and may change between Claude Code releases.

License

Apache 2.0

Source 1 files
hooks/register.ts 20 lines
1import type { Register } from 'claude-code'
2
3// A starter mod: registers the /__NAME__ slash command.
4// API reference: `.claude-plugin/types/claude-code/index.d.ts`, laid by the
5// engine the first time it loads this mod from a folder.
6export const register: Register = on => {
7  on('session.start', async ($, e, next) => {
8    await $.command.register({
9      name: '__NAME__',
10      description: "__DESCRIPTION__",
11    })
12
13    return next(e)
14  })
15
16  on('command.run', { command: '__NAME__' }, $ => ({
17    text: `Hello from ${$.plugin.name}!`,
18  }))
19}
20