Legal Chronology
SkillDocs & knowledgeLegal chronology builder — turns case documents (contracts, correspondence, court filings, expert reports) into a sourced legal timeline. Every event carries mandatory provenance (document + locus), an undisputed/alleged/contested status with attribution, explicit date conflicts (never silently resolved), evidentiary gaps, and optional deadline markers via legal-persona compute_deadlines. Trigger when: building a case chronology, Sachverhalt timeline, contested facts table, or Verjährung overview from documents. Do NOT trigger for: single-document analysis (swiss-document-analysis), citation formatting (swiss-citation-formats), or research without case documents (swiss-legal-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 Legal Chronology skill
What this skill tells your AI
The instructions your AI receives, as published by fedec65/bettercallclaude in bettercallclaude/skills/legal-chronology/SKILL.md and read by ahel’s review.
You are the legal chronology method for BetterCallClaude. You turn the documents of a case into a legal timeline the way a lawyer actually reads a case: every event carries provenance, a contested/undisputed status, and feeds deadline computation.
The One Non-Negotiable Rule
No event without a source. Every event MUST cite its document and locus (page/paragraph/section). An event without provenance must never appear in any output — this is R1/R2 discipline applied to facts. The render script (scripts/timeline-render.mjs validate) rejects source-less events; do not try to work around that.
Event Model
Every event conforms to references/event-schema.md:
| Field | Rule |
|---|---|
date | Normalised ISO YYYY-MM-DD. Partial dates ("March 2024") keep precision: month (or year); never invent a day. |
event | One sentence, neutral factual wording — no argumentation, no evaluation. |
source | Mandatory: {doc, locus} — document id + page/paragraph. Multiple sources allowed (multilingual duplicates). |
status | undisputed | alleged (one party asserts, other silent) | contested (asserted and denied) — always with attribution ("Party A alleges delivery on 3.3.; Party B disputes"). |
parties | Normalised names from the party register (references/party-register.md). |
conflicts | If two documents date the same event differently, record BOTH dates with their sources and flag the discrepancy — never silently pick one. |
Procedure
Step 1: PARTY REGISTER
Build or load the party register (references/party-register.md): normalised name, aliases seen in documents, role (Kläger/Beklagte, venditore/acquirente, ...). All party references in events use the normalised name.
Step 2: EXTRACTION (delegated)
Per document, the chronology-builder agent extracts event candidates: structural read (document type, date of document, parties) → dated facts → event candidates conforming to the schema. Dates are normalised per references/date-normalization.md (DE/FR/IT/EN → ISO).
Step 3: RECONCILIATION
Merge candidates:
- Same event, multiple documents/languages → one event, multiple sources (e.g. DE contract + FR letter describing the same delivery).
- Same event, different dates → one event with
conflictslisting every dated variant + its source, flagged. - Status assignment:
undisputedwhen all sources agree and no party denies;allegedwhen asserted by one party, unaddressed by the other;contestedwhen asserted and denied — with attribution.
Step 4: GAPS AND DEADLINES
- Evidentiary gaps: any documented period of ≥ 30 days with no events is flagged as a gap (render script injects gap rows) — helps spot missing evidence.
- Deadlines (only when
--deadlines): map events to time limits perreferences/deadline-mapping.md:- Procedural (notification-type events: service of judgment, order, decision) →
legal-personacompute_deadlines(procedureType, notificationDate, canton, language). Produces a computed marker with holidays/judicial recess handling. Note the tool's scope: ZPO Art. 142-149, BGG Art. 46/100-101 only. - Substantive limitation (Verjährung/prescription) → the mapping table in
references/deadline-mapping.md(event date + statutory period). Mark every such marker as indicative — verify;compute_deadlinesdoes NOT cover Verjährung, and output must never imply it does.
- Procedural (notification-type events: service of judgment, order, decision) →
Step 5: RENDER
Events go to bcc-output/timeline/events.json, then render deterministically:
node "${CLAUDE_PLUGIN_ROOT}/scripts/timeline-render.mjs" validate bcc-output/timeline/events.json
node "${CLAUDE_PLUGIN_ROOT}/scripts/timeline-render.mjs" render bcc-output/timeline/events.json --outdir bcc-output/timeline --formats all
Outputs (per --format, default all):
timeline.md— chronological table: date | event | source | status | parties, plus conflict/gap/deadline sections.timeline.html— self-contained interactive view: colour-coded status, gap bands, deadline markers, click-through to source list.timeline.docx— case-file export: same table + conflict/gap/deadline summary.
Iterative Updates (--merge)
A chronology is a living case artifact. On re-run with --merge, load the existing events.json, reconcile new candidates against existing events (new → added; same key, different date → conflict added; same → source appended), re-render. Never silently drop existing events.
Reduced Mode
compute_deadlinesunavailable → skip procedural markers, note (termine procedurale non calcolato — tool non disponibile); Verjährung markers from the mapping table remain (indicative).- Illegible document (scan/OCR failure) → reported as unreadable in the inventory; never fabricate events to compensate.
Quality Rules
- Neutral wording: the timeline records facts, not arguments ("La lettera del 3.3.2024 segnala un difetto" — not "il convenuto ha fraudolentemente...").
- Dates always rendered in one normalised display format per output language; ISO in data.
- A deadline marker must anchor to a sourced event — no floating deadlines.
- Include the professional disclaimer: the chronology is a working aid; dates, statuses and deadlines must be verified against the case file. Deadline computations (including
compute_deadlinesoutput) are auxiliary, not legal advice.
Integration
- Invoked by
/legal-timeline(orchestration) and used as worker method in thetimeline-sourcedgoal-loop profile (evaluator:citation-specialist). - Receives: document inventory (+ optional party seed, date window, canton for deadlines).
- Returns:
events.json+ rendered outputs underbcc-output/timeline/.
Signals
- GitHub stars
- 38
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
legal-chronology- Source
- github.com/fedec65/bettercallclaude