Agent skill
Updating genealogy data
Updates person records in the auntruth genealogy database (3,004 people across 10 lineages) while maintaining bidirectional relationship consistency. Use when the user asks to update birth/death dates, add marriages, add children, or modify biographical information for any person in the database.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/updating-genealogy-data
SKILL.md
Updating Genealogy Data
When to Use This Skill
Use this skill when the user requests:
- Update death/birth dates or locations
- Add or modify marriage information
- Add children to family records
- Update contact information (email, phone, address)
- Modify biographical details (occupation, notes)
- Any change to person records in the
data/people/directory
Do NOT use for reading/browsing person data or generating new HTML pages.
Critical Constraints
- Source of truth: JSON files in
data/people/{lineage}/{person_id}.json - NEVER edit HTML: Files in
docs/new/htm/L*/are auto-generated (CI/CD regenerates them) - No backup files: Use git for version control - NEVER create .backup files
- Bidirectional consistency: Relationships must match both directions (if A is spouse of B, B must be spouse of A)
- Always validate: Run validation script after every update before committing
Database Structure
- 3,004 people across 10 lineages
- Person IDs: Format
XF###(e.g., XF100, XF2451) - Lineages: Hagborg-Hansson (L1), Nelson (L2), Pringle-Hambley (L3), Lathrop-Lothropp (L4), Ward (L5), Selch-Weiss (L6), Stebbe (L7), Lentz (L8), Phoenix-Rogerson (L9), Other (L0)
For detailed schema, see REFERENCE.md in this skill directory.
Standard Workflow (Copy-Paste Checklist)
For every update request, follow these steps:
☐ 1. UNDERSTAND REQUEST
Parse what needs updating and identify person ID(s)
☐ 2. FIND PERSON FILES
grep -r '"id": "XF###"' data/people/
Identify all affected files (person + related records)
☐ 3. READ CURRENT DATA
Read all affected JSON files
Show user current values and confirm changes
☐ 4. MAKE UPDATES
Edit JSON files with new values
Update metadata.lastUpdated: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
Ensure bidirectional consistency for relationships
☐ 5. VALIDATE
python3 PRPs/scripts/both/validate_json_data.py --input data/people/{lineage}/{person_id}.json
Fix any validation errors before proceeding
☐ 6. COMMIT JSON DATA ONLY
git add data/people/{lineage}/*.json
git commit -m "Update XF###: [description]"
git push
IMPORTANT: Do NOT regenerate HTML pages manually!
GitHub Actions will automatically regenerate ALL HTML pages on push.
☐ 7. REPORT
Show summary: files changed, validation status
Explain: GitHub Actions will auto-regenerate HTML pages within 3-5 minutes
Tell user to wait for the automated workflow to complete before checking the live site
Common Update Patterns
Death Date Update (1 file affected)
User request: "Update XF100 death date to December 31, 1920 in Winnipeg, MB"
Fields to update:
deathDate: "1920-12-31"deathLocation: "Winnipeg, MB"deceased: truemetadata.lastUpdated: current ISO timestamp
Example:
{
"id": "XF100",
"deathDate": "1920-12-31",
"deathLocation": "Winnipeg, MB",
"deceased": true,
"metadata": {
"lastUpdated": "2025-10-21T15:30:00Z"
}
}
Add Marriage (2 files affected - both spouses)
User request: "Add marriage between XF100 and XF101 on June 20, 1875"
Files to update:
data/people/{lineage}/XF100.json- add XF101 to spouses arraydata/people/{lineage}/XF101.json- add XF100 to spouses array
Critical: Both files must reference each other with identical marriage date.
Example spouse entry:
{
"spouses": [
{
"id": "XF101",
"name": "Spouse Full Name",
"url": "/auntruth/new/htm/L1/XF101.htm",
"marriageDate": "1875-06-20"
}
]
}
Add Child (3 files affected - mother, father, child)
User request: "Add child XF106 (Anna, born 1876-03-15) to parents XF100 and XF101"
Files to update:
- Mother's file - add to
childrenarray - Father's file - add to
childrenarray - Child's file - set
motherandfatherreferences
Child entry in parent's file:
{
"children": [
{
"id": "XF106",
"name": "Anna Full Name",
"url": "/auntruth/new/htm/L1/XF106.htm",
"birthDate": "1876-03-15"
}
]
}
Parent reference in child's file:
{
"mother": {
"id": "XF100",
"name": "Mother Name",
"url": "/auntruth/new/htm/L1/XF100.htm"
},
"father": {
"id": "XF101",
"name": "Father Name",
"url": "/auntruth/new/htm/L1/XF101.htm"
}
}
Finding Records
Find person by ID:
grep -r '"id": "XF100"' data/people/
# Returns: data/people/Hagborg-Hansson/XF100.json
Find person by name (case-insensitive):
grep -ri '"name":.*"johanna"' data/people/
Get lineage directory number for URL construction:
- See
REFERENCE.mdfor complete lineage mapping (L0-L9)
Validation & Safety
Always run after updates (EXECUTE this script):
python3 PRPs/scripts/both/validate_json_data.py --input data/people/{lineage}/{person_id}.json
Validation checks:
- ✓ JSON syntax valid
- ✓ Required fields present (id, name, lineage)
- ✓ ID matches pattern XF\d+
- ✓ Arrays are properly formatted
- ✓ URLs follow correct pattern
If validation fails: Fix errors before committing. Do NOT proceed with invalid data.
URL Construction Pattern
All person URLs follow this pattern:
/auntruth/new/htm/L{lineage_num}/{person_id}.htm
Example: Person XF100 in Hagborg-Hansson (L1) lineage:
/auntruth/new/htm/L1/XF100.htm
Timestamp Generation
Always update metadata.lastUpdated with current ISO timestamp:
date -u +"%Y-%m-%dT%H:%M:%SZ"
Error Recovery
If updates fail:
- Check validation output for specific errors
- Fix schema issues (missing required fields, wrong types)
- Verify bidirectional relationships match
- Re-run validation
- If still failing, use
git checkoutto revert (NO .backup files)
Post-Update - Automated Workflow
After successful git push:
- GitHub Actions workflow triggers automatically
- Validates all JSON data (30 seconds)
- Regenerates ALL 3,004 HTML pages from JSON (2-3 minutes)
- Auto-commits regenerated HTML back to repo
- Deploys to GitHub Pages (1-2 minutes)
Total time: 3-5 minutes from push to live site update
IMPORTANT: User does NOT need to manually regenerate HTML pages! The workflow handles everything automatically.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?