
Contacts
Add, enrich, and update people records in JoelClaw’s Obsidian Vault Contacts with optional Inngest multi-source dossier pipelines.
Install
npx skills add https://github.com/joelhooks/joelclaw --skill contactsWhat is this skill?
- Vault path ~/Vault/Contacts/<Name>.md with YAML frontmatter schema (VIP, Slack IDs, orgs, tags)
- Preferred path fires Inngest enrichment for multi-source dossiers; manual quick-create supported
- Standard sections: Contact Channels, Projects, Key Context, Recent Activity timeline
- Index maintenance via ~/Vault/Contacts/index.md wikilink list
- Example enriched record referenced (Matt Pocock.md pattern)
Adoption & trust: 342 installs on skills.sh; 57 GitHub stars; 1/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Journey fit
Grow lifecycle fits relationship CRM work—tracking VIPs, channels, and activity for ongoing audience and partner loops. Lifecycle subphase covers contact records, enrichment, and recent-activity logs that support repeated outreach and collaboration.
Common Questions / FAQ
Is Contacts safe to install?
skills.sh reports 1 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Contacts
# Contacts Manage contacts in `~/Vault/Contacts/`. Each contact is a markdown file with YAML frontmatter. ## Contact File Location ``` ~/Vault/Contacts/<Name>.md ``` Index file: `~/Vault/Contacts/index.md` — wikilink list of all contacts. ## Frontmatter Schema ```yaml --- name: Full Name aliases: [nickname, handle] role: Current Role / Title organizations: [Org1, Org2] vip: true # or false slack_user_id: U0XXXXXXX slack_dm_channel: D0XXXXXXX # null if unknown website: https://example.com github: username twitter: handle email: user@example.com tags: [vip, instructor, creator, family, employee] --- ``` ## Sections ```markdown # Name ## Contact Channels - Slack, email, social handles, website ## Projects - Active projects, courses, collaborations ## Key Context - Relationship notes, working style, history ## Recent Activity - YYYY-MM-DD | channel | summary ``` See `~/Vault/Contacts/Matt Pocock.md` for a fully enriched example. ## Adding a Contact ### Option 1: Fire the Enrichment Pipeline (preferred) Send an Inngest event. The `contact-enrich` function fans out across 7 sources (Slack, Roam, web/GitHub, Granola, recall memory, Typesense), synthesizes with LLM, and writes the Vault file. ```bash # Via curl (CLI has OTEL import bug under Bun v1.3.9) curl -s -X POST http://localhost:8288/e/37aa349b89692d657d276a40e0e47a15 \ -H "Content-Type: application/json" \ -d '[{ "name": "contact/enrich.requested", "data": { "name": "Person Name", "depth": "full", "hints": { "slack_user_id": "U0XXXXXXX", "github": "username", "twitter": "handle", "email": "user@example.com", "website": "https://example.com" } }, "ts": EPOCH_MS }]' ``` **Depth modes:** - `full` (~60s, ~$0.05): All 7 sources + LLM synthesis. Use for new contacts or periodic refresh. - `quick` (~10s, ~$0.01): Slack + memory only. Good for real-time VIP detection. **Hints are optional but help:** Any known identifiers (Slack ID, GitHub, email, Twitter, website) seed the search and improve results. ### Option 2: Quick Manual Create For simple contacts where enrichment is overkill: ```markdown --- name: Person Name aliases: [] role: Role organizations: [Org] vip: false slack_user_id: null website: null github: null twitter: null email: null tags: [tag1] --- # Person Name ## Contact Channels - ... ## Key Context - ... ``` Write to `~/Vault/Contacts/Person Name.md` and add `[[Person Name]]` to `index.md`. ## Updating Contacts Re-run enrichment with the existing vault path: ```json { "name": "contact/enrich.requested", "data": { "name": "Person Name", "vault_path": "Contacts/Person Name.md", "depth": "full" } } ``` The synthesizer merges new data with existing content — it won't discard existing facts unless contradicted. ## VIP Contacts (ADR-0151) Mark `vip: true` in frontmatter. VIPs get **deep enrichment + ongoing monitoring**. ### Deep Enrichment Playbook (one-time) Every VIP gets the full treatment. This is what we did for Kent C. Dodds (Feb 26, 2026): | Step | Source | What to Capture | |---|---|---| | 1. Web presence | Web search `{name} + {org}` | Bio, role, location, personal details | | 2. Podcast/interviews | Web search `{name} podcast interview` | Appearance list, own podcasts, audiences | | 3. Joel collaborations | Their website, appearances pages | Joint podcasts, co-organized events, shared projects | | 4. Career timeline | Defuddle 2-3 key interview transcripts | Origin story, career arc, key deci