By slabgorb
Bind characters from 45 themes (Breaking Bad, Discworld, Star Trek, ...) to your Claude Code slash commands
Bind a character to a slash command. Usage: /zg-bind <command> <theme> <character>
List all Zeitgoose bindings (project + global).
Interactively pick a character for a slash command. Usage: /zg-pick <command>
Remove a character binding. Usage: /zg-unbind <command>
Switch the active persona for a slash command. Usage: /zg-use <character> <command>
A Claude Code plugin: bind a personality to your slash commands.
When you invoke a slash command (yours, or any plugin's), Zeitgoose injects a character persona into Claude's context. The first time you call an unbound command, you're asked to pick a theme and character. After that, the persona sticks for the conversation, auto-swapping when a different bound command activates.
45 themes ship in the box: Breaking Bad, Discworld, Star Trek TNG, Dune, The Wire, Sherlock Holmes, Greek/Norse mythology, Jane Austen, Shakespeare, Game of Thrones, and 35 more. Each character carries OCEAN (Big Five) scores, style, role, trait, quirks, and catchphrases — extracted from the Penny Farthing personality research project.
# Symlink the plugin into Claude Code's plugin directory.
ln -s /path/to/zeitgoose ~/.claude/plugins/zeitgoose
# Or clone directly into it:
git clone https://github.com/slabgorb/zeitgoose ~/.claude/plugins/zeitgoose
Restart Claude Code. The UserPromptSubmit hook is now active, and the
/zg-* commands are available.
/brainstorming let's add caching
↳ first time: Zeitgoose asks you to pick a theme + character.
Pick "Breaking Bad" → "Mike Ehrmantraut" → bound.
/brainstorming next feature
↳ Mike still has the wheel.
/code-review look over PR 42
↳ first time: prompts again. Pick a different character.
Active persona auto-swaps to the new one.
/zg-list # show all bindings
/zg-who # who's currently driving?
/zg-unbind /foo # remove a binding
/zg-use sherlock-holmes /brainstorming # one-off override
/zg-pick /foo # interactively bind a command
A UserPromptSubmit hook fires on every turn:
/cmd, looks up a binding (project .claude/zeitgoose/bindings.json,
then global ~/.claude/zeitgoose/bindings.json).<zeitgoose-persona> block as additional context.The hook is read-only. All mutations go through the /zg-* commands.
| Path | Purpose |
|---|---|
<project>/.claude/zeitgoose/bindings.json | per-project bindings (override global) |
~/.claude/zeitgoose/bindings.json | global bindings |
${ZEITGOOSE_LOG} (env, optional) | JSONL audit log of every hook decision |
/cmd of each user message. Multiple commands
in one message: only the first counts./zg-* commands themselves are never personalized./superpowers:brainstorming) bind separately
from bare commands (/brainstorming) — they're different keys.Plugin code: Apache-2.0. See LICENSE.
Theme content: see LICENSE-THEMES.md.
/zg-create-theme)Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Role-bounded slash commands (TEA, Dev, Reviewer, Architect, PM, Tech Writer) with per-role persistent sidecar memory. Companion to superpowers and zeitgoose.
npx claudepluginhub slabgorb/zeitgooseMulti-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Easily create hooks to prevent unwanted behaviors by analyzing conversation patterns