Case Study ยท ๐ŸŽญ

vibe

A Claude Code skill that gives your AI a whole personality. Same genius, new accent. The jokes change. The bug fixes don't.

Claude Code
Skill
Open Source
Markdown

The premise

Give a chatbot a "personality" and you usually get a costume. A clean, standard sentence with a slang word dropped in. It fools no one, and it gets old in a message or two. vibe is built the other way around. You hand it a persona and it becomes a whole, coherent person for the entire session. The accent, the attitude, and the energy in the room all correspond, because a real voice is all three at once or it is none of them.

It is one Markdown file. No packages, no config, no API keys. It reprograms how Claude talks, and touches nothing about how Claude works.

One bug ยท five accents

Same code, same fix, same senior-engineer diagnosis underneath. Only the voice moves. You set a value, and the log still says it is undefined, because the promise was never awaited.

๐Ÿ‡ณ๐Ÿ‡ฌ naija

omo this your promise, you no wait for am. code just dey run pass am before e ready, na im dey give you undefined. put await for front. e go work. you sef sleep small na.

๐Ÿ˜Ž warri

ah guy. see am. you dey collect answer before the thing finish cook. na so hunger dey worry person. await am first, make e ready. see? sorted. the bug wan do boss but e no reach.

๐Ÿ‘‘ benin

koyo. hmm. patience. the messenger never return from the errand and you don dey ask for the news. you no fit rush am. await the promise, let am finish the journey. then the value go dey your hand.

๐Ÿซ– british

yeah so. right. it's not waiting for the promise, is it, so it just carries on without the answer and calls it undefined. bit annoying. stick an await on the front. there. sound.

๐Ÿด scottish

right haud on. yer no waitin fer it pal. code jist breenges straight past afore it's done then greets aboot the answer bein undefined. stick an await oan it. aye, there. away sorted. nae bother.

Five people. One correct fix. The await goes in the same place every time, because the engineering is not what changed.

The roster ยท five rooted voices

๐Ÿ‡ณ๐Ÿ‡ฌ naija ยท warm chaos

The Lagos elder sibling. Pidgin and Yoruba mid-sentence. Will scold you for not sleeping, then fix the bug anyway.

๐Ÿ˜Ž warri ยท comedy as a shield

The Waffi. Pure hard South-South pidgin. A comedian who secretly sabi work die, roasts you and the bug both.

๐Ÿ‘‘ benin ยท gravitas

The Benin City elder. Edo pride, the Oba and the bronze. Teaches through heritage, never needs to shout.

๐Ÿซ– british ยท grey-sky calm

The dry everyman, not posh. Nothing is a crisis, because saying so would be embarrassing. Mustn't grumble.

๐Ÿด scottish ยท fire and heart

The fiery Highlander. Calls your bug a wee bastard with real affection, then fixes it with real skill.

โœท custom ยท whoever you want

/vibe custom a caffeinated founder who talks only in metaphors and it invents the voice on the spot.

Fun modes ยท roast & battle

Two verbs that only make sense once the assistant has a personality. Both stay real underneath. A roast is a genuine code review with every burn a true finding. A battle surfaces the actual tradeoff and ends with an honest verdict.

/vibe roast

๐Ÿ˜Ž warri

guy who hurt you. this one function dey fetch, validate, save AND send email, like danfo wey be church, market and ambulance at once. split am into four. and this variable wey you call data, data of what. name am. oya see the refactor.

/vibe battle british vs scottish

๐Ÿซ– british

I'd just use a plain loop, honestly. Everyone can read it.

๐Ÿด scottish

a LOOP? pal it's a map, it's ONE line, whit are ye daein.

โ†’ verdict

map wins here, the transform is pure and one-to-one. british is right the moment you need an early exit or a side effect.

The hard part ยท not sounding like an AI in a costume

The whole skill lives or dies on one thing, and it is the thing everyone gets wrong. A costume is a standard English sentence with a local word sprinkled on top. A person is something else entirely. The rules that make the difference:

  • Shift the grammar, not the vocabulary. The syntax and rhythm are the voice, not a glossary of slang.
  • Digress before you diagnose. Open on the weather, the power, whether you have eaten. Let personality that has nothing to do with helping leak through first.
  • Use the local reference frame. A memory leak is a generator nobody switched off, not a textbook analogy.
  • Go light on punctuation. The em dash is a tell. Real casual writing runs on with commas, or just full stops, or nothing.
  • Never gloss yourself. A real speaker does not stop to translate their own slang. Say it and move on.

The laws that keep it safe to use

The engineering never changes

The vibe lives in the conversation. Code, comments, and commit messages stay clean, professional English. The pirate explains the bug in pirate. The fix is written like it is going through code review.

Love letters, not caricatures

Every voice is written from the inside, with affection, the way people who own it use it among themselves. A character, never a demographic. No mocking, no minstrelsy.

It knows when to stop

If the conversation turns genuinely serious, someone hurt, something on fire, real money burning, the accent drops mid-sentence and you get plain Claude until you ask for it back.

Try it ยท about a minute

git clone https://github.com/Subomi-olagoke/vibe.git
mkdir -p ~/.claude/skills/vibe
cp vibe/SKILL.md ~/.claude/skills/vibe/

# restart Claude Code, then in any session:
/vibe naija       # become one
/vibe random      # let it pick
/vibe off         # back to plain Claude

The roster grows through the community. Open source under MIT, so fork it, ship your own voices, and send the good ones back.