InstrProof
Regression testing for AI coding instructions.
InstrProof detects stale repository references in AGENTS.md, CLAUDE.md, and other AI coding instruction files.
- Path & Link Contracts — recognizes repository paths and local Markdown links backed by repository evidence.
- Package Script Contracts — recognizes referenced
npm,pnpm, andyarnscripts. - Regression Detection — catches BASE-valid instruction references that become stale after code changes.
- Deterministic CI Checks — uses repository evidence instead of LLM interpretation.
Why?
AI coding instructions depend on repository facts. After a refactor, those references can become stale even while application tests continue to pass.
src/auth/service.py
↓ refactor
src/auth/auth_service.py
Application tests ✓
AGENTS.md stale
InstrProof ✗
InstrProof turns these repository-backed references into regression-testable contracts.
Example
AGENTS.md:
Authentication logic is implemented in `src/auth/service.py`.
Before the refactor:
$ instrproof check
Found 1 verified instruction contract:
PathExists source=AGENTS.md:1 target=src/auth/service.py current=present
After moving the file without updating AGENTS.md:
$ instrproof diff --base demo-base --ci
InstrProof ✗
1 instruction contract regression
AGENTS.md:1
PathExists(src/auth/service.py)
After updating the instruction:
$ instrproof diff --base demo-base --ci
InstrProof ✓
1 baseline contracts checked.
No instruction contract regressions.
Run the complete scenario:
./scripts/run-demo.sh
The demo script requires uv and a Unix-like shell environment.
Usage
python -m pip install instrproof
instrproof check
instrproof explain AGENTS.md:1
instrproof diff --base origin/main
instrproof diff --base origin/main --ci --require-contracts
Python 3.12+ and Git are required.
GitHub Actions
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: python -m pip install instrproof
- run: instrproof diff --base origin/main --ci --require-contracts
License
Apache License 2.0
Metadata
Release files for instrproof 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 | |
|---|---|---|---|
| instrproof-0.1.0.tar.gz | 50.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| instrproof-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.0 kB
Release files / instrproof-0.1.0.tar.gz
| Download URL | instrproof-0.1.0.tar.gz |
|---|---|
| Size | 50.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d7830c005917678c68ba149abee3bfd8226e1cf1a39375ce0c6edacaad108dc6
|
|
BLAKE2b-256 checksum How to use checksums |
f318582d61643ac23b2ebcb3f177164f7b1e254e46602a5aea2b99185ba0d94d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / instrproof-0.1.0-py3-none-any.whl
| Download URL | instrproof-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6be043e3c6dc9f8c26ed55d837e1c547e1b9e6f6efc41533ab18551e39bf969
|
|
BLAKE2b-256 checksum How to use checksums |
a487bac4e5a85dc797d7df4ab88eb8ed912b573c127724706a44fd021eca5819
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|