danepps/legal-research-skills

Investigación legal profunda que despliega múltiples agentes en fuentes legales gratuitas, verifica cada autoridad y devuelve un memorando pulido y bien citado. Úselo para investigación de jurisprudencia, revisiones de literatura académica legal o ambas. Modos: jurisprudencia | académico | ambos. Actívelo cuando el usuario desee un memorando doctrinal exhaustivo, un estudio del debate académico, una respuesta fundamentada en casos/leyes o una inmersión profunda en una pregunta legal.

¿Qué es legal-research-skills?

Esta habilidad simula una ejecución de investigación profunda especializada en derecho, diseñada para ser eficiente por defecto y operar exclusivamente sobre fuentes legales gratuitas y de acceso abierto (sin Westlaw/Lexis). Su pipeline por etapas, límites y mapeo de modelos se definen junto a la invocación, minimizando el uso de tokens al evitar que un modelo frontera lea cada página recuperada, mientras previene citas inventadas. Soporta tres modos: jurisprudencia, académico o ambos, y se activa cuando el usuario solicita un memorando doctrinal completo, un estudio del debate académico o una respuesta fundamentada en casos y estatutos. La habilidad ejecuta un flujo de trabajo escalonado que incluye vectores de encuesta, lecturas completas (máximo 8), un borrador único guiado por un resumen de método, una verificación de citas determinista y un rescate acotado en caso de límites de presupuesto. Las fuentes principales incluyen CourtListener, Justia, Google Scholar, Cornell LII, SSRN y repositorios de acceso abierto. Además, los modos académicos buscan en la biblioteca Zotero del usuario si está disponible. La verificación de citas se realiza mediante la API de CourtListener y herramientas auxiliares, y el flujo de trabajo se ejecuta en segundo plano, notificando al finalizar. La entrega incluye un memorando formateado con un encabezado estructurado (Tema/Fecha/por) y un pie de página con detalles de producción, citas con hipervínculos y un apéndice de "Límites de esta investigación" que revela la base de verificación de cada autoridad.

Compatible con✓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 Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Investigación Legal

Aproxima una ejecución de investigación profunda, especializada en derecho y ajustada para ser eficiente por defecto. Ejecuta un pipeline de recuperación sobre fuentes legales gratuitas y de acceso abierto (sin Westlaw/Lexis); la forma etapa por etapa, los límites y el mapa de modelos residen en el paso 4, junto a la invocación. El diseño mantiene bajo el uso de tokens — el costo dominante en la expansión ingenua es que un modelo frontera lea cada página recuperada — mientras previene citas inventadas. Agregue deep (por ejemplo, "haz un pase profundo") para trabajos de alto riesgo donde la exhaustividad supere a la velocidad.

Fuentes (acceso abierto)

Jurisprudencia: CourtListener, Justia, Google Scholar jurisprudencia, Cornell LII, Caselaw Access Project, sitios oficiales de tribunales. Académico: SSRN, Google Scholar, repositorios de acceso común de facultades de derecho, contenido abierto de HeinOnline, sitios de revistas, páginas de profesores. Los modos académicos también buscan en la biblioteca Zotero del usuario a través del servidor MCP de Zotero (se omite elegantemente si no está disponible).

Cómo ejecutar

1. Analizar la solicitud

Extraer del mensaje del usuario:

  • pregunta — la pregunta legal (obligatorio).
  • modo — jurisprudencia, academico o ambos. Por defecto ambos. Inferir del redactado ("qué sostienen los tribunales" → jurisprudencia; "estado de la literatura / debate académico" → academico).
  • estiloSalida — practicante (Pregunta Presentada / Respuesta Breve / IRAC) o academico (introducción / panorama / análisis / notas al pie). Por defecto: practicante para jurisprudencia, academico para academico y para ambos. Respetar una anulación explícita.
  • jurisdicción, fechaDe (por defecto hoy) y cualquier nota (hechos, postura, alcance).

