From career-navigator
Gathers email and calendar context about a contact from Gmail or Microsoft 365 for use in outreach drafting and warm networking identification.
How this skill is triggered — by the user, by Claude, or both
Slash command
/career-navigator:contact-contextThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Gather **evidence-backed** context from **Gmail** / **Microsoft 365** (and **calendar** when the host exposes it) so **`draft-outreach`** and **`writer`** do not guess about prior conversations.
Gather evidence-backed context from Gmail / Microsoft 365 (and calendar when the host exposes it) so draft-outreach and writer do not guess about prior conversations.
Meeting history awareness (warm networking identification): When calendar tools are used, retrieve past and scheduled (upcoming) events involving this contact. An upcoming meeting on the calendar is a strong signal the relationship is warm (not cold)—outreach can reference the scheduled time or avoid redundant “first touch” framing. A past meeting without a future one still supports warm follow-up. Label uncertainty in caveats if attendee matching is fuzzy.
/career-navigator:launch Step 6—do not invent inbox or calendar access.“I can search your mail for threads involving {name or company} [and check your calendar for past and upcoming meetings with them / their email]—read-only. Approve for this request?”
(Include the bracketed calendar sentence only when calendar tools exist and the user wants meeting context.)
If the host exposes only mail or only calendar, ask only for that scope. If no, exit with a short note—no fabricated summaries.
If the user says they sent an email (or it bounced / failed / wrong address), believe them. Do not spend the session trying to prove delivery or find a bounce/NDR via the Gmail MCP — it is a poor fit for that (operators often don’t apply; results can look like random Inbox/Sent).
Instead, pivot immediately to helping them find a correct email address (or a short list of evidence-backed candidates) for this contact:
tracker.json / profile.md — any stored email, title, or company for this person.Firstname Lastname, company, to: / from: with a simple address or domain (one clause at a time). Look at Sent and Inbox for real threads (signatures, forwards, calendar invites), not mailer-daemon unless the user explicitly asks you to hunt a bounce.first.last, firstlast, flast — label each as guess vs cited from a source.email_address_notes; explain in search_method_notes that bounce search was skipped (MCP limitation) and the user’s send attempt is taken at their word.Optional bounce lookup: Only if the user explicitly asks you to find the bounce message and approves spending time on it: try from:mailer-daemon (single token) and read a few recent system messages for this address/name — but do not treat “no result” as proof of anything. Prefer the user pasting the bounce from Gmail web if needed.
If step 2 (below) doesn’t surface a clear thread, search mail for the contact’s full name as plain text (e.g. Jordan Kim), then name + company. Prefer All Mail / broad scope when the tool allows.
{user_dir}/CareerNavigator/profile.md, tracker.json (applications[].contacts[]), and networking.json (networking[], recruiter_relationships[]) for any known facts about this person—do not contradict tracker evidence. If inbox tools are missing in this session, skip mail search below and note in caveats. If calendar tools are missing, skip the calendar step and set calendar_notes, upcoming_meetings, and warm_networking to "—" or not searched — no calendar tools as appropriate.hooks_for_writer (e.g. “Upcoming 1:1 Thu—short ping to confirm or share prep,” not a cold intro).
Read-only: do not create, move, or delete events unless the user explicitly asks outside this skill’s scope.writer / draft-outreach.draft-outreach next with this context folded in?” If yes, pass the brief into the next step (user can run /career-navigator:draft-outreach or continue in chat).## ContactContextBrief
- **contact:** {name or best label}
- **company:** {company or "—"}
- **sources_used:** gmail | microsoft_365 | calendar | none (list all that were actually queried)
- **as_of:** {YYYY-MM-DD}
- **summary:** {2–6 bullets: substance of prior exchanges and, if used, calendar context}
- **calendar_notes:** {**Past** meetings with this contact—dates, titles, commitments from descriptions—or "—" if none}
- **upcoming_meetings:** {**Scheduled** future events with this contact—date, time if known, title—or "—" if none / not searched}
- **warm_networking:** {one line: e.g. `warm — upcoming meeting scheduled` | `warm — past 1:1 only` | `uncertain — calendar partial` | `cold — no calendar match`}
- **open_loops:** {promises, unanswered threads, deadlines mentioned—in mail or calendar; include prep/follow-up for **upcoming** meetings when relevant}
- **hooks_for_writer:** {3 bullets—factual, safe to reference in outreach}
- **email_address_notes:** {candidate addresses for this contact—evidence-backed vs tentative—or "—"}
- **search_method_notes:** {e.g. user confirmed they sent mail; bounce hunt skipped; MCP limits—or "—"}
- **caveats:** {e.g. partial search, connector limits}
Optional /schedule before high-stakes outreach weeks; usually on-demand before draft-outreach.
npx claudepluginhub tmargolis/career-navigator --plugin career-navigatorGenerates structured pre-meeting briefings for sales calls by analyzing email history with contacts, covering relationship history, commitments, open items, sentiment, and priorities.
Manages Gmail, Google Calendar, Drive, Docs, Sheets, iMessage, WhatsApp, Signal, and Apple Reminders. Sends/drafts email, checks calendar, creates events, finds Drive files, reads spreadsheets, and sends messages.
Interactive meeting preparation that searches conversation history, builds a relationship brief, and generates talking points before a call.