jeffnewberry/cite-viewer

Ejecutar cuando el usuario diga 'visor de citas' o 'construye el visor': una página local de clic a través donde cada cita en un borrador abre el pasaje citado de la fuente, con enlaces opcionales al expediente.

¿Qué es cite-viewer?

Este skill para agentes de IA (como Claude Code o Cursor) construye un visor de citas local y autónomo para borradores legales. Convierte un documento de texto en una página web interactiva de dos paneles donde cada cita es un enlace clicable. Al hacer clic, se abre el pasaje fuente correspondiente (extraído de PDFs de Westlaw o de archivos locales del expediente), con el lenguaje citado resaltado y una nota sobre si respalda la proposición. El visor no reemplaza una verificación de citas completa (KeyCite/Shepard's) ni la lectura de los casos, sino que acelera el proceso al permitir al usuario verificar cada cita rápidamente, registrar si cada pasaje respalda la oración que lo cita, y tomar notas para correcciones. Está diseñado para usarse después de un chequeo de citas y un citador, justo antes de la revisión final. El skill maneja todo el pipeline: extraer citas del borrador, resolver citas cortas y *id.*, descargar PDFs de Westlaw (con advertencia de costos), extraer pasajes citados usando marcadores de estrella, y construir el visor HTML con enlaces relativos. Se aplican dos reglas estrictas: nunca publicar el visor en línea (por confidencialidad del cliente) y nunca modificar el borrador directamente. Compatible con Westlaw para descargas automáticas de casos, o con PDFs proporcionados por el usuario. También vincula citas del expediente si el usuario lo solicita. El resultado final es una carpeta local con el HTML y los PDFs fuente, más un informe con el resumen de estados (ok, check, pin, none) y un botón 'Copiar todas las notas' para transferir correcciones al chat del agente.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jeffnewberry/litigation-skills/tree/HEAD/skills/cite-viewer

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

Visor de citas

El visor de citas es una página web local que muestra el borrador del usuario (o una sección del mismo). Cada cita es un enlace, subrayado en un color según su estado. Al hacer clic en una cita, se muestra la página citada de la fuente, con el lenguaje citado o del que se depende resaltado, una nota sobre si el pasaje respalda la oración, un enlace que abre la fuente completa en esa página, y un cuadro de notas donde el usuario puede escribir una corrección.

El visor no reemplaza la lectura de los casos, ni reemplaza un citador (KeyCite o Shepard's). Agiliza la lectura y registra si cada pasaje respalda la oración que lo cita.

Dos reglas que nunca cambian

  • Nunca publiques el visor ni lo alojes en ningún lado. Contiene el borrador del usuario y, con los enlaces al expediente, apunta a material del expediente. Permanece en el ordenador del usuario como un archivo que abre haciendo doble clic. Nunca ofrezcas convertirlo en un enlace compartible. Si el usuario pide publicarlo de todos modos, adviértle primero sobre la confidencialidad del cliente.
  • Nunca cambies el borrador. El visor informa de problemas; no los soluciona. Modifica el borrador solo cuando el usuario lo pida por separado.

Dónde encaja

Funciona mejor en un borrador cuyo texto está asentado y cuyas citas ya han pasado por un chequeo de citas y un citador, y antes de la revisión final. Si el usuario lo pide antes, dímelo en una línea, y luego constrúyelo si lo quiere de todos modos.

Antes de empezar

Pregunta, en un bloque corto, solo lo que el usuario no haya dicho ya:

  1. Qué borrador. Pídele que lo adjunte, o que nombre el archivo.
  2. Alcance: el documento completo, o secciones nombradas. Pregunta esto incluso cuando el borrador sea corto; nunca decidas el alcance tú mismo.
  3. Fuentes: "¿Debo extraer los casos de Westlaw por ti, o pondrás los PDFs en una carpeta tú mismo?" (Usuarios de Westlaw: ver paso 3. Usuarios de Lexis u otros: paso 3a.)
  4. Citas del expediente: "¿Quieres que también se enlacen las citas del expediente? Si es así, ¿qué carpeta de tu ordenador contiene el expediente, y cómo lo citas? Dame un ejemplo de cita de tu borrador (por ejemplo, 12 R.R. 41, ROA.1234, Dkt. 52 at 3, o JA 123)." Cualquier carpeta sirve (Dropbox, OneDrive o una carpeta normal), porque el visor enlaza los archivos donde están y no copia nada. Si el usuario dice que no, las citas del expediente aparecen como "Fuente no cargada."

Pedir el visor es la señal para guardar la carpeta del visor y, después de la advertencia de costos en el paso 3, extraer las fuentes.

Pasos

1. Construir la tabla de citas

Convierte el borrador a texto. Recorre el alcance en orden y enumera cada cita: citas completas, citas cortas, id., supra, estatutos, fuentes secundarias y citas del expediente. Para cada una, registra:

  • un id (c1, c2, etc.), y la cita exactamente como está escrita;
  • la autoridad a la que resuelve (resuelve id. y citas cortas a la autoridad completa);
  • el pincite o pincites;
  • la proposición, y cualquier lenguaje citado, de la oración que respalda;
  • si la cita se basa en material específico de la fuente (un fallo, un test, una cita textual) o solo nombra el caso en su conjunto (ver paso 6).

Anota cualquier declaración legal en el alcance que no tenga cita. La página también las marca.

Si el borrador usa una cita corta o supra sin ninguna cita completa en ningún lado, no adivines en silencio. O proporciona la cita y etiquétala como "conocimiento general, no verificado," o déjala fuera y márcala.

2. Construir la lista de fuentes

Una entrada por autoridad: la cita del reportero ("466 U.S. 668"), la cita WL para opiniones inéditas, el código y la sección para estatutos, y "volumen abreviatura primera-página" para artículos. Separa las entradas con punto y coma, hasta 100. Deja fuera las citas del expediente y cualquier cosa que Westlaw no tenga; enuméralas para el informe.

3. Extraer las fuentes de Westlaw (Find & Print)

  • Antes de extraer nada, dile al usuario una vez que las solicitudes de Find & Print pueden cobrarse según su plan de Westlaw, y continúa solo después de que confirme.
  • Abre Westlaw en el navegador y pide al usuario que inicie sesión como lo hace normalmente: un inicio de sesión de firma, un portal de facultad de derecho o un ID de Thomson Reuters. Dile que si la página que abriste no es la que usa normalmente, puede ir a su página de inicio de sesión habitual en la misma ventana del navegador. Nunca introduzcas contraseñas; una vez que haya iniciado sesión, haz el resto.
  • Ve a Find & Print y pega la lista.
  • Configuración: Casos → opinión solamente (sin headnotes); Estatutos → solo texto legal; deja sin marcar "Sustituir con imágenes del reportero", porque el paginado por estrellas debe ser texto; Entrega → Descargar; Formato → PDF; Como → Varios archivos (ZIP); desactiva el diseño de dos columnas.
  • Envía. Si Westlaw rechaza algunas citas, elimínalas, continúa e infórmalas.
  • Cuando la descarga esté lista, haz clic en el botón de Descargar de Westlaw. El navegador muestra entonces su propia ventana de guardado, que no puedes presionar. Dile al usuario que está llegando y pídele que haga clic en Guardar (o Descargar) en esa ventana. El ZIP cae en su carpeta de Descargas.

3a. Fuentes que proporciona el usuario

Pide al usuario que ponga un PDF por autoridad en una carpeta y te diga qué carpeta es. Solo PDFs de texto; si un PDF es un escaneo sin texto, pide una versión de texto.

4. Obtener los PDFs

Pide acceso a la carpeta donde cayó la descarga (o la carpeta del paso 3a). Descomprime en una carpeta de trabajo fuera de la carpeta de descargas. Empareja cada PDF con su autoridad, y marca cualquiera que no haya vuelto.

5. Extraer los pasajes citados

Los PDFs de Westlaw marcan las páginas estrella en el texto: *688 para el reportero principal, **2055 y *** para reporteros paralelos, y *1, *2 para citas WL. Elimina los marcadores paralelos, divide el texto en los marcadores de una estrella, y toma el texto de cada página pinzada, más los últimos cientos de caracteres de la página anterior, para que una oración que comienza en la página anterior se lea completa. Encuentra la página PDF donde aparece cada marcador, para el enlace "abrir fuente completa" (#page=N). Elimina los encabezados y pies de página. Usa el script al final de este archivo. Cuando un pin no es una página estrella (páginas de revistas jurídicas, subsecciones de estatutos o PDFs de otro servicio), encuentra el pasaje buscando el lenguaje citado o del que se depende.

5a. Citas del expediente (solo si el usuario las eligió)

  • Del ejemplo de cita del usuario, deduce qué parte de una cita nombra el archivo (un volumen, un número de documento o expediente, un apéndice) y qué número nombra la página (una página de transcripción impresa, una página de expediente sellada como ROA.1234, una página de encabezado del tribunal o una página de apéndice). El expediente puede ser un archivo o muchos.
  • Enumera los archivos del expediente en la carpeta del usuario y empareja cada cita con su archivo (por ejemplo, "Vol. 39" o "RR39" con 39 R.R.; "ECF 52" con Dkt. 52; un expediente sellado consecutivamente para citas ROA). Si el emparejamiento no está claro, muéstrale al usuario tu mapeo y pregúntale antes de continuar.
  • Lee solo las páginas citadas. Encuentra cada página citada por el número que usa la cita, tal como aparece en la página misma, nunca por el recuento de páginas del PDF; rara vez coinciden. Cuando una página lleva dos números (una página de encabezado del tribunal y la página propia del documento, por ejemplo), y el ejemplo del usuario no aclara cuál significa la cita, pregunta. Si no puedes encontrar el número, marca la cita "check" y dímelo.
  • Para cada cita del expediente, registra ambos números: el número de página que usa la cita y la página PDF en la que cae.
  • Enlaza cada cita del expediente al archivo donde está, con un enlace relativo desde el archivo HTML del visor al archivo del expediente en el ordenador del usuario, en la página PDF. Por ejemplo, cuando la carpeta del visor y el expediente están ambos en Descargas: ../volume.pdf#page=N. Construye el enlace desde las rutas reales en el ordenador del usuario (tal como las muestra la lista de carpetas), nunca desde rutas en tu propio espacio de trabajo. No uses direcciones file:/// completas; los navegadores a menudo las rechazan. No copies nada en la carpeta del visor.
  • El expediente debe ser PDFs con texto buscable en el ordenador del usuario. Un archivo almacenado solo en línea (un archivo en la nube no descargado, o un depósito de documentos al que se accede a través de un sitio web) no se puede enlazar; dile al usuario cuáles.

6. Verificar cada cita

Lee cada pasaje con respecto a la oración que respalda. Asigna un estado:

  • ok — Respaldado. El pasaje dice lo que dice la oración. Cualquier cita textual coincide exactamente, o los corchetes explican cada cambio. Usa ok, sin extracto, solo para una cita que nombra un caso en su conjunto en una oración textual, como parte de la oración misma, sin depender de ningún pasaje particular (Bluebook R. 3.2(a)). Una oración o cláusula de cita que respalda una proposición siempre se basa en material específico y necesita un pin, incluso cuando cita varios casos a la vez. La nota de una cita de caso completo dice "Nombra el caso en su conjunto; no se necesita pin (Bluebook R. 3.2(a))."
  • check — Verificar. La cita textual no coincide, el pasaje respalda solo parte de la oración, el pin es incorrecto, o la oración describe la fuente de manera inexacta. Di exactamente qué está mal y da la corrección (el pin correcto o la corrección entre corchetes).
  • pin — Sin pincite. Una cita a material específico sin pin. Muestra la página en la que se basa el texto cercano. Cuando no esté claro si la oración se basa en material específico, usa check y dímelo, para que el usuario decida.
  • none — Fuente no cargada. Cualquier cosa que no esté en los PDFs o en la carpeta del expediente. Nombra lo que el usuario necesitaría añadir.

Las notas dicen solo lo que dice la fuente. Pon "Inferencia:" antes de cualquier cosa más allá. Señala solo problemas sustanciales: una cita textual incorrecta, un pin equivocado, un fallo exagerado o mal caracterizado, un hecho que la página del expediente no respalda. Ignora simples errores tipográficos. Sombrea las palabras exactamente citadas en cada extracto.

7. Construir la página

Guarda una carpeta en la carpeta de Descargas del usuario (o donde pida), nombrada según el borrador más "cite-viewer" y la fecha. Contiene:

  • el archivo HTML;
  • una carpeta sources/ con los PDFs de los casos. (Los archivos del expediente permanecen donde están.)

Reglas de la página:

  • Borrador a la izquierda, panel de pasajes a la derecha; en una pantalla estrecha se apilan.
  • Una leyenda en la parte superior da el recuento de cada estado, más "Texto rojo punteado = declaración legal sin cita."
  • Muestra el texto del borrador exactamente como está escrito.
  • Sombrea los pasajes en azul claro. Texto alineado a la izquierda, fuente serif.
  • Funciona en modo claro y oscuro.
  • Al hacer clic en una cita, se muestra la insignia de estado, la cita tal como está escrita, la nota, cada extracto con su encabezado de página y un enlace "Abrir fuente completa ↗", y luego el cuadro de notas.
  • Cada encabezado de extracto nombra la página en ambas numeraciones, para que el usuario pueda confirmar la página sin abrir el archivo: para un caso, "466 U.S. at 694 · PDF página 7"; para el expediente, "12 R.R. 45 · PDF página 10."
  • Las declaraciones legales sin citar también se pueden hacer clic. Al hacer clic en una, se muestra una insignia "Sin cita", la declaración tal como está escrita, una nota de una línea (por ejemplo, "Enuncia una regla legal; añade una cita o elimínala"), y el cuadro de notas.

Cuadro de notas. Debajo del panel de cada marcador (tanto citas como declaraciones sin citar), un cuadro de texto etiquetado "Tu nota (por ejemplo, la corrección que quieres)." Las notas se guardan automáticamente en el navegador para este archivo. Envuelve cada guardado y carga en try/catch, para que la página siga funcionando si el navegador bloquea el almacenamiento. Un marcador con una nota obtiene un pequeño punto en el borrador. Un botón "Copiar todas las notas" en la parte superior copia cada nota como una lista numerada en el orden del borrador, cada línea comenzando con la cita tal como está escrita (o "Sin citar:" y las primeras palabras de la declaración), para que el usuario pueda pegar la lista en Claude o mantenerla junto a Word. Dile al usuario una vez que las notas viven solo en ese navegador en ese ordenador; la lista copiada es la copia segura.

8. Verificar la página

Abre la página y haz clic en al menos una cita de cada estado, y una declaración sin citar. Confirma que los extractos muestren el lenguaje sombreado y ambos números de página, que la nota esté en la parte superior del panel, que cada marcador tenga un cuadro de notas, y que "Copiar todas las notas" funcione.

Los enlaces del expediente necesitan una verificación por separado, porque no puedes hacer clic en un enlace en el ordenador del usuario. Para cada enlace del expediente, calcula a dónde apunta desde el archivo HTML del visor en el ordenador del usuario y confirma, listando esa carpeta, que el archivo está allí. Luego pide al usuario que haga clic en un enlace del expediente y te diga si se abrió en la página correcta. Hasta que confirme, no informes que los enlaces del expediente funcionan; infórmalos como "enlazados, aún no confirmados."

9. Informar

Breve, punto más fuerte primero:

  • Dónde está la carpeta y cómo abrir el visor: "Abre el visor en Google Chrome (haz clic derecho en el archivo HTML, elige Abrir con, luego Google Chrome). El autor lo ha probado en un Mac con Chrome, y funciona allí. Safari bloquea los enlaces del expediente. El autor ha probado los enlaces del expediente con citas de expediente al estilo de Texas (12 R.R. 41) pero aún no con otros formatos. El autor no lo ha probado en un PC con Windows. Chrome debería funcionar allí también, y Microsoft Edge puede, pero el autor no lo ha intentado."
  • Recuentos por estado.
  • Cada elemento "check" en una o dos líneas, con su corrección.
  • Las citas "sin pincite", declaraciones sin citar, fuentes no cargadas o rechazadas, y cualquier archivo del expediente que no se haya podido enlazar.
  • Si los enlaces del expediente están confirmados (ver paso 8).
  • Dos formas de trabajar: hablar sobre cada marcador con Claude, que mantiene una lista y hace los cambios después de que el usuario los apruebe; o trabajar en Word con el visor abierto al lado, escribiendo correcciones en los cuadros de notas. Di que "Copiar todas las notas" es un botón en el visor que solo el usuario puede presionar, y que pueden pegar la lista copiada de vuelta en este chat.

Script

star_extract.py: dado un PDF y una lista de páginas estrella, devuelve el texto de cada página, la cola de la página anterior y la página PDF donde aparece cada marcador.

import re, subprocess, sys, json

def pdf_pages(pdf):
    info = subprocess.run(['pdfinfo', pdf], capture_output=True, text=True).stdout
    n = int(re.search(r'Pages:\s+(\d+)', info).group(1))
    return [subprocess.run(['pdftotext', '-f', str(i), '-l', str(i), pdf, '-'],
                           capture_output=True, text=True).stdout for i in range(1, n + 1)]

def clean(t):
    t = re.sub(r'WESTLAW\s*©.*?For Educational Use Only[^\n]*\n', '', t, flags=re.S)
    t = re.sub(r'\*\*\*?\d+\s?', '', t)          # drop parallel-reporter markers
    t = re.sub(r'-\n(?=[a-z])', '', t)
    return re.sub(r'\s+', ' ', t)

def segments(pages):
    parts 

…

[truncado para traducción]

Skills relacionados