Agent skill
discover-contacts
Research and enrich professional contacts and marketing prospects. Uses /dogpile to find current company, role, recent news, and company intelligence. Ingests CSV contact lists and outputs enriched profiles to /memory.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/discover-contacts
Metadata
Additional technical details for this skill
- author
- Graham
- version
- 0.1.0
- short description
- Contact and prospect research via /dogpile enrichment
SKILL.md
discover-contacts
Research and enrich professional contacts and marketing prospects. Takes a contact
list (CSV, YAML, or individual names) and uses /dogpile to build comprehensive
profiles with current company info, role, recent news, and company intelligence.
Why This Exists
Contact lists go stale fast. People change jobs, companies get acquired, divisions restructure. A CSV from a DARPA conference 6 months ago is already outdated. This skill uses deep multi-source research to answer: "Who is this person NOW, and what is their company doing?"
Architecture
┌──────────────────────────────────────────────────────┐
│ discover-contacts │
│ - Ingest contact list (CSV/YAML/name) │
│ - Batch or single-contact research │
│ - Rate-limited concurrent /dogpile calls │
│ - Enrichment pipeline │
└──────────────────────────────────────────────────────┘
│ │
┌────┴──────┐ ┌─────┴─────────┐
│ Person │ │ Company │
│ Research │ │ Research │
├───────────┤ ├────────────────┤
│ - LinkedIn│ │ - Website │
│ - Papers │ │ - News │
│ - GitHub │ │ - Funding │
│ - News │ │ - Contracts │
│ - Patents │ │ - Key hires │
└───────────┘ └────────────────┘
│ │
└──────────┬───────────────────┘
│
┌───────────────┴────────────────────┐
│ Enriched Profile │
│ - Current role + company │
│ - Company summary + sector │
│ - Recent news (last 6 months) │
│ - Publications / patents │
│ - Social links │
│ - Confidence + staleness score │
│ → Stored to /memory │
│ → Written to enriched CSV/YAML │
└────────────────────────────────────┘
Commands
# Research a single contact
./run.sh research "John Rushby" --org "SRI International"
# Research a company
./run.sh company "Galois, Inc."
# Enrich a CSV contact list (batch)
./run.sh enrich /mnt/storage12tb/media/personas/references/darpa_arcos_contacts.csv
# Enrich with concurrency limit
./run.sh enrich contacts.csv --concurrency 3 --delay 5
# Research a specific contact from the CSV
./run.sh research --csv contacts.csv --row 5
# Check enrichment freshness
./run.sh freshness contacts.csv
# Export enriched profiles
./run.sh export contacts.csv --format yaml --output enriched_contacts.yaml
Input Formats
CSV (primary)
first_name,last_name,organization,email
John,Rushby,SRI International,[email protected]
YAML
contacts:
- name: John Rushby
org: SRI International
email: [email protected]
Single contact (CLI)
./run.sh research "John Rushby" --org "SRI International"
Enrichment Pipeline
For each contact, the skill runs a structured research pipeline:
1. Person Research
/dogpile "{first_name} {last_name} {organization} current role"
Extracts:
- Current role and company (may have changed from CSV)
- LinkedIn profile (via Brave search)
- Recent publications (ArXiv, Google Scholar)
- GitHub activity (if technical)
- Recent news mentions
- Conference talks (YouTube)
2. Company Research
/dogpile "{organization} recent news funding contracts"
Extracts:
- Company summary — what they do, sector, size
- Recent news — last 6 months of significant events
- Government contracts — via /ops-sam-gov if relevant
- DARPA programs — via /ops-darpa if relevant
- Key hires/departures — leadership changes
- Funding/acquisitions — financial events
3. Profile Assembly
Merges person + company research into enriched profile:
contact:
name: John Rushby
current_role: Senior Computer Scientist
current_org: SRI International
previous_org: null # or previous if changed
email: [email protected]
email_status: likely_valid # or stale, bounced
linkedin: null
github: null
research:
publications: 3 # recent papers found
patents: 0
talks: 1
company:
name: SRI International
sector: Defense/Research
size: 2000+
recent_news:
- "SRI awarded $X contract for..."
darpa_programs:
- ARCOS
- PROOFS
sam_gov_active: true
enriched_at: "2026-02-12T12:00:00Z"
confidence: 0.85 # how confident in current info
staleness_days: 0
Rate Limiting
Batch enrichment is rate-limited to avoid burning through API quotas:
| Setting | Default | Description |
|---|---|---|
--concurrency |
2 | Parallel /dogpile calls |
--delay |
10 | Seconds between batches |
--budget |
20 | Max /dogpile calls per run |
--skip-enriched |
true | Skip contacts enriched within 30 days |
Storage
/mnt/storage12tb/media/personas/references/
├── darpa_arcos_contacts.csv # Original CSV
├── darpa_arcos_enriched.yaml # Enriched profiles
├── company_profiles/
│ ├── sri_international.yaml
│ ├── galois_inc.yaml
│ └── ...
└── enrichment_log.json # Audit trail
Memory + Taxonomy Integration
The skill integrates with the shared memory and taxonomy systems via
memory_integration.py for cross-session contact intelligence:
- Pre-hook (
recall_prior_research): Before researching a contact, recalls prior enrichment data for that person. Avoids redundant /dogpile calls and surfaces previously gathered intelligence. - Post-hook (
learn_contact): After enrichment, stores the contact profile (name, company, role, sources, enrichment data) to memory with taxonomy bridge tags for cross-skill recall. - Bridge keywords: Precision, Resilience, Fragility, Corruption, Loyalty, Stealth (tuned to contact research domain).
- Tags:
["discover_contacts", person_name] + bridges
Gracefully degrades if common.memory_client or taxonomy/taxonomy.py are unavailable.
Enriched profiles are also stored to /memory for cross-skill access:
# After enrichment, profiles available via:
/memory recall "John Rushby SRI International"
/memory recall "DARPA ARCOS contacts"
/memory recall "defense contractors formal verification"
File Structure
discover-contacts/
SKILL.md # This file
run.sh # Shell entry point
sanity.sh # Sanity checks
config.py # Paths, constants, skill references
memory_integration.py # Memory + Taxonomy hooks
Leveraged Skills
| Skill | Purpose |
|---|---|
/dogpile |
Multi-source deep research per contact |
/memory |
Store enriched profiles for recall |
/ops-sam-gov |
Government contract lookup |
/ops-darpa |
DARPA program participation |
/brave-search |
Free web search for current info |
/perplexity |
Deep research for high-value contacts |
Persona Generation
Enriched contacts can seed /create-persona for fictional personas:
# Research a contact, then create an inspired-by persona
./run.sh research "Natasha Neogi" --org NASA
/create-persona --inspired-by /mnt/storage12tb/media/personas/references/company_profiles/nasa.yaml
This bridges the gap between real-world contacts and the persona system.
Privacy & Ethics
- Contact data is stored locally only (12TB drive)
- No data is sent to external services beyond search queries
- Research uses only publicly available information
- Email validation does NOT send emails
- Enrichment log tracks all research for audit
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?