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.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 | |
|---|---|---|---|
| ai_checkkit-0.1.1.tar.gz | 15.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ai_checkkit-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.6 kB
Release files / ai_checkkit-0.1.1.tar.gz
| Download URL | ai_checkkit-0.1.1.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb9294025fac77a1e9f755b894af1b2f3c499ac4a10d6005771a20fb0de4451b
|
|
BLAKE2b-256 checksum How to use checksums |
740592829adeff20657f449fe32660608ea27e4b4c3b65066691d24a6c808dbd
|
| 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.1-py3-none-any.whl
| Download URL | ai_checkkit-0.1.1-py3-none-any.whl |
|---|---|
| Size | 16.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2488c184e87d7c431bf35453fc612c762b2b7bc7a8b1d5f281655f41e8ca7ef7
|
|
BLAKE2b-256 checksum How to use checksums |
97da05a157cbdd6865f2fd69bad73a1481ae1c658503795f73ba8b55fe6f3015
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|