Skip to content
Agentmart
Submit a tool

network-scan

Scan your LinkedIn contacts' companies for matching job openings

Skill by Infrasity-Labs

IndexedMIT★ 144
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/infrasity-labs-network-scan

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Scan your LinkedIn contacts' companies for matching job openings

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/network-scan

What's inside

Skill name
network-scan
Description
Scan your LinkedIn contacts' companies for matching job openings
License
MIT
Instructions
259 lines in SKILL.md · view on GitHub

Files (8)

  • SKILL.md
  • browser-setup.md · references/
  • data-directory.md · references/
  • fit-scoring.md · references/
  • prerequisites.md · references/
  • priority-hierarchy.md · references/
  • evaluate-company.md · scripts/
  • resolve-careers.md · scripts/

SKILL.md (first lines)

# Network Scan Skill

> **Priority hierarchy**: See `references/priority-hierarchy.md` for conflict resolution.

Proactively check whether companies where you know someone are hiring for roles that match you. First run builds a cache of company careers page URLs. Subsequent runs reuse the cache, making weekly checks fast.

## File Structure

```
scripts/
  resolve-careers.md     # Subagent for resolving a batch of company careers URLs
  evaluate-company.md    # Subagent for scanning a batch of companies' open roles
```

User data (stored at ~/.proficiently/):
```
~/.proficiently/
  resume/                # Your resume PDF/DOCX
  preferences.md         # Job matching rules
  profile.md             # Work history from interview
  linkedin-contacts.csv  # LinkedIn contacts export
  company-careers.json   # Cached company careers URLs
  network-scan-history.md # Running log of scan results
  jobs/                  # Per-job application folders
```

---

## Workflow

### Step 0: Check Prerequisites

Resolve the data directory, then check prerequisites per `references/prerequisites.md`. Resume, preferences, and linkedin-contacts.csv are all required.

Load these files for use in later steps:
- `DATA_DIR/preferences.md` (target roles, must-haves, dealbreakers, nice-to-haves)
- `DATA_DIR/resume/*` (candidate profile)
- `DATA_DIR/profile.md` (work history, if it exists)

### Step 1: Select Contacts & Extract Companies

Parse `$ARGUMENTS`:
- If a number (e.g., `50`): use that as the contact limit
- If `all`: use all contacts (warn user this may be slow if > 200)
- If empty/missing: default to 25

Read `~/.proficiently/linkedin-contacts.csv`. Sort by "Connected On" descending (most recent first). Take the first N contacts based on the limit.

Extract unique company names from the selected contacts. Skip companies with empty or blank names.

Group contacts by company into a lookup:
```
{
  "Google": [{"name": "Jane Smith", "position": "PM Director", "url": "https://linkedin.com/in/janesmith"}, ...],
  "Stripe": [{"name": "John Doe", "position": "Eng Manager", "url": "https://linkedin.com/in/johndoe"}]
}
```

Report to user: "Found X unique companies from Y contacts. Checking careers pages..."

### Step 2: Resolve Careers Pages (Parallelized)

Load `~/.proficiently/company-careers.json` if it exists (the cache). If it doesn't exist, start with an empty object.

Split companies into three groups:
- **Cached (fresh)**: `last_checked` within last 7 days - use as-is, no work needed
- **Cached (stale)**: `last_checked` older than 7 days - needs re-verification
- **Uncached**: not in cache, or `type` is `"not_found"` and stale - needs full resolution

Report: "X companies from cache, Y need resolution..."

**Parallel resolution using subagents:**

Take all companies needing resolution (stale + uncached) and split them into batches of 10. Spawn one subagent per batch using the Task tool (`subagent_type: "general-purpose"`). Run all batches in parallel.

Each subagent receives:
- A batch of company names to resolve
- Instructions from `scripts/resolve-careers.md`

Each subagent uses `WebSearch` (NOT the browser) to find careers pages:
1. Search: `"[Company Name]" careers jobs site:[company domain if known]`
2. From the search results, identify the careers/jobs page URL
3. Classify the URL type:
   - `"direct"` - company's own careers page (e.g., careers.google.com)
   - `"greenhouse"` - Greenhouse ATS (boards.greenhouse.io/company or company.greenhouse.io)
   - `"lever"` - Lever ATS (jobs.lever.co/company)
   - `"workday"` - Workday ATS (company.wd5.myworkdayjobs.com)
   - `"other_ats"` - other ATS platforms (Ashby, BambooHR, etc.)
   - `"not_found"` - no careers page could be found (set `careers_url` to null)
4. Return results for the batch

Collect results from all subagents and merge into the cache. Save `~/.proficiently/company-careers.json`. Format:
```json
{
  "Company Name": {
    "careers_url": "https://careers.example.com",
    "type": "direct",
    "last_checked": "YYYY-MM-DD",
    "last_found_roles": 0
  }
}
```

Report progress: "Resolved X new careers pages, Y from cache, Z not found."

### Step 3: Scan for Matching Jobs (Parallelized)

Take all companies with a valid `careers_url` (skip `not_found` and `ignored` entries). Split them into batches of 5 companies each.

**Spawn parallel subagents** using the Task tool (`subagent_type: "general-purpose"`). Run all batches in parallel (up to 5 concurrent subagents to avoid overwhelming the browser).

Each subagent receives:
- A batch of companies (name, careers_url, ATS type, network contacts)
- Candidate profile summary (from resume)
- Preferences (target roles, must-haves, dealbreakers, nice-to-haves)
- Instructions from `scripts/evaluate-company.md`

Each subagent:
1. Creates its own browser tab (`tabs_context_mcp` then `tabs_create_mcp`)

From Infrasity-Labs/dev-gtm-claude-skills, MIT.

More from Infrasity-Labs/dev-gtm-claude-skills

Signals

Stars
144
Forks
16
Open issues
1
Last commit (this folder)
Jun 28, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Same skill elsewhere

Copies of this SKILL.md published by others; search shows only one of them.

More from Infrasity-Labs

Cite this page

network-scan skill. Agent Mart. https://agentmart.dev/skills/infrasity-labs-network-scan (last updated 2026-10-24)