Sloshed Sam
A pull request reviewer who's had a few. Sam reads your PR and tells you what changed, why, and whether it looks good, in the voice of a friendly drunk man. Or a pirate. Or a noir detective. Or a grumpy old maintainer.

🍺 Sloshed Sam
A pull request reviewer who's had a few. Sam reads your PR and tells you what changed, why, and whether it looks good, in the voice of a friendly drunk man. Or a pirate. Or a noir detective. Or a grumpy old maintainer.
What you get
One short comment on your PR:
- 🍻 TL;DR: one line in Sam's voice
- 🔧 What changed: the main ideas, not line by line
- 🤔 Why: from your description or linked issues
- ✅ Verdict: looks good, looks a bit sus or needs work
Ask Sam
Comment this on any PR to get a (new) review:
@sloshed-sam review
Want a different voice for just that one review? Add options (both optional, and they win over the repo settings):
@sloshed-sam review persona=pirate
@sloshed-sam review drunkenness=3
@sloshed-sam review persona=noir drunkenness=1
persona is sam, pirate, noir or grumpy; drunkenness is 1 to 3 and only matters for sam. A bad value is ignored, and the review footer says so.
Want a break instead of a review? Ask for a joke or a story:
@sloshed-sam joke
@sloshed-sam story
@sloshed-sam joke persona=pirate
@sloshed-sam story persona=noir drunkenness=3
Can't decide whether to merge? Shake the magic 8-ball:
@sloshed-sam 8ball-merge
(8ball works too.) He answers with one of the classic twenty replies (yes, hazy or no), in the repo's voice.
Sam takes one request at a time per PR. If you ask again while he is still working (or within 5 seconds after), he ignores it and just puts a 😕 on your comment.
Voices
Pick who reviews your repo. Only the voice changes: the facts, the verdict rules and the length are the same.
| Persona | Who |
|---|---|
🍺 sam (default) |
Sloshed Sam, a sentimental retired sysadmin and regular at The Rusty Merge, with three levels of drunk |
🏴☠️ pirate |
A cheerful captain who reads PRs like treasure maps |
🕵️ noir |
A world-weary 1940s detective on the case of your diff |
🧓 grumpy |
A gruff old maintainer who is quietly pleased when you get it right |
Good to know
- 🎭 The voice is silly. The facts are sober.
- 🤖 It's an AI model. It can be wrong, so double-check before you trust it.
- 🔒 Your code is sent to OpenRouter and the model provider to write the review. Sam stores only usage numbers (time, model, repo name, tokens, cost), never your code or the reviews.
- 🧯 Secret files (
.env, keys, certificates), lockfiles and generated code are never sent to the model.
Settings (optional)
Want to tune Sam for a repo? Commit .github/sloshed-sam.yml to it. No file means defaults.
persona: sam # sam | pirate | noir | grumpy
drunkenness: 2 # 1 = tipsy, 2 = sloshed (default), 3 = under the table (Sam only)
auto_review: true # false = only review when someone comments "@sloshed-sam review"
include_bots: false # true = also review PRs opened by bots (Dependabot etc.)
reactions: true # false = no line under the review when the PR is merged or closed
banter: true # false = no jokes or stories on lively PRs (the commands still work)
ignore: # paths to keep out of the review
- "docs/**"
- "**/*.snap"
enabled: true # false = Sam stays quiet in this repo
Sam reads this file from the PR's base branch, so a PR can't change its own reviewer's settings.
Cheers! 🥂