codeprovenance
AI-blame: qué agente, sesión y prompt generaron cada cambio de tu código.
git blame te dice quién escribió cada línea. codeprovenance te dice qué IA la escribió y con qué prompt. Lee los logs de sesión de opencode y Claude Code, los indexa en una base SQLite local, y responde:
provenance blame --file src/x.ts→ qué agente/sesión/prompt tocó ese archivoprovenance stamp→ añade el trailerGenerated-by:a tus commitsprovenance report→ cuánto de tu código lo generó la IA esta semana
Instalación
npm install -g @darkm3tter/codeprovenance
Uso
# 1. Indexa tus sesiones de agente (claude-code + opencode)
provenance capture
# → capturados 1005 eventos nuevos (claude-code + opencode)
# 2. Reporte
provenance report --since 7
# edits por IA: 669
# prompts: 75
# archivos tocados: 241
# sesiones: 27
# agentes: claude-code, opencode
# 3. AI-blame de un archivo
provenance blame --file src/auth.ts
# 2026-07-01T10:00:05Z claude-code · sesión s1 · 3 edits (Write, Edit) · prompt "add an auth flow"
# 4. Sellar tus commits
provenance stamp
# Generated-by: claude-code · session s1 · prompt "add an auth flow" (f52b4493)
Estampado automático de commits (hook opcional)
Instala el hook prepare-commit-msg (ejemplo en examples/prepare-commit-msg):
mkdir -p .githooks && cp node_modules/codeprovenance/examples/prepare-commit-msg .githooks/
git config core.hooksPath .githooks
Cada commit con archivos que tienen provenance recibe automáticamente:
feat: auth flow
Generated-by: claude-code · session 4fd7fc50-... · prompt "add an auth flow" (f52b4493)
Como MCP server
provenance mcp expone:
ai_blame— trazabilidad de un archivo (agente, sesión, prompt)provenance_report— resumen de actividad IA (con ventana en días)
{ "mcpServers": { "codeprovenance": { "command": "provenance", "args": ["mcp"] } } }
Cómo funciona
| Fuente | Formato | Qué extrae |
|---|---|---|
| Claude Code | ~/.claude/projects/**/*.jsonl |
prompts de usuario + tool_use (Write/Edit/MultiEdit/Bash) con file_path |
| opencode | ~/.local/share/opencode/storage/session_diff/*.json |
diffs por sesión ({file, patch}) |
Cada edit queda vinculado al último prompt de usuario que lo precedió (con hash). Todo se guarda en ~/.local/share/codeprovenance/db.sqlite (SQLite vía bun:sqlite o node:sqlite — cero deps extra). Re-capturar es idempotente (dedupe NULL-safe).
Transparencia y privacidad
- Todo es local: no sale nada de tu máquina
- Los prompts se guardan completos para que el blame sea útil — la DB vive solo en tu
~/.local/share --jsonen todos los comandos para scripting
Desarrollo
bun install
bun test # 22+ tests
bun run typecheck # TS estricto
bun run build # binario Node único
Licencia
MIT