2. Aclarar solo si es realmente bloqueante

Si la pregunta es demasiado vaga para investigar bien, haga 2–3 preguntas específicas antes de lanzar. Para jurisprudencia, jurisdicción y postura procesal son lo más importante; para académico, la tesis o subpregunta específica y cualquier ventana de tiempo. No pregunte en exceso — elija valores predeterminados sensatos y anótelos.

3. Verificación previa: asegurarse de que las herramientas web estén permitidas (hacer esto ANTES de lanzar)

Los subagentes de investigación llaman intensamente a WebSearch y WebFetch. Si esas herramientas no están preautorizadas, cada llamada genera un mensaje de permiso interactivo — y un mensaje interrumpido puede matar a un agente de investigación a mitad de ejecución (un modo de fallo real: una ejecución anterior perdió 2 de 4 vectores de esta manera).

Antes de llamar al Workflow, haga que la ejecución sea autocontenida:

  1. Lea ~/.claude/settings.json y verifique permissions.allow en busca de "WebFetch" y "WebSearch".
  2. Si falta alguno, agréguelo (fusionar en el array allow existente — nunca reemplazarlo; crear la ruta permissions.allow si está ausente). Si ambos ya están presentes, no haga nada.
  3. No pregunte al usuario sobre esto — es configuración rutinaria para la habilidad. (Si el archivo está administrado/ solo lectura y no puede editarlo, dígale al usuario que verá mensajes de recuperación y debe aceptarlos, o agregar la regla mediante /permissions).
  4. Opcional pero vale la pena echarle un vistazo: la verificación determinista de citas de casos necesita un token de API de CourtListener. Pruébelo, no busque un archivo — ejecute python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/check_cite.py \"347 U.S. 483\"; salida 0 con "encontrado": true significa que el token funciona y no hay nada que informar. check_cite.py resuelve el token desde COURTLISTENER_API_TOKEN, luego COURTLISTENER_TOKEN, luego el archivo ~/.config/courtlistener/token — en ese orden, y la ruta de la variable de entorno (comúnmente establecida en el bloque env de ~/.claude/settings.json) es la instalación normal, por lo que la ausencia del archivo no prueba nada. Si la prueba realmente falla, no bloquee la ejecución — los agentes de verificación recurren a la verificación web — pero menciónelo una vez en el paso de entrega (página del token: https://www.courtlistener.com/profile/api-token/).

4. Lanzar el flujo de trabajo

Llame a la herramienta Workflow con el script incluido y los argumentos analizados:

Workflow({
  scriptPath: \"${CLAUDE_PLUGIN_ROOT}/skills/legal-research/legal-research.workflow.js\",
  args: {
    skillsDir: \"${CLAUDE_PLUGIN_ROOT}/skills\",      // donde residen los scripts auxiliares incluidos
    question: \"<la pregunta legal>\",
    mode: \"jurisprudencia\" | \"academico\" | \"ambos\",
    outputStyle: \"practicante\" | \"academico\",
    jurisdiction: \"<ej. federal / 9.º Cir. / Misuri / Tribunal Supremo de EE. UU.>\",
    asOfDate: \"<YYYY-MM-DD o 'hoy'>\",
    notes: \"<hechos, postura, alcance, cualquier cosa que el usuario haya enfatizado>\",
    deep: false,  // verdadero solo cuando el usuario solicita un pase profundo/exhaustivo/de alto riesgo
    projectDir: \"<el directorio de trabajo actual — permite el vector de encuesta del corpus local;
                  omitir solo si el cwd claramente no está relacionado con la pregunta>\"
  }
})

