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
Metadata
Release files for ai-checkkit 0.1.0
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.0.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ai_checkkit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.3 kB
Release files / ai_checkkit-0.1.0.tar.gz
| Download URL | ai_checkkit-0.1.0.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f477359e04c223d4d5372c03f483dd07f2c9e40c3aff82bb1faf3b3089fab733
|
|
BLAKE2b-256 checksum How to use checksums |
90545f345bd28d4ece9861864a2b8e30ad72ffaf8c8d9131f238951acc2a4ad2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / ai_checkkit-0.1.0-py3-none-any.whl
| Download URL | ai_checkkit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
82c7879c7a0bb5902ac19598d0614bb056b93fb26396e77b138866e5db7463fb
|
|
BLAKE2b-256 checksum How to use checksums |
8aa8e44374208f2f2383c2eb1e01caa7061bfea548f1c0e98d62a934fe2d5ee3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|