Metadata-Version: 2.4
Name: aidiff-lint
Version: 0.1.0
Summary: Static linter for git diffs generated by AI coding agents (Kimi, Aider, Copilot, Cursor, etc.)
Author: hyntg
License: MIT
Project-URL: Homepage, https://github.com/hyntg/aidiff-lint
Project-URL: Repository, https://github.com/hyntg/aidiff-lint
Keywords: linter,git,diff,ai,django,static-analysis
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Framework :: Django
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"

# aidiff-lint

Linter independiente (sin dependencias de terceros) para diffs de Git
generados por agentes de codificacion IA (Kimi, Aider, Copilot, Cursor, etc.).

Detecta patrones de falla recurrentes que no son errores de sintaxis
evidentes, pero rompen la compilacion, el renderizado, o introducen basura
en la base de codigo:

- Inyeccion de caracteres CJK en docstrings/comentarios.
- Cadenas Django ORM alucinadas (`Model.field.related_model.objects`).
- Tags de Django templates rotos o desbalanceados (incluyendo cierres
  eliminados por el propio diff, no solo agregados).
- Tags HTML estructurales rotos o duplicados.
- "Smells" de templates Django: URLs de admin hardcodeadas, `target="_blank"`
  sin `rel="noopener noreferrer"`, formularios POST sin `{% csrf_token %}`.
- Cadenas de atributos sospechosamente profundas a traves de objetos tipo
  diccionario (`alert.metadata.batch.id`) que fallan en silencio en
  templates Django.

## Instalacion

```bash
pip install -e ".[dev]"
```

## Uso

```bash
aidiff-lint                      # unstaged changes
aidiff-lint --staged             # staged changes
aidiff-lint --commit <hash>      # un commit especifico
aidiff-lint --range <a>..<b>     # un rango de commits
aidiff-lint --diff-file path.diff
aidiff-lint --repo /ruta/al/repo
```

## Exit codes

- `0`: sin hallazgos ERROR (puede haber WARNING).
- `1`: al menos un hallazgo ERROR.
- `2`: error de uso/ejecucion.

## Tests

```bash
pytest tests/ -v
```
