skills/contact-research/SKILL.md
Research a person given their name and email, returning a brief profile with role, company, LinkedIn summary, and previous interactions
npx skillsauth add sofer/.agents contact-researchInstall 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.
Research a person given their name and email address, producing a brief profile that includes their role, company, public professional presence, and any previous interactions found in Gmail or Notion. This skill supports the meeting prep twin by ensuring the user knows who they are meeting.
Confirm that both a name and an email are provided. If either is missing, stop and report: "Contact research requires both a name and an email address. Missing: {field}."
Extract the email domain (the part after @). If the domain is not a common personal email provider (gmail.com, googlemail.com, outlook.com, hotmail.com, yahoo.com, icloud.com, me.com, protonmail.com, proton.me), treat it as a potential company domain.
Read ~/.agents/config/business-context/contacts.yaml if it exists. Search for an entry matching the person's name or email address. If found, note any known details (role, company, relationship notes) for inclusion in the profile.
If the file does not exist, skip this step silently.
Check which Gmail tools are available:
GMAIL_ACCESS_TOKEN environment variable.If Gmail is available, search for email threads with this person:
from:{email} OR to:{email}This provides the user with a sense of their prior relationship and recent topics of conversation.
Check whether the Notion MCP tools are available:
mcp__claude_ai_Notion__notion-searchIf unavailable, skip this step and note that Notion was not available.
If available, search for the person's name:
mcp__claude_ai_Notion__notion-search with query set to the person's full nameThis reveals whether the person has been mentioned in meeting notes, project pages, or other business documentation.
Check whether the WebSearch tool is available. If unavailable, skip this step and note that web search was not available.
If available, perform the following searches:
{name} {company_domain} LinkedIn (using the email domain if it appears to be a company domain, otherwise just the name){name} {company_domain} to find company pages, bios, or press mentionsFrom the results, extract:
Do not fabricate information. If a detail cannot be confirmed from the search results, omit it.
Combine all findings into a structured contact profile:
name: "{person's full name}"
email: "{person's email}"
role: "{job title, if found}"
company: "{company or organisation, if found}"
linkedin_summary: "{brief professional summary, if found}"
email_interactions:
- subject: "{email subject}"
date: "{date}"
snippet: "{brief excerpt}"
notion_mentions:
- title: "{page title}"
url: "{page URL}"
snippet: "{content excerpt}"
summary: "{3-5 sentence narrative profile}"
Write the summary as a brief narrative (3-5 sentences) that answers:
If a section has no data (e.g. no email interactions were found), omit that section from the output rather than including an empty list.
The skill produces a contact profile. When used as a step in a composite skill, the output is labelled (e.g. contact_profile) and available to subsequent steps via the agent's context.
name: "Alice Smith"
email: "[email protected]"
role: "VP of Engineering"
company: "Acme Corp"
linkedin_summary: "Engineering leader with 15 years of experience in distributed systems. Previously led platform teams at BigTech and MidSize. Based in London."
email_interactions:
- subject: "Re: Partnership discussion"
date: "2026-02-20"
snippet: "Thanks for the proposal. Let me review with my team..."
- subject: "Introduction from Bob"
date: "2026-01-15"
snippet: "Hi, Bob suggested we connect regarding..."
notion_mentions:
- title: "Acme Corp partnership notes"
url: "https://notion.so/workspace/Acme-Corp-abc123"
snippet: "Met Alice at the conference. She's interested in..."
summary: "Alice Smith is VP of Engineering at Acme Corp, with 15 years of experience in distributed systems. You have exchanged emails about a partnership proposal, most recently on 20 February 2026. She was introduced by Bob in January and is mentioned in your Acme Corp partnership notes in Notion. She appears to be the key technical decision-maker for their side of the partnership."
tools
Check whether Claude and Codex have equivalent access to shared agent resources, skills, hooks, plugins, MCP servers, permissions, startup behaviour, and provider-specific adapter config. Use when comparing agent environments, debugging missing capabilities after restart, or deciding whether to symlink a resource or configure a runtime.
testing
Record substantive skill use in an append-only local log. Use after choosing or invoking a non-system skill for real work, when a skill is inspected but not used, or when a skill fails to apply. Do not use for routine system skills or incidental file reads.
testing
Turn a vague or underspecified request into a self-contained problem statement. Use when the user has a rough idea, when a request would fail if handed directly to an agent, or before non-trivial work that needs shared understanding.
data-ai
Append a one-line learning to ~/.agents/learning-log.md. Use when the user types /learning, or when something genuinely worth remembering surfaced during work and the user confirms it should be captured.