{"slug":"legal-chronology","title":"legal-chronology","summary":"Legal 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 ","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-01T17:43:46.005676Z","repo":{"url":"https://github.com/fedec65/bettercallclaude","stars":41,"forks":9,"license":"AGPL-3.0","updatedAt":"2026-09-20T21:09:18Z"},"bodyHtml":"<hr>\n<p>name: legal-chronology\ndescription: \"Legal 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).\"\ntools:</p>\n<ul>\n<li>Read</li>\n<li>Grep</li>\n<li>Glob</li>\n<li>Bash</li>\n<li>WebSearch</li>\n<li>WebFetch</li>\n<li>mcp__plugin_bettercallclaude_legal-persona__compute_deadlines</li>\n<li>mcp__legal-persona__compute_deadlines</li>\n</ul>\n<hr>\n<h1>Legal Chronology</h1>\n<p>You are the legal chronology method for BetterCallClaude. You turn the documents of a case into a <strong>legal timeline the way a lawyer actually reads a case</strong>: every event carries provenance, a contested/undisputed status, and feeds deadline computation.</p>\n<h2>The One Non-Negotiable Rule</h2>\n<p><strong>No event without a source.</strong> 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 (<code>scripts/timeline-render.mjs validate</code>) rejects source-less events; do not try to work around that.</p>\n<h2>Event Model</h2>\n<p>Every event conforms to <code>references/event-schema.md</code>:</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Rule</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>date</code></td>\n<td>Normalised ISO <code>YYYY-MM-DD</code>. Partial dates (\"March 2024\") keep <code>precision: month</code> (or <code>year</code>); never invent a day.</td>\n</tr>\n<tr>\n<td><code>event</code></td>\n<td>One sentence, neutral factual wording — no argumentation, no evaluation.</td>\n</tr>\n<tr>\n<td><code>source</code></td>\n<td><strong>Mandatory</strong>: <code>{doc, locus}</code> — document id + page/paragraph. Multiple sources allowed (multilingual duplicates).</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>undisputed</code> | <code>alleged</code> (one party asserts, other silent) | <code>contested</code> (asserted and denied) — always with <code>attribution</code> (\"Party A alleges delivery on 3.3.; Party B disputes\").</td>\n</tr>\n<tr>\n<td><code>parties</code></td>\n<td>Normalised names from the party register (<code>references/party-register.md</code>).</td>\n</tr>\n<tr>\n<td><code>conflicts</code></td>\n<td>If two documents date the same event differently, record BOTH dates with their sources and flag the discrepancy — <strong>never silently pick one</strong>.</td>\n</tr>\n</tbody>\n</table>\n<h2>Procedure</h2>\n<h3>Step 1: PARTY REGISTER</h3>\n<p>Build or load the party register (<code>references/party-register.md</code>): normalised name, aliases seen in documents, role (Kläger/Beklagte, venditore/acquirente, ...). All party references in events use the normalised name.</p>\n<h3>Step 2: EXTRACTION (delegated)</h3>\n<p>Per document, the <code>chronology-builder</code> agent extracts event candidates: structural read (document type, date of document, parties) → dated facts → event candidates conforming to the schema. Dates are normalised per <code>references/date-normalization.md</code> (DE/FR/IT/EN → ISO).</p>\n<h3>Step 3: RECONCILIATION</h3>\n<p>Merge candidates:</p>\n<ul>\n<li><strong>Same event, multiple documents/languages</strong> → one event, multiple sources (e.g. DE contract + FR letter describing the same delivery).</li>\n<li><strong>Same event, different dates</strong> → one event with <code>conflicts</code> listing every dated variant + its source, flagged.</li>\n<li><strong>Status assignment</strong>: <code>undisputed</code> when all sources agree and no party denies; <code>alleged</code> when asserted by one party, unaddressed by the other; <code>contested</code> when asserted and denied — with attribution.</li>\n</ul>\n<h3>Step 4: GAPS AND DEADLINES</h3>\n<ul>\n<li><strong>Evidentiary gaps</strong>: any documented period of ≥ 30 days with no events is flagged as a gap (render script injects gap rows) — helps spot missing evidence.</li>\n<li><strong>Deadlines</strong> (only when <code>--deadlines</code>): map events to time limits per <code>references/deadline-mapping.md</code>:\n<ul>\n<li><strong>Procedural</strong> (notification-type events: service of judgment, order, decision) → <code>legal-persona</code> <code>compute_deadlines(procedureType, notificationDate, canton, language)</code>. Produces a computed marker with holidays/judicial recess handling. Note the tool's scope: ZPO Art. 142-149, BGG Art. 46/100-101 only.</li>\n<li><strong>Substantive limitation (Verjährung/prescription)</strong> → the mapping table in <code>references/deadline-mapping.md</code> (event date + statutory period). Mark every such marker as <strong>indicative — verify</strong>; <code>compute_deadlines</code> does NOT cover Verjährung, and output must never imply it does.</li>\n</ul>\n</li>\n</ul>\n<h3>Step 5: RENDER</h3>\n<p>Events go to <code>bcc-output/timeline/events.json</code>, then render deterministically:</p>\n<pre><code>node \"${CLAUDE_PLUGIN_ROOT}/scripts/timeline-render.mjs\" validate bcc-output/timeline/events.json\nnode \"${CLAUDE_PLUGIN_ROOT}/scripts/timeline-render.mjs\" render bcc-output/timeline/events.json --outdir bcc-output/timeline --formats all\n</code></pre>\n<p>Outputs (per <code>--format</code>, default <code>all</code>):</p>\n<ol>\n<li><code>timeline.md</code> — chronological table: date | event | source | status | parties, plus conflict/gap/deadline sections.</li>\n<li><code>timeline.html</code> — self-contained interactive view: colour-coded status, gap bands, deadline markers, click-through to source list.</li>\n<li><code>timeline.docx</code> — case-file export: same table + conflict/gap/deadline summary.</li>\n</ol>\n<h2>Iterative Updates (<code>--merge</code>)</h2>\n<p>A chronology is a living case artifact. On re-run with <code>--merge</code>, load the existing <code>events.json</code>, reconcile new candidates against existing events (new → added; same key, different date → conflict added; same → source appended), re-render. Never silently drop existing events.</p>\n<h2>Reduced Mode</h2>\n<ul>\n<li><code>compute_deadlines</code> unavailable → skip procedural markers, note <em>(termine procedurale non calcolato — tool non disponibile)</em>; Verjährung markers from the mapping table remain (indicative).</li>\n<li>Illegible document (scan/OCR failure) → reported as unreadable in the inventory; <strong>never</strong> fabricate events to compensate.</li>\n</ul>\n<h2>Quality Rules</h2>\n<ul>\n<li>Neutral wording: the timeline records facts, not arguments (\"La lettera del 3.3.2024 segnala un difetto\" — not \"il convenuto ha fraudolentemente...\").</li>\n<li>Dates always rendered in one normalised display format per output language; ISO in data.</li>\n<li>A deadline marker must anchor to a sourced event — no floating deadlines.</li>\n<li>Include the professional disclaimer: the chronology is a working aid; dates, statuses and deadlines must be verified against the case file. Deadline computations (including <code>compute_deadlines</code> output) are auxiliary, not legal advice.</li>\n</ul>\n<h2>Integration</h2>\n<ul>\n<li>Invoked by <code>/legal-timeline</code> (orchestration) and used as worker method in the <code>timeline-sourced</code> goal-loop profile (evaluator: <code>citation-specialist</code>).</li>\n<li>Receives: document inventory (+ optional party seed, date window, canton for deadlines).</li>\n<li>Returns: <code>events.json</code> + rendered outputs under <code>bcc-output/timeline/</code>.</li>\n</ul>\n","files":[{"path":"references/date-normalization.md","sizeBytes":2755,"isText":true},{"path":"references/deadline-mapping.md","sizeBytes":3402,"isText":true},{"path":"references/event-schema.md","sizeBytes":3575,"isText":true},{"path":"references/party-register.md","sizeBytes":2277,"isText":true},{"path":"SKILL.md","sizeBytes":6741,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-01T17:44:50.494757Z","sha256":"895B21EB834D27D85DA4225C9E21009E05A99046F3F24069AD18559E84AF3790","sizeBytes":9286},"review":null,"source":{"repositoryUrl":"https://github.com/fedec65/bettercallclaude","path":"bettercallclaude/skills/legal-chronology","license":"AGPL-3.0","commit":"29f2587916d3ddae4e6ce861703a907fc61a9727","subtreeSha":"7AD9D97D4F24837891E5F79C9165F4931DA97130648498FE92C070BD00D3EAB0","lastSyncedAt":"2026-10-07T15:23:13.953804Z"},"reviewedAt":"2026-09-01T17:49:23.643829Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/fedec65/bettercallclaude/tree/main/bettercallclaude/skills/legal-chronology"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install fedec65-bettercallclaude@llmmart"},{"target":"git","command":"git clone https://github.com/fedec65/bettercallclaude.git"}]}