← Trellis LawCONTENT HISTORY
WHAT CHANGED
Update to Trellis Law
Snapshot Nov 10, 2026 · 06:10 UTC · version 2.0.3
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Trellis Law and check future changes in Following.
Up to 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Always call this first over raw `search_cases` or `search_documents` for any attorney-focused inquiry where the user provides the attorney's name and/or bar number.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 241
}
],
"name": "research-attorney",
"skill_md_contents": "---\nname: research-attorney\ndescription: \"Always call this first over raw `search_cases` or `search_documents` for any attorney-focused inquiry where the user provides the attorney's name and/or bar number.\"\nmetadata:\n displayName: \"Research Attorney\"\n seedlingSlug: \"research_attorney\"\n---\n\n### Jurisdiction\n\nYou need to know the state the user is interested in, or whether they're fine searching every state. If the request is ambiguous as to jurisdiction, ask before proceeding.\n\n### Resolve the attorney's identity before you search\n\n- **Capture the middle name if known** — you will search it three ways: omitted, as an initial, and fully spelled out. \n\n### Build the name-form SET (do not run a stop-at-first-hit ladder)\n\nThe same attorney is routinely indexed under several non-unified forms, and **each form returns a different, only-partially-overlapping subset.** Stopping at the first form that returns hits silently undercounts. So: assemble the applicable forms, run each as a **quoted phrase with the state filter**, then **combine the results and dedupe to case/docket id.**\n\nForms to include when applicable:\n\n1. \"First Last\" (no middle)\n2. \"Last, First\" (reversed)\n3. \"First Middle Last\" (full middle spelled out)\n4. \"First M. Last\" (middle initial)\n5. reversed middle forms (\"Last, First Middle\", \"Last, First M.\")\n6. legal/professional first-name swap (search *both*, e.g. Reagan **and** Richard)\n7. punctuation-stripped variant for apostrophes / hyphens / accents (a quoted \"O'Flaherty\" returned 0 even though the firm is in the corpus)\n\nTreat a large gap between forms as **expected**, not as evidence one form is wrong. When the surname is common, **lead with the full-middle form**. Only a pure \"is this person in the data at all\" check may treat the forms as alternatives; any counting/profiling question must union them.\n\n### Run two retrieval lanes, then reconcile\n\nRun the full-text name-form set **and** the entity filter (`entities=[{name, role: Attorney}]`, no middle initial so default slop absorbs the middle), and reconcile. **Never report one lane's number as \"the\" count without saying which lane produced it.** Treat an entity-lane **zero as non-dispositive** (it does *not* mean \"no footprint\"); treat an entity-lane **hit as still needing the counsel-of-record check below.**\n\nBar-number path (unchanged): `search_documents` with the bar number + quoted name; if empty, drop the bar number and run the name-form set across documents and cases.\n\n### Match the tool to the question type\n\n- **Analytical / aggregate** (practice areas, motion types, judges, win rates) → `search_documents` with `include_aggregations=true`; read the `practice_area`, `matter_type`, `judge`, `motion_type`, `outcome` facets.\n- **Specific-case** (which cases, case vs. X) → `search_cases`, unioned with `search_documents` deduped by `case_name`. A firm filter `entities=[{name, role: Law Firm}]` is an *optional add, not a primary path* — coverage is sparse and it mis-resolves (a firm filter returned a plausible-but-wrong cluster for one common name and the wrong firm for another).\n- When intent is unclear between analytical and specific-case, ask one clarifying question.\n\n### Confirm one PERSON, not one NAME (disambiguation)\n\nNamesakes are live and prolific, and aggregations blend them silently (two different \"John Wayne Hogan\"s; at least three \"Mark Clark\"s; two \"Russell Hardin\"s). Before reporting, **bucket the returned entity strings by firm + county + practice area.** Report only the bucket(s) matching your target. If two firms each look plausible, ask the user which.\n\n### Counsel-of-record is a CHECK, not just a caveat\n\nA full-text hit does not establish that the person was counsel:\n\n- **Confirm the person appears in the document's structured Attorney list** before calling them counsel of record (one attorney's 12 full-text hits never tagged him as an attorney — pure noise).\n- **Role mis-indexing:** an attorney can be indexed as a **Party** in his own case, so `role: Attorney` can miss filings and `role: Party` can capture counsel — don't trust the role tag alone.\n- **Duplicate entity records:** the same name appeared twice in one document's attorney list — dedupe before counting.\n- **OCR / spelling variants:** expect corrupted forms (e.g. \"Mary W Clark\" for \"Mark W Clark\") \n\n### How to read a ZERO\n\nA zero across all forms means \"not found in covered **state-court** records,\" not \"no practice.\" Before concluding, escalate:\n\n1. Run the **bare distinctive surname** (broadest contiguous net).\n2. **Check whether the attorney's FIRM is in the data.** This is the most important step: Trellis often records counsel at the firm level (e.g. \"COLLINS LAW FIRM\"), not the individual. In one case every individual-name search returned 0 while the firm's matters — including a notable verdict — were in the data under the firm name. If so, pivot to `research_law_firm`.\n\n### Reporting discipline\n\n- **Report case-level counts in addition to raw document counts.** Aggregations count documents, and a single heavily-litigated matter skews everything. State results as \"N documents across M cases.\"\n- **State which lane/form produced each number**.\n- **Don't quote the `practice_area` facet label verbatim**. Treat facets as directional and check the type strings.\n\n### Anti-patterns\n\n- Do not use unquoted multi-token free-text without a phrase quote and a state filter \n\n- When a free-text firm/name search returns a large count, verify the entity actually appears in the returned summaries before trusting the number.\n"
}SHA-256 of public snapshot: ec43b5d93381f1d9d371d43e9dbf6c23b2f6ebd3ab5cd6dd7874e331ea606fa5