senseiewok/cf-evidence-loop

Répondez à une question de recherche sur la mucoviscidose, la drépanocytose ou toute autre pathologie comme le ferait un chercheur, une source publique à la fois, et renvoyez des enregistrements de preuves au lieu de réponses. Utilisez-le quand une tâche nécessite de rechercher dans PubMed ou Europe PMC, de trouver des revues systématiques ou Cochrane, de vérifier si un article a été rétracté ou corrigé, de lister ou inspecter des études de ClinicalTrials.gov, de confirmer une date d'approbation de médicament aux États-Unis ou de lire une section d'étiquette en vigueur, de consulter ou scanner des prépublications, de lire le classement d'un variant ClinVar...

Qu'est-ce que cf-evidence-loop ?

Cette compétence est un outil en ligne de commande conçu pour les agents d'IA, leur permettant d'effectuer des recherches documentaires rigoureuses et fondées sur des preuves dans le domaine biomédical, en suivant systématiquement une série de questions sur des sources publiques comme le ferait un chercheur humain. Elle est particulièrement utile pour les pathologies comme la mucoviscidose et la drépanocytose, mais peut être appliquée à n'importe quelle condition. Les principales fonctionnalités incluent la recherche dans des bases de données de littérature (PubMed, Europe PMC), la vérification de rétractations (Crossref, Retraction Watch), la consultation d'essais cliniques (ClinicalTrials.gov), de médicaments approuvés (FDA, EMA), de variantes génétiques (ClinVar, MyVariant.info), de prépublications (bioRxiv, medRxiv), et de données de population. Un principe fondamental est que chaque résultat est accompagné de sa source, de sa date, et de ce qu'il n'établit pas, garantissant ainsi la traçabilité et l'honnêteté intellectuelle. L'outil refuse catégoriquement d'appeler un modèle de langage ou d'interroger des sources contenant des données individuelles, et il est conçu pour ne jamais interpréter les résultats pour un utilisateur humain, se limitant à la collecte factuelle de preuves.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/senseiewok/cf-skills/tree/HEAD/.claude/skills/cf-evidence-loop

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · 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

Boucle de preuves CF

Un chercheur ne commence pas par une réponse. Il parcourt un ensemble fixe de questions face aux archives publiques : ce qui a été publié, si quelque chose a été rétracté, ce qui est en essai, ce qui est approuvé et pour qui, combien de personnes cela concerne, ce que le domaine recommande, et ce que le domaine se dit à lui-même dans les subventions et les prépublications. Cette compétence donne à un agent cette boucle sous forme de ligne de commande, avec une règle : rien ne revient sans sa source, sa date, et ce qu'il n'établit pas.

Recherche, pas avis médical. Les enregistrements que cet outil renvoie décrivent des documents publics. Ils n'interprètent rien pour une personne, et le texte d'indication d'une étiquette n'est pas l'éligibilité d'un individu.

1. Ce que fait cette compétence

