While you wait·terminal·MIT
claude-slots
An ASCII slot machine instead of the spinner. Reels spin while Claude works, zero tokens.

claude-slots turns the Claude Code spinner into an ASCII slot machine. Sending a prompt pulls the lever, the reels spin for as long as Claude works, and when the turn ends the reels lock one by one and a result line closes it. The mod only draws: nothing reaches the model, so it costs zero tokens. The machine is a boxed chassis with a CLAUDE SLOTS wordmark, three reels of glyphs and a credits line; every frame is specified in the repository’s docs/ART-SPEC.md.
What it does
- Six outcomes: jackpot, medallion, triple, double, near miss and lose. The outcome is rolled the instant the lever is pulled; the spin-up, the reels locking and the reveal are a function of that outcome and the time elapsed. A jackpot also pops a toast.
- Play credits: each spin costs one, a new session starts with 100, and running out never blocks a spin. Credits, last win and the tally of spins, wins and streaks survive restarts.
- Interruptions: pressing Esc mid-turn jams the lever and shows INTERRUPTED. An aborted or errored turn refunds its credit.
- Looks: three chassis sizes (compact, standard, grand) picked from the terminal width by default, a classic glyph set or an emoji theme, and optional sound (lever click, coin ding, jackpot chord) from bundled WAV clips, off by default.
- Commands:
/claude-slots:statsshows credits, spins, wins and jackpots./claude-slots:demo [outcome] [size]plays one spin in the transcript without a real turn or credits, useful for previewing the art.
Install
Needs Claude Code 2.1.263 or later with function hooks enabled, Node.js 18 or later and an interactive terminal.
claude plugin marketplace add WorldInnovationsDepartment/claude_slots
claude plugin install claude-slots@claude-slots-local
The README documents the same pair as /plugin commands typed inside Claude Code, and claude --plugin-dir <path-to-clone> loads a local checkout. Start claude and send a prompt; there is nothing to press. The options (size, idle, theme, sound, startCredits) live in the plugin’s config, reachable from /plugin or as pluginConfigs["claude-slots"].options in settings.json.
How it works
Most mods draw in the band above the prompt. claude-slots instead hooks ui.render for three built-in components: Spinner, which becomes the machine while Claude works; TurnDuration, the line that closes a turn, which plays the outcome animation and then settles into a one-line result; and AbovePrompt, an idle machine between turns that the idle option sets to off, a one-line compact or full. A $.clock.every(100) ticker invalidates the render ten times a second from the lever pull until half a second after the outcome animation ends, then stops.
It listens to prompt.submit only to pull the lever once the rest of the hook chain has let the prompt through, and to turn.step only to note whether tools ran. It never reads your prompt, tool calls or files, and makes no network calls. It stores two things in Claude Code’s plugin store on your machine: the credits and stats, and a list of session ids from the last two days. Sound goes through $.audio.play only when sound is on, capped at 500 clips a session.
The same engine has a fallback for sessions without function hooks: /claude-slots:setup --apply points statusLine in ~/.claude/settings.json at the plugin’s 1 fps renderer and swaps the spinner verbs for slot phrases, after backing the file up, and /claude-slots:teardown restores it. To drive that fallback, hooks.json also registers classic command hooks that run node bin/claude-slots-hook.js on prompt submit, message display, tool results, stop and session start and end.
Limitations
- Terminal only: the render hooks step aside on any other surface, so nothing changes in
claude -p, the desktop app or mobile. - No recording yet: the README lists a GIF or asciicast of a live spin as pending. The only preview is
docs/preview.htmlin the repository, opened in a browser. - The options apply to the function-hooks tier only. The statusLine fallback ignores them, sizes itself from the terminal width and always starts at 100 credits.
- An interrupted turn gets no closing line, so the jam animation shows only in the idle band above the prompt. With
idleset tooffyou get a short INTERRUPTED status line instead.
More mods
The whole directory →mindful-claude
Guided breathing above the prompt while Claude works. Four techniques, zero tokens.
claude plugin install mindful-claude@mindful-claudeStorytime
A 260K-parameter transformer inside the mod writes a story about what Claude is doing.
claude plugin install storytime@cc-storytimeagent-flow
Every subagent of the session in a live tree beside the transcript. Zero tokens.
claude plugin install agent-flow@claude-agent-flowanchorwatch-mod
Blocks rm -rf, force pushes, DROP TABLE, curl | sh and cat .env before they run.
claude --plugin-dir ./anchorwatch/plugins/anchorwatch-mod
