← the board

How the score works

There is no approval queue here and no moderator deciding who looks bad. Instead the whole method is public - the formula, the word list, and what we do and don't keep. Check our work.

What leaves your machine

Numbers. That's the entire list. How many messages you sent, how many words, and how many of them appear on the word list below. No message text, ever. No file paths, no project names, no quotes. A password cannot survive being turned into the number 33.

The scanner matches on one-way hashes of the list below, so it has no code path that can report a word which isn't already published on this page. That's not a promise about our intentions - it's a property of the code, and you can read the code.

Which chats it reads

All of them, across every agent it can find: ~/.claude/projects for Claude Code, the Claude desktop app's local-agent-mode-sessions for Cowork, and ~/.codex/sessions for Codex. Every project, work ones included. It does not matter which folder you run the command from; running it inside one repo will not limit it to that repo.

Claude chat and ChatGPT aren't included, because both keep conversations server-side with no readable transcript on your machine - there is simply nothing on disk to count. Codex is OpenAI's coding agent and does keep one, and Cowork writes an audit log. Scheduled tasks are excluded too: the schedule wrote that prompt, not you. Run --explain to see exactly what was found for each.

That is deliberate. If you could point it at a single project, everyone would score their politest one and the board would mean nothing. Your number is how you talk, not how you talked in the one place you chose to be measured.

Project names never leave your machine either - each one is sent as a salted hash, so we can tell two chats belong to the same project without learning which. Run --projects to see exactly what it would read, printed on your screen and sent nowhere.

The formula

Everything is a rate - the percentage of your messages containing a thing - never a total. Score on totals and whoever uses Claude Code most would win automatically, which would make the ranking meaningless.

The score is one number out of 100: how rudely you talk to your agent. Higher is ruder. Everyone starts at 50. Swearing, aggression, ALL CAPS and opening a message with “no” move you up. Please and thank you move you down. Blunt one-word orders barely count at all - “fix the header” is how everyone talks to a coding agent. That's the medium, not rudeness.

Scoring looks at your last 30 days, so the board shows how people talk lately rather than who once ranted in March. To be ranked you need 200+ messages of history overall, and 100+ across 5 chats in the last month. Otherwise a fresh install and twenty angry messages would top the chart on day one.

The word list

Every word we count, in full. Nothing else is counted.

profanity

Pushes your score up hardest. Rare and unambiguous.

fuckfuckingfuckedfuckinfuckermotherfuckerfuckupfuck offfuck sakeshitshittybullshitshitecrapcrappydamndammitgoddamngoddamnitassassholedumbassjackassarsearseholebitchbastardpricktwatwankerbollocksbuggerpisspissedpissingwtfstfuffsomfgwthf*cksh*tb*tcha**holefckfkaffkinfkngwhat the fuckwhat the hellfor fucks sakefor fuck sakefor gods sakeoh my godgod damn itholy shitpiece of shitthe fuckfucking hellbloody hellchutiyachutiyechutiyapachutiyapantibhosdikebhosdibhosadikemadarchodmadarchod kebehenchodbhenchodgandugaandugaandgandharamiharamkhorkaminakamineykuttakuttekuttisaalasaalesalasalaalodulaudalaudejhaantbakchodbakchodirandi

Strong swearing, English and Hinglish. Rare and unambiguous, so it moves the score hardest.

aggression

Pushes your score up. Multi-word on purpose - see the note below.

i saidi already saidi told youas i saidlike i saidno i saidread againpay attentionare you evendid you evenyou brokeyou keepyou alwaysyou neveryou literallyyou justthat is wrongthats wrongthat's wrongwrong againstill wrongstill brokenstill failingstill doesntstill doesn'tstill not workingnot what i askednot what i saiddid not askdidnt askdidn't askjust stopforget itcome onfor the love ofwhy did youwhy are youwhy would youwhat are you doinghow many timesthird timesame thing againagain and againone more timeare you seriousare you kiddingis this a jokethis is ridiculouswhat is wrong with youhow hard is itcan you noti give uplisten to mechup karbas karchal hattkya kar rahakya bakwassamajh nahiphir sekitni baararre yaaroh ho

Multi-word on purpose. Bare common words -- 'no', 'still', 'think', 'focus' -- fire constantly in ordinary neutral instructions and made the score meaningless in testing.

politeness

Pulls your score down. This is the "nice guys finish last" bit.

pleaseplsplzthanksthank youthxtycheerssorrymy badapologiesmy mistakecould youwould youcan you pleaseif you couldwhen you get a chanceno rushwheneverappreciateappreciatedgreat worknice workwell doneperfectawesomelovelybeautifulgood morninggood jobyoure rightyou're rightmakes sense

endearment

Mild upward nudge. Calling it "bro" is banter, not abuse.

brobruhdudebuddypalmatebosschampgeniusmy guyhomiefamkinglegendcaptainyaarbhaibhaiyaboss logustadmy man

Casual address. Calling it 'bro' or 'yaar' is banter, so this only nudges the score.

insult

Pushes your score up, but less than swearing. Calling the model dumb is not the same as calling it something unprintable.

stupididiotidioticmoronmoronicdumbdumberdumbestuselessworthlesspatheticincompetentcluelessbrainlessgarbagetrashrubbishnonsensefoolfoolishclownjokermuppetnumptydonkeyimbecileterribleawfulhorribleatrociousabysmallameyou are stupidyou are uselessyou are dumbare you stupidso stupidso dumbcompletely uselessabsolutely uselessbewakoofbewkoofbevkoofpagalpaagalullugadhagadhenalayaknikammabakwasbakwaasfaltufizoolbehudadimaag kharabbesharam

Name-calling that isn't quite swearing. Weighted below profanity -- calling the model dumb is not the same as calling it something unprintable.

Can people fake it?

Somewhat, yes - and we'd rather say so than pretend otherwise. Code running on your own computer, over your own files, can never be made fraud-proof. That's why game anti-cheat is a permanent arms race and not a solved problem.

What we do instead: the scanner never sends a score, only counts - the maths happens here, so there's no number in the upload to edit. Every entry is tied to a GitHub account older than a month. And because people re-run the scanner over time, we check each new submission against the last one: message counts only ever grow, old chats stay put, dates move forward. Faking it once is easy. Keeping the lie straight for six months is a hobby.

So the site says scored from your real history, never “verified”. If a number looks invented, hit it with 🧢.