QuestionCommandeSource
Qu'est-ce qui a été publié sur ce sujet ?pubmed "<terme>" [--sort pub_date]PubMed via les E-utilities du NCBI
Que disent les revues systématiques et Cochrane ?reviews "<terme>"Sous-ensemble des revues systématiques de PubMed plus la revue Cochrane
Rechercher avec des métadonnées d'accès libre et de citationsepmc '<requête Europe PMC>'Europe PMC
À quelle fréquence ce DOI est-il cité et est-il en accès libre ?cited <DOI>Europe PMC
Cet article a-t-il été rétracté ou corrigé ?retractions <DOI> [<DOI> ...]Crossref, données de Retraction Watch
Qu'est-ce que ce DOI ?doi <DOI>Crossref
Quand la FDA a-t-elle approuvé ce médicament pour la première fois ?approval <MARQUE>openFDA Drugs@FDA
Que dit l'étiquette américaine actuelle ?label <MARQUE> [--sections ...]Étiquette openFDA
Quand l'EMA a-t-elle autorisé ce médicament dans l'UE ?ema <MÉDICAMENT> [--file CHEMIN]Agence européenne des médicaments (rapport JSON téléchargé hors ligne)
Quels essais listent cette condition ?trials "<condition>" [--term X] [--status RECRUTEMENT]ClinicalTrials.gov v2
Que contient le registre pour cet essai ?trial <NCTId>ClinicalTrials.gov v2
Qu'est-ce que cette prépublication ?`preprint <biorxivmedrxiv> `
Quelles prépublications sur la mucoviscidose sont apparues dans une fenêtre donnée ?preprints <serveur> <AAAA-MM-JJ> <AAAA-MM-JJ> [--pattern]bioRxiv / medRxiv
Comment ce variant est-il classifié ?variants "<requête ClinVar>"ClinVar via les E-utilities du NCBI
Qui le NIH finance-t-il sur ce sujet ?grants "<texte>" [--fy 2025]NIH RePORTER
Qui l'UKRI finance-t-il sur ce sujet ?ukri "<requête>" [--limit 25]UKRI Gateway to Research (alias : gtr)
Quel est le dénominateur de population pour une région ?population <entité> [--variable Count_Person] [--année AAAA]Google Data Commons
Annoter un variant avec CADD, ClinVar, SnpEff, fréquence gnomADmyvariant "<requête variant>" [--limit 5]MyVariant.info
Interroger les fréquences alléliques agrégées de gnomAD (refusé par conception)gnomad <chrom-pos-ref-alt>gnomAD (accès manuel uniquement ; toujours refusé par la politique du catalogue)
Que détient OpenAlex pour ce travail (citations, rétractation, OA) ?`openalex <DOIID>`
Rechercher des travaux OpenAlexopenalex-search "<requête>" [--limit 10]OpenAlex via OurResearch (clé requise)
Quels lieux d'accès libre et métadonnées de licence Unpaywall indexe-t-il ?unpaywall <DOI>Unpaywall via OurResearch
Quel graphe de citations et métadonnées d'article Semantic Scholar détient-il ?s2 <DOI>Semantic Scholar via Ai2 (alias : semantic-scholar)
Résoudre la piste complète de l'article (Crossref, OA Unpaywall, citations Semantic Scholar)paper-trail <DOI>Crossref, Unpaywall, Semantic Scholar (alias : paper)
Quelles métadonnées de composé, phase clinique et codes ATC ChEMBL détient-il ?`chembl <CHEMBL_IDnom> [--limit 5]`
Quels dosages de bioactivité quantitative (EC50, IC50, Ki, Kd) ChEMBL détient-il ?`chembl-activity <CHEMBL_IDnom> [--cible CHEMBL4051]`
Quels scores de tractabilité cible, de sécurité, de maladie, ou statistiques FAERS Open Targets détient-il ?`opentargets <IDrequête> [--limit 5]`
Quels décomptes de citations de soutien, de contraste et de mention Scite détient-il pour ce DOI ?scite <DOI> [--rest]Scite Pro MCP (scite-mcp) ou REST public sans quota (--rest, scite-api)
Examiner jusqu'à 500 DOI par demande pour les décomptes de Smart Citations, rétractations et répartition par section, sans coût de quotascite-batch <DOI...> [--papers] [--sections]REST public Scite (POST /tallies, POST /papers, POST /tallies/cited-by-sections ; 0 coût de quota)
Comment les citations de ce DOI sont-elles réparties entre les sections Introduction, Méthodes, Résultats et Discussion ?scite-sections <DOI>REST public Scite (GET /tallies/cited-by-sections/{doi} + /tallies/{doi} ; 0 coût de quota)
Lire textuellement des extraits de texte intégral et des extraits de Smart Citation à l'intérieur d'un article spécifiquescite-excerpts <DOI> "<requête>" [--limit 5]Scite Pro MCP Mode C (scite-mcp, mis en quarantaine dans <untrusted_data>)
Quels articles connexes Scite recommande-t-il à partir d'un DOI source ?scite-recommend <DOI> [--limit 5]REST partenaire Scite (GET /api_partner/recommend-papers/{doi}, limité par un bouclier REST de 650/mois)
Rechercher dans la littérature avec les décomptes de Smart Citations de Scitescite-search "<requête>" [--limit 5]Scite Pro MCP (scite-mcp, OAuth/clé requis)
Résoudre un PMID PubMed en DOI sans coût de quotascite-pmid <PMID>REST public Scite (GET /papers/resolve-pmid/{pmid}, 0 coût de quota)
Agréger les décomptes de Smart Citations sur jusqu'à 100 DOI, sans coût de quotascite-aggregate <DOI...>REST public Scite (POST /tallies/aggregate, 0 coût de quota)
Lister les publications citantes et les décomptes de citations rétractées pour un DOI cible, sans coût de quotascite-sources <DOI> [--limit 5]REST public Scite (GET /papers/sources/{target_doi}, 0 coût de quota)
Explorer le réseau de citations à 1 saut avec classification d'intention et extraits mis en quarantainescite-graph <DOI> [--direction both] [--limit 5]Scite Pro MCP (citation_graph, mis en quarantaine dans <untrusted_data>)
Lire le texte intégral paginé par DOI ou PMID`scite-fulltext <DOIPMID> [--offset 0] [--length 8000]`
Rechercher dans les ensembles de données Scite Evidence (MHRA Royaume-Uni, Brevets, 510(k), MAUDE, FAERS, Subventions, Médicaments, Essais)scite-evidence <dataset> "<requête>" [--filter F] [--page 1]Scite Pro MCP (search_mhra, search_patents, search_510k_summaries, etc., mis en quarantaine dans <untrusted_data>)
Normaliser les coordonnées de variant HGVS ou SPDI`ncbi-variation <HGVSSPDI>`
Consulter la séquence protéique, les limites des domaines et les variants naturels d'UniProtKB`uniprot <ACCESSIONrequête> [--limit 5]`
Consulter les coordonnées génomiques, transcrits canoniques ou conséquences rsID d'Ensembl`ensembl <rsIDENSG
Rechercher dans les étiquettes de produits structurés (SPL) de NLM DailyMed par nom de médicamentdailymed <MÉDICAMENT> [--limit 5]Services web RESTful DailyMed v2 (dailymed-web-services)
Lire les conditions d'utilisation ou la page juridique avant une entrée de catalogueread-page <HTTPS_URL> [--out FICHIER] [--max-chars N]Lecture, initiée par un humain, de pages de conditions/politiques ou de PDF sous les règles de conduite du labo
Consulter de manière déterministe l'exon CFTR RefSeq NM_000492.4 et le contexte du domaine Uniprot P13569`cftr-context <variantcodon>`
Consulter de manière déterministe la marque de modulateur CFTR, l'API, le code moléculaire, la NDA et le contexte de sécurité de l'avertissement encadré de l'étiquette SPL openFDA`cftr-modulator <marquecode
Consulter de manière déterministe les métadonnées de la structure de coordonnées Cryo-EM de CFTRcftr-structure <pdb_id> [--list]Résolution structurelle Cryo-EM CFTR déterministe sans réseau, ligands, conformation et référence (alias : cftr-pdb)
Que cet outil peut-il atteindre ?sourcesle catalogue
Que disent plusieurs sources à propos d'un médicament, d'un variant ou d'un essai ?brief drug <MARQUE>, brief variant "<requête ClinVar>", brief trial <NCTId>les sources ci-dessus, recoupées (voir Briefs)
Est-ce que chaque DOI, PMID et id d'essai de cette note existe ?cite-check <FICHIER> [--max-ids 30] [--scite-bulk]Crossref, PubMed, ClinicalTrials.gov, plus pré-vérification en volume Scite facultative sans quota (voir Cite-check)

