Revisada el 2026-10-12

Skill de Claude Code que anonimiza y revisa un documento Word extenso. Trabaja por bloques, en tres niveles de cambio, busca residuos y entrega registro de cambios, control e informe.

El original no se modifica nunca. Los cambios sustantivos los decide el usuario y todo lo retirado queda auditado. Úsala solo con documentos que se esté autorizado a tratar: la skill procesa el contenido íntegro del documento, así que conviene valorar antes qué se envía a un servicio externo. Anonimizar no equivale a cumplir la normativa de protección de datos ni sustituye una revisión jurídica.

Datos clave
FormatoSkill de Claude Code (SKILL.md)1
IdiomaEspañol
InstalaciónGlobal: ~/.claude/skills/anonimizar-documento/SKILL.md. Solo un proyecto: .claude/skills/anonimizar-documento/SKILL.md1

Prompt

Copia el bloque completo en un archivo SKILL.md. La cabecera inicial (name y description) es la que usa Claude Code para decidir cuándo ofrecer la skill.1

---
name: anonimizar-documento
description: Anonimiza y revisa en profundidad cualquier documento Word (.docx) siguiendo un flujo completo: inventario por bloques, tres niveles de cambio (mecánico / equivalencia verificada / decisión del usuario), anonimización integral de texto, tablas, imágenes, EMF, OLE, hipervínculos, notas al pie y metadatos, verificación de referencias normativas, entregable construido desde cero, baterías de búsqueda de residuos, render e inspección visual, y entrega con registro de cambios JSON, control JSON e informe. Actívala cuando el usuario pida "anonimizar un documento", "anonimiza este docx", "/anonimizar-documento" o equivalente.
---
 
Esta skill aplica a un documento Word un flujo completo de anonimización y revisión, pensado para documentos extensos. Sirve para cualquier documento jurídico o corporativo. Se trabaja directamente sobre el documento completo, sin fase de muestra previa.
 
## Principios inviolables
 
1. **El original permanece intacto.** Nunca se modifica el archivo de origen; el entregable se construye desde cero (documento nuevo, sin estilos ni metadatos heredados).
2. **Nada de contenido sustantivo se elimina ni se fusiona.** Ninguna cláusula, apartado, opción, fila de tabla ni nota al pie desaparece. Todo fragmento retirado (numeraciones residuales, enlaces internos, objetos incrustados, párrafos vacíos) se audita individualmente en el informe con motivo y sustituto.
3. **Todo cambio se registra.** Cada actuación queda en el registro JSON con nivel, idioma, tipo, ubicación y, cuando procede, antes/después.
4. **Los cambios sustantivos los decide el usuario.** Nada de nivel 3 se aplica sin autorización expresa; lo no autorizado se verifica al final que permanece sin tocar.
5. **La anonimización no puede alterar el sentido jurídico.** Tras cada sustitución de entidad por rol se verifica la equivalencia (partes, alcance, plazos, consecuencias).
6. **Verificar, no confiar.** Nada se da por anonimizado sin comprobarlo en el render final: las baterías de residuos se pasan también sobre el texto extraído del PDF renderizado, no solo sobre el XML.
 
## Fase 0 — Encargo
 
Antes de tocar nada, pregunta al usuario (breve, en bloque):
 
1. **Entidades a anonimizar**: proveedor/empresa principal y sus formas societarias, filiales y marcas; clientes reales; personas físicas; herramientas, plataformas y políticas internas; dominios/URLs; direcciones y teléfonos; datos de operaciones reales (importes, fechas, porcentajes). Pide las que conozca; el resto las detectarás tú y las propondrás.
2. **Qué conservar**: instituciones y normas (AEPD, BOE, EUR-Lex…), productos de terceros que no identifican la relación (SAP, Microsoft…), importes redondos claramente modelo, términos protegidos por el encargo. Cada conservación por criterio se registra.
3. **Convención de sustitución**: rol («el Proveedor», «el Cliente») para las partes; campos variables entre corchetes tipo `[IMPORTE]`, `[FECHA]`, `[HERRAMIENTA DEL PROVEEDOR]` para datos puntuales. Confirma idioma(s) del documento y de los campos.
4. **Alcance adicional**: si además de anonimizar debe corregirse gramática/erratas (nivel 2) y verificarse la vigencia de referencias normativas.
5. **Entregables**: nombre del docx final y si se desea informe también en .docx además de .md.
 
## Fase 1 — Análisis e inventario
 
