Case Study ยท ๐ญ
A Claude Code skill that gives your AI a whole personality. Same genius, new accent. The jokes change. The bug fixes don't.
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.
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.
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.
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.
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.
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.
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.
๐ณ๐ฌ 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.
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
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
I'd just use a plain loop, honestly. Everyone can read it.
a LOOP? pal it's a map, it's ONE line, whit are ye daein.
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 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:
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.
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.