name: verify-source description: Verificar una cita bibliográfica del .bib contra su fuente original (PDF/web), corrigiendo cifras erróneas y marcando verified=true. argument-hint: clave del .bib (ej. banco_espana_doc_2432) o "next" para la siguiente sin verificar allowed-tools: Read, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch
Skill: Verificación de fuentes bibliográficas
Verificas citas de la memoria del TFM contra sus fuentes originales, siguiendo un flujo sistemático.
Archivos clave
- BibTeX:
docs/memory/refs/references.bib - Contenido:
docs/memory/content/**/*.typ - Compilar:
npm run build:docs
Flujo de verificación
Paso 0 — Seleccionar fuente
Si $ARGUMENTS es "next" o está vacío:
- Lee
references.biby lista las entradas sinverified = {true}. - Muestra la lista al usuario y pregunta cuál verificar.
Si $ARGUMENTS es una clave concreta (ej. banco_espana_doc_2432):
- Usa esa clave directamente.
Paso 1 — Localizar las citas en el texto
- Busca con
Grepla clave@clave_bibendocs/memory/content/para encontrar todos los párrafos que la citan. - Lee cada párrafo y extrae las afirmaciones concretas que se atribuyen a esa fuente (cifras, porcentajes, fechas, conclusiones).
- Presenta al usuario un resumen: "Esta fuente se cita N veces con las siguientes afirmaciones: ..."
Paso 2 — Obtener la fuente original
Según el tipo de fuente:
PDF (URL directa o local):
- Descargar con
curl -sL -o /tmp/<nombre>.pdf "<url>". - Convertir con
marker_single:marker_single /tmp/<nombre>.pdf --output_format markdown --disable_image_extraction --output_dir /tmp/<nombre>_md - Si
marker_singlefalla (error de página), reintentar con--page_rangeexcluyendo la página problemática. Dividir en segmentos (ej.0-30,31-65). - El markdown resultante estará en
/tmp/<nombre>_md/<nombre>/<nombre>.md.
Web (HTML):
- Usar
WebFetchpara obtener y analizar el contenido.
Artículo con DOI:
- Buscar con
WebFetchenhttps://doi.org/<doi>para obtener metadatos. - Si hay PDF de acceso abierto, descargarlo y convertirlo.
- Si no, buscar con
paper_searchMCP tools.
Si no lo encuentro debo avisar al usuario para que realice la descarga manualmente.
Paso 3 — Buscar las cifras en la fuente
- Usar
Grepcon los números/porcentajes/términos clave de cada afirmación. - Si las líneas salen omitidas por ser muy largas, usar
Readcon offset/limit en las líneas relevantes. - Leer el contexto suficiente (3-5 líneas alrededor) para entender el dato completo.
Paso 4 — Contrastar y reportar
Para cada afirmación citada, reportar:
- Afirmación en el texto: la frase exacta del
.typ - Texto de la fuente: la frase/párrafo completo de la fuente original (con número de página aproximado del PDF)
- Veredicto:
- EXACTA: la cifra coincide tal cual
- APROXIMADA: hay diferencia menor (redondeo, etc.) — indicar cifra correcta
- INCORRECTA: la cifra no coincide — indicar cifra correcta
- NO ENCONTRADA: no se localiza esa afirmación en la fuente
- Fuente primaria: si la fuente cita a su vez otra fuente (ej. "según Eurostat"), indicarlo
Paso 5 — Corregir el texto
Si hay erratas:
- Editar el
.typcon las cifras correctas. - Si la fuente primaria es distinta (ej. Eurostat citado por Defensor del Pueblo), ajustar la atribución.
Paso 6 — Marcar como verificada
- Añadir
verified = {true}a la entrada enreferences.bib. - Corregir la URL si apuntaba a un documento incorrecto (ej. anexo en vez de informe completo).
- Compilar con
npm run build:docspara verificar que no hay errores.
Paso 7 — Dar al usuario las citas textuales
Siempre terminar mostrando al usuario las frases completas de la fuente original que respaldan cada afirmación, con la página aproximada del PDF, para que pueda verificar manualmente.
Reglas importantes
- Nunca leer un PDF directamente con Read (excepto <20 páginas). Siempre convertir con
marker_singleprimero. - Nunca leer el markdown entero de documentos grandes. Usar
Greppara buscar yReadcon offset/limit para contexto. - Ser preciso con las cifras: 43,1% no es "aproximadamente 45%". Corregir siempre al dato exacto.
- Distinguir fuente primaria de secundaria: si el Defensor del Pueblo cita a Eurostat, decirlo.
- No inventar datos: si no se encuentra la cifra, reportar NO ENCONTRADA y sugerir eliminar o buscar fuente alternativa.