skills/enrich/SKILL.md
Enrich brain pages with tiered enrichment protocol. Creates and updates person/company pages with compiled truth, timeline, and cross-links. Use when a new entity is mentioned or an existing page needs updating.
npx skillsauth add life-efficient/jarvis enrichInstall 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.
Enrich person and company pages from external sources. Scale effort to importance.
This skill guarantees:
Filing rule: Read
skills/_brain-filing-rules.mdbefore creating any new page.
Every mention of a person or company with a brain page MUST create a back-link
FROM that entity's page TO the page mentioning them. An unlinked mention is a
broken brain. See skills/_brain-filing-rules.md for format.
A brain page should read like an intelligence dossier, not a LinkedIn scrape. Facts are table stakes. Texture is the value -- what do they believe, what are they building, what makes them tick, where are they headed.
Every fact must carry an inline [Source: ...] citation.
Three formats:
[Source: User, {context}, YYYY-MM-DD][Source: {provider} enrichment, YYYY-MM-DD][Source: compiled from {list of sources}]Source precedence (highest to lowest):
When sources conflict, note the contradiction with both citations.
Scale enrichment to importance. Don't waste API calls on low-value entities.
| Tier | Who | Effort | Sources | |------|-----|--------|---------| | 1 (key) | Inner circle, close collaborators, key contacts | Full pipeline | All available APIs + deep web research | | 2 (notable) | Occasional interactions, industry figures | Moderate | Web research + social + brain cross-ref | | 3 (minor) | Worth tracking, not critical | Light | Brain cross-ref + social lookup if handle known |
Extract people, companies, concepts from the incoming signal.
For each entity:
gbrain search "name" -- does a page already exist?Don't just capture facts. Capture texture:
| Signal Type | What to Extract | |-------------|----------------| | Opinions, beliefs | What They Believe section | | Current projects, features shipped | What They're Building section | | Ambition, career arc, motivation | What Motivates Them section | | Topics they return to obsessively | Hobby Horses section | | Who they amplify, argue with, respect | Network / Relationships | | Ascending, plateauing, pivoting? | Trajectory section | | Role, company, funding, location | State section (hard facts) |
Priority order -- stop when you have enough signal for the entity's tier.
4a. Brain cross-reference (always, all tiers)
gbrain search "name" and gbrain query "what do we know about name"4b. Web research (Tier 1 and 2)
4c. Social media lookup (all tiers when handle known)
4d. People enrichment APIs (Tier 1)
4e. Company enrichment APIs (Tier 1)
| Data Need | Example Sources | Tier | |-----------|----------------|------| | Web research | Perplexity, Brave, Exa | 1-2 | | LinkedIn / career | Crustdata, Proxycurl, People Data Labs | 1 | | Career history | Happenstance, LinkedIn | 1 | | Funding / company data | Crunchbase, PitchBook, Clearbit | 1 | | Social media | Platform APIs, web scraping | 1-3 | | Meeting history | Calendar/meeting transcript tools | 1-2 |
Store raw API responses via put_raw_data in gbrain:
{
"source": "crustdata",
"fetched_at": "2026-04-11T...",
"query": "jane doe",
"data": { ... }
}
Raw data preserves provenance. If the compiled truth is ever questioned, the raw data shows exactly what the API returned.
skills/_brain-filing-rules.md)[No data yet] (don't fill with boilerplate)---
title: Full Name
type: person
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: []
company: Current Company
relationship: How the user knows them
email:
linkedin:
twitter:
location:
---
# Full Name
> 1-paragraph executive summary: HOW do you know them, WHY do they matter,
> what's the current state of the relationship.
## State
Role, company, key context. Hard facts only.
## What They Believe
Ideology, first principles, worldview. What hills do they die on?
## What They're Building
Current projects, recent launches, what they're focused on.
## What Motivates Them
Ambition, career arc, what drives them.
## Hobby Horses
Topics they return to obsessively. Recurring themes in their work/posts.
## Assessment
Your read on this person. Strengths, gaps, trajectory.
## Trajectory
Ascending, plateauing, pivoting, declining? Where are they headed?
## Relationship
History of interactions, shared context, relationship quality.
## Contact
Email, social handles, preferred communication channel.
## Network
Key connections, mutual contacts, organizational relationships.
## Open Threads
Active conversations, pending items, things to follow up on.
---
## Timeline
Reverse chronological. Every entry has a date and [Source: ...] citation.
- **YYYY-MM-DD** | Event description [Source: ...]
---
title: Company Name
type: company
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: []
---
# Company Name
> 1-paragraph executive summary.
## State
What they do, stage, key people, key metrics, your connection.
## Open Threads
Active items, pending decisions, things to track.
---
## Timeline
- **YYYY-MM-DD** | Event description [Source: ...]
Note (v0.10.1): Links between brain pages are auto-created on every
put_page call (auto-link post-hook). Step 7 focuses on content
cross-references (updating related pages' compiled truth with new signal
from this enrichment), not on creating links. Verify via the auto_links
field in the put_page response ({ created, removed, errors }).
Timeline entries still need explicit gbrain timeline-add calls.
After enrichment sweeps, save a report:
This creates an audit trail for brain enrichment over time.
An enriched person page contains:
[Source: ...] citationsAn enriched company page contains:
Both page types have bidirectional back-links to every entity they mention.
development
Generic framework for converting external events (SMS, meetings, social mentions) into brain-ingestible signals. Define a transform function, register a webhook URL, and incoming events get processed through the brain pipeline.
development
Skill validation framework. Validates every skill has SKILL.md with frontmatter, every reference exists, every env var is declared. The testing contract for the skill system itself.
testing
6-phase interactive interview that generates the agent's identity (SOUL.md), user profile (USER.md), access control (ACCESS_POLICY.md), and operational cadence (HEARTBEAT.md). Re-runnable anytime to update any section.
testing
Run `gbrain skillpack-check` to produce an agent-readable JSON health report for the gbrain install. Wraps `gbrain doctor` + `gbrain apply-migrations --list` so a host agent (Wintermute's morning-briefing, any OpenClaw cron) can see at a glance whether the skillpack needs attention. Use when the user asks "is gbrain healthy?", when a cron fires a morning check, or proactively when something seems off (jobs not running, brain not updating, autopilot silent).