From career-navigator
Produces send-ready outreach copy (LinkedIn, email, InMail) by integrating user intent, prior communication history, and a writing agent.
How this skill is triggered — by the user, by Claude, or both
Slash command
/career-navigator:draft-outreachThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Invoke **`writer`** in **`draft-outreach`** mode.
Invoke writer in draft-outreach mode.
writer. Retry once with the same name if invocation fails.Prior communication history (enrichment — default for named recipients): Outreach to a specific person or known contact at a company should be grounded in real mail/calendar context when the host allows—not guesswork.
writer).contact-context end-to-end before invoking writer, unless the user explicitly says to skip history (“no prior thread,” “brand-new contact,” “template only”) or the ask is purely generic with no named recipient yet. Do not invent threads.writer, but pass a single line: Prior communication: not retrieved — inbox/calendar tools not available in this session; do not imply prior email or meetings.If the user says they sent mail but the address was wrong or search is empty, follow contact-context “User said they sent”; email_address_notes carries address candidates. Include calendar_notes, upcoming_meetings, and warm_networking in the handoff when present—if upcoming_meetings is non-empty, outreach should not read as a cold first touch.
Read {user_dir}/CareerNavigator/profile.md and {user_dir}/CareerNavigator/voice-profile.md (create stub if missing).
Voice preflight: If voice-profile.md has no user-pasted block under ## User writing samples or ## User writing samples (launch) (substantive excerpts), ask before invoking writer: paste 2–5 LinkedIn posts or short professional writing; mention optional launch voice harvest (résumé/CV/cover text from disk); user may reply skip (low voice match). If they paste, append a dated ## User writing samples section. If samples already exist, skip this ask.
From conversation, capture: channel, recipient archetype (title/company if known), objective (info chat, referral check-in, post-event ping), and any StrategistHandoff, ContactContextBrief, or facts the user pasted.
Pass a structured brief to writer in draft-outreach mode. Required: include the full ## ContactContextBrief markdown block when available, or the Prior communication: fallback from step 0. writer must thread summary, open_loops, hooks_for_writer, calendar_notes, upcoming_meetings, and warm_networking into the draft when present—see agents/writer/AGENT.md. Do not draft final copy in this skill—delegate.
Present writer output (variants if offered). Remind: connectors support warm threading when available.
Sent confirmation + auto-track: After presenting the copy, say:
"Let me know when you've sent this and I'll log it to your tracker."
When the user confirms (e.g. "sent", "I sent it", "done", "sent it just now"):
{user_dir}/CareerNavigator/tracker.jsoncontacts[].interactions[]:
{ "date": "YYYY-MM-DD", "type": "linkedin | email", "notes": "Sent outreach: {one-line summary of message objective}" }
Also append to notes[]: { "date": "YYYY-MM-DD", "text": "Outreach sent via {channel} to {recipient} — {objective}" }
Update next_step to "Await response"networking.json under networking[]Logged: outreach to {recipient} at {company} ({channel}) — {date}networking-strategy / network-map first, then return here for copy.npx claudepluginhub tmargolis/career-navigator --plugin career-navigatorDrafts personalized outreach messages for LinkedIn connections, hiring managers, or recruiters using hook + proof + proposal structure. Limits to under 300 characters for connection requests.
Drafts one cold outreach message (email, LinkedIn note, or follow-up) from a signal and persona, with variants and a self-check lint. Reads company voice and proof from a context file.
Researches prospects via web or connected enrichment/CRM, then drafts personalized cold emails, subjects, and LinkedIn messages.