Your code is shit. Here's why.
Project description
ShitLint 💩🔍
Your code is shit. Here's why.
ShitLint is the AI code reviewer that cuts through the fluff and calls out the architectural dumpster fires hiding in your codebase. Because sometimes, brutal honesty is what is needed, even when it hurts.
Why ShitLint Exists
Ever wonder why your "simple feature" took 3 weeks to implement? It's because your code is a tangled mess of:
- Copy-pasted functions everywhere (DRY? Never heard of it)
- 200+ line files of spaghetti bullshit
- Abstractions that abstract nothing
- Imports that look like some shat on your keyboard
Traditional linters catch typos. ShitLint catches architectural bullshit.
What ShitLint Actually Does
$ shitlint .
⏺ FLAGGED BULLSHIT:
🚨 DRY VIOLATION:
- user_service.py:45-67 and admin_service.py:12-34 are literally the same function
- Did you copy-paste this? Be honest.
🚨 GIANT FILE ALERT:
- database.py:847 lines - This isn't a file, it's a novel
- Split this monstrosity before it gains sentience
🚨 BULLSHIT ABSTRACTION:
- utils.py:23 - A function called "doStuff" that does 47 different things
- Name your functions like a human, not a caffeinated squirrel
🚨 IMPORT CEREMONY:
- 23 imports for a 15-line file
- This isn't dependency injection, it's dependency addiction
VERDICT: Your code looks like it was written during a earthquake
Installation
pip install shitlint
# or just clone this repo and suffer with the rest of us
Usage
# Scan current directory
shitlint .
# Scan specific file
shitlint path/to/your/disaster.py
# Extra brutal mode (not recommended for sensitive developers)
shitlint --brutality brutal ./src
# Professional roasting (default)
shitlint --brutality professional ./src
# Gentle nudging (for beginners)
shitlint --brutality gentle ./src
Configuration
Create a .shitlint/config.json file to customize how brutally honest you want the feedback:
{
"brutality": "brutal",
"ignore_patterns": ["tests/", "*.generated.py"],
"max_file_size": 100000,
"llm_provider": "auto"
}
Or use the init command:
shitlint --init
Language Support
- Python ✅ (your FastAPI spaghetti)
- JavaScript ⏳ (your React component soup - coming soon)
- TypeScript ⏳ (your over-engineered type gymnastics - coming soon)
- Go ⏳ (your "simple" microservice that imports 47 packages - coming soon)
- More languages coming (unfortunately)
FAQ
Q: Is this just a joke? A: No. Your code genuinely needs help.
Q: Why so aggressive? A: Because your linter has been lying to you. Someone has to tell the truth.
Q: Can I disable the roasting? A: You can, but then you're just running a regular linter. Where's the fun in that?
Q: Will this hurt my feelings? A: Probably. But your code will be better for it.
Contributing
Found a new way code can be terrible? We'd love to hear about it.
- Fork this repo
- Add your horror stories to the detection engine
- Submit a PR
- Watch other developers suffer
Roadmap
- JavaScript/TypeScript support (so you can be roasted in more languages)
- Integration with popular IDEs (so you can be roasted in real-time)
- Team dashboard (shame your colleagues publicly)
- AI-generated refactoring suggestions (because apparently you need help)
- Slack integration (get roasted in meetings)
- Custom personality modes (Gordon Ramsay, Disappointed Parent, etc.)
License
MIT - Because even terrible code deserves freedom
Remember: The first step to writing better code is admitting your current code is shit.
Built with ❤️ and a concerning amount of coffee by @iteebz
⭐ Star this repo if you're brave enough to face the truth about your 💩 code
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shitlint-0.1.0.tar.gz.
File metadata
- Download URL: shitlint-0.1.0.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a67eaef3d0f6196dea44ee670b8527b2c5080a041148c587d75a58a7d0c52a2f
|
|
| MD5 |
8a6d742209f02d09c8a31e807aa62edb
|
|
| BLAKE2b-256 |
c5274e0ce97151c726cf5439ad683ef1b0e58d64891c4695d8c14c99a5d7282a
|
File details
Details for the file shitlint-0.1.0-py3-none-any.whl.
File metadata
- Download URL: shitlint-0.1.0-py3-none-any.whl
- Upload date:
- Size: 35.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9469291c3364331be6e7b0c9b23ac81fb4a565d23eff4223f52dfcfc0def79e
|
|
| MD5 |
21cc82b0f4b2e01fe0f7b4eb96c5f123
|
|
| BLAKE2b-256 |
d48741d2e773330c78f340d4fae3751f4a0043ad18651febf6f23245fff5d9c5
|