From exec-recruiter
Build a Phase 2 outreach packet for a single greenlit role. Triggers on "build packet for X", "tailor CV for X", "Phase 2", "packet X", "/packet", or any request to prepare an application for a specific company / role. Pulls the full JD via the ATS redirect, identifies the right contacts, generates a JD-tailored CV (docx + PDF) per the discipline rules, drafts channel-appropriate outreach (Connect+Note + longer DM), and saves the packet under outreach/{slug}/. Stops before Phase 3 - waits for the user's explicit "send" approval.
How this skill is triggered — by the user, by Claude, or both
Slash command
/exec-recruiter:phase-2-packetThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Build the Phase 2 outreach packet for a single role. Pull the JD, identify contacts, tailor the CV, draft outreach, save the packet, present in chat.
Build the Phase 2 outreach packet for a single role. Pull the JD, identify contacts, tailor the CV, draft outreach, save the packet, present in chat.
The user says: "build packet for X", "tailor CV for X", "Phase 2 for X", "packet X", "/packet X", or "let's go" after a Phase 1 greenlight summary.
The user names a role by company or by slug. Resolve to:
company (string)role_title (string)linkedin_url (the /jobs/view/{id}/ URL)slug (kebab-case, e.g. brevia-vp-product)If the role is in the dashboard but no slug yet, generate one. If the role isn't in the dashboard, scaffold a minimal entry first.
Delegate to the jd-extractor agent (or run inline). The LinkedIn jobs page renders a skeleton in unauthenticated views; the real body lives behind the "Apply on company website" redirect. Recover it via:
href/safety/go/?url=... query param to recover the destination ATS URLmention the word "..." or include "..." in your application)If the JD body reveals signals that contradict the Phase-1 card-level triage (e.g., title says "Head of Product" but body says "individual contributor / chief of staff"), STOP. Surface the mismatch to the user with two options:
Do NOT proceed to Step 3 without the user's call.
Apply the contact-discovery cascade from ${CLAUDE_PLUGIN_ROOT}/config/channels.yaml:
For each candidate contact, check:
Message button without InMail paywall?)When the role's reporting-to-CTO is in another timezone or appears to be transitioning out (e.g., now CEO at a different company), consider parallel reach to both the CTO and the CEO of the hiring company.
Delegate to the cv-tailor agent. Pass:
--role-slug - the kebab slug--baseline - path to the user's master CV (default: ${CLAUDE_PLUGIN_ROOT}/templates/cv-baseline.docx, but the user may have replaced this with their own)geo-rules.cv_header_templatesThe agent applies the discipline rules from outreach-style.yaml:
Outputs Operator-FirstName-CV-{slug}.docx and .pdf in outreach/{slug}/.
Delegate to the outreach-drafter agent. Generate:
Apply outreach-style.yaml rules: peer-to-peer, no banned phrases, no em/en dashes, signed off with first name.
For role-specific anti-bot screener words detected in the JD body, draft a Summary / cover-letter blurb that includes the word naturally (per outreach-style.yaml.screener_test_words.action).
Create outreach/{slug}/ and write:
Operator-FirstName-CV-{slug}.docxOperator-FirstName-CV-{slug}.pdfjd.md - JD notes from ${CLAUDE_PLUGIN_ROOT}/templates/jd.md.template, populatedoutreach.md - outreach drafts from ${CLAUDE_PLUGIN_ROOT}/templates/outreach.md.template, populatedAppend a new role entry to the dashboard's ROLES = [...] array with:
id - one greater than the current maxslug - the kebab slugrole, company, location, comp, scorejdUrl - the canonical /jobs/view/{id}/ URL (NOT the search URL)contact - primary contact name + rolecontactUrl - primary contact's LinkedIn URLchannels - planned channelssendDate: null - until Phase 3status: "drafted"note - long-form note capturing the score rationale, friction flags, and pattern match anchorsOutput:
feedback_packet_links.md rule: ALWAYS show JD URL + contact URL in chat at greenlight, not just in saved files)Do NOT proceed to Phase 3. Wait for the user's explicit "send" per role.
Before saving the packet, surface for the user:
If any of these have shifted from the Phase-1 read, surface the shift before generating the CV. The user gets the call.
See ${CLAUDE_PLUGIN_ROOT}/skills/phase-2-packet/references/cv-tailoring-discipline.md for the canonical replacement-key pattern. See ${CLAUDE_PLUGIN_ROOT}/skills/phase-2-packet/references/contact-discovery-recipes.md for LinkedIn search patterns to identify contacts.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub bgolubovski/exec-recruiter --plugin exec-recruiter