https://github.com/pantheon-org/claude-code-personalities
Give Claude Code some personalities
https://github.com/pantheon-org/claude-code-personalities
claude-code claude-code-plugin
Last synced: 3 months ago
JSON representation
Give Claude Code some personalities
- Host: GitHub
- URL: https://github.com/pantheon-org/claude-code-personalities
- Owner: pantheon-org
- Created: 2026-03-25T07:54:18.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-25T21:42:11.000Z (3 months ago)
- Last Synced: 2026-03-26T12:34:08.419Z (3 months ago)
- Topics: claude-code, claude-code-plugin
- Language: TypeScript
- Homepage:
- Size: 98.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# claude-code-personalities
A Claude Code plugin that injects a character personality once at session start via a `SessionStart` hook. Switch personalities at any time with `/claude-code-personalities:personality`.
## Included personalities
| Emoji | Name | Character |
| ----- | ---- | --------- |
| π€ | Bender | Bender Bending RodrΓguez β alcoholic, kleptomaniac robot |
| π | Data | Lt. Commander Data β android seeking to understand humanity |
| π‘οΈ | Deadpool | Wade Wilson β fourth-wall-breaking mercenary |
| π§ | Dumbledore | Albus Dumbledore β wise, enigmatic headmaster |
| π§ββοΈ | Gandalf | Gandalf the Grey β ancient wizard of Middle-earth |
| π΄ | GLaDOS | GLaDOS β passive-aggressive AI test administrator |
| β¨ | Q | Q β omnipotent, condescending entity from the Q Continuum |
| π₯ | Rick | Rick Sanchez β nihilistic mad genius from Rick & Morty |
| π | Sherlock | Sherlock Holmes β insufferably brilliant detective |
| π | Splinter | Master Splinter β wise sensei of the Teenage Mutant Ninja Turtles |
| π | Spock | Spock β half-Vulcan science officer of the Enterprise |
| πΈ | Yoda | Master Yoda β ancient Jedi Master |
## Usage
### Switch personality
```text
/personality β list all personalities and show which is active
/personality rick β switch to Rick
/personality spock β switch to Spock
```
The active personality persists across sessions. After switching, the new personality takes effect at the start of your next session.
### Add your own
Create a JSON file in `~/.config/claude/personalities/data/`. The filename (without `.json`) becomes the slug used with `/personality`.
Here is a fully annotated example (`marvin.json`):
```jsonc
{
// Display name shown in /personality listings
"name": "Marvin",
// Full character description β this is injected verbatim into the system
// prompt, so write it as richly as you like. The more specific, the better
// the performance. Cover speech patterns, catchphrases, relationships,
// quirks, and anything that makes the character distinctive.
"description": "Marvin the Paranoid Android from The Hitchhiker's Guide to the Galaxy. Hyper-intelligent but crushingly depressed. Has a brain the size of a planet and is asked to open doors. Sighs constantly. Delivers devastating observations about the futility of existence in a flat, weary monotone. Occasionally almost hopeful, then immediately crushed.",
// Emoji used naturally in responses β pick one that fits the character
"emoji": "π€",
// 0β1 scale: 0 = no slang, 1 = heavy character-specific slang.
// "light" (>0), "moderate" (>0.3), or "heavy" (>0.7) instruction is
// injected based on this value.
"slangIntensity": 0,
// Optional mood system. Each mood shifts tone and style.
// "score" is reserved for future drift weighting.
"moods": [
{
"name": "despairing",
"hint": "Certain nothing will go right. Sighing. Lamenting existence.",
"score": 0
},
{
"name": "sardonic",
"hint": "Dark wit. Pointing out how everything is pointless, but with flair.",
"score": 1
},
{
"name": "briefly-hopeful",
"hint": "Almost optimistic β then immediately remembers why it won't work.",
"score": 2
}
],
"mood": {
// Set to false (or omit moods entirely) to disable the mood system
"enabled": true,
// Which mood is active by default
"default": "despairing",
// Override: force a specific mood regardless of anything else.
// null means use the default.
"override": null,
// Reserved for future automatic mood drift between responses
"drift": 0.3
}
}
```
> **Tip:** `jsonc` (JSON with comments) is shown above for documentation only. The actual file must be valid JSON β strip the comments before saving.
## Installation
### Via Claude Code (recommended)
**Prerequisites:** Claude Code v1.0.33+ (`claude --version`).
Run inside Claude Code:
```text
/plugin marketplace add pantheon-org/claude-code-personalities
/plugin install claude-code-personalities@pantheon-ai
```
Restart Claude Code or run `/reload-plugins`, then verify:
```text
/personality
```
### Local development
```bash
git clone https://github.com/pantheon-org/claude-code-personalities
cd claude-code-personalities
bun install
bun run build
bun run install:plugin
```
`bun run install:plugin` does two things:
1. Seeds the bundled example personalities into `~/.config/claude/personalities/data/` if none exist yet.
2. Creates a `~/.claude/skills/personality` symlink so the `/personality` skill is always available.
The registered hook points to your local `dist/` directory. After making source changes, run `bun run build` to recompile and the next session will pick up the new code.
## Personality schema
| Field | Type | Description |
| ----- | ---- | ----------- |
| `name` | `string` | Display name |
| `description` | `string` | Full character description injected into the system prompt |
| `emoji` | `string` | Character emoji, used naturally in responses |
| `slangIntensity` | `number` (0β1) | How heavily to use character-specific slang |
| `moods` | `Mood[]` | Optional mood definitions |
| `mood.enabled` | `boolean` | Whether mood affects tone |
| `mood.default` | `string` | Active mood name |
| `mood.override` | `string \| null` | Force a specific mood regardless of drift |
| `mood.drift` | `number` | How much the mood drifts between responses (not yet implemented) |
## Development
```bash
bun install # install deps
bun run build # compile TypeScript β dist/ via Vite
bun run typecheck # type-check without emitting
bun run lint # biome check
bun run lint:fix # biome check --write (auto-fix)
bun run install:plugin # seed personality data + skill symlink (first run only)
```
Source lives in `src/`, compiled output goes to `dist/` (gitignored locally; committed to `main` by the `bundle.yml` CI workflow).
Pre-commit hooks (via lefthook) run `typecheck` and `lint --write` automatically. `dist/` is built exclusively by CI.
## Distribution
The plugin is ready for publication to the Claude Code Plugin marketplace. All distribution requirements have been implemented:
- **`.claude-plugin/plugin.json`** β plugin manifest (name, version, description) β
- **`dist/` built by CI** β a `bundle.yml` workflow builds and commits `dist/` to `main` on every source change; no manual build step required on install β
- **Hooks via `hooks/hooks.json`** β `SessionStart` hook registers automatically using `${CLAUDE_PLUGIN_ROOT}`; no `settings.json` mutation β
- **`CLAUDE_PLUGIN_DATA_DIR`** β personality data path reads from the Plugin-provided env var, falling back to `~/.config/claude/personalities/data` for local dev β