Ce que le code client refuse de faire : atteindre un hôte non autorisé dans catalog.yaml (une redirection n'est jamais suivie dans les requêtes de données API) ; se présenter comme un navigateur ; ignorer les vérifications de certificat ; réessayer après un refus. Pour la lecture des conditions pré-catalogue, read-page applique la conduite réseau stricte du labo : HTTPS uniquement, robots.txt d'abord via robots_allows, délai d'exploration respecté, refus/robots illisible annule la récupération, redirections HTTPS vers le même site revérifiées par rapport aux robots, vérification de certificat activée, limite de 5 Mo de corps, requête unique. Il n'a pas besoin d'entrée de catalogue car il existe spécifiquement pour une lecture initiée par un humain de pages de conditions avant qu'une entrée de catalogue n'existe, et non pour l'extraction de données. Le package n'appelle jamais non plus de modèle de langage et n'interroge aucune source contenant des données individuelles.

2. Lancer

pip install -r scripts/requirements.txt
python scripts/evidence_cli.py retractions 10.1038/ng.2745
python scripts/evidence_cli.py approu TF TRIKAFTA
python scripts/evidence_cli.py variants "CFTR[gene] AND F508del" --limit 5
python scripts/evidence_cli.py population country/USA
python scripts/evidence_cli.py cftr-context "F508del"
python scripts/evidence_cli.py cftr-context "621+1G->T" --json
python scripts/evidence_cli.py cftr-context "711+1G->T"
python scripts/evidence_cli.py cftr-modulator "Trikafta"
python scripts/evidence_cli.py cftr-modulator "VX-121" --json
python scripts/evidence_cli.py cftr-structure "8EIQ"
python scripts/evidence_cli.py cftr-structure "8EIZ"
python scripts/evidence_cli.py cftr-structure "7SV7"
python scripts/evidence_cli.py cftr-structure "7SVR"
python scripts/evidence_cli.py cftr-structure "6O2P"
python scripts/evidence_cli.py cftr-pdb --list

Indicateurs sur chaque commande : --json pour un objet JSON par enregistrement, --ledger CHEMIN pour ajouter des enregistrements à un registre de preuves JSONL. Code de sortie 0 quand chaque enregistrement est found ou not_found ; 3 quand l'un d'eux est blocked, rate_limited ou error.

Briefs

Un brief pose une question à plusieurs sources via le même client, de sorte que la porte du catalogue, le rythme, le budget et le coupe-circuit s'appliquent toujours. Il imprime chaque enregistrement que chaque source a renvoyé, le statut de chaque source, les champs qu'il a comparés, et un court bloc de recoupements.

RecetteExécuteRecoupements
brief drug TRIKAFTAapproval, label, trials par terme (5), pubmed pour la marque (5)statut de chaque source ; que l'année de la date d'effet de l'étiquette n'est pas antérieure à l'année de la première approbation Drugs@FDA ; analyse de la littérature et des rétractations OpenAlex ; limite de sécurité du modulateur CFTR (AH-4) et recoupement PDB primaire
brief variant "CFTR[gene] AND F508del"variants, pubmed pour le même terme (5)statut de chaque source ; combien d'enregistrements ClinVar correspondent, avec classification et statut de révision pour chacun
brief trial NCT05033080trial, pubmed pour l'identifiant NCT (5)statut de chaque source ; l'identifiant de l'enregistrement du registre ; quels articles renvoyés nomment l'essai dans leur titre

Comment lire les recoupements :

  • PASS : les valeurs concordent, ou la source a répondu. Ce n'est pas une conclusion sur le médicament, le variant ou l'essai.
  • CHECK : une personne devrait regarder. Une source n'a pas répondu ; plusieurs enregistrements ClinVar correspondent (tous sont listés, aucun n'est choisi) ; ou la date d'effet de l'étiquette est antérieure à la première approbation du médicament, ce qui ne peut pas être correct, donc l'un des deux enregistrements est incohérent. La date d'effet d'une étiquette est sa révision la plus récente, donc une année d'étiquette égale ou postérieure à l'année d'approbation est attendue et est PASS.
  • NOT STATED : une source n'a pas donné la valeur, donc rien n'a été comparé. Les enregistrements PubMed ne contiennent ni résumé ni texte intégral, donc un article qui ne nomme pas l'essai dans son titre est NOT STATED, pas "ne le mentionne pas".

