.claude/skills/familysearch/SKILL.md
Search the FamilySearch historical records database via playwright-cli browser automation. Use this skill when searching for genealogical records on FamilySearch.org — billions of birth, marriage, death, census, and other records worldwide. Triggers on: "search familysearch", "check familysearch", "look up on familysearch", "/familysearch", or when you need international records beyond Dutch/Belgian archives. Requires login — credentials are in .env.
npx skillsauth add rdeknijf/ai-genealogy-kit familysearchInstall 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.
Search billions of genealogical records worldwide. FamilySearch is free and nonprofit, with extensive collections including civil registries, church records, census records, immigration records, and more.
Requires login — credentials are stored in .env as FAMILYSEARCH_USER
and FAMILYSEARCH_PASSWORD.
All browser interaction uses playwright-cli via Bash. Use a named session
to keep the browser open across multiple commands:
# Open browser (once per session)
playwright-cli -s=familysearch open
# Navigate
playwright-cli -s=familysearch goto "https://www.familysearch.org/en/search/"
# Get page snapshot (returns file path)
playwright-cli -s=familysearch snapshot
# Read the snapshot file to find element refs
cat .playwright-cli/<snapshot-file>.yml
# Interact using refs from snapshot
playwright-cli -s=familysearch fill <ref> "search text"
playwright-cli -s=familysearch click <ref>
# Close when done
playwright-cli -s=familysearch close
Important: After each action that changes the page (click, fill+submit, goto), take a new snapshot to get updated refs. Refs change between snapshots.
FamilySearch requires authentication. The playwright-cli session persists
cookies, so login is only needed once per browser session. Use
state-save/state-load to persist auth across sessions.
playwright-cli -s=familysearch goto "https://www.familysearch.org/en/search/"
playwright-cli -s=familysearch snapshot
Read the snapshot file. If it shows button "Account: Rutger de Knijf" in
the header, you're already logged in. Skip to step 3.
playwright-cli -s=familysearch goto "https://www.familysearch.org/en/"
playwright-cli -s=familysearch snapshot
Read the snapshot, find the "Sign In" button ref, then:
playwright-cli -s=familysearch click <sign-in-ref>
playwright-cli -s=familysearch snapshot
On the login page, find the Username and Password field refs:
playwright-cli -s=familysearch fill <username-ref> "$FAMILYSEARCH_USER"
playwright-cli -s=familysearch fill <password-ref> "$FAMILYSEARCH_PASSWORD"
playwright-cli -s=familysearch click <submit-ref>
Important: Read credentials from .env using the Read tool — do NOT
hardcode them. The password contains special characters (!@%^) and
must be used exactly as stored.
After login, you may see a "Please confirm your contact information" page. Click "Continue" to proceed.
If a cookie consent banner appears, click "Accept".
Save auth state for reuse:
playwright-cli -s=familysearch state-save .playwright-cli/familysearch-auth.json
Load saved auth in future sessions:
playwright-cli -s=familysearch open
playwright-cli -s=familysearch state-load .playwright-cli/familysearch-auth.json
playwright-cli -s=familysearch goto "https://www.familysearch.org/en/search/"
playwright-cli -s=familysearch snapshot
The search form has these fields:
Find the refs in the snapshot, fill the fields, then click "Search".
For more filters, click "More Options" which expands additional fields:
The search page has tabs for different record types:
/en/search — historical records (primary use)/en/search/full-text — full-text search across documents/en/records/images — browse digitized document images/en/search/tree — search the shared family tree/en/search/genealogies — user-submitted genealogies/en/search/catalog — library catalog of microfilm/records/en/library/books/ — digitized books/en/wiki/Main_Page — research guidance wikiplaywright-cli -s=familysearch snapshot
Results show a list with:
Find the ref for a result and click it to see the full record detail page.
Shows structured data including:
Important: FamilySearch often has scanned images of original documents. Click "View image" or similar links to see the actual document — this elevates the finding from Tier B to Tier A if you can read the original.
To search within a specific collection (e.g., "Netherlands, Civil Registration"):
Alternatively, browse all collections:
playwright-cli -s=familysearch goto "https://www.familysearch.org/en/search/collection/list"
To find records for a specific location:
## FamilySearch Result — [record type]
**Person:** [name]
**Event:** [type], [date] in [place]
**Father:** [name]
**Mother:** [name]
**Spouse:** [name] (if applicable)
**Collection:** [collection name]
**FamilySearch ref:** [record URL or reference]
**Original image:** [available / not available]
**Confidence:** Tier B — indexed record from FamilySearch collection
(Tier A if original image was reviewed)
* for partial name matchingplaywright-cli -s=familysearch screenshot to capture record imagestools
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
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.
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.