1. Copia de trabajo del origen en el scratchpad; el original no se abre en escritura jamás.
2. Descomprime el .docx (es un ZIP) y valida el XML de todas sus partes con `lxml`.
3. Inventaría **bloques** (secciones, capítulos o unidades lógicas del documento) y créales entrada en `CONTROL.json`: ningún bloque puede quedar sin estado «procesado» al final.
4. Inventaría los **vectores no textuales**, que es donde se esconden los residuos:
   - Imágenes (PNG/EMF/WMF): extrae el texto de los binarios EMF (contienen UTF-16 legible) y renderiza cada imagen para inspección visual.
   - Objetos OLE incrustados (documentos internos completos) y sus iconos.
   - Encabezados y pies de página, notas al pie, cuadros de texto y formas.
   - Hipervínculos (relaciones del ZIP, no solo el texto visible).
   - Texto alternativo de imágenes y nombres de archivos de `word/media/`.
   - Metadatos (`docProps/core.xml`, `app.xml`: autor, último autor, Company, plantilla).
   - Comentarios y control de cambios, si existen.
5. Pasa una primera batería de patrones con las entidades del encargo para dimensionar el trabajo y detectar entidades no declaradas (nombres propios, dominios, teléfonos, NIF/CIF, direcciones). Presenta al usuario los hallazgos nuevos antes de continuar.
 
## Fase 2 — Procesamiento por niveles
 
Clasifica toda actuación en tres niveles:
 
- **Nivel 1 — mecánico y repetitivo.** Se aplica directamente y se registra (agrupado en el informe, individual en el JSON): sustituciones de anonimización, campos variables, URLs → `[ENLACE INTERNO ELIMINADO]` / `[INTERNAL LINK REMOVED]`, listas de sociedades/competidores → `[RELACIÓN DE …]`, numeraciones residuales o provisionales, dobles espacios, espacios ante puntuación, erratas tipográficas evidentes, normalizaciones globales de mayúsculas de partes definidas («el cliente»→«el Cliente», party→Party), referencias internas rotas → campo.
- **Nivel 2 — con antes/después y equivalencia verificada.** Correcciones gramaticales o de redacción que podrían discutirse: concordancias, «deber de»+infinitivo con valor de obligación, calcos de traducción, reconstrucción de celdas defectuosas, reetiquetado de apartados. Cada una se registra con texto anterior, texto nuevo, motivo y la mención «equivalencia jurídica verificada».
- **Nivel 3 — decisión del usuario.** Erratas sustantivas probables, referencias normativas desactualizadas, ambigüedades jurídicas, posibles inversiones de partes causadas por anonimizaciones anteriores, enumeraciones con letras/números omitidos. Se numeran como incidencias (9.1, 9.2…), cada una con ubicación, diagnóstico, recomendación y propuesta de texto NO aplicada. Se presentan juntas al usuario; solo se aplica lo que autorice, citando la autorización en el registro.
 
### Anonimización: catálogo de actuaciones
 
- Entidad principal y grupo → rol («el Proveedor») o campo; cuidado con todas las formas societarias, abreviaturas y marcas históricas.
- Clientes reales → «el Cliente» o `[CLIENT]`/`[CLIENTE]` según idioma y contexto.
- Personas → notas neutras o campos (`[PROVIDER CONTACTS]`…); elimina también marcas de revisión interna («revisado por X», iniciales de versión).
- Herramientas/plataformas/políticas internas → `[HERRAMIENTA DEL PROVEEDOR]`, `[POLÍTICA DEL PROVEEDOR]`, etc. Los productos de terceros del criterio de conservación se mantienen.
- Importes, fechas y porcentajes de operaciones reales → `[IMPORTE]`, `[FECHA]`, `[PORCENTAJE]`, conservando íntegra la estructura de la cláusula.
- Direcciones, teléfonos, números de certificado → campo o eliminación con nota.
- **Tablas incorporadas como imagen**: si contienen texto, se transcriben a tablas nativas de Word editables y anonimizadas (verificando la transcripción contra el render de origen). Las fórmulas e ilustraciones sin datos se conservan como imagen con texto alternativo saneado.
- **Certificados escaneados y OLE incrustados**: se eliminan y se sustituyen por campo + nota de uso que declara la eliminación.
- Repeticiones accidentales de una misma imagen: se conserva una y se registran las eliminadas.
 
### Reparación lingüística post-anonimización
 
La sustitución entidad→rol rompe concordancias heredadas. Pasa búsquedas específicas y corrige como nivel 2:
- Género y número: «la Proveedora», «obligada/obligado», «ésta/éste tendrá derecho»…
- Artefactos de sustitución: dobles artículos («el el»), `Provider:Provider`, `[CLIENT]:[CLIENT]`, «the the», «an the», «a the», campo pegado a texto.
- Calcos que la anonimización deja al descubierto y erratas del propio original si el encargo incluye corrección.
 
### Referencias normativas (si el encargo lo incluye)
 
- Verifica cada referencia en fuente oficial (BOE, EUR-Lex) y anota la fecha de consulta.
- Cita formal completa cuando falte (número, fecha y nombre oficial de la norma) = nivel 2.
- Norma derogada o materialmente desactualizada (p. ej., SCC 2010/87/UE → Decisión (UE) 2021/914) = nivel 3: proponer, no aplicar.
- Referencias históricas con función contextual se conservan y se documenta el criterio.
 