Ajustado por defecto: ~4 vectores de encuesta solo de búsqueda (más un barrido de la biblioteca Zotero en modos académicos y un barrido del corpus local de projectDir — memorandos anteriores y fuentes descargadas son mapas y pistas, nunca autoridad citable). El alcance también clasifica la pregunta (doctrinal vs. académica; histórica o no) — eso selecciona un resumen de método analítico inyectado en el Borrador (disciplina de síntesis, higiene de holding/dicta, taxonomía que abarca épocas para preguntas de historia doctrinal) y, para preguntas históricas, distribuye los vectores de búsqueda en capas temporales para que la cobertura no se agrupe en el canon moderno. Celda de cobertura de respuesta directa (académico/ambos, agregado el 2026-07-16 después de que una ejecución de comparación de Codex venciera a una ejecución de Claude de 64 agentes en la pregunta real): El alcance debe dedicar al menos un vector a la literatura que trata el FENÓMENO NOMBRADO de la pregunta como su propio objeto — construido a partir de los términos de título de especialista que un experto espera e incluyendo una búsqueda de citas de la pieza más relevante — mantenido distinto de las literaturas adyacentes a las que el fenómeno simplemente pertenece. La encuesta señala dichos candidatos centrales; el triaje los promueve a lecturas completas antes de las encuestas adyacentes amplias. El fallo que esto corrige: mapear cinco literaturas adyacentes (discurso extrajudicial, recusación, celebridad) mientras se pierden los pocos trabajos directamente sobre el fenómeno (ej. estudios de autobiografía judicial, secciones de ética de "acuerdos de libros de jueces"), para luego confundir esa brecha de corpus con un hallazgo de que "no existe literatura directa." Las afirmaciones de ausencia/brecha ahora están controladas por una auditoría de omisión de fuentes centrales (en el resumen de método académico): no hay "ninguna literatura aborda directamente X" a menos que una búsqueda dirigida al fenómeno Y una búsqueda de citas en ambas direcciones realmente se hayan ejecutado — de lo contrario, la afirmación se limita a "en las fuentes revisadas" y la búsqueda no ejecutada se señala. La expansión se organiza en torno a celdas de cobertura, y el límite de agentes es un techo, no una cuota — los carriles no superpuestos superan a muchas búsquedas generalistas superpuestas. Pipeline: vectores de encuesta → deduplicación → ≤8 lecturas completas únicas en total (no por vector; los lectores recurren a espejos de acceso abierto — commons digitales, páginas de autor, CourtListener/LII — antes de rendirse, enrutan los PDF a través de un recuperador con límite de tamaño duro, fetch_page.py, y extraen postura/limitación/opiniones separadas/significado junto con la proposición y la cita) → un borrador de sesión única (guiado por el resumen de método) → un relleno de brechas acotado (≤3 recuperaciones dirigidas más una ola de reintentos, solo si el borrador señala autoridades faltantes) → verificaciones de citas fragmentadas solo de las autoridades citadas (8 por agente; las citas de casos se confirman deterministamente a través de la API de búsqueda de citas de CourtListener, check_cite.py, más un escaneo sistemático de opiniones citantes mediante cl_case_tools.py citing — un sondeo de lenguaje de tratamiento clasificado por relevancia sobre las opiniones citantes reales del caso, con una fecha de vigencia, reemplazando la búsqueda única anterior; las fuentes que un lector ya abrió en esta ejecución omiten las verificaciones de existencia) → finalización ligera. Los candidatos no seleccionados Y las autoridades en las que cada fuente leída se basa se llevan al borrador como pistas no leídas con reservas, para que la amplitud se mantenga amplia mientras las recuperaciones se mantengan pocas. Cada ejecución está protegida por un límite de gasto: un techo blando cableado (~250k tokens de salida por defecto, ~1M profundo — elevado de 600k el 2026-07-15 después de una ejecución histórica profunda que se atascó a medio camino y dejó 35 de 43 citas sin verificar) arma la misma escalera de degradación elegante que un presupuesto explícito +500k — recortar lecturas → saltar relleno de brechas → verificar solo citas de carga — para que una ejecución descontrolada se degrade en lugar de espiralizarse. Los agentes de lectura, relleno de brechas y verificación llevan todos un bloque de disciplina de acceso (agregado la misma fecha): límites de intento duros, WebSearch/WebFetch solo, y una prohibición explícita de automatización de navegador, proxies de biblioteca e inicios de sesión/SSO — una fuente con paywall es un honesto abierto=false, no una razón para insistir. Modelos: Haiku solo para la encuesta de fragmentos de búsqueda; Sonnet para triaje, lecturas completas y verificación; Alcance, Borrador y Finalizar heredan el modelo de sesión (Fable cuando Fable está activo). deep:true (o un presupuesto de tokens estilo +800k) amplía a hasta 7 vectores, eleva el límite de lectura a 16 y le da a cada cita de carga (limitada a 8) un pase de refutación adversaria de 3 votos (vuelve a abrir fuentes para confirmar citas textuales). El flujo de trabajo se ejecuta en segundo plano y le notifica al finalizar.

