.claude/skills/verify-scans/SKILL.md
Generate a scan verification page for the user to review AI-extracted genealogy findings against actual document scans. The user clicks through records, confirms or rejects each one, and confirmed records become Tier A evidence in FINDINGS.md. Use this skill when: "verify scans", "show me what needs verifying", "review pending scans", "scan verification", "/verify-scans", or when the user wants to upgrade research findings from Tier C/D to Tier A by visually confirming document scans. Also use after a research session that produced scan-backed findings that need human confirmation.
npx skillsauth add rdeknijf/ai-genealogy-kit verify-scansInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate an interactive HTML page where the user reviews document scans alongside AI analysis, then feed confirmed verdicts back into FINDINGS.md as Tier A evidence.
After any research session that found records with viewable scans (IIIF images, archive thumbnails, etc.). The AI reads the scan and writes what it sees; the user confirms by looking at the actual image.
Check for existing verification JSON files:
private/research/*-verification.json
If none exist, or if the user asks to verify results from a specific research session, build the JSON from FINDINGS.md entries that are Tier C or D and have scan URLs.
Each record needs this structure:
{
"id": "unique-id",
"iiifUrl": "https://...",
"name": "Person Name",
"collection": "Source name",
"expect": "What the reviewer should look for",
"aiAnalysis": "What the AI read from the scan (HTML ok)",
"aiConfidence": "high|medium|low",
"aiConfidenceText": "90% — brief explanation",
"metadata": {"key": "value"},
"sourceUrl": "https://link-to-original"
}
To populate aiAnalysis: Download the scan image to /tmp and use the
Read tool to view it. Describe what you see — names, dates, places. Be
specific about which parts are legible and which are uncertain.
Confidence levels:
high (green): 80%+ — text clearly legible, key facts confirmedmedium (yellow): 50-80% — partially legible, main facts likely correctlow (red): <50% — poor quality, uncertain readingpython scripts/generate_verification.py INPUT.json OUTPUT.html --download
The --download flag saves images locally so the page works offline.
Then open it:
xdg-open OUTPUT.html
Tell the user:
After the user finishes reviewing, read back the verdicts. The user can either:
a. Click "Export verdicts" in the HTML — saves a -verdicts.json file
b. Tell you they're done — read the localStorage state isn't possible,
so ask them to export first
Read the exported verdicts JSON. For each record:
status: "verified" → Add to FINDINGS.md as Tier A:
**Tier A** — confirmed by visual inspection of [source] scan
If the scan was downloaded, copy it to private/sources/ for archival.
status: "rejected" → Note in FINDINGS.md that the scan did NOT confirm the expected data. Keep as Tier D with a note explaining the discrepancy.
status: "pending" → Skip, leave for next verification session.
note field → Include the user's note in the FINDINGS.md entry.
For verified Tier A records, follow the standard GEDCOM update process:
Any URL that serves a JPEG/PNG image works. IIIF is ideal because the script auto-generates display (1200px) and full-resolution URLs from the base. Known working sources:
cbg.hosting.deventit.net/iiif/image/3.0/{id}/...
(thumbnails public, full-res may need subscription)scripts/generate_verification.pyscripts/example_verification.jsonprivate/research/*-verification.jsonprivate/research/*-verification.htmlprivate/research/*_images/tools
Search Dutch civil registry records (births, marriages, deaths) on WieWasWie.nl via direct JSON API calls, with Open Archives API as a secondary source and Playwright browser automation as fallback. Use this skill whenever you need to look up or verify a person in Dutch civil records, check a birth/marriage/death date against official archives, or find parents/spouses from indexed Burgerlijke Stand records. Triggers on: "look up on wiewaswie", "check the birth record", "find the marriage certificate", "verify this date in the civil registry", "/wiewaswie", or any request to search Dutch genealogical records for a specific person. Also use when comparing GEDCOM data against official sources or when a Tier B verification is needed.
development
Search the VOC Opvarenden database for Dutch East India Company crew records (1699-1794). Uses the Nationaal Archief HUB3 API — 853,785 indexed entries with rich detail: name, origin, rank, ship, fate (died/returned/deserted), service dates, VOC chamber, and links to original scans. Use this skill when: "search VOC records", "VOC crew", "VOC opvarenden", "sailed to Batavia", "Dutch East India Company", "VOC soldier", "VOC sailor", "/voc-opvarenden", or when looking for ancestors who may have sailed with the VOC. Also use when checking Daniel Pieterse Knijf (1704, Woerden) or any Knijf/Knijff VOC connections. No login required.
tools
Search indexed person records at Streekarchief Midden-Holland (samh.nl) via the Memorix Genealogy REST API. No browser automation needed — returns structured JSON in ~50ms per query. Based in Gouda, covers municipalities: Gouda, Haastrecht, Schoonhoven, Waddinxveen, Noord-Waddinxveen, Moerkapelle, Moordrecht, Ammerstol, Broek, Vlist, and surrounding areas in the Midden-Holland region of South Holland. 3M+ person records with DTB (doop/trouw/begraven), BS (geboorte/huwelijk/overlijden), and Inschrijvingaktes. 36 Knijf results found, including Gijsbert de Knijf records in Gouda and van der Knijf in Waddinxveen. Scans available for most records. Triggers on: "search Gouda archive", "Streekarchief Midden-Holland", "SAMH", "Haastrecht records", "Schoonhoven records", "/streekarchief-midden-holland", or any genealogy research in the Gouda/Midden-Holland area. No login required. Parallelizable — run multiple queries simultaneously.
testing
Create annotated genealogy narrative PDFs with Typst — engaging family stories with academic footnotes, historical images, and beautiful typography. Use this skill when: "write a story about the X line", "create a story for Y", "make a PDF about this family", "/story", "story for my parents", or any request to produce a narrative document about a family line or ancestor. Also trigger when the user wants to turn research findings into a presentable document for family members. Language defaults to Dutch unless specified otherwise.