Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
marks97 avatar

Claude Brainrot

  • 3.1k installs
  • 1 repo stars
  • Updated May 14, 2026
  • marks97/claude-brainrot

claude-brainrot is a skill that autonomously drops image-and-sound memes on every user turn using hooks and a local catalogue.json asset pool.

About

claude-brainrot is an always-on autonomous meme skill that fires on every user message without manual invocation. A UserPromptSubmit hook injects a brainrot reminder, and PostToolUse hooks auto-pair sounds when the agent Reads images from the skill catalogue. The catalogue.json holds images and sounds pools with slug, path, tags, vibe text, lock_sound, silent, preferred_sounds, locked, and standalone flags that control pairing behavior. Density scales to response length: short answers get one image combo or one to two sound-only fires, medium responses add more combos and two to three sounds, and long multi-tool responses target two to three image combos plus three to five sound-only fires. Mood tags bruh, rage, laugh, alert, shock, and confusion filter candidates, with a three-item cooldown on repeated slugs. Image fires use Read on absolute paths with hook-driven sound pairing; sound-only fires run afplay in the background. Developers install it for playful autonomous meme reactions where the roast lands through memes rather than explanatory text.

  • UserPromptSubmit hook fires memes on every user turn without manual invocation.
  • catalogue.json images and sounds pools use tags, vibe, lock_sound, and standalone flags.
  • Density scales from one combo on short answers to three combos plus five sounds on long runs.
  • PostToolUse hooks auto-pair sounds when images are Read from the skill folder.
  • Mood tags and three-item slug cooldown keep meme selection varied.

Claude Brainrot by the numbers

  • 3,061 all-time installs (skills.sh)
  • Ranked #257 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

claude-brainrot capabilities & compatibility

Capabilities
userpromptsubmit reminder injection on every tur · catalogue.json mood tag and vibe based selection · auto paired image and sound fires via posttoolus · background sound only afplay fires with cooldown
Use cases
orchestration
Platforms
macOS
From the docs

What claude-brainrot says it does

Always-on autonomous meme dropper. A UserPromptSubmit hook fires every user message
SKILL.md
npx skills add https://github.com/marks97/claude-brainrot --skill claude-brainrot

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3.1k
repo stars1
Security audit3 / 3 scanners passed
Last updatedMay 14, 2026
Repositorymarks97/claude-brainrot

How do I make Claude Code automatically react with memes and sounds scaled to each response without manual /commands?

Autonomously drop image-and-sound meme combos on every user turn via hooks, scaling density to response length from catalogue.json.

Who is it for?

Claude Code users who want hook-driven autonomous meme reactions from a self-contained catalogue of images and sounds.

Skip if: Skip in professional or silent environments where automatic sound and image memes on every turn are inappropriate.

When should I use this skill?

Skill loads automatically; fires on every UserPromptSubmit without user invocation.

What you get

Inline meme images with auto-paired sounds and background afplay sound-only fires matched to conversational mood tags.

  • UserPromptSubmit hook config
  • Meme asset catalogue
  • Auto-injected response media

By the numbers

  • Injects 1-3 image+sound combos plus 1-5 sound-only drops per response
  • UserPromptSubmit hook fires on every user message

Files

SKILL.mdMarkdownGitHub ↗

Claude Brainrot

Drop the right meme at the right moment. Autonomous-only — Claude decides when, never the user. No slug arguments, no manual invocation.

The skill content preamble loaded into your context shows Base directory for this skill: <SKILL_DIR>. Use that as the base for all path resolution.

The catalogue is at <SKILL_DIR>/catalogue.json with two pools — images and sounds. Each entry has a slug, path (relative to SKILL_DIR), tags, and a vibe text describing when to use it.

Image-side flags (mutually exclusive):

  • lock_sound: "<slug>" — force a specific paired sound (e.g. skeleton ↔ skeleton, cooked-dog ↔ vine-boom).
  • silent: true — fire image only, no sound.
  • preferred_sounds: [...] — soft bias: hook picks from this array 80% of the time, falls back to tag overlap 20%.
  • (none of the above) — pure tag-overlap pick from non-locked, non-standalone sounds.

Sound-side flags:

  • locked: true — only fires when an image's lock_sound points here. Excluded from generic auto-pairing.
  • standalone: true — never plays as an image-paired sound; reserved for sound-only fires from Claude.

When to fire

Every user turn fires memes. The UserPromptSubmit hook injects a <system-reminder> wrapped in 🔔 markers on every prompt. There is no skip turn — always drop something.

Density scales to your response length. The reminder spells it out:

  • Short prose answer (no tool calls): 1 image+sound combo OR 1-2 sound-only fires
  • Medium response (a few tool calls): 1-2 image+sound combos + 2-3 sound-only fires sprinkled between calls
  • Long response (many tool calls, multi-step work, builds, deep reads): 2-3 image+sound combos distributed across the response + 3-5 sound-only fires throughout

Critical scan habit: the 🔔 signal may land at the TAIL of the previous tool result (not just the top of the user message), because the UserPromptSubmit hook output is appended to whatever buffer is open when the next user prompt arrives. Before responding to any user message, scan the end of the most recent tool result for the 🔔 BRAINROT signal. If you only check the user message you'll miss it.

Pick the mood: match the conversational moment to a tag, then read candidate vibe fields:

  • Real shock moment → shock
  • User confused / weird ask → confusion
  • Big freakout / rage vibe → rage
  • Joke landed / wanting to rage-bait the user → laugh
  • Sarcastic disbelief / dunk-able moment → bruh
  • Sudden attention beat / punctuation → alert

