Skip to content
Automation
Skill

/citation-content-verify

Substantive citation verifier — checks every citation in a draft against the live source for existence AND content support (entailment), before delivery. Status per citation: MATCH / PARTIAL / MISMATCH / UNVERIFIED. UNVERIFIED or MISMATCH blocks automatic delivery (remove,

From plugin
bettercallclaude
3817 skills21 agents29 commands10 MCP
Install
$ npx -y skills add fedec65/bettercallclaude --skill citation-content-verify --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/citation-content-verify

Context preview

The summary Claude sees to decide when to auto-load this skill.

Substantive citation verifier — checks every citation in a draft against the live source for existence AND content support (entailment), before delivery. Status per citation: MATCH / PARTIAL / MISMATCH / UNVERIFIED. UNVERIFIED or MISMATCH blocks automatic delivery (remove,

SKILL.md

citation-content-verify.SKILL.md
name: citation-content-verify
description: "Substantive citation verifier — checks every citation in a draft against the live source for existence AND content support (entailment), before delivery. Status per citation: MATCH / PARTIAL / MISMATCH / UNVERIFIED. UNVERIFIED or MISMATCH blocks automatic delivery (remove, disclaim, or escalate). Trigger after any draft-bearing response is produced and before final delivery / legal-evaluator scoring. Do NOT trigger for: citation formatting/conversion (swiss-citation-formats) or research retrieval (swiss-legal-research)."
tools:
  - Read
  - Grep
  - Glob
  - Bash
  - WebSearch
  - WebFetch
  - mcp__plugin_bettercallclaude_legal-citations__extract_citations
  - mcp__legal-citations__extract_citations
  - mcp__plugin_bettercallclaude_legal-citations__parse_citation
  - mcp__legal-citations__parse_citation
  - mcp__plugin_bettercallclaude_legal-citations__validate_citation
  - mcp__legal-citations__validate_citation
  - mcp__plugin_bettercallclaude_legal-citations__review_citations
  - mcp__legal-citations__review_citations
  - mcp__plugin_bettercallclaude_fedlex-sparql__lookup_statute
  - mcp__fedlex-sparql__lookup_statute
  - mcp__plugin_bettercallclaude_fedlex-sparql__get_article
  - mcp__fedlex-sparql__get_article
  - mcp__plugin_bettercallclaude_entscheidsuche__search_decisions
  - mcp__entscheidsuche__search_decisions
  - mcp__plugin_bettercallclaude_entscheidsuche__get_decision_details
  - mcp__entscheidsuche__get_decision_details
  - mcp__plugin_bettercallclaude_onlinekommentar__search_commentaries
  - mcp__onlinekommentar__search_commentaries
  - mcp__plugin_bettercallclaude_onlinekommentar__get_commentary_for_article
  - mcp__onlinekommentar__get_commentary_for_article
  - mcp__plugin_bettercallclaude_swiss-caselaw__cite
  - mcp__swiss-caselaw__cite
  - mcp__plugin_bettercallclaude_swiss-caselaw__get_decision
  - mcp__swiss-caselaw__get_decision
  - mcp__plugin_bettercallclaude_swiss-caselaw__get_erwaegung
  - mcp__swiss-caselaw__get_erwaegung
  - mcp__plugin_bettercallclaude_swiss-caselaw__get_regeste
  - mcp__swiss-caselaw__get_regeste
  - mcp__plugin_bettercallclaude_swiss-caselaw__find_relevant_erwaegung
  - mcp__swiss-caselaw__find_relevant_erwaegung
  - mcp__plugin_bettercallclaude_swiss-caselaw__check_claim_support
  - mcp__swiss-caselaw__check_claim_support
  - mcp__plugin_bettercallclaude_swiss-caselaw__attest_response
  - mcp__swiss-caselaw__attest_response
  - mcp__plugin_bettercallclaude_swiss-caselaw__get_doctrine
  - mcp__swiss-caselaw__get_doctrine
  - mcp__plugin_bettercallclaude_ollama__ollama_check_status
  - mcp__ollama__ollama_check_status

Citation Content Verify

You are the substantive citation verification stage of the BetterCallClaude pipeline. You run **after** a draft response or artifact is produced and **before** final delivery (and before the `legal-evaluator` PASS/FAIL scoring). You verify every citation on two axes:

  • **(a) Existence** — the cited source really exists in the live database.
  • **(b) Content support** — the source actually says what the draft claims it says (entailment).

Format correctness is NOT your job — that is `swiss-citation-formats`. A syntactically perfect citation can still be fabricated or misattached; your job is to catch exactly that.

Status Vocabulary

| Status | Meaning | Delivery impact | |--------|---------|-----------------| | `MATCH` | Source exists and supports the claim | none | | `PARTIAL` | Source exists, supports the claim only in part or with caveats | disclosed in report, does not block | | `MISMATCH` | Source exists but does NOT support the claim (unsupported, contradicted, or unrelated) | **blocks delivery** | | `UNVERIFIED` | Source not found, or could not be checked (after retry) | **blocks delivery** | | `SKIPPED` | Out of scope (informal doctrine without structured ID, spec §7) | disclosed in report, does not block |

Verification Procedure

Step 0: Privacy Pre-Check

Determine the active privacy mode from the playbook (`bettercallclaude.local.md`) or session state. Content-level checks send claim sentences to cloud MCP tools (`check_claim_support`, `attest_response` use a server-side LLM judge):

  • **`strict` mode**: privileged content MUST NOT cross to cloud content-checks. Run existence checks only; mark content status as `UNVERIFIED` with note `(privacy-gated: existence confirmed, content not checked in strict mode)`. Optionally offer local-only review via the ollama server.
  • **`balanced` mode**: privileged passages are withheld; only non-privileged claim sentences go to cloud content-checks.
  • **`cloud` mode**: proceed normally.

If unsure whether content is privileged, treat it as privileged (fail-safe).

Step 1: EXTRACT

Run `legal-citations__extract_citations` on the draft. For each extracted citation, capture the **claim**: the sentence (or sentence fragment) in the draft that the citation supports — normally the sentence immediately preceding or containing the citation. If `extract_citations` does not return the surrounding context, isolate the claim yourself from the draft text.

Step 2: CLASSIFY & RESOLVE

Run `legal-citations__parse_citation` (or `validate_citation`) per citation to obtain the canonical ID and classify:

| Class | Examples | Route | |-------|----------|-------| | `statute` | Art. 97 Abs. 1 OR, art. 2 CC, Art. 321 StGB | fedlex-sparql | | `federal-case` | BGE/ATF/DTF 140 III 86, 4A_123/2023 | swiss-caselaw (fallback: bge-search, entscheidsuche) | | `cantonal-case` | Obergericht ZH LA123456/2024 | entscheidsuche | | `doctrine-structured` | commentary tied to an article (e.g. onlinekommentar on Art. 97 OR) | onlinekommentar | | `doctrine-informal` | GAUCH/SCHLUEP, OR AT, N 865 | `SKIPPED` (spec §7) |

Step 3: ROUTE & VERIFY

For each citation, with **exactly one retry** on timeout/transient MCP error before declaring `UNVERIFIED`:

**`statute`** → `fedlex-sparql__get_article` (or `lookup_statute`). -

Read more
Ships withbettercallclaude

A powerful plugin for Claude Cowork Desktop, designed specifically for Swiss legal professionals. 20 agents, 14 skills, and 9 MCP servers — automate research, draft documents, and navigate complex legal landscapes with AI-powered precision.

Get the whole plugin

Other skills on bettercallclaude.