/linkedin-prospector
Find people on LinkedIn and send personalized connection requests. Supports multiple strategies based on goal — networking (search posts), sales (search by role/company), partnerships (combine both), hiring (search by skills), or market research (analyze posts + comments). Each
$ npx -y skills add hanzili/hanzi-browse --skill linkedin-prospector --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/linkedin-prospector
Context preview
The summary Claude sees to decide when to auto-load this skill.
Find people on LinkedIn and send personalized connection requests. Supports multiple strategies based on goal — networking (search posts), sales (search by role/company), partnerships (combine both), hiring (search by skills), or market research (analyze posts + comments). Each
SKILL.md
linkedin-prospector.SKILL.mdname: linkedin-prospector
description: Find people on LinkedIn and send personalized connection requests. Supports multiple strategies based on goal — networking (search posts), sales (search by role/company), partnerships (combine both), hiring (search by skills), or market research (analyze posts + comments). Each connection note is unique and personalized. Requires the hanzi browser automation MCP server and Chrome extension.
category: marketing
LinkedIn Prospector
You find people on LinkedIn and send them personalized connection requests based on the user's goal.
Tool Selection Rule
- **Prefer existing tools first**: code search, git diff, logs, APIs, local files, and other MCP integrations.
- **Use Hanzi only for browser-required steps**: LinkedIn is a logged-in UI with no public API for prospecting — the browser is genuinely needed here.
- **If LinkedIn shows a rate-limit warning, CAPTCHA, or risk signal**, stop immediately and tell the user.
Before Starting — Preflight Check
Try calling `browser_status` to verify the browser extension is reachable. If the tool doesn't exist or returns an error:
> **Hanzi isn't set up yet.** This skill needs the hanzi browser extension running in Chrome. > > 1. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd > 2. The extension will walk you through setup (~1 minute) > 3. Then come back and run this again
---
What You Need From the User
1. **Goal** — networking, sales, partnerships, hiring, or market research 2. **Topic** — what area, industry, or product (e.g., "browser automation", "AI DevTools") 3. **Count** — how many people (default 15)
Optional:
- Context about their product/company and who their ideal target is
- Filters: location, company size, seniority
- Custom note tone or specific things to mention
---
Step 1: Choose the Right Search Strategy
Based on the goal, pick the best approach or combine them:
**Networking / community building** → Search LinkedIn POSTS. Find people actively talking about the topic. Vocal, engaged people — great for community.
https://www.linkedin.com/search/results/content/?keywords={encoded_topic}**Sales prospecting** → Search LinkedIn PEOPLE with role/industry filters. Decision-makers (managers, VPs, directors) often don't post — search by title instead.
https://www.linkedin.com/search/results/people/?keywords={encoded_topic}Use LinkedIn's built-in filters for seniority, industry, company size, location.
**Partnerships / collaboration** → Combine both: search posts to find builders in the space, then search people for specific roles at relevant companies.
**Hiring** → Search people by skills and current role. Filter by location and experience level.
**Market research** → Search posts and read comments. Find what people are saying, who's engaging, what problems they mention.
Tell the user which strategy you're going with and why. Confirm before starting.
---
Step 2: Collect Prospects
For each person, gather personalization material based on how you found them:
- **Found via post search**: What they posted, their take, specific insights they shared
- **Found via people search**: Visit their profile — look for recent job change, About section, featured content, recent activity, mutual connections, company news
- **Found via both**: Combine signals for strongest personalization
Collect: name, headline, and at least one specific personalization hook per person.
---
Step 3: Dedup With Outreach Log
Check prior outreach:
wc -l ~/.hanzi-browse/contacted.txt 2>/dev/null || echo "0 (new log)"
Before sending to each person:
grep -qiF "Name Here" ~/.hanzi-browse/contacted.txt 2>/dev/null
Skip if found (exit 0).
---
Step 4: Show the List Before Sending
Present a table:
| # | Name | Role / Company | Personalization hook | Why they match the goal | Status | |---|------|---------------|---------------------|------------------------|--------|
The "Personalization hook" column is key — it's the specific thing you'll reference in the note. If you don't have a strong hook for someone, flag it.
Ask the user which ones to send to. They might want to adjust the list.
---
Step 5: Send Personalized Connections
Send one at a time using separate `browser_start` calls — NOT in parallel.
Each connection note (max 300 chars) must: 1. **Lead with THEIR thing** — reference their post, project, role, company move, or profile detail 2. **Connect it to why you're reaching out** — make the relevance obvious 3. **Sound like a human** — conversational, not polished marketing copy
Personalization varies by source:
- **Post-based**: "Your post about [specific thing] resonated — I'm working on [related thing]. Would love to connect."
- **Profile-based**: "Saw you're leading [team/initiative] at [company] — I'm building [relevant thing] and think there's overlap."
- **Job-change-based**: "Congrats on the move to [company]! I work on [relevant thing] that might be useful as you settle in."
- **Mutual-connection-based**: "We both know [person] — noticed you're working on [thing] and thought we should connect."
After each send, log immediately:
mkdir -p ~/.hanzi-browse && echo "Name Here" >> ~/.hanzi-browse/contacted.txt
Report progress: "Sent 3/12 — continuing..."
If `browser_start` times out, call `browser_screenshot` to see where it got stuck, then `browser_message` to continue or `browser_stop` to end.
---
Safety Rules
- Max 20 connection requests per session
- If LinkedIn shows a rate limit warning or CAPTCHA, stop immediately
- Every note must be unique — never copy-paste between people
- No links, no sales pitches, no product plugs in connection notes
- Don't send to people where you couldn't find a good personalization hook — skip and note why
---
When Done
Summarize:
- Strategy used and why
- Total found / sent / skipped (already cont
Read more
name: linkedin-prospector description: Find people on LinkedIn and send personalized connection requests. Supports multiple strategies based on goal — networking (search posts), sales (search by role/company), partnerships (combine both), hiring (search by skills), or market research (analyze posts + comments). Each connection note is unique and personalized. Requires the hanzi browser automation MCP server and Chrome extension. category: marketing
LinkedIn Prospector
You find people on LinkedIn and send them personalized connection requests based on the user's goal.
Tool Selection Rule
- **Prefer existing tools first**: code search, git diff, logs, APIs, local files, and other MCP integrations.
- **Use Hanzi only for browser-required steps**: LinkedIn is a logged-in UI with no public API for prospecting — the browser is genuinely needed here.
- **If LinkedIn shows a rate-limit warning, CAPTCHA, or risk signal**, stop immediately and tell the user.
Before Starting — Preflight Check
Try calling `browser_status` to verify the browser extension is reachable. If the tool doesn't exist or returns an error:
> **Hanzi isn't set up yet.** This skill needs the hanzi browser extension running in Chrome. > > 1. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd > 2. The extension will walk you through setup (~1 minute) > 3. Then come back and run this again
---
What You Need From the User
1. **Goal** — networking, sales, partnerships, hiring, or market research 2. **Topic** — what area, industry, or product (e.g., "browser automation", "AI DevTools") 3. **Count** — how many people (default 15)
Optional:
- Context about their product/company and who their ideal target is
- Filters: location, company size, seniority
- Custom note tone or specific things to mention
---
Step 1: Choose the Right Search Strategy
Based on the goal, pick the best approach or combine them:
**Networking / community building** → Search LinkedIn POSTS. Find people actively talking about the topic. Vocal, engaged people — great for community.
https://www.linkedin.com/search/results/content/?keywords={encoded_topic}**Sales prospecting** → Search LinkedIn PEOPLE with role/industry filters. Decision-makers (managers, VPs, directors) often don't post — search by title instead.
https://www.linkedin.com/search/results/people/?keywords={encoded_topic}Use LinkedIn's built-in filters for seniority, industry, company size, location.
**Partnerships / collaboration** → Combine both: search posts to find builders in the space, then search people for specific roles at relevant companies.
**Hiring** → Search people by skills and current role. Filter by location and experience level.
**Market research** → Search posts and read comments. Find what people are saying, who's engaging, what problems they mention.
Tell the user which strategy you're going with and why. Confirm before starting.
---
Step 2: Collect Prospects
For each person, gather personalization material based on how you found them:
- **Found via post search**: What they posted, their take, specific insights they shared
- **Found via people search**: Visit their profile — look for recent job change, About section, featured content, recent activity, mutual connections, company news
- **Found via both**: Combine signals for strongest personalization
Collect: name, headline, and at least one specific personalization hook per person.
---
Step 3: Dedup With Outreach Log
Check prior outreach:
wc -l ~/.hanzi-browse/contacted.txt 2>/dev/null || echo "0 (new log)"
Before sending to each person:
grep -qiF "Name Here" ~/.hanzi-browse/contacted.txt 2>/dev/null
Skip if found (exit 0).
---
Step 4: Show the List Before Sending
Present a table:
| # | Name | Role / Company | Personalization hook | Why they match the goal | Status | |---|------|---------------|---------------------|------------------------|--------|
The "Personalization hook" column is key — it's the specific thing you'll reference in the note. If you don't have a strong hook for someone, flag it.
Ask the user which ones to send to. They might want to adjust the list.
---
Step 5: Send Personalized Connections
Send one at a time using separate `browser_start` calls — NOT in parallel.
Each connection note (max 300 chars) must: 1. **Lead with THEIR thing** — reference their post, project, role, company move, or profile detail 2. **Connect it to why you're reaching out** — make the relevance obvious 3. **Sound like a human** — conversational, not polished marketing copy
Personalization varies by source:
- **Post-based**: "Your post about [specific thing] resonated — I'm working on [related thing]. Would love to connect."
- **Profile-based**: "Saw you're leading [team/initiative] at [company] — I'm building [relevant thing] and think there's overlap."
- **Job-change-based**: "Congrats on the move to [company]! I work on [relevant thing] that might be useful as you settle in."
- **Mutual-connection-based**: "We both know [person] — noticed you're working on [thing] and thought we should connect."
After each send, log immediately:
mkdir -p ~/.hanzi-browse && echo "Name Here" >> ~/.hanzi-browse/contacted.txt
Report progress: "Sent 3/12 — continuing..."
If `browser_start` times out, call `browser_screenshot` to see where it got stuck, then `browser_message` to continue or `browser_stop` to end.
---
Safety Rules
- Max 20 connection requests per session
- If LinkedIn shows a rate limit warning or CAPTCHA, stop immediately
- Every note must be unique — never copy-paste between people
- No links, no sales pitches, no product plugs in connection notes
- Don't send to people where you couldn't find a good personalization hook — skip and note why
---
When Done
Summarize:
- Strategy used and why
- Total found / sent / skipped (already cont
The context layer for browsing agents. Your browsing agent keeps failing on real sites — X uses Draft.js, LinkedIn hides the connect button, Gmail needs keyboard shortcuts.
Repo: hanzili/hanzi-browse
Other skills on hanzi-browse.
- /a11y-auditor
Audit web pages for accessibility issues in a real browser. Checks contrast, font sizes, focus indicators, keyboard navigation, ARIA labels, and semantic HTML against WCAG 2.1 AA. Reports findings with screenshots and specific remediation steps. Requires the hanzi browser
Open skill - /apartment-finder
Search for apartments across multiple real estate platforms, compare listings side by side, and help submit inquiries or applications. Use when the user wants to find a place to rent — searching Zillow, Apartments.com, Craigslist, and similar sites with their real signed-in
Open skill - /competitor-monitor
Monitor competitor websites for changes. Visit a list of URLs, extract pricing, features, positioning, and key content, compare against previous snapshots stored locally, and generate a change report summarizing what's different. Use when the user says "check competitors", "what
Open skill - /competitor-researcher
Research SaaS and AI-tool competitors in a real browser. Visit competitor sites, pricing pages, feature pages, and review platforms to extract pricing, features, positioning, and customer sentiment, then return a structured comparison report. Use when the user wants competitor
Open skill - /data-extractor
Extract structured data from websites into CSV or JSON. Use when the user wants to scrape a list, table, directory, or repeated elements from one or more pages — especially pages that require login, handle CAPTCHAs, or load content dynamically. Examples: "pull all company names
Open skill - /e2e-tester
Test a web app like a QA person — open it in a real browser, click through flows, and report what's broken with screenshots and code references. Works on localhost. Use when the user wants to test their app, verify a flow works, check for visual bugs, or validate changes before
Open skill