Ce qu'un brief ne fait pas : il n'ajoute aucun fait de son cru. Chaque valeur qu'il imprime est copiée d'un champ d'enregistrement ou est un décompte étiqueté ou un écart d'année, et une valeur manquante s'imprime comme not stated. Une source bloquée, limitée en débit ou en échec n'arrête pas les autres sources ; elle est listée avec son statut et le code de sortie est 3. Avec --json, les enregistrements viennent d'abord et un dernier objet, {"brief": ...}, contient les sources, les champs, les recoupements et le pied de page ; --ledger stocke uniquement les enregistrements. Chaque brief se termine par : Recherche, pas avis médical. Un brief liste des documents publics ; il n'interprète rien pour une personne.

Vérification des citations (Cite-check)

Chaque citation passe par l'enregistrement de preuve, et une citation qui ne peut pas être résolue est supprimée ou corrigée à partir d'une source, jamais réparée de mémoire. cite-check FICHIER l'applique à une note entière. Il trouve chaque DOI, chaque identifiant PubMed écrit comme PMID 123, PMID: 123 ou une URL pubmed/123, et chaque identifiant NCT, supprime les doublons (en gardant la ligne de la première occurrence), et recherche chacun avec le code de recherche unique : doi pour un DOI, une recherche PubMed sur le champ [pmid] pour un PMID (deux requêtes), trial pour un identifiant NCT. Le client habituel s'applique : porte du catalogue, rythme, budget, coupe-circuit, comptabilité.

LigneSignification
PASSLa source a renvoyé un enregistrement ; son titre et son année ou ses dates sont imprimés, not stated quand absents
NOT FOUNDLa source a répondu qu'il n'y a pas d'identifiant de ce type. Supprimez-le ou corrigez-le à partir d'une source ; ne devinez jamais
UNRESOLVEDLa recherche a été bloquée, limitée en débit ou a échoué. Non résolu n'est pas la même chose qu'inexistant
TITLE PASS / TITLE CHECKUne phrase entre guillemets ou en italique de quatre mots ou plus sur la même ligne partage au moins 0,6 (ou moins) des mots du côté le plus court avec le titre de l'enregistrement, sans tenir compte de la casse, de la punc…

…[tronqué pour la traduction]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés