CommunityCoding & Developmentgithub.com

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.

What is legal-research-skills?

legal-research-skills is a Claude Code agent skill that 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.

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

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

SCOTUS case prep → reMarkable

Given a case name (and optionally a docket number), collect the canonical reading set and upload it to the tablet under <Project>/<Case>/.

Hard rules

  • Every uploaded document is a real PDF you actually downloaded. Verify each file begins with %PDF before uploading. Never hand-construct a document URL and assume it worked — fetch it and check.
  • Web-confirm the caption and docket number first. If the name is ambiguous (multiple granted cases, consolidated cases, common party names), confirm with the user before downloading the wrong case's briefs.
  • Report gaps honestly. If a document isn't filed yet, isn't public, or can't be found, say so in the final manifest. Never substitute a look-alike document.

Step 1 — Resolve the case

  1. Web-search the case name to confirm the exact caption and Supreme Court docket number (format NN-NNN, e.g. 24-316). Good confirming sources: supremecourt.gov, SCOTUSblog's case page, Oyez.
  2. Note whether the case is consolidated with others (grab the lead docket; mention companions in the manifest).
  3. Note argument status: not yet argued / argued (transcript available) / decided.

Step 2 — Download documents (to the scratchpad, via curl)

Docket page (index of every filing, with PDF links): https://www.supremecourt.gov/search.aspx?filename=/docket/docketfiles/html/public/<DOCKET>.html Fetch it and extract the DocketPDF links. Entry text identifies each filing ("Petition for a writ of certiorari filed", "Brief of petitioner", "Brief amicus curiae of United States", etc.).

Default document set (in reading order — skip whatever doesn't exist yet; note it in the manifest):

#DocumentSource
00Questions presentedhttps://www.supremecourt.gov/qp/<TERM>-<5-digit-zero-padded-number>qp.pdf (e.g. docket 24-316 → 24-00316qp.pdf)
01Lower-court opinionCourtListener (below)
02Cert petitiondocket page
03Brief in oppositiondocket page
04Cert-stage replydocket page
05Petitioner's merits briefdocket page
06Respondent's merits briefdocket page
07Merits reply briefdocket page
08U.S. / SG amicus brief (if any, either stage)docket page
09Oral-argument transcript (if argued)https://www.supremecourt.gov/oral_arguments/argument_transcripts/ — links follow .../argument_transcripts/<TERM>/<docket>_<suffix>.pdf; find the real link on the term's transcript index page

Other amicus briefs: don't download them all by default (there can be dozens). Tell the user how many were filed and offer to add specific ones.

Lower-court opinion via CourtListener: search https://www.courtlistener.com/api/rest/v4/search/?q=<case name>&court=<lower court id> or the website search, matching the docket number / caption from the cert petition (the petition's first pages identify the opinion below precisely). Then resolve and download the PDF deterministically with the legal-research skill's helper (prefers CourtListener's stored copy, falls back to the court's own file, verifies %PDF magic before saving):

python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/cl_case_tools.py pdf cluster:<cluster_id> --out "01 Lower-court opinion.pdf"

(cluster_id comes from the search result; a reporter cite works too once one exists). If no PDF is on CourtListener or the court's site, the cert petition's appendix contains the opinion below — flag that as the fallback rather than uploading something unverified.

Use a browser-plausible User-Agent for supremecourt.gov (it 403s bare curl): curl -sL -A "Mozilla/5.0" -o <file> <url>.

Step 3 — Upload to the reMarkable

Tools: the remarkable_* MCP tools (if not loaded: ToolSearch "select:mcp__remarkable__remarkable_upload,mcp__remarkable__remarkable_mkdir,mcp__remarkable__remarkable_browse" — adjust prefix to whatever the connected server exposes).

  1. Crop margins first — run this skill's crop_pdf.py on every PDF so documents open margin-free on the tablet (the user shouldn't have to adjust borders by hand): uv run <this skill's directory>/crop_pdf.py <file.pdf> A nonzero exit means no plausible content box was found — upload that file uncropped rather than failing.
  2. remarkable_mkdir → <Project>/<Short Caption> (e.g. SCOTUS Prep/Smith v. Arizona).
  3. Upload each PDF named NN Title.pdf per the table (keep the numbers so they sort in reading order), e.g. 02 Cert Petition.pdf, 06 Respondent Merits Brief.pdf.
  4. remarkable_browse the folder afterward to confirm everything landed.

Step 4 — Report

Give the user a manifest: caption, docket number, argument date/status, each document uploaded (with filing date where the docket shows it), each document not available and why, companion cases, and the amicus count with an offer to pull specific ones.

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

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.

danepps/legal-research-skills

Deep legal research that fans out multiple agents across free legal sources, verifies every authority, and returns a polished, well-cited memo. Use for case-law research, legal-scholarship / literature reviews, or both. Modes — caselaw | scholarship | both. Trigger when the user wants a thorough doctrinal memo, a survey of the academic debate, an answer grounded in cases/statutes, or a research deep-dive on a legal question.

Related Skills