### Duplicados
 
Detecta cláusulas o bloques duplicados/cuasiduplicados (similitud de texto). **No se fusionan ni eliminan**: pueden ser posiciones negociadoras distintas o reutilización deliberada. Se conservan, se renumeran las etiquetas repetidas si procede (OPCIÓN 9 → 9A/9B) y se informan como incidencia si el duplicado literal parece accidental.
 
## Fase 3 — Construcción del entregable
 
1. Documento nuevo desde cero (python-docx o XML directo), sin estilos ni metadatos del original. Metadatos limpios: autor y último autor vacíos, sin Company. Nombres de media neutros.
2. Estilos propios coherentes; si hay campos variables, dales un estilo dedicado («Campo variable»: negrita + resaltado; «Instrucción de cumplimentación»: cursiva) para que todos los usos sean localizables por estilo.
3. Si procede índice: entradas con hipervínculo interno y números de página calculados sobre el render real (dos pasadas: renderizar, medir, insertar como valores en caché de campos PAGEREF) y `updateFields` activado para que Word lo recalcule al abrir.
4. Notas al pie recreadas (definidas = referenciadas), imágenes conservadas reinsertadas con alt saneado.
 
## Fase 4 — Controles finales (todos obligatorios)
 
1. ZIP y XML válidos (lxml sobre todas las partes); apertura programática correcta.
2. Render completo a PDF con LibreOffice (`soffice --headless --convert-to pdf`) e inspección visual página a página (hojas de contacto con `pdftoppm` + alta resolución de páginas con tablas, imágenes y correcciones).
3. Cada tabla y cada imagen inspeccionada individualmente; tablas transcritas desde imagen cotejadas con su render de origen.
4. **Baterías de residuos**: patrones de todas las entidades del encargo (variantes, abreviaturas, dominios) sobre texto, tablas, notas al pie, encabezados/pies, alt text, metadatos, nombres de media **y texto extraído del PDF renderizado**. Resultado exigido: 0 apariciones.
5. Baterías lingüísticas: 0 positivos en los patrones de reparación post-anonimización.
6. Notas al pie: definidas = referenciadas, contenido revisado. Hipervínculos del índice operativos; 0 enlaces a dominios del encargo.
7. Numeraciones provisionales («X.»): 0 apariciones.
8. Integridad: todos los bloques del inventario procesados; volumen de caracteres origen/destino comparado y desviación explicada; auditoría de eliminaciones completa (nada jurídico eliminado).
9. Incidencias de nivel 3 no autorizadas: verificado que permanecen sin modificar.
10. Declara la limitación de paginación: los números de página provienen del render de LibreOffice; Word recalculará el índice al abrir (±1 página posible; los hipervínculos funcionan en todo caso). Esta nota va en el informe, no en el documento.
 
## Entregables
 
En la carpeta del proyecto (no en el scratchpad):
 
- `<Nombre acordado>.docx` — documento final anonimizado.
- `REGISTRO_CAMBIOS_<fase>.json` — todos los cambios individuales: `{fase, fecha, archivo_origen, archivo_destino, cambios:[{nivel, idioma, tipo, ubicacion, antes, despues, motivo}], stats_globales, bloques}`.
- `CONTROL_<fase>.json` — estado del encargo: bloques y su estado, cifras, controles ejecutados con resultado, incidencias pendientes, inventario de imágenes, auditoría de eliminaciones, normativa.
- `INFORME_<fase>.md` (y `.docx` si se pidió) con esta estructura, recomendada: resumen ejecutivo con cifras · criterios aplicados · nivel 1 agrupado · inventario de anonimización (tabla por tipo de entidad) · nivel 2 con antes/después destacados · nivel 3 aplicado con autorizaciones · actualizaciones normativas (tabla con fuente y fecha de consulta) · duplicados · incidencias pendientes · inventario de imágenes y objetos (tabla con tratamiento y verificación) · auditoría de eliminaciones (tabla con motivo y sustituto) · controles ejecutados · limitaciones declaradas.
 
Cierra siempre indicando el estado global («COMPLETADO» o «COMPLETADO CON INCIDENCIAS PENDIENTES») y la lista de decisiones que quedan en manos del usuario.

Cómo adaptarla

  • Los ejemplos de campos ([IMPORTE], [FECHA]) y de roles («el Proveedor», «el Cliente») pueden cambiarse por la convención de tu sector.
  • Las referencias normativas citadas como ejemplo son españolas y europeas; sustitúyelas por las de tu jurisdicción.
  • La verificación visual necesita LibreOffice (soffice) y poppler (pdftoppm).
  • Para documentos cortos, puedes saltarte el inventario por bloques y mantener solo los controles finales.

Véase también

Referencias

Footnotes

  1. Extend Claude with skills. Anthropic, documentación de Claude Code. Consultado el 2026-10-10. ↩ ↩2 ↩3