Local CLI plotting AI spend against engineering throughput
Project description
AI Eng Audit
Shows whether your AI spend is turning into shipped work, and whether your engineering system can safely absorb more AI-generated code. Local, open-source, two commands.
What it is
Over the last year a lot of teams burned real money on Claude, Cursor, Copilot, and the rest. The invoices are clear; the output is not.
ai-eng-audit scan reads your local git history, PR data, and (optionally) the billing CSV you export from your AI vendor, putting spend and shipped output on the same timeline. You see:
- total AI spend over the window, broken out by month
- PRs merged to the default branch and the L1 ship rate
- PRs opened and then closed, merged and then reverted, or open for too long
ai-eng-audit readiness doesn't touch billing — it just checks whether your repo has the shared context an agent needs to participate (CI, tests, CODEOWNERS, PR template, etc.). PC analogy: a single PC's ROI was invisible until LANs spread; agents are the same — one engineer getting faster doesn't equal team output going up. The real "AI LAN" is a repo with enough shared infrastructure for agents to work reliably. This command tells you whether yours qualifies.
How to use it
export GITHUB_TOKEN=ghp_xxxxx
pip install ai-eng-audit
# audit: AI spend vs throughput
ai-eng-audit scan --repo /path/to/your/repo --window 90d --annotate --risk \
--billing ~/Downloads/anthropic_cost.csv \
--billing ~/Downloads/openrouter_activity.csv
# readiness: agent-collaboration infrastructure checklist
ai-eng-audit readiness --repo /path/to/your/repo
Python 3.11+. Generate a GITHUB_TOKEN PAT at https://github.com/settings/tokens with repo scope.
Add --lang zh for Chinese narrative; section labels, metric names, and technical terms (PR, L1, scope_alignment, etc.) stay English in both locales.
--billing can be repeated. Currently supports the Anthropic Console cost export and the OpenRouter Activity export (auto-detected by header). Omit --billing to get the git + PR report only.
--annotate appends a notable contrasts: block with a few derived observations (in-window flow, contributor concentration, merge throughput, spend pairing) computed strictly from numbers already in the report. No external benchmarks, no healthy/unhealthy labels.
--risk appends a maintainability risk signals: block with three patterns: file churn hotspot (files touched the most in the window), post-merge fix burst (commits within 7 days of merge touching the PR's files), and revert rate by month. Reads commit file paths only, never file content; no score, no healthy/unhealthy verdict.
Add --format json for JSON output. Metric definitions, supported vendors, scope-alignment rules, annotation / risk algorithms, and readiness rules are all in docs/methodology.en.md.
What the scan report looks like
A run looks roughly like this (numbers are synthetic):
ai-eng-audit / your-repo / 2026-02-26 → 2026-05-27 (90d)
10 authors opened 187 PRs over 90d. 142 reached `main` (75.9% of scanned, 84.0%
of resolved). 27 closed without merging. 18 still in flight — 4 open > 30d.
Explicit revert <14d: 2. Org-level AI spend $4,231.50 (anthropic, openrouter);
throughput is repo-level (scope mismatch).
spend:
2026-03: $1,124.00
2026-04: $1,572.30
2026-05: $1,535.20
total: $4,231.50 (anthropic $1,387.10; openrouter $2,844.40)
scope_alignment: mismatch
sources: anthropic_cost.csv, openrouter_activity.csv
throughput:
PRs opened: 187
PRs merged (L1 proxy): 142 (75.9% scanned / 84.0% resolved)
PRs closed w/o merge: 27
PRs in flight: 18
commits to main: 312
unique authors: 10
top-5 commit share: 72.3% (names withheld by design)
friction:
abandoned: 27 (14.4% of opened)
long-lived open > 30d: 4
explicit revert < 14d: 2
commits by ISO week:
2026-W09 18
2026-W10 25
2026-W11 32
2026-W12 29
2026-W13 21
2026-W14 18
2026-W15 24
2026-W16 31
2026-W17 28
2026-W18 35
2026-W19 26
2026-W20 19
2026-W21 6
notable contrasts:
• in-window flow: +5 net (165 PRs created in window, 160 PRs closed in window; distinct from 'PRs opened' above, which counts any window-overlapping PR)
• top-5 of 10 authors produced 72.3% of commits (50% of authors → ~72% of work)
• merge throughput: 142 merged over 90d ≈ 1.58 PRs/day
• AI spend $4,231.50 vs 142 merged PRs (per-PR cost not computed: scope_alignment = mismatch)
—
methodology v1.0. definitions in docs/methodology.md.
workflow signals only; not personnel evaluation. Tier 2 per-PR AI attribution arrives in later versions.
What the readiness checklist looks like
Run on addyosmani/agent-skills (real public OSS):
ai-eng-audit / agent-skills / readiness checklist
CI / testing:
✓ CI workflow (.github/workflows/)
✗ tests directory
✗ lint / formatter config
documentation:
✓ README (README.md)
✓ CONTRIBUTING guide (CONTRIBUTING.md)
✓ LICENSE (LICENSE)
collaboration flow:
✗ CODEOWNERS
✗ PR template
config / security:
✓ .gitignore (.gitignore)
✗ .env example
—
this is a presence checklist, not a score. agents work more reliably in repos
with shared context (CI, tests, ownership, docs); missing items don't block AI
usage but do make AI output harder to review, test, and recover from.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_eng_audit-1.2.0.tar.gz.
File metadata
- Download URL: ai_eng_audit-1.2.0.tar.gz
- Upload date:
- Size: 38.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee7a68ee8e4a221c2695d01ef8079f6be86bfafae3bda085435afa72e8108a1a
|
|
| MD5 |
6ce7b9b115f35b95ce5d3386b9a251b3
|
|
| BLAKE2b-256 |
54c5a71cad80c71c9db2aa085d5fc1eba53498e90151edbf81714da2e90a5ab4
|
File details
Details for the file ai_eng_audit-1.2.0-py3-none-any.whl.
File metadata
- Download URL: ai_eng_audit-1.2.0-py3-none-any.whl
- Upload date:
- Size: 32.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f648a0227af454492ef1d76eeca7651126ecf44a426a799a7a3ab7de025e1d1b
|
|
| MD5 |
0d0a0c249cb61e6a2f5554015097c202
|
|
| BLAKE2b-256 |
4a48ea0f33ba64bc5b7a97e5aef31ee63f0b6907c4cb34737c435a5463450499
|