5. Entregar

El flujo de trabajo devuelve { memo, estadoSalida, degradacion, conteos, ... }.

  • Verifique estadoSalida ANTES de presentar. completo → entregar. completo_con_limites → entregar, mostrando las brechas documentadas (listadas en degradacion y la sección de Límites del memo). presupuesto_agotado → el guardián del presupuesto recortó la cobertura real (lecturas recortadas, relleno de brechas omitido, citas no verificadas — ver degradacion para detalles); el memo aún no es el entregable. El patrón de rescate probado (ejecución de julio de 2026 anterior a 1960): lanzar pases de agente de lectura y verificación dirigidos — uno por área descubierta, cada uno con los casos/citas específicos para recuperar y confirmar contra el texto oficial del reportero (CAP static.case.law / LOC usrep scans) — luego redactar el memo final usted mismo a partir del núcleo verificado del flujo de trabajo más los pases de relleno. No entregue al usuario un memo que diga "Confianza: insuficiente" para la mitad de su alcance sin rellenar los vacíos o preguntar. Los agentes de rescate necesitan la misma disciplina de acceso que los agentes del flujo de trabajo (lección de una ejecución académica de julio de 2026, donde un agente de rescate sin límite quemó 30+ minutos y ~245k tokens escalando a automatización de navegador contra un artículo de 1962 con paywall): escribir en cada mensaje de rescate un límite de intento duro (~3 por fuente), WebSearch/WebFetch solo, una prohibición explícita de automatización de navegador / proxies de biblioteca / flujos SSO, y la instrucción de que "con paywall — aquí está la base más sólida que alcancé" es una respuesta completamente aceptable. Si un agente de rescate insiste de todos modos, enviarle un mensaje para que termine e informe en lugar de esperarlo.
  • Presentar el memo al usuario como el entregable principal.
  • Hipervínculos (obligatorio, según el autor, 2026-08-29): cada noticia, publicación de blog u otra fuente web en el memo debe llevar su URL funcional como un enlace en el que se puede hacer clic — nunca una atribución solo con el nombre del medio como "(Politico)" o "(Roll Call, 14 de julio de 2026)". El bloque de citas del flujo de trabajo aplica esto en los mensajes de los agentes; mantenga las ediciones escritas a mano, los pases de rescate y cualquier memo de investigación ad hoc (fuera del flujo de trabajo) con la misma regla, e instruya a cualquier agente de rescate/relleno para que devuelva la URL de cada fuente que cite (una afirmación sin URL no está verificada).
  • Encabezado del memo de investigación y pie de página de producción (obligatorio, según el autor — regla global en ~/.claude/CLAUDE.md): el memo se abre directamente debajo del título con el bloque de encabezado estructurado (Tema: / Fecha: / Por:); el bloque Detalles de producción: va al final del archivo (después de todos los apéndices, incl. "Límites de esta investigación", separado por una regla ---) — nunca arriba. Fecha es la fecha/hora local en que el memo se entregó/escribió; Por es Claude-<modelo de sesión orquestador> (id exacto); Detalles de producción nombra la habilidad, el/los modelos de agente de flujo de trabajo realmente utilizados (leídos de las entradas de progreso por agente de la ejecución — no asuma), la duración en tiempo real y el recuento de tokens del bloque <usage> de la notificación de finalización (etiquetado como tokens de salida del subagente; la sobrecarga del orquestador no está incluida). Si se ejecutaron pases de rescate/relleno después del flujo de trabajo, agregue sus recuentos de agentes y note que la duración cubre solo la ejecución del flujo de trabajo.
  • Muestre los conteos de verificación ("N autoridades verificadas, M no verificadas") para que sepan cuánto confiar en él, y señale el apéndice "Límites de esta investigación" del memo (que ahora divulga la base de verificación de cada autoridad: texto completo directo / reproducción autoritativa / corroboración secundaria / solo cita).
  • El resultado también lleva esqueleto — el esquema analítico etiquetado con citas a partir del cual se escribió el borrador (cada afirmación de carga etiquetada con su hallazgo, los agujeros marcados como BRECHA). No lo presente por defecto; ofrézcalo si el usuario desea auditar el razonamiento, y úselo usted mismo cuando edite el memo manualmente (una afirmación sin línea de esqueleto necesita una autoridad o una reserva antes de crecer).
  • Ofrezca guardarlo: Markdown en el directorio de trabajo; Word a través del convertidor incluido — python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/md2docx.py memo.md memo.docx \"<Título>\"; o Google Drive a través del conector. Si el usuario solicitó .docx desde el principio, simplemente prodúzcalo.
  • Ofrezca un pase de seguimiento sobre cualquier punto débil/no verificado, o un cambio de estilo de salida.

