Git forensics tool for analyzing AI-authored code quality
Project description
CodeAssay
Git forensics tool for analyzing AI-authored code quality. Detects AI-generated commits, identifies rework, classifies root causes, and generates quality reports.
Install
pip install codeassay
Quick Start
# Scan a repository
codeassay scan /path/to/repo
# View a report
codeassay report
# Scan multiple repos with combined output
codeassay scan ../repo1 ../repo2 ../repo3
Commands
| Command | Purpose |
|---|---|
codeassay scan <paths> |
Scan repos for AI commits and rework |
codeassay report |
Generate quality report (CLI or markdown) |
codeassay commits |
List AI-authored commits |
codeassay rework |
List rework events with classification |
codeassay reclassify <commit> <category> |
Override a classification |
codeassay export --format json |
Export raw data |
codeassay dashboard |
Open interactive HTML dashboard in browser |
How It Works
AI Commit Detection identifies AI-authored commits via:
Co-Authored-Bytrailers (Claude, Copilot, GPT)- Branch naming patterns (Superpowers worktrees)
- Manual
AI-Assisted: truetrailers
Rework Detection traces subsequent commits that modify AI-authored lines using git blame ancestry within a configurable time window (default: 14 days).
Classification categorizes rework into 7 types using commit message keywords and diff shape analysis:
- Bug fix, Misunderstanding, Test failure, Style/convention violation
- Security issue, Incomplete implementation, Over-engineering
Dashboard
Generate an interactive HTML dashboard with charts and visualizations:
codeassay dashboard
Opens a self-contained HTML file in your browser with:
- Summary metric cards (AI commit rate, first-pass success, rework rate, MTTR)
- Rework category doughnut chart with percentages
- Monthly trend line chart (AI commits vs rework events)
- Top rework file hotspots
- Rework by AI tool comparison
The dashboard works offline, requires no server, and is shareable — copy the HTML file to screenshot or embed in publications. Use --no-open to generate without opening the browser, or --output path.html to save to a custom location.
Ignoring Files
Create a .codeassayignore file in your repo root to exclude files from analysis. Uses gitignore-style patterns:
# Exclude documentation and config noise
*.md
.DS_Store
.organization
# Exclude a directory (one level)
docs/*
# Exclude a directory (recursive)
docs/**
Ignored files are filtered from both AI commit tracking and rework detection, giving you cleaner metrics focused on actual code quality.
Data Storage
Scan data is stored in .codeassay/quality.db (SQLite) inside each scanned repo. Query it directly with any SQL tool:
sqlite3 .codeassay/quality.db "SELECT tool, COUNT(*) FROM ai_commits GROUP BY tool"
Claude Code Plugin
Install as a Claude Code plugin to use /codeassay within Claude Code sessions.
License
MIT
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 codeassay-0.1.1.tar.gz.
File metadata
- Download URL: codeassay-0.1.1.tar.gz
- Upload date:
- Size: 93.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89e0b9f27e7d3645faee915a8fb0ba1b13f7d27b95b8f0becbbe5b2b75d38312
|
|
| MD5 |
acba7c8b063778f7ec334e74b22bc56d
|
|
| BLAKE2b-256 |
d27f80e9cf5cbce125566118d945a372389c00dbfa383f60c378d848d9879741
|
File details
Details for the file codeassay-0.1.1-py3-none-any.whl.
File metadata
- Download URL: codeassay-0.1.1-py3-none-any.whl
- Upload date:
- Size: 90.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b91f3cdcd32c702417d7034867ebc449cf759a817fae970b2209960a7c219c6a
|
|
| MD5 |
f2b175345ef82cfaf05221d1a88f21a3
|
|
| BLAKE2b-256 |
bcc57c62c9bb089fd4c2f2668a7d7616b57d0656574940a2baa43cc4344b31bf
|