claude-bingo
A 5×5 bingo board of LLM verbal tics, scored against your own Claude Code transcripts.
B I N G O
┌───────────────┬───────────────┬───────────────┬───────────────┬───────────────┐
│ │ │ │ I'll go ahead │ │
│ Happy to │ leverage │ footgun │ and │ nuanced │
│ ×5 │ ×53 │ ×1 │ — │ ×16 │
├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ │ Great │ │ │ │
│ load-bearing │ question! │ escape hatch │ sit with │ idiomatic │
│ ×413 │ ×2 │ ×15 │ — │ ×6 │
├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Let me be │ │ │ Let me know │ │
│ direct │ crucially │ FREE │ if │ blast radius │
│ — │ ×78 │ SPACE │ — │ ×7 │
├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ │ │ │ Would you │ You're │
│ happy path │ surface area │ meaningful │ like me to │ absolutely │
│ — │ ×1 │ ×136 │ — │ correct │
├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ │ │ The key │ single source │ │
│ To be clear │ comprehensive │ insight │ of truth │ robust │
│ ×3 │ ×23 │ ×10 │ ×1 │ ×23 │
└───────────────┴───────────────┴───────────────┴───────────────┴───────────────┘
BINGO! row 5, col I, col N
18/25 squares · 793 utterances · 3,027 transcripts
── worst offenders ────────────────────────────────────────
413 load-bearing
…nothing I touched there was load-bearing.
136 meaningful
…no meaningful difference between the two paths.
78 crucially
…and, crucially, it never reaches the network.
Everything runs locally. It reads ~/.claude/projects/**/*.jsonl and prints to
your terminal. There are no network calls and no dependencies beyond the Python
standard library.
Install
Pick whichever of these you'll actually remember. All three end up running the same code.
Try it without installing anything
uvx claude-bingo board
uvx claude-bingo score
As an agent plugin
Then just ask your agent to play bingo. Two marketplaces carry it — use either.
From Lyra Forge, alongside its sibling plugins:
# Claude Code
/plugin marketplace add lyra-forge/marketplace
/plugin install claude-bingo@lyra-forge
# Codex
codex plugin marketplace add lyra-forge/marketplace
codex plugin add claude-bingo@lyra-forge
Or straight from this repository, which ships its own one-entry catalog:
# Claude Code
/plugin marketplace add lavallee/claude-bingo
/plugin install claude-bingo@claude-bingo
# Codex
codex plugin marketplace add lavallee/claude-bingo
codex plugin add claude-bingo@claude-bingo
Start a new session afterwards. Then ask for a bingo board in plain English, or
invoke the skill directly — /claude-bingo:bingo in Claude Code,
$claude-bingo:bingo in Codex.
The plugin needs no install step of its own: it runs the bundled package from
the plugin directory using whatever python3 you already have. The Codex plugin
scores your Claude Code transcripts on the same machine, which is the joke.
As a CLI you keep around
pipx install claude-bingo # or: uv tool install claude-bingo
From source
git clone https://github.com/lavallee/claude-bingo
cd claude-bingo
./scripts/claude-bingo board
Every path needs Python 3.11+ (for tomllib) and nothing else. Stock macOS
ships 3.9 — if that's what you have, uvx claude-bingo sidesteps it entirely.
Use
claude-bingo board # generate a fresh board
claude-bingo board --size 3 # smaller, for a quick round
claude-bingo board --seed 12345 # reproduce a specific board
claude-bingo score # score it against the last 7 days
claude-bingo score --days 30 # ...or however far back you dare look
claude-bingo score --no-quotes # skip the receipts
claude-bingo score --top 5 # a shorter walk of shame
claude-bingo phrases # list the phrase bank
The board is saved to $XDG_DATA_HOME/claude-bingo/board.json (default
~/.local/share/claude-bingo/board.json), so score picks up whatever you last
generated.
A given --seed reproduces a given board only for a given phrase bank — add
phrases and the same seed deals a different hand.
The phrase bank
65 phrases across 9 categories, in
claude_bingo/phrases.toml. Each entry is a board
label and the regex that hunts for it:
[linkedin-brain]
"delve" = "\\bdelv(?:e|es|ing)\\b"
"tapestry" = "\\btapestry\\b"
Patterns are matched case-insensitively and in multiline mode, so ^ anchors to
the start of any line.
Add your own without touching the package in
~/.config/claude-bingo/phrases.toml — same format. A label that collides with
a bundled one overrides its pattern.
Contributing
PRs to the phrase bank are the point of this repo. Add to an existing category or start a new one. Two things make a good entry:
- The label reads at a glance. It lands in a 13-column cell.
- The regex is specific enough to mean something.
\bjust\bwill match everything and tell you nothing;you'?re absolutely rightearns its square.
Run claude-bingo phrases to check yours loaded, and claude-bingo score to
see whether it actually catches anything.
Layout
The repository is one Python package plus the manifests each harness looks for:
claude_bingo/ the package — CLI, phrase loader, phrases.toml
scripts/claude-bingo launcher the plugin runs; no install needed
skills/bingo/SKILL.md the skill both harnesses load
.claude-plugin/plugin.json Claude Code plugin manifest
.claude-plugin/marketplace.json this repo as a one-entry Claude Code catalog
.codex-plugin/plugin.json Codex plugin manifest
.agents/plugins/marketplace.json this repo as a one-entry Codex catalog
Releasing
The version lives in four places — pyproject.toml,
claude_bingo/__init__.py, and both plugin.json files. tests/ fails if they
drift, so bump them together, then:
python3 -m unittest discover tests
claude plugin validate . --strict
Tag and publish a GitHub release; CI builds the wheel and pushes it to PyPI via trusted publishing. Plugin installs resolve from the default branch, so they pick the change up as soon as it's pushed — no marketplace edit is needed unless the entry itself changes.
License
MIT
Metadata
Release files for claude-bingo 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| claude_bingo-0.2.1.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claude_bingo-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.8 kB
Release files / claude_bingo-0.2.1.tar.gz
| Download URL | claude_bingo-0.2.1.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
184277c62160b006ca82176ea6abe0c43992f870e47d25bd2c8018c015c530ae
|
|
BLAKE2b-256 checksum How to use checksums |
4a340536ae2eb42408f854f7e0f201c3c9c4f855ed7b4fe0cdc0e24887eca385
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / claude_bingo-0.2.1-py3-none-any.whl
| Download URL | claude_bingo-0.2.1-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d3a559c8731a5616f77fc7adf018f494ccf66814eb44c4febb2f6b93a478ae9c
|
|
BLAKE2b-256 checksum How to use checksums |
9a03fa3c24f916fb7803d2a9d39dc12a216e3edcb3883957a898eae96e51f38d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log