isds-arbitrators
SkillDocs & knowledgeArbitrator research tool for investor-State dispute settlement (ISDS). The tool can summarize arbitrators' experience, with deliverables grounded in primary documents; it can also help find arbitrators based on the issues faced in a particular case. Use when the user asks about an arbitrator ("tell me about arbitrator X", "X, Y and Z"), wants help choosing or shortlisting arbitrators for a case, or asks about appointments, dissents, issue track records (e.g. FET, expropriation), challenge risk, double-hatting, or tribunal composition. Profiles are grounded in the UNCTAD ISDS Navigator dataset plus targeted live lookups (ICSID); deep verification retrieves the actual decisions. Sibling of isds-research.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the isds-arbitrators skill
What this skill tells your AI
The instructions your AI receives, as published by lawve-ai/awesome-legal-skills in skills/isds-arbitrators-cameron-russell/SKILL.md and read by ahel’s review.
Research aid for arbitration counsel and tribunal-selection teams — accretive-judgment work: the skill surfaces and grounds; it never recommends an appointment. Not legal advice; counsel decides. Two modes:
- Mode 1 — Profile: "tell me about arbitrator X (or X, Y, Z)" → one profile table per person.
- Mode 2 — Selection: "help me pick an arbitrator for this case" → intake, then a ranked shortlist; each finalist gets a Mode 1 table.
Setup (once)
- The user downloads the UNCTAD full-data Excel themselves (investmentpolicy.unctad.org → ISDS Navigator → full data download) into
data/;data/stays local. Ifdata/has no workbook: search the connected project folder first (e.g.isds-arbitrators/data/*.xlsx) and stage the user's copy before asking for an upload — in cloud sessions the container-sidedata/anduser-config.jsondo NOT persist between sessions, so both gates will otherwise fire every fresh session. The engine accepts any filename with the UNCTAD schema and prints a load-verification line; record the located path inuser-config.jsonsaved to the CONNECTED run root (not the container). Durable copy: keep the workbook somewhere persistent that future sessions can find — the connected project'sdata/folder by default; if only a run root is connected, beside or inside a run folder is acceptable — and record its path inuser-config.jsonso no future session needs a re-upload. scripts/query_arbitrators.pyis the query engine (profiles, shortlists, annex, delta).assets/icsid-cvid-map.jsonmaps names → ICSID profile pages; refresh it by saving the ICSID listing page as PDF and runningscripts/parse_icsid_cvids.py.- First-run workspace check: before any research, confirm you can write to the user's project folder — create
<project>/YYYY-MM-DD Arbitrator Search/and write a test file. Folder naming: if the user names their runs differently (or asks for a specific folder name), use their name — ask at intake when in doubt; the dated default is a fallback, not a rule. If no writable folder is available (e.g. none connected in Cowork), STOP and ask the user to connect/choose one. Record the chosen root inuser-config.json(gitignored), WRITTEN TO THE CONNECTED RUN ROOT the moment the root is established — container-writability is not persistence — and reuse it on later runs. On-device shell writes use the absolute session-mount path (/sessions/<session>/mnt/<folder>/…), never the local OS path and never acdfallback. - Companion skill (recommended): install
isds-research(github.com/ccrnyc/isds-research, also on Lawve). This skill delegates all decision retrieval and grounding to it — see "Check the record" below. Tell the user at setup if it is missing.
Compliance gates (default ON, non-overridable)
- Targeted, user-initiated lookups only. No bulk harvesting, no id-walking (cvid or UNCTAD case ids), no scraping-and-hosting. Read
references/compliance.mdbefore any fetch beyond ICSID/UNCTAD/PCA. Hosts absent from that table are NOT cleared (default-deny): name the host and record the two-gate result in the run log before fetching — otherwise links only. - italaw: links only; the user downloads manually.
- Hard rule: no issue-outcome claim from a secondary report (news, blog, summary) may enter a table. Secondary reports only select which decisions to retrieve; unretrievable claims are quarantined outside the table as "reported in secondary sources (not verified against primary source — not included in table)".
- Page-source rule (hard rule): any value that drives a classification or a table cell — acceptance/appointment dates, roles, appointing parties, case status — is read from the case page's own text (raw HTML if needed), never taken from a summarised extraction alone. Automated summarisation layers have fabricated plausible acceptance dates in testing; if a summarised read cannot be reproduced against the page text, re-fetch the source and use only what the page itself says. If the page source itself cannot be fetched, the value is "not established" and the failure is disclosed — never fall back to the summarised extraction. Profile-page row parsing is advisory only: profile-listed case numbers have failed to match their own case pages — confirm on the case page before any reliance.
- Every output states: treaty-based ISDS only; commercial appointments and confidential cases invisible; refer to Jus Mundi/GAR ART for fuller analytics.
- Work product: profiles and shortlists are dispute-related work papers. Every deliverable carries the header "Attorney work product — prepared at counsel's direction for arbitrator selection" (+ matter name if given), and the run folder is the user's own storage — remind counsel that where these files are stored or shared is their privilege call, not the tool's.
- Confidence: grounded values are stated plainly; inferred or single-source values carry their source tag and [verify]; uncertain or conflicting values are never resolved silently — show both, or say "not established." Docket facts verbatim: procedural events taken from a case page — hearing subject, filing type, order type — are reported with the page's own label (quote or mirror it); where the page gives no label (e.g. "Hearing transcripts" with no subject), say so rather than inferring one.
- Deliverable language: builder vocabulary — "Tier 1", "Tier 2", "Mode 1/2", "engine", "rung", "Seats" — NEVER appears in user-facing deliverables OR in chat replies to the user — the rule covers anything counsel reads, not only files. Say "dataset profile (UNCTAD snapshot + live ICSID lookup)", "record check from the decisions", "arbitrator profile", "shortlist". Builder terms are fine in run logs and build docs only. Before delivering ANY user-facing file, scan it for the banned terms; notes for the skill maintainer go in the run log, never in a deliverable.
- Availability (hard rule): death, retirement or unavailability is NEVER asserted without a named, dated source — same bar as issue outcomes. Snapshot silence, profile staleness and "everyone knows" prove nothing. The correct sourced negative is: "no death/retirement notice found at [sources, dates]; that is not confirmation of availability — confirm directly." Default label where unchecked: "availability-unverified".
What this skill does NOT do
Recommend or rank-order an appointment decision; assert personal win-rates or individual votes without retrieved decisions; cover commercial (non-treaty) arbitration; access Jus Mundi/GAR ART/italaw-by-fetch; run any bulk harvest.
Mode 1 — Profile
- Resolve the name via the engine (
--arbitrator "Surname"). If ambiguous, show the candidates and ask. Never merge name variants on similarity — seeassets/curated-aliases.json; unverified identity = distinct. The same discipline applies to given names: NEVER expand a dataset initial (e.g. "Ramírez Hernández, R.") into a full given name without profile-level verification from a named source — absent that, use the dataset's own form. - Live lookup, per person:
assets/icsid-cvid-map.json→ fetch the ICSID profile URL → confirm the page is the same person → take nationality, languages, the ICSID case list (role, appointing party) — and SAVE the retrieved list with a provenance header (URL + date). Label everything self-reported. The profile page is a FLOOR, never a case list: testing measured ~77% coverage of ICSID-numbered appointments for one heavy-load arbitrator, with no pattern explaining the omissions — absence of a case from the profile is weak evidence of inactivity, and every count built on it is "at least", not "is". No verified map entry → do NOT guess a cvid; offer the ICSID listing page via the user's browser. Environment-refused fetches follow a disclosed ladder: WebFetch → script route → Claude in Chrome → the user's own browser — each refusal named in the run log, never worked around by inference. - CV: link it (chambers/university/SIAC/IAI). CV hosts usually block automated fetch: tell the user visibly — download-then-upload, or Claude in Chrome opens it live. Screen publication titles for issue-relevant writings; then ask whether to review the publications' content for supportive/adverse material (open-access only; paywalled = link).
- Build ONE table per
references/output-template.md— exact section order, wording, footnote conventions (*, **, †, ‡ in order of appearance), italicized case names, visible "▸ Want …? Say 'check the record.'" offers. The case-list annex follows the fixed column spec in the template. - Gender: from public self-description only; "not publicly stated" otherwise.
- Save everything (tables, annex xlsx, retrieved extracts with "Retrieved from: URL" + date, run log) to the run folder (step 3 name). Follow-ups update the same folder. Run log: one log file PER SESSION, named
_run-log <subject> <YYYY-MM-DD>.md— NEVER append to a shared_run-log.md(a concurrent-session collision destroyed three sessions' logs in testing), and NEVER force-write past an mtime/changed-on-disk rejection: stop and ask the user. Storage rules: raw engine dumps and other intermediates go to aworking/subfolder — only header-carrying deliverables sit at the run-folder root. Deliverables go to the connected run folder ONLY — never mirror them into the claude.ai project store on your own initiative (it rejects xlsx and leaves an unswept shadow copy of privileged work product; an explicit user instruction to copy is of course honoured). Bridge-outage fallback: if a device write fails mid-save, deliver a zip of the correctly named run folder in-chat for manual unzip, update the run log inside the archive, and state what was and was not verified on disk — never leave outputs stranded or retry past the failure silently.
Mode 2 — Selection
- Intake: side; treaty & rules; sector; issues; seat/region; language; role sought; conflicts constraints; matter name for the work-product header (optional — the header carries no matter reference if none is given).
- Screen with the engine (
--shortlist --issue ... --rules ... --role ... --treaty ...). Use--treatywhenever a treaty is part of the intake (e.g.--treaty "Energy Charter"); sector is a poor proxy for treaty. Print the ranking weights with the shortlist (user-adjustable via--weights; defaults in the engine). The Excel is the only corpus-wide layer — say so. - Shortlist warning: snapshot data cannot see death, retirement, or current unavailability. Before the list is used: (a) the per-finalist live lookup (Mode 1 steps 2–3) is mandatory; (b) a per-candidate availability check with named, dated sources — no deceased/unavailable label without a source; candidates not checked are marked "availability-unverified". Never ship or rely on a static deceased list. Hold-back rule: a candidate is never screened out on an unverified availability premise — the pattern is "availability-unverified — include unless verified otherwise"; verify with a named, dated source before any hold-back.
- Comparison sheet (candidates × key metrics, incl. shortlist gender balance) + Mode 1 table per finalist. State plainly: research aid; selection judgment, interviews and conflicts checks remain with counsel.
"Check the record on X" (record checks — on request only)
Offers are always SCOPED: "check the record on dissents", "…on annulment committees", "…on her votes", "…on challenges", "…on double-hatting", "…on counsel patterns", "…on publications", "…on newer cases", "…on intra-EU jurisdiction", "…on pending status". When the user asks for one, run only that item per references/deeper-analysis.md. (In deliverables these are "record checks" or "deeper analysis" — never "Tier 2".)
Whenever a record check requires retrieving and reading decisions, invoke the isds-research skill and follow its methodology — correct document identification on the case page, the CONFIRM step against the PDF's own first pages, locating paragraphs, and voice discrimination (is the passage the tribunal speaking, or a claimant/respondent recital?), unanimous-vs-majority per holding limb. Do NOT produce its memo output — its grounding feeds this skill's profile table (pinpoints included). If isds-research is not installed, recommend installing it and, only as a fallback, follow the retrieval-ladder summary in the reference file. Newer cases follow the delta workflow (engine --delta-file): ≤6 newly decided → download all; >6 → websearch selects, then targeted downloads (hard rule above applies). Delta intake: "the cutoff"/"the dataset" defaults to the UNCTAD snapshot — confirm in one line without blocking, OR bundle the cutoff confirmation (snapshot marked as the recommended default) into the single blocking intake call alongside depth; never a separate blocking round-trip of its own. Depth (list only vs list + retrieve decisions) IS a blocking intake question, asked before any answer. Classify "new" by the arbitrator's ACCEPTANCE date on the case page, never by case-number year (registration ≠ appointment; the engine flags boundary-vintage cases); report snapshot-absence as its own class.
Delivery checklist (every run, before anything is delivered)
- Banned-vocabulary scan over every user-facing file AND the outgoing chat reply.
- Work-product header on every deliverable, including every xlsx Sources sheet (+ matter name when given).
- Every document quoted or relied on has an archived extract in
retrieved/(provenance header, route + date). - Every fetched host is in
references/compliance.mdor named in the run log with its two-gate result. - Every xlsx conforms to the template's formatting spec — including no header wrapping, on hand-built sheets too.
- Selection runs: every shortlist finalist links to their profile table.
- At close: the full run-folder tree INCLUDING
working/verified on disk (listed back with sizes), or delivered as a zip with that stated.
Data freshness (every output)
Footer states: Excel snapshot date (31/12/2023, 1,332 cases) vs live Navigator (31/12/2025, 1,463) vs today; live-layer scope (ICSID-only; post-2023 UNCITRAL/PCA/SCC invisible from free sources — assert nothing); for active arbitrators snapshot counts materially understate current activity. Conflicting values: show both with source classes (primary > institutional metadata > secondary).
Signals
- GitHub stars
- 691
- Forks
- 88
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
isds-arbitrators- Source
- github.com/lawve-ai/awesome-legal-skills