SLOPSHOPPER

speaker-colours

Herman's Claude Code mod: blue speaker bar for user messages, orange for Claude replies (more features to come)

newrows
★ 2v0.1.0no licenseupdated 2026-10-05herman925/925-cc-plugins/speaker-colours
A shopper browsing a rack in a slop shop
Preview · a replayed session in a sandbox
claude · ~/work/app · speaker-colours
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │❯ 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 ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │⟨Claude Code's own drawing⟩ │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ✻ Worked for 42s · done 4:20 PM ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › ? for shortcuts

Draws

Your message
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ │❯ fix the failing auth test and add an audit log call │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘
Claude's reply
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ │⟨Claude Code's own drawing⟩ │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘
README

925-cc-plugins

Herman's Claude Code mods. One marketplace (herman-mods), one folder per mod.

ModWhat it doesVersion
speaker-coloursSpeaker colours: a blue bar for your messages, orange for Claude's replies.0.1.0
team-orchestratorRuns a team of Claude Code sessions as Orca tabs, managed from a panel above the prompt: quick starts, a team form, a live roster (stacked, side by side or docked) and an org chart. Members start on their first message, close when idle and reopen when a message arrives; each has a role file. A guard keeps members from starting subagents, and members with reports from writing files, unless you allow it. Works on Windows, macOS and Linux (see the mod's README).0.5.18
clean-viewHides tool calls and shows a calm step checklist above the prompt, with a Hide details / Show details button (`/simple on\off`).0.1.0

Install

  1. Add the marketplace: claude plugin marketplace add herman925/925-cc-plugins
  2. Install a mod: claude plugin install team-orchestrator@herman-mods --scope user
  3. Run /reload-plugins in a session that is already open.

Add a mod

  1. Make a folder with .claude-plugin/plugin.json and hooks/hooks.json (and hooks/register.tsx).
  2. Add it to .claude-plugin/marketplace.json.
  3. Check it: claude plugin validate <folder> and claude plugin test <folder>.
Source 1 files
hooks/register.tsx 40 lines
1import type { Register } from 'claude-code'
2
3// Bar colours and the faint wash behind each speaker. Change these to taste.
4const USER_COLOR = '#8FC1FF' // light blue
5const USER_TINT = '#27384F'
6const CLAUDE_COLOR = '#FFA38F' // light orange / salmon
7const CLAUDE_TINT = '#4A2F27'
8
9export const register: Register = on => {
10  // Your prompts: the engine paints its own grey strip behind the text, which
11  // fights the tint. Typed prompts are plain text, so draw them ourselves in the
12  // default colour (no colour prop) inside the light-blue bar and tint. Anything
13  // else (task notices, peer messages) keeps the engine's drawing.
14  on('ui.render', { component: 'UserMessage' }, async ($, e, next) => {
15    if (e.props.origin.kind !== 'composer') {
16      return next(e)
17    }
18
19    const { Box, Text } = $.ui.resolve(e)
20
21    return (
22      <Box borderStyle="quote" borderColor={USER_COLOR} backgroundColor={USER_TINT}>
23        <Text>{'❯ ' + e.props.text}</Text>
24      </Box>
25    )
26  })
27
28  // Claude's replies: same, in orange.
29  on('ui.render', { component: 'AssistantMessage' }, async ($, e, next) => {
30    const theirs = await next(e)
31    const { Box } = $.ui.resolve(e)
32
33    return (
34      <Box borderStyle="quote" borderColor={CLAUDE_COLOR} backgroundColor={CLAUDE_TINT}>
35        {theirs}
36      </Box>
37    )
38  })
39}
40