Skip to main content

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.

License Python Status

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.

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)

Source distribution for ai-checkkit 0.1.0
File Size Uploaded
ai_checkkit-0.1.0.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-checkkit 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.1.3

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page