Calibración de afirmaciones (v7)

La verificación de citas y la calibración de afirmaciones capturan clases de error disjuntas: la verificación captura afirmaciones falsas sobre fuentes; la calibración captura hallazgos verdaderos ensamblados en generalizaciones no respaldadas. El pipeline ahora aplica ambas — el mensaje del Borrador lleva una puerta de fuerza de afirmación (palabras de frecuencia/prioridad/finalidad como "primero", "único", "abrumadoramente", "borrado" requieren una búsqueda diseñada para respaldarlas, de lo contrario lenguaje con alcance de muestra), los lectores etiquetan la postura de cada fuente (incluyendo disposiciones arguendo y no precedentes) y su relevancia (solo proceso / asume la premisa / doctrina adyacente), las ejecuciones históricas obtienen sesgo de selección, fecha límite y verificaciones de daño/exclusión, y las ejecuciones profundas agregan un pase de calibración adversario dedicado en el borrador. Una tercera clase de error se encuentra entre ellas: una referencia citada correctamente pero que no respalda la proposición (por ejemplo, un caso citado para un holding cuando la página citada solo contiene dicta, o un artículo citado para la postura del autor cuando en realidad resume a otros). El pipeline ahora también aborda esto: los lectores etiquetan la relación de cada fuente con la proposición que respalda (directa / por analogía / contextual / solo citando a otro), y el verificador de citas reabre la fuente para confirmar que el texto citado realmente respalda la afirmación que se le atribuye — no solo que existe.

Registro de cambios (habilidad)

  • 2026-07-16: Celda de cobertura de respuesta directa agregada para modos académico/ambos después de que una ejecución de comparación de Codex venciera a una ejecución de Claude de 64 agentes. Presupuesto de tokens profundo elevado de 600k a 1M después de una ejecución histórica profunda que se atascó. Bloque de disciplina de acceso agregado a los mensajes de los agentes de lectura, relleno de brechas y verificación para evitar la escalada de paywalls.
  • 2026-08-29: Regla de hipervínculo obligatorio agregada; cada fuente web en el memo debe llevar su URL. Pie de página de producción movido al final del archivo. Auditoría de calibración de afirmaciones ampliada para incluir verificación de ajuste proposición-autoridad.

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 relacionados