Back to browse
GitHub Repository

A linter for undocumented linter warnings.

3 starsRust

Shamefile – Enforce docs for linter bypasses

by BKDDFS·May 27, 2026·3 points·0 comments

AI Analysis

●●SolidCozySolve My Problem

Forces teams to document NOLINT suppressions before tech debt accumulates.

Strengths
  • Addresses real pain of undocumented linter bypasses accumulating silently
  • Supports five languages with language-specific suppression parsing
  • Written in Rust with full CI coverage and quality gates
Weaknesses
  • Niche tool only matters if your team already uses linters heavily
  • Requires team discipline to adopt and maintain the shamefile
Target Audience

Backend developers, engineering teams

Similar To

eslint · clippy · golangci-lint

Post Description

Recently, the creators of the Witcher games admitted that they regret not taking documentation seriously enough. As they work on the Witcher 1 remake, they are sometimes forced to reapproach old problems because the original reasoning was never properly recorded. A few veterans still remember the context, but some key decisions were made by people who left the studio years ago.

We all know the pain of undocumented decisions, so I built a meta-linter for linting other linters' warnings to fight my colleagues' laziness and my own (mostly). Maybe you just caught a lag from the number of lint words, but the idea is simple. Imagine a yaml file. Now add an entry to it:

- location: ./the-file.rs:93 n\ token: '// NOLINT' n\ why: 'the reason' n\

Do you know what this NOLINT is? You don't? It's a suppression that you added 2 years ago. You don't remember? That's why you need shamefile. :)

Whoever's fault it is. Yours or the linter's. It doesn't matter. Document it, make sure you understand the code, get a review of your new entry in shamefile.yaml and let CI verify it. With shamefile, your CI won't let any undocumented linter warning pass anymore. Instead of educating the business on why docs are important, you'll say: "quality tools won't let my code pass".

I've observed a noticeable difference in AI agents' behaviour. During the pre-commit phase, reasoning models can "rethink" adding a new shame entry and actually fix the code. Not so easy now Claude, huh?

This is an early-stage tool. We've been using it in prod for a month now with my team and I'm using it in all my 3 OSS projects. Looking for feedback and contributors (adding new languages = good first issue ;))

Repo: https://github.com/BKDDFS/shamefile

Similar Projects

Productivity●●Solid

EvoCat – a strict iOS app blocker with "cat"-based enforcement

Screen Time API workaround that actually prevents mid-session bypassing.

CozyNiche GemBig Brain
anzerarkin
202mo ago