ai-checkkit — AI-era Python lint bundle
Catch the silent footguns AI leaves behind: no-op stubs that ship as None, asserts that vanish under -O, builtin shadowing, mutable defaults.
Bundles 4 focused linters that previously shipped as stubcheck, assertcheck, shadowcheck, mutablecheck — now one pip install.
Why ai-checkkit?
| Footgun | What it catches | Why AI creates it |
|---|---|---|
| stubcheck | def handler(): pass / ... bodies that return None |
AI scaffolds callbacks/handlers with placeholders |
| assertcheck | assert <cond> for runtime validation |
LLMs copy test-style asserts into production |
| shadowcheck | def foo(list, id): shadowing builtins |
Autocomplete reuses builtin names as params |
| mutablecheck | def foo(x=[]) aliasing |
Classic Python gotcha amplified by generation |
All 4 are zero-dependency, pure-ast, <0.1s on 10k lines.
Install
Requires Python 3.9+.
pip install ai-checkkit
# or editable for dev
pip install -e .[dev]
Backward compat aliases still work: stubcheck, assertcheck, shadowcheck, mutablecheck point to the same bundle.
Quick start
# Run all 4 checks (default)
ai-checkkit
ai-checkkit all ./src --check --json
# Individual linters (same flags as standalone)
ai-checkkit stubcheck ./src --min-severity medium --include-test
ai-checkkit assertcheck ./src --min-severity high
ai-checkkit shadowcheck ./src --allow id,type
ai-checkkit mutablecheck ./src --allow __init__
# Legacy aliases
stubcheck ./src --check
assertcheck --json ./src
Python API
from ai_checkkit.stubcheck import detect as stub_detect
from ai_checkkit.assertcheck import detect as assert_detect
from ai_checkkit.shadowcheck import detect as shadow_detect
from ai_checkkit.mutablecheck import detect as mutable_detect
findings = stub_detect(open("app.py").read(), "app.py")
Comparison vs separate installs
| Before | After |
|---|---|
pip install stubcheck assertcheck shadowcheck mutablecheck (4 repos, 4 CIs) |
pip install ai-checkkit (1 repo, 1 CI) |
| 4 READMEs, 4 badges | 1 unified README + ai-checkkit all |
Development
pip install -e .[dev]
pytest -q --cov=ai_checkkit
License
MIT — see LICENSE.
Links
- Homepage: https://github.com/Rituparno-Majumdar/ai-checkkit
- Issues: https://github.com/Rituparno-Majumdar/ai-checkkit/issues
- Changelog: https://github.com/Rituparno-Majumdar/ai-checkkit/blob/main/CHANGELOG.md
test
Metadata
Release files for ai-checkkit 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ai_checkkit-0.1.3.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ai_checkkit-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.6 kB
Release files / ai_checkkit-0.1.3.tar.gz
| Download URL | ai_checkkit-0.1.3.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d539a5549011748143fb50b49cf207c7f00569f71657eee32f28b9c0af46a4a
|
|
BLAKE2b-256 checksum How to use checksums |
8d11700c991ee63d42a341806ab67d48241536015cfad437896af1061c37131c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ai_checkkit-0.1.3-py3-none-any.whl
| Download URL | ai_checkkit-0.1.3-py3-none-any.whl |
|---|---|
| Size | 16.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8078d7c7def13650d915220f7165b42ba1fc1420412ca2031450f60fad126607
|
|
BLAKE2b-256 checksum How to use checksums |
8584b341b077ddf09bb510c01bc4c845b1ecd49c5532c3ec7925d776e4cd0cd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|