Metadata-Version: 2.5
Name: blot-git
Version: 0.6.0
Summary: A pre-commit check that has read your project's history: warns when a change removes a fix, re-adds a fixed bug, or forgets a file that always changes too.
Project-URL: Homepage, https://github.com/Sym-jay/Blot
Project-URL: Issues, https://github.com/Sym-jay/Blot/issues
Author: Shyam
License: MIT
License-File: LICENSE
Keywords: code-review,developer-tools,git,git-history,pre-commit
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Version Control :: Git
Requires-Python: >=3.10
Requires-Dist: tomli>=1.1.0; python_version < '3.11'
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == 'dev'
Provides-Extra: github
Description-Content-Type: text/markdown

# Blot

**A pre-commit check that has read your project's history.**

Blot warns you *before you commit* when your change:

- **removes a fix**: deletes or edits code that was added to fix a bug
- **re-adds a bug**: brings back a line that a bug fix deliberately removed
- **forgets a related file**: changes `A` but not `B`, when the two almost always change together

It runs locally, needs no account or AI, and stays quiet unless the history gives it a real reason to speak.

![Blot catching a real Flask regression](https://raw.githubusercontent.com/Sym-jay/Blot/main/assets/demo/demo.gif)

```bash
pip install blot-git
cd your-repo
blot index           # optional: the first check indexes history itself
blot install-hook    # adds Blot to your pre-commit hook
blot why src/app.py:42   # which commit explains this line, skipping refactors
blot index --github  # optional: issue/PR titles and labels via the gh CLI
```

**Guard coding agents.** `blot install-agent-hook` adds a Claude Code hook that runs the same checks on
an edit an agent is about to make, so the agent sees "this line exists because of fix 8efea0c" before
it "simplifies" it away. It warns by default; `--ask` makes Claude Code ask you first.

> **Status:** pre-alpha. All three checks work. Replayed on 500 recent commits each of Flask, requests, Express, Django and React, Blot warns on 0.6–9.5% of commits, and about half of its warnings (labelled by hand) are worth a reviewer's time; see the bench results on GitHub. Please report false alarms.

Meet Sora the slime, read the docs, or contribute on GitHub: https://github.com/Sym-jay/Blot