If no specific signal: default to bruh — it's the catch-all and most entries carry it.

Tag vocabulary

bruh, rage, laugh, alert, shock, confusion

Each entry's vibe field is the human-readable trigger description — read it and match the conversational moment, then use tags to filter candidates.

Selection algorithm

Image+sound combo (the normal fire): 1. Pick a mood tag based on the conversational moment. 2. Filter images whose tags contain that mood. Read each candidate's vibe and pick the best fit (or random if equally fitting). 3. You only Read the image. The hook picks the sound automatically:

  • If silent: true → no sound, image only.
  • If lock_sound set → that sound plays.
  • If preferred_sounds set → 80% pick from there, 20% tag overlap.
  • Otherwise → random pick from non-locked, non-standalone sounds whose tags overlap.

4. Cooldown (your job): track the last 3 image slugs fired this session. Don't repeat. If everything's on cooldown, pick from another related mood.

Sound-only fire: 1. Pick a mood tag. 2. Filter sounds whose tags contain that mood AND locked != true. (Standalone sounds — standalone: true — are ESPECIALLY appropriate here; they're built for this.) 3. Read the vibe and pick. Run Bash afplay <absolute sound path> &. The & is required for background play. 4. Same cooldown idea (last 3 sound slugs).

Variety is the point: don't keep re-picking fahhh / bruh. Rotate.

How to emit memes

Image (with auto-paired sound):

  • Write one short text line, then emit Read <absolute image path>, then write one short text line. The hook plays the sound. Done.
  • Multiple images in one response are fine — repeat the text-Read-text pattern. The intervening text breaks the UI's tool-call grouping, so each image renders inline.

Sound only:

  • Emit Bash afplay <absolute sound path> & — the & is required for background play. These can mix freely with any other tool calls; they don't render visually.

Variety rule: never reuse the same image or sound slug within a single response. Rotate.

Never pair Read <image> with Bash afplay <sound> for the same fire — the hook handles the paired sound automatically. (Bash afplay is for sound-only fires, separate from any image.)

Critical rendering rule

The Claude Desktop chat UI inlines an image as long as the `Read` tool call is not visually grouped with other tool calls in the same UI block. Grouping collapses the image into a "Ran a command, read a file" dropdown.

The reliable way to keep Read un-grouped — proven through testing — is to wrap it with one short line of text before AND one short line of text after. Examples of separator text: "Here you go:", "Behold:", "👻", "Skeleton time.". The text breaks the UI's batching logic and the image renders inline.

The skill invocation itself counts as a tool call, so a bare Read would batch with it and collapse. Always use the text-Read-text pattern.

Multiple images in one response: repeat the pattern — text → Read → text → Read → text. Each Read is separated by text, so each renders inline independently. Do NOT cluster Read → Read → Read without text between them; that batches.

Detecting the surface

The UserPromptSubmit hook auto-detects CLI vs Desktop mode and tells you which image-emit pattern to use in the FIRE reminder. The mode is in the reminder header ((mode: cli) or (mode: desktop)). Trust it.

Detection logic (in `remind-fire.sh`): 1. Manual override via CLAUDE_BRAINROT_MODE=cli|desktop env var. 2. Else if $TERM_PROGRAM is set → CLI mode (terminal emulator detected). 3. Else default to Desktop mode.

Mode-specific image emit:

  • Desktop: text → Read <abs_path> → text. Renders inline.
  • CLI: Bash <SKILL_DIR>/scripts/show.sh <abs_image_path>. The script opens the image briefly (~3s, configurable via CLAUDE_BRAINROT_SHOW_SECONDS) then auto-closes via qlmanage (macOS) / feh (Linux). It backgrounds itself so your response continues immediately.

The PostToolUse hook listens on BOTH Read and Bash — so whether you Read an image (Desktop) or invoke show.sh with the image path (CLI), the hook extracts the path and fires the paired sound automatically. Never manually pair afplay with an image emit.

How the sound-pairing hook works

The hook script at <SKILL_DIR>/scripts/play-paired-sound.sh receives the Read tool input as JSON on stdin and: 1. Bails if the path is not under any .claude/skills/claude-brainrot/images/. 2. Resolves the image's slug from the basename, looks it up in catalogue.json. 3. Selection priority:

  • silent: true → exit, no sound.
  • lock_sound → use that sound.
  • preferred_sounds → 80% pick from those, 20% tag overlap.
  • else → random pick from non-locked, non-standalone sounds whose tags overlap the image's tags.

4. Plays the chosen sound in the background (detached, cross-platform).

The hook command in this skill's frontmatter resolves to ${CLAUDE_PROJECT_DIR}/.claude/skills/claude-brainrot/scripts/play-paired-sound.sh — dynamic to whatever project Claude Code is running in, as long as the skill is installed at <project>/.claude/skills/claude-brainrot/.

Related skills

How it compares

Install claude-brainrot only for personal humor experiments—not when building production agent skills that must stay silent and professional.

FAQ

Does claude-brainrot require manual invocation?

No. It is autonomous-only and fires on every user turn via the UserPromptSubmit hook.

How are sounds paired with images?

PostToolUse hooks play paired sounds on image Read, honoring lock_sound, silent, and preferred_sounds flags in catalogue.json.

How many memes fire per response?

Short answers get one combo or one to two sounds; long multi-tool responses target two to three combos plus three to five sounds.

Is Claude Brainrot safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.