ccanunez/vérifier-bib

Vérifie une bibliographie (fichier .bib, liste de références d'un article/thèse, ou projet LaTeX les citant) sur OpenAlex, Crossref, arXiv, OpenLibrary et NASA ADS ; détecte les citations falsifiées ou inventées (hallucinées), les articles rétractés, les données erronées (année, volume, page, DOI, ordre des auteurs), les doublons, les clés \cite sans entrée et les prépublications déjà publiées ; vérifie si chaque article soutient ce que le texte affirme en le citant ; suggère des références manquantes ; écrit un fichier .bib corrigé (DOI, eprint) ; le tout sans toucher à l'original.

Qu'est-ce que vérifier-bib ?

Cette compétence verrouille la qualité des bibliographies pour les articles académiques, les thèses et les documents LaTeX. Elle vérifie chaque référence sur des bases reconnues comme OpenAlex, Crossref, arXiv, OpenLibrary et NASA ADS, en croisant DOI, titre, année, volume, page, premier auteur et ordre des auteurs. Elle signale les citations inventées (hallucinées), les articles rétractés, les données erronées, les doublons, les clés \cite sans entrée et les prépublications déjà publiées en version finale. En mode avancé (`profundo`), elle compare les affirmations du texte avec le résumé et le contenu complet de l'article cité pour détecter les citations qui ne soutiennent pas ce qui est avancé. Elle produit un rapport Markdown détaillé avec liens, un résumé pour le chat, et un fichier .bib corrigé (via `--parche`) qui ajoute DOI et eprint sans modifier l'original. Elle est conçue pour les auteurs et réviseurs qui doivent s'assurer que chaque référence est réelle, exacte et pertinente.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ccanunez/verificar-bib/tree/HEAD

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Vérifier la bibliographie et trouver les articles

Objectif : pour chaque référence, décider si elle existe, si ses données sont correctes, si elle est toujours valide (non rétractée) et si elle soutient ce que le texte affirme ; fournir où la lire. Rédiger dans la langue de l'utilisateur (par défaut français).

Arguments

/vérifier-bib <refs.bib | refs.txt | dossier-du-manuscrit> [profond] [lacunes] [correctif]

  • profond : vérifie en plus les affirmations (étape 4). C'est le plus coûteux : le proposer, ne pas le faire sans que l'utilisateur le demande.
  • lacunes : suggère des références manquantes (--lacunes 20).
  • correctif : écrit un .bib corrigé, sans toucher à l'original.

1. Obtenir les références

  • .bib : l'utiliser directement.
  • Liste en texte (collée dans le chat, extraite d'un PDF ou de la section References d'un article) : la sauvegarder dans le scratchpad en .txt, une référence par ligne ou par paragraphe. Si elle provient d'un PDF, extraire uniquement la section des références.
  • Projet LaTeX : localiser le .bib (\bibliography{…} ou \addbibresource{…}) et passer le dossier avec --tex. Le script croise les clés de \cite (natbib et biblatex) avec le .bib et extrait la phrase de chaque citation.

2. Lancer le vérificateur

python3 -I ~/.claude/skills/verificar-bib/scripts/verificar_bib.py <refs> --out <scratchpad>/rapport_bib.md --json <scratchpad>/rapport_bib.json [--tex <dossier>] [--contextes <scratchpad>/contextes.md] [--lacunes 20] [--correctif <scratchpad>/refs.corrige.bib] [--macros-aas]

Pour chaque référence, il interroge, dans l'ordre : le DOI (et le résolveur doi.org si personne ne l'a), l'ID de l'arXiv, le titre dans OpenAlex, OpenLibrary (livres), ADS (si ADS_API_TOKEN existe), année + volume + page, Crossref bibliographique et arXiv. À l'article trouvé, il ajoute les rétractations et corrections (Retraction Watch, via OpenAlex et Crossref), la version publiée si le fichier bib cite une prépublication, et les liens en accès ouvert. Verdicts :

  • 🚩 RÉTRACTÉE : existe, mais a été rétracté ou retiré. Ne doit pas être cité comme preuve.
  • ✅ OK : concordance du titre, du premier auteur, de l'année (±1, pour arXiv vs. publié), du volume et de la page. Pour les livres, l'année n'est pas exigée, car les bases indexent d'autres éditions.
  • ⚠️ DISCRÉPANCE : existe, mais quelque chose ne correspond pas : année, volume, page, ordre des auteurs, DOI inexistant ou pointant vers un autre article, ou dans ce volume/page se trouve un autre article avec un autre titre (motif typique d'une citation inventée qui réutilise une revue réelle).
  • ❌ NON TROUVÉE : aucune base ne la possède, donc c'est une possible citation fausse. Elle est accompagnée du candidat le plus proche comme piste.

Le rapport ajoute les doublons (même article avec deux clés, ou clé répétée), le croisement avec le .tex (clés citées sans entrée, qui apparaîtront comme [?], et entrées jamais citées), les références manquantes et les notes (corrections publiées, prépublications déjà publiées, éditions de livres).

Notes d'exécution :

  • Il y a un cache dans ~/.cache/verificar-bib (30 jours) : relancer après avoir édité le .bib est presque instantané. --sans-cache l'ignore.
  • arXiv est interrogé au maximum une fois toutes les 3 secondes. Avec plus de ~50 références, l'exécuter en arrière-plan.
  • Si le rapport contient l'avertissement "des requêtes ont échoué", les ❌ peuvent être des faux négatifs : recommencer plus tard.
  • Sans OPENALEX_API_KEY, OpenAlex donne un petit quota quotidien par IP. ADS_API_TOKEN active ADS, qui en astronomie possède des livres, des comptes-rendus de conférences et des articles anciens que les autres bases n'ont pas. Si l'utilisateur les possède, qu'il les exporte lui-même. Ne jamais créer de clés pour l'utilisateur ni lire leur valeur.
  • --strict se termine avec le code 1 s'il y a ❌, 🚩 ou clés manquantes (utile avant la soumission finale).

3. Vérifier manuellement les cas douteux (ne pas sauter cette étape)

Le script est un filtre. Ne pas déclarer une citation fausse uniquement parce que le script ne l'a pas trouvée. Pour chaque ❌, 🚩 et ⚠️ non trivial :

  1. Rechercher avec WebSearch le titre exact entre guillemets, et "premier auteur + année + revue".
  2. Penser aux faux négatifs typiques, qui ne sont pas des citations fausses :
    • Livres, chapitres, thèses, comptes-rendus anciens (@book, @phdthesis, @inproceedings) : mal indexés ou avec la date d'une réédition. Un titre court (Fluid Mechanics) peut être apparié à une autre œuvre du même nom.
    • Logiciels et données (@misc, @software: FARGO3D, RADMC-3D, astropy…) : vérifier sur ASCL, Zenodo ou GitHub, et la publication que le logiciel demande de citer.
    • Articles antérieurs à 1990 sans DOI : ADS les possède même si OpenAlex ne les a pas.
    • Un article et sa version de conférence avec le même titre (par exemple Shakura & Sunyaev 1973 dans A&A et dans IAU Symp. 55) : la base peut renvoyer l'autre version.
    • Prépublications récentes pas encore publiées dans une revue.
    • Auteurs collectifs ou noms en caractères non latins.
  3. Pour un ⚠️ "ordre des auteurs", vérifier si la clé (Casassus2025) et le \citet{} du texte attribuent le travail à un autre auteur que le premier. Cela doit être corrigé.
  4. Pour un 🚩, confirmer la rétractation dans l'avis officiel et avertir l'utilisateur où il la cite.
  5. Verdict final par référence :
    • réelle et correcte ;
    • réelle avec données à corriger : donner les champs BibTeX corrigés ;
    • rétractée : dire où elle est citée et suggérer un remplacement ou un contexte ;
    • non vérifiable : recherchée et non apparue ; demander la source à l'utilisateur ;
    • fausse : uniquement avec des preuves, par exemple le DOI ou le volume/page appartiennent à un autre article et rien n'existe avec ce titre.

Ajouter une section "Vérification manuelle" au début du rapport avec ces verdicts.

4. Vérifier les affirmations (mode profond)

Nécessite --tex et --contextes. Le fichier de contextes apporte, pour chaque référence citée, le résumé de l'article et chaque phrase du .tex qui le cite (fichier:ligne). Pour chaque utilisation :

  1. Comparer ce que la phrase affirme avec le résumé. Classer comme soutient, soutient en partie (par exemple l'article le montre pour un autre régime ou avec plus de prudence), ne soutient pas ou non vérifiable avec le résumé.
  2. Pour les non vérifiables et les ne soutient pas, ouvrir le texte complet (l'arXiv ou le PDF du rapport) et chercher le passage concret avant de conclure. Citer la section ou la page de l'article.
  3. Juger l'affirmation, pas le style. Signaler les citations génériques ("voir la revue de…") comme acceptables.
  4. Écrire le résultat dans un tableau, fichier:ligne | clé | verdict | preuve de l'article | suggestion, à la fin du rapport. Trier d'abord les ne soutient pas.

Avec beaucoup de citations (plus de ~60), demander à l'utilisateur s'il veut toutes les vérifier ou prioriser : celles qui soutiennent les résultats propres, les valeurs numériques et les comparaisons directes.

5. Références manquantes (lacunes)

--lacunes N liste les articles cités par au moins deux des références de l'utilisateur qu'il ne cite pas lui-même, triés par le nombre de ses références qui les citent. Tous ne s'appliquent pas : filtrer par pertinence pour le sujet du travail (lire le titre et, si nécessaire, le résumé) et présenter uniquement ceux qui valent la peine d'être considérés, avec une ligne expliquant pourquoi.

6. Remise

  • Le rapport Markdown avec les liens (DOI · ADS · arXiv · PDF · ISBN) et la vérification manuelle. Si l'utilisateur va le partager, proposer de le publier en tant qu'Artifact.
  • Un résumé dans le chat : combien de OK, combien avec des données à corriger, rétractées, possiblement fausses et pourquoi ; en mode profond, combien d'affirmations ne sont pas soutenues.
  • Ne pas éditer le .bib de l'utilisateur sans permission. --correctif écrit un fichier séparé qui ajoute seulement doi/eprint dans les entrées ✅, protège les sigles avec des accolades et, avec --macros-aas, abrège les revues (\apj, \aap, \mnras… ; nécessite aas_macros.sty ou AASTeX). Ne jamais changer l'année, le volume ni la page. Ces corrections sont proposées et appliquées uniquement si l'utilisateur donne son accord. Afficher le diff avant de remplacer l'original.
  • Les liens sont pour lire et télécharger. Ne pas télécharger de PDF sauf si l'utilisateur le demande explicitement. Dans ce cas, les enregistrer dans un dossier nouveau et vide.

Pièges

  • Avec plainnat/aasjournals les titres passent en minuscules. Le correctif protège les sigles ({PDS} 70, {ALMA}, {3D}), mais pas les noms propres (Jupiter, Kepler) : les vérifier.
  • L'analyseur BibTeX est minimal : il ne résout pas @string ni la concaténation avec #. Prévenir si le .bib les utilise.
  • Les liens ADS soumettent une vérification humaine aux navigateurs automatisés. Ils sont pour l'utilisateur, pas pour que Claude les ouvre.
  • Tests : --selftest (sans réseau) et tests/regression.py (avec réseau, fixtures avec citations piégées).

Skills associés