# Content Fingerprint

> Usar cuando se necesita un identificador corto, deterministico y reproducible derivado del contenido de una cadena o fichero — cache keys, ids de patrones, fingerprints de docs.

- Skill: `gonzalezpazmonica/content-fingerprint` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add gonzalezpazmonica/content-fingerprint`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gonzalezpazmonica/content-fingerprint/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: gonzalezpazmonica (https://skillmd.com/u/gonzalezpazmonica)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/gonzalezpazmonica/content-fingerprint

---


# Skill: content-fingerprint

## Cuando usar

Cuando un script necesita derivar un identificador corto, reproducible y resistente a colisiones a partir de un contenido (cadena, fichero, agregado). Casos tipicos:

- Cache keys (`ado-bridge.sh`)
- Pattern signatures (`failure-pattern-memory.sh`)
- Doc fingerprints de auditoria (`semantic-map.sh`)
- Test attempt hashes (`test-auditor.sh`)

## Cuando NO usar

- Si necesitas hash criptografico para integridad fuerte: usa `sha256sum` directo (ya disponible).
- Si necesitas detectar near-duplicates con tolerancia a 1 byte: SHA truncado NO sirve. Considera SimHash/MinHash o embeddings (`memory-vector.py`).
- Si necesitas buscar por similitud semantica: usa `memory-vector.py` (HNSW + MiniLM).

## Como usar

```bash
# Identificador corto
ID=$(echo "agente:tarea:contexto" | scripts/content-fingerprint.sh 8)
# Output: 8 chars hex deterministicos

# Cache key 16 chars
KEY=$(printf '%s|%s' "$query" "$context" | scripts/content-fingerprint.sh 16)

# Fichero completo
FP=$(scripts/content-fingerprint.sh 16 < my-doc.md)

# Self-test
scripts/content-fingerprint.sh --self-test
```

## Acceptance criteria validados (SE-151)

- AC-1: longitudes 8/16/32/64 producen hex de tamaño exacto.
- AC-1: avalanche — 1 byte de diferencia → fingerprint distinto.
- AC-1: determinismo — mismo input → mismo output.
- AC-4: dataset etiquetado de 30 fixtures (15 pares) verifica precision/recall.
- AC-5: 100 invocaciones <5s total (sanity check de latencia).

Tests: `bats tests/scripts/content-fingerprint.bats` (14/14 verde).

## Limitaciones honestas

- **No detecta near-duplicates**: 1 char de cambio cambia el fingerprint entero (avalanche). Esto es una propiedad deseable para identificadores, una limitacion para clustering.
- **No es LSH biologico**: Dasgupta 2017 requiere vectorizacion previa + sparse expansion, no implementado aqui.
- **Coliciones a 8 chars**: para corpus muy grandes (>10^6 docs), considerar 16 chars o mas (paradoja del cumpleanos).

## Referencias

- Spec: `docs/specs/SE-151-content-fingerprint-consolidation.spec.md`
- Tests: `tests/scripts/content-fingerprint.bats`
- Fixtures: `tests/fixtures/fingerprint/`
- Sesion previa archivada: `experiments/brainless/RESEARCH-LOG.md`

