danepps/compétences-recherche-juridique

Recherche juridique approfondie qui déploie plusieurs agents sur des sources juridiques libres, vérifie chaque autorité et retourne une note argumentée et bien citée. Utilisez-la pour la recherche de jurisprudence, la revue de littérature juridique, ou les deux.

Qu'est-ce que compétences-recherche-juridique ?

Cette compétence spécialisée pour agents IA (Claude Code, Cursor, Codex) exécute une recherche juridique approfondie et structurée, en déployant plusieurs agents de manière coordonnée. Elle se distingue par une approche « efficace par défaut » : elle utilise exclusivement des sources juridiques gratuites et ouvertes (CourtListener, Justia, Google Scholar, SSRN, etc.) pour éviter les coûts des bases payantes comme Westlaw ou LexisNexis. La pipeline se déroule en plusieurs étapes : analyse de la requête (question, mode, style, juridiction), vérification préalable des permissions des outils Web, lancement d'un workflow avec un nombre limité d'agents de lecture (≤8 par défaut, 16 en mode approfondi), puis vérification systématique des citations (via l'API CourtListener et appel à des outils comme `check_cite.py`). Le résultat est une note de recherche formatée (mémo IRAC pour les praticiens, introduction/analyse/bibliographie pour le monde académique), avec des hyperliens actifs, une en-tête structurée, et un bloc de production détaillé. Une fonction de « recalage » des affirmations (claim calibration) empêche les généralisations abusives, et un mécanisme de dégradation gracieuse gère les limites de tokens ou d'accès aux sources. Les modes disponibles sont : jurisprudence, doctrine, ou les deux. En mode approfondi (`deep:true`), le nombre de lectures et de vérifications augmente et une passe de réfutation contradictoire est ajoutée sur les citations clés.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/danepps/legal-research-skills/tree/HEAD/claude-code/skills/legal-research

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

Recherche juridique (Legal Research)

Cette compétence se rapproche d'une analyse de recherche approfondie, spécialisée pour le droit et réglée pour être efficace par défaut. Elle exécute une pipeline de récupération sur des sources juridiques libres / ouvertes uniquement (pas Westlaw/Lexis) ; la forme, les limites et la carte des modèles de chaque étape se trouvent à l'étape 4, à côté de l'invocation. La conception maintient une faible utilisation de tokens — le coût dominant dans un déploiement naïf est qu'un modèle frontal lit chaque page récupérée — tout en empêchant les citations hallucinées. Ajoutez deep (par exemple "fais une passe approfondie") pour les travaux à enjeux élevés où la rigueur prime sur la rapidité.

Sources (web ouvert)

Jurisprudence : CourtListener, Justia, Google Scholar (jurisprudence), Cornell LII, Caselaw Access Project, sites officiels des tribunaux. Doctrine : SSRN, Google Scholar, dépôts numériques des facultés de droit, contenu ouvert HeinOnline, sites de revues, pages d'enseignants. Les modes doctrine recherchent également la bibliothèque Zotero de l'utilisateur via le serveur MCP Zotero (ignoré silencieusement si indisponible).

Comment exécuter

1. Analyser la requête

Extraire de la demande de l'utilisateur :

  • question — la question juridique (obligatoire).
  • mode — jurisprudence, doctrine, ou lesdeux. Par défaut lesdeux. Déduire du libellé ("que disent les tribunaux" → jurisprudence ; "état de la littérature / débat doctrinal" → doctrine).
  • styleSortie — praticien (Question Présentée / Réponse Brève / IRAC) ou académique (introduction / panorama / analyse / notes de bas de page). Défaut : praticien pour la jurisprudence, académique pour la doctrine et pour les deux. Respecter une redéfinition explicite.
  • juridiction, dateAu (défaut aujourd'hui), et toute note (faits, contexte, portée).

2. Clarifier uniquement si vraiment bloquant

Si la question est trop vague pour être bien recherchée, poser 2 à 3 questions ciblées avant de lancer. Pour la jurisprudence, la juridiction et le contexte procédural importent le plus ; pour la doctrine, la thèse ou sous-question spécifique et toute fenêtre temporelle. Ne pas trop demander — choisir des valeurs par défaut raisonnables et les noter.

3. Pré-vol : s'assurer que les outils web sont autorisés (à faire AVANT de lancer)

Les sous-agents de recherche appellent fortement WebSearch et WebFetch. Si ces outils ne sont pas pré-autorisés, chaque appel déclenche une invite d'autorisation interactive — et une invite interrompue peut tuer un agent de recherche en cours d'exécution (un vrai mode de défaillance : une exécution précédente a perdu 2 des 4 vecteurs de cette façon).

Avant d'appeler le Workflow, rendre l'exécution autonome :

  1. Lire ~/.claude/settings.json et vérifier permissions.allow pour "WebFetch" et "WebSearch".
  2. Si l'un des deux manque, l'ajouter (fusionner dans le tableau allow existant — ne jamais le remplacer ; créer le chemin permissions.allow s'il est absent). Si les deux sont déjà présents, ne rien faire.
  3. Ne pas interroger l'utilisateur à ce sujet — il s'agit d'une configuration de routine pour la compétence. (Si le fichier est géré/ en lecture seule et que vous ne pouvez pas le modifier, dire à l'utilisateur qu'il verra des invites de récupération et doit les accepter, ou ajouter la règle via /permissions.)
  4. Optionnel mais utile : la vérification déterministe des citations de jurisprudence nécessite un jeton API CourtListener. Le tester, ne pas chercher un fichier — exécuter python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/check_cite.py "347 U.S. 483" ; un code de sortie 0 avec "found": true signifie que le jeton fonctionne et qu'il n'y a rien à signaler. check_cite.py résout le jeton depuis COURTLISTENER_API_TOKEN, puis COURTLISTENER_TOKEN, puis le fichier ~/.config/courtlistener/token — dans cet ordre, et la voie de la variable d'environnement (généralement définie dans le bloc env de ~/.claude/settings.json) est l'installation normale, donc l'absence du fichier ne prouve rien. Si la sonde échoue réellement, ne pas bloquer l'exécution — les agents de vérification se replient sur la vérification web — mais le mentionner une fois dans l'étape de livraison (page du jeton : https://www.courtlistener.com/profile/api-token/).

4. Lancer le workflow

Appeler l'outil Workflow avec le script fourni et les arguments analysés :

Workflow({
  scriptPath: "${CLAUDE_PLUGIN_ROOT}/skills/legal-research/legal-research.workflow.js",
  args: {
    skillsDir: "${CLAUDE_PLUGIN_ROOT}/skills",      // où se trouvent les scripts d'aide fournis
    question: "<la question juridique>",
    mode: "jurisprudence" | "doctrine" | "lesdeux",
    styleSortie: "praticien" | "académique",
    juridiction: "<par ex. fédéral / 9e Cir. / Missouri / Cour suprême des États-Unis>",
    dateAu: "<AAAA-MM-JJ ou 'aujourd'hui'>",
    notes: "<faits, contexte, portée, tout ce que l'utilisateur a souligné>",
    deep: false,  // true uniquement lorsque l'utilisateur demande une passe approfondie/détaillée/à enjeux élevés
    projectDir: "<le répertoire de travail actuel — active le vecteur d'analyse du corpus local ;
                  omettre uniquement si le répertoire courant n'est clairement pas lié à la question>"
  }
})

Par défaut, léger : ~4 vecteurs d'analyse uniquement par recherche (plus une analyse de la bibliothèque Zotero dans les modes doctrine et une analyse du corpus local de projectDir — les notes précédentes et les sources téléchargées sont des cartes et des pistes, jamais des autorités citiables). La portée classe également la question (doctrinale vs. doctrinale ; historique ou non) — cela sélectionne un bref de méthode analytique injecté dans le Projet (discipline de synthèse, hygiène holding/dicta, taxonomie couvrant les époques pour les questions d'histoire doctrinale) et, pour les questions historiques, répartit les vecteurs de recherche sur des couches temporelles afin que la couverture ne se concentre pas sur le canon moderne. Cellule de couverture de réponse directe (doctrine/lesdeux, ajoutée le 16/07/2026 après qu'une exécution de comparaison Codex a battu une exécution Claude à 64 agents sur la question réelle) : La portée doit dédier au moins un vecteur à la doctrine traitant du PHÉNOMÈNE NOMMÉ de la question comme son propre objet — construit à partir des termes de titre spécialisés qu'un expert attend et incluant une recherche de citations de la pièce la plus pertinente — maintenu distinct des littératures adjacentes auxquelles le phénomène appartient simplement. L'analyse signale ces candidats centraux ; le tri les promeut en lectures complètes avant les analyses adjacentes larges. L'échec que cela corrige : cartographier cinq littératures adjacentes (discours extrajudiciaire, récusation, célébrité) tout en manquant la poignée de travaux directement sur le phénomène (par exemple, les études sur les autobiographies judiciaires, les sections d'éthique sur "les contrats de livres des juges"), puis interpréter erronément ce vide du corpus comme une conclusion selon laquelle « aucune doctrine directe n'existe. » Les affirmations d'absence/de vide sont maintenant conditionnées par un audit d'omission de source centrale (dans le bref de méthode doctrinal) : pas de « aucune doctrine ne traite directement de X » à moins qu'une recherche ciblée sur le phénomène ET une recherche de citations dans les deux directions n'aient réellement eu lieu — sinon l'affirmation est limitée à « dans les sources examinées » et la recherche non exécutée est signalée. Le déploiement est organisé autour de cellules de couverture, et le plafond d'agents est un maximum, pas un quota — des voies non-chevauchantes battent de nombreuses recherches généralistes chevauchantes. Pipeline : vecteurs d'analyse → dédoublonnage → ≤8 lectures complètes uniques au total (pas par vecteur ; les lecteurs se replient sur des miroirs en accès libre — dépôts numériques, pages d'auteurs, CourtListener/LII — avant d'abandonner, acheminent les PDF via un récupérateur à limite de taille stricte, fetch_page.py, et extraient le contexte/la limitation/les opinions séparées/l'importance à côté de la proposition et de la citation) → une ébauche de modèle par session (guidée par le bref de méthode) → un comblement de lacunes limité (≤3 récupérations ciblées plus une vague de nouvelle tentative, uniquement si l'ébauche signale des autorités manquantes) → vérifications de citations par lots des seules autorités citées (8 par agent ; les citations de jurisprudence confirmées de manière déterministe via l'API de recherche de citations de CourtListener, check_cite.py, plus une analyse systématique des traitements des opinions citantes via cl_case_tools.py citing — une sonde de langage de traitement classée par pertinence sur les opinions citantes réelles de l'affaire, avec une date de validité, remplaçant l'ancien coup d'œil unique de recherche ; les sources qu'un lecteur a déjà ouvertes cette exécution sautent les revérifications d'existence) → finalisation légère. Les candidats non sélectionnés ET les autorités sur lesquelles chaque source lue elle-même s'appuie sont transportés dans l'ébauche comme des pistes non lues (hedged), de sorte que l'ampleur reste large tandis que les récupérations restent peu nombreuses. Chaque exécution est protégée contre les dépenses : un plafond souple câblé en dur (~250k tokens de sortie en mode léger, ~1M en mode approfondi — relevé de 600k le 15/07/2026 après qu'une exécution historique approfondie s'est bloquée en cours de montée et a laissé 35 des 43 citations non vérifiées) arme la même échelle de dégradation gracieuse qu'un budget explicite +500k — réduire les lectures → sauter le comblement des lacunes → vérifier uniquement les citations porteuses — de sorte qu'une exécution hors de contrôle se dégrade au lieu de s'emballer. Les agents de lecture, de comblement et de vérification portent tous un bloc de discipline d'accès (ajouté à la même date) : des limites de tentatives strictes, WebSearch/WebFetch uniquement, et une interdiction explicite de l'automatisation du navigateur, des proxy de bibliothèque et des flux SSO/connexion — une source payante est un honnête opened=false, pas une raison de s'acharner. Modèles : Haiku uniquement pour l'analyse des extraits de recherche ; Sonnet pour le tri, les lectures complètes et la vérification ; Portée, Projet et Finalisation héritent du modèle de session (Fable quand Fable est actif). deep:true (ou un budget de tokens de style +800k) élargit jusqu'à 7 vecteurs, relève le plafond de lecture à 16 et donne à chaque citation porteuse (limitée à 8) une passe de réfutation contradictoire à 3 votes (rouvre les sources pour confirmer les citations textuellement). Le workflow s'exécute en arrière-plan et vous avertit à son achèvement.

5. Livrer

Le workflow retourne { memo, exitState, degradation, counts, ... }.

  • Vérifier exitState AVANT de présenter. complete → livrer. complete_with_limits → livrer, en mettant en évidence les lacunes documentées (listées dans degradation et la section Limites du mémo). budget_exhausted → la protection budgétaire a réduit la couverture réelle (lectures réduites, comblement de lacunes sauté, citations non vérifiées — voir degradation pour les détails) ; le mémo n'est pas encore le livrable. Le schéma de sauvetage éprouvé (exécution de juillet 2026 avant 1960) : lancer des passes d'agents de lecture et de vérification ciblées — une par zone non couverte, chacune recevant les affaires/citations spécifiques à récupérer et à confirmer par rapport au texte officiel des recueils (CAP static.case.law / scans LOC usrep) — puis rédiger le mémo final vous-même à partir du noyau vérifié du workflow plus les passes de comblement. Ne pas remettre à l'utilisateur un mémo qui dit « Confiance : insuffisante » pour la moitié de sa portée sans soit combler les lacunes, soit demander. Les agents de sauvetage ont besoin de la même discipline d'accès que les agents du workflow (leçon d'une exécution doctrinale de juillet 2026, où un agent de sauvetage sans limite a brûlé 30+ minutes et ~245k tokens en escaladant vers l'automatisation du navigateur pour un article payant de 1962) : écrire dans chaque invite de sauvetage une limite de tentatives stricte (~3 par source), WebSearch/WebFetch uniquement, une interdiction explicite de l'automatisation du navigateur / des proxy de bibliothèque / des flux SSO, et l'instruction que « payant — voici la base la plus solide à laquelle je suis parvenu » est une réponse parfaitement acceptable. Si un agent de sauvetage s'acharne quoi qu'il en soit, lui envoyer SendMessage pour qu'il conclue et fasse son rapport plutôt que d'attendre.
  • Présenter le mémo à l'utilisateur comme livrable principal.
  • Hyperliens (obligatoire, selon l'auteur, 29/08/2026) : chaque article de presse, billet de blog ou autre source web dans le mémo doit porter son URL fonctionnelle sous forme de lien cliquable — jamais une simple mention du nom du média comme « (Politico) » ou « (Roll Call, 14 juillet 2026) ». Le bloc de citation du workflow impose cela dans les invites des agents ; maintenir les modifications manuscrites, les passes de sauvetage et tout mémo de recherche ad hoc (hors workflow) à la même règle, et demander aux agents de sauvetage/comblement de retourner l'URL pour chaque source qu'ils citent (une affirmation sans URL est non vérifiée).
  • En-tête du mémo de recherche et pied de production (obligatoire, selon l'auteur — règle globale dans ~/.claude/CLAUDE.md) : le mémo s'ouvre directement sous le titre avec le bloc d'en-tête structuré (Sujet : / Date : / Par :) ; le bloc Détails de production : se trouve à la toute fin du fichier (après toutes les annexes, y compris « Limites de cette recherche », séparé par une règle ---) — jamais au début. Date est la date/l'heure locale de livraison/rédaction du mémo ; Par est Claude-<modèle de session d'orchestration> (identifiant exact) ; Détails de production nomme la compétence, le(s) modèle(s) d'agent de workflow réellement utilisé(s) (lu à partir des entrées de progression par agent de l'exécution — ne pas supposer), la durée réelle et le nombre de tokens du bloc <usage> de la notification d'achèvement (étiquetés tokens de sortie des sous-agents ; frais généraux d'orchestration non inclus). Si des passes de sauvetage/ comblement ont eu lieu après le workflow, ajouter leurs nombres d'agents et noter que la durée couvre uniquement l'exécution du workflow.
  • Mettre en évidence les décomptes de vérification (« N autorités vérifiées, M non vérifiées ») afin qu'ils sachent à quel point se fier, et renvoyer à l'annexe « Limites de cette recherche » du mémo (qui divulgue désormais la base de vérification de chaque autorité : texte intégral direct / reproduction faisant autorité / corroboration secondaire / citation uniquement).
  • Le résultat contient également skeleton — le plan analytique à citations à partir duquel le brouillon a été rédigé (chaque affirmation porteuse étiquetée avec sa découverte, les trous marqués LACUNE). Ne pas le présenter par défaut ; le proposer si l'utilisateur souhaite auditer le raisonnement, et l'utiliser vous-même lors de l'édition manuelle du mémo (une affirmation sans ligne de squelette a besoin d'une autorité ou d'une réserve avant de pouvoir être développée).
  • Proposer de le sauvegarder : Markdown dans le répertoire de travail ; Word via le convertisseur fourni — python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/md2docx.py memo.md memo.docx "<Titre>" ; ou Google Drive via le connecteur. Si l'utilisateur a demandé un .docx dès le départ, le produire simplement.
  • Proposer une passe de suivi sur tout point faible/non vérifié, ou un changement de style de sortie.

Calibration des affirmations (v7)

La vérification des citations et la calibration des affirmations capturent des classes d'erreurs disjointes : la vérification capture les fausses déclarations sur les sources ; la calibration capture des résultats vrais assemblés en généralisations non étayées. La pipeline impose désormais les deux — l'invite Projet comporte une porte de force d'affirmation (les mots de fréquence/priorité/ caractère définitif comme « premier », « seul », « de manière écrasante », « effacé » nécessitent une recherche conçue pour les étayer, sinon un langage limité à l'échantillon), les lecteurs étiquettent le contexte de chaque source (y compris les dispositions arguendo et non jurisprudentielles) et sa pertinence (uniquement procédurale / suppose la prémisse / doctrine adjacente), les exécutions historiques obtiennent des vérifications de biais de sélection, de date limite et de préjudice/exclusion, et les exécutions approfondies ajoutent une passe de calibration contradictoire dédiée sur le brouillon. Une troisième classe d'erreurs se situe entre elles : une

…

[le contenu original après ce point a été tronqué pour la traduction]

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

danepps/legal-research-skills

Build or extend a Zotero collection of verified sources for a project — find the sources (web, catalogs, HeinOnline via an institutional library proxy), add them with full metadata via the Zotero Web API, then run a deterministic anti-hallucination check that every added item must pass. Trigger when the user wants sources gathered into Zotero ("build a library for X", "add the books/articles on X to my Zotero", "populate <collection> with …").

danepps/legal-research-skills

Gather the full document set for a SCOTUS case being prepped for a podcast episode, class, or article — cert-stage filings, merits briefs, lower-court opinion, questions presented, and oral-argument transcript — and load them onto the user's reMarkable in a per-case folder. Manual trigger — use when the user says "prep <case>", "grab the briefs for <case>", "load up <case>", or similar.

danepps/legal-research-skills

Verify every citation and quotation in an article draft against the real sources — cases via CourtListener + official reporters, scholarship via the user's Zotero library then the open web — and return a graded, footnote-by-footnote report with a "needs your attention" section first, plus a citation-form section (short cites per Bluebook R. 10.9/4.2 and italics/small caps per R. 2.1(a)) decided from the draft alone. Trigger when the user wants a draft cite-checked ("cite-check this", "check the citations/quotes in this draft", "run cite-check on <file>"). Input: a .docx with real Word footnotes (markdown/plain-text fallback). Not a full Bluebook linter — signal order, citation order and cite composition stay out.

danepps/legal-research-skills

Quick, verified citation-finding for a specific proposition — a footnote-filler, not a research memo. Returns a few Supreme Court cites and/or a few scholarly cites (top scholars in flagship journals preferred; student notes only as a last resort), each verified with a pincite and a parenthetical or quote. Trigger when the user asks "find me a cite for X", "what should I cite for this footnote", "I need authority for the proposition that…", or pastes a sentence with an empty footnote.

Skills associés