.claude/skills/gelders-archief/SKILL.md
Access civil registry records from the Gelders Archief (geldersarchief.nl) via the Open Archives JSON API instead of Playwright browser automation. 10-50x faster than the browser-based skill. Use this skill whenever you need to search the Gelders Archief person database, view record details (birth, marriage, death), or verify a record against indexed data. Triggers on: "check gelders archief", "view the record", "look up in the Gelderland archive", "/gelders-archief", or when following a "Naar bron" link from WieWasWie that points to geldersarchief.nl. The Gelders Archief covers Gelderland province -- including Ede/Bennekom, Barneveld, Apeldoorn, Nijkerk, Zutphen, and Arnhem. No login or API key required.
npx skillsauth add rdeknijf/ai-genealogy-kit gelders-archief-optimizedInstall 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.
Access indexed records from the Gelders Archief in Arnhem via the Open Archives REST API. Returns structured JSON data with person names, event details, parent names, archive references, and permalink URLs -- all without browser automation.
No login or API key required. Rate limited to 4 requests/second per IP.
curl "https://api.openarchieven.nl/1.1/records/search.json?name=<QUERY>&archive_code=gld&number_show=<N>&lang=nl"
Required parameters:
name -- search query (supports multiple names separated by & for
combined record search, e.g., Jacob de Knijf & Geesje van den Hul)Optional parameters:
| Parameter | Description | Default |
|-----------|-------------|---------|
| archive_code | Always use gld for Gelders Archief | none |
| number_show | Results per page (max 100) | 10 |
| start | Pagination offset | 0 |
| eventplace | Filter by place (e.g., Bennekom, Ede, Arnhem) | none |
| sourcetype | Filter by source type (see below) | none |
| relationtype | Filter by role (see below) | none |
| sort | Sort column: 1=Name, 2=Role, 3=Event, 4=Date, 5=Place, 6=Source | 1 |
| lang | Language (nl or en) | nl |
Source types for sourcetype parameter:
BS Geboorte -- birth certificate (Burgerlijke Stand)BS Huwelijk -- marriage certificateBS Overlijden -- death certificateRelation types for relationtype parameter:
Kind -- child (subject of birth record)Bruidegom -- groomBruid -- brideOverledene -- deceasedVader -- fatherMoeder -- motherSearch response structure:
{
"query": { "archive": "Gelders Archief", "name": "...", "..." : "..." },
"response": {
"number_found": 108,
"docs": [
{
"pid": "Person3043910002",
"identifier": "755EDE30-21A7-4CA4-B589-006AE10E7E17",
"archive_code": "gld",
"personname": "Aaltje de Knijf",
"relationtype": "Kind",
"eventtype": "Geboorte",
"eventdate": { "day": 4, "month": 11, "year": 1891 },
"eventplace": ["Bennekom"],
"sourcetype": "BS Geboorte",
"url": "https://www.openarchieven.nl/gld:755EDE30-..."
}
]
}
}
Use the identifier from search results to fetch the complete record:
curl "https://api.openarchieven.nl/1.1/records/show.json?identifier=<UUID>&archive_code=gld&lang=nl"
Show response structure (birth record example):
{
"Person": [
{
"@pid": "Person3043910002",
"PersonName": {
"PersonNameFirstName": "Aaltje",
"PersonNamePrefixLastName": "de",
"PersonNameLastName": "Knijf"
},
"Gender": "Vrouw"
},
{
"@pid": "Person3043910003",
"PersonName": {
"PersonNameFirstName": "Jacob",
"PersonNamePrefixLastName": "de",
"PersonNameLastName": "Knijf"
},
"Age": { "PersonAgeLiteral": "37" },
"Profession": "landbouwer"
},
{
"@pid": "Person3043910004",
"PersonName": {
"PersonNameFirstName": "Geesje",
"PersonNamePrefixLastName": "van den",
"PersonNameLastName": "Hul"
},
"Profession": "zonder beroep"
}
],
"Event": {
"EventType": "Geboorte",
"EventDate": {
"LiteralDate": "04-11-1891",
"Year": "1891", "Month": "11", "Day": "04"
},
"EventPlace": { "Place": "Bennekom" }
},
"RelationEP": [
{ "PersonKeyRef": "Person3043910002", "RelationType": "Kind" },
{ "PersonKeyRef": "Person3043910003", "RelationType": "Vader" },
{ "PersonKeyRef": "Person3043910004", "RelationType": "Moeder" }
],
"Source": {
"SourcePlace": { "Country": "Nederland", "Place": "Ede" },
"SourceDate": { "LiteralDate": "04-11-1891" },
"SourceType": "BS Geboorte",
"SourceReference": {
"InstitutionName": "Gelders Archief",
"Archive": "0207",
"Collection": "Burgerlijke stand Gelderland, dubbelen",
"Book": "Ede, Geboorteregister",
"RegistryNumber": "5304.02",
"DocumentNumber": "408"
},
"SourceDigitalOriginal": "https://permalink.geldersarchief.nl/...",
"RecordGUID": "{755EDE30-21A7-4CA4-B589-006AE10E7E17}"
}
}
The permalink to the original Gelders Archief record page (with scan viewer) can be constructed from the identifier by removing dashes:
https://permalink.geldersarchief.nl/<UUID-without-dashes>
Example: identifier 755EDE30-21A7-4CA4-B589-006AE10E7E17 becomes
https://permalink.geldersarchief.nl/755EDE3021A74CA4B589006AE10E7E17
From the show response, extract:
RelationTypeVaderMoederBruidegom, Bruid, or other:(ex-)partnerEvent.EventDate.LiteralDate (the event date, not SourceDate)Event.EventPlace.PlaceSource.SourceDate.LiteralDate (= aktedatum)Source.SourcePlace.Place (= akteplaats)Source.SourceReference.ArchiveSource.SourceReference.RegistryNumberSource.SourceReference.DocumentNumberSource.SourceDigitalOriginalcurl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Jacob+de+Knijf&archive_code=gld&eventplace=Bennekom&sourcetype=BS+Geboorte&number_show=20&lang=nl"
curl -s "https://api.openarchieven.nl/1.1/records/show.json?identifier=<UUID>&archive_code=gld&lang=nl"
https://permalink.geldersarchief.nl/<UUID-without-dashes>
Note: viewing the actual scan images still requires visiting the permalink in a browser (Playwright fallback), since the scan viewer uses JavaScript.
Since this is a REST API (no browser session), multiple lookups can run in parallel. For verifying a family line with 10 people:
# Search + show can be done in parallel for independent persons
# Respect the 4 req/sec rate limit
This is a major advantage over Playwright, which is limited to a single sequential browser session.
To find records where two people appear together (e.g., parents on a
child's birth record), use & in the name parameter:
name=Jacob+de+Knijf+%26+Geesje+van+den+Hul
This returns all records mentioning both persons (births, marriages, deaths).
The API distinguishes between:
Event.EventDate) = actual birth/marriage/death dateSource.SourceDate) = registration date (aktedatum)Use the event date for GEDCOM entries.
The Gelders Archief holds civil registration records for all Gelderland municipalities. Key ones for this family tree:
If the Open Archives API is unavailable, returns errors, or when you need to view the actual scan images (handwritten certificates), fall back to Playwright browser automation.
browser_navigate -> https://permalink.geldersarchief.nl/<UUID-without-dashes>
This opens the full record page with scanned documents.
browser_navigate -> https://www.geldersarchief.nl/bronnen/personen?view=maisinternet
Fill in the search form fields and submit. The MAIS/Archieven.nl platform loads results via JavaScript -- WebFetch/curl cannot access the search results directly (only skeleton HTML is returned).
The scan viewer on the Gelders Archief requires JavaScript rendering. Navigate to the permalink URL and click thumbnail links (1, 2, 3...) to open the document viewer showing the actual handwritten certificate pages.
## Gelders Archief Result -- [record type]
**Person:** [name]
**Event:** [type], [event date] in [event place]
**Registered:** [akte date] in [akte place]
**Father:** [name], age [age], [profession]
**Mother:** [name], [profession]
**Archive ref:** Toegangsnr [Archive], Inventarisnr [RegistryNumber], Aktenr [DocumentNumber]
**Permalink:** https://permalink.geldersarchief.nl/[UUID]
**Scan available:** Check permalink
**Confidence:** Tier B (indexed data from official archive via API)
start parameter)& search in the name field is powerful but quirky -- test
with known records firsttools
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.