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/kasper-ai-process-connections
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.
About
Reviews
Write a reviewNo 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/process-connections
What's inside
- Skill name
process-connections- Description
- Process LinkedIn connections to identify ICPs. Use when user says "process connections", "find ICPs in my connections", "process my connections list", or "qualify my connections".
- License
- MIT
- Instructions
- 135 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Agent Skills spec issues
- files: referenced but missing: references/api.md, references/storage.md
Files (1)
- SKILL.md
SKILL.md (first lines)
## Browser Preflight (MANDATORY — do this FIRST)
Before delegating to any agent, attach the Claude Chrome extension to this session:
1. Tell the user in chat:
> "I need browser access to LinkedIn. You may see a permission prompt — please approve it. I'll wait."
2. Navigate to `https://www.linkedin.com/feed/` using the Browser tool. This triggers Claude's permission system and attaches the Chrome extension to the session.
3. Confirm the LinkedIn feed page loaded (content visible, not an error/login wall). If it fails, tell the user the extension isn't connected and stop — do NOT delegate to the agent.
If LinkedIn already loaded earlier in this session, this step passes instantly.
Delegate to the **outreach** agent in **process-connections mode**:
This is a multi-session task. The agent works through the user's connections, researching and qualifying ICP matches. It picks up where it left off each session.
## Step 1: Get connections data
**Check if `${CLAUDE_PLUGIN_DATA}/config.json` exists in the plugin data directory.**
**If ${CLAUDE_PLUGIN_DATA}/config.json exists (Pro plan):**
- Fetch unprocessed connections from the dashboard API via a browser tab using `references/api.md`
- If `api_url` is the default `http://127.0.0.1:8001`, open `http://127.0.0.1:8001/health` first so the fetch runs from the HTTP API origin, then run:
`fetch("API_URL/v1/gtm/connections?status=new&page_size=75&sort_by=created_at&sort_order=asc", {headers: {"X-API-Key": "API_KEY"}}).then(r=>r.json()).then(d=>console.log(JSON.stringify(d)))`
- Users upload their CSV on the dashboard — you don't need to ask for the file
**If ${CLAUDE_PLUGIN_DATA}/config.json does NOT exist (Basic plan):**
- Ask the user for their connections export file (LinkedIn CSV or spreadsheet)
- Read the file — LinkedIn exports include: First Name, Last Name, Profile URL, Email, Company, Position, Connected On
## Step 1b: Check user notes
**For Pro plan connections fetched from the API:** Each connection may have a `notes` field containing user-written instructions or context. Examples:
- "Many prior interactions, say it's been a while and write a personal message"
- "Met at SaaStr conference, reference that"
- "Skip — this is a competitor"
**Always check the `notes` field before processing a connection.** If the note says to skip, mark as skipped. If the note has outreach instructions, follow them when drafting messages. If no notes, proceed with standard ICP qualification.
## Step 2: First-pass exclusion filter (no LinkedIn browsing)
Using only the connection record fields (Position, Company, Industry), immediately exclude clear non-fits before doing any browsing:
- Matches a saved exclusion: competitor companies, excluded industries, "do not contact" personas.
- Role is clearly outside all Tier 1 and Tier 2 ICP roles with no plausible buying influence.
- Company is visibly outside the ICP target with no contrary evidence.
Mark excluded connections `status: "skipped"` and write a one-line `qualification_reason` citing the matched exclusion. Do not research these further.
All remaining connections advance to the research pass.
## Step 3: Deep qualification research pass (max 50-75 per session)
For each connection that passed Step 2, run a two-step research workflow. Track progress in `connection-processing-progress.json`.
### 3a — Visit the person's LinkedIn profile
Confirm:
- Current title and role authority (decision-maker, champion, or IC with no buying influence)
- Current company and tenure
- Location / geography
- Any person-level signals relevant to the ICP (skills, past companies, activity)
Stop researching as soon as a clear exclusion or non-fit is confirmed.
### 3b — Visit the company LinkedIn page
Confirm:
- Industry / category
- Employee count / size signals
- Geography / HQ
- Any product, funding, or growth signals relevant to the pitch
Use the company website **only** if it is clearly linked from the LinkedIn company page. Do not guess domains.
### 3c — Assign ICP tier
Apply saved exclusion rules before positive scoring:
- Saved exclusion industries, companies, personas, or competitors → `status: "skipped"`, include matched exclusion in `qualification_reason`.
Then score against the saved ICP and product/pitch:
- `icp_tier: 1` — clear Tier 1 role (decision-maker / economic buyer) **plus** strong company fit: right industry, company size, geography, and the product pitch maps directly to a problem they own.
- `icp_tier: 2` — adjacent champion, influencer, or partial fit worth keeping: role has buying influence or strong internal access, and company is plausibly in scope even if not a perfect match.
- Not a match — role is IC-only or company is clearly out of scope → `status: "skipped"`.
### 3d — Build qualification fields
**`qualification_reason`** — a compact 2–4 sentence paragraph explaining the ICP decision. Never use a label alone. Must cover:
- ICP fit: role/title vs Tier 1 and Tier 2 criteria, industry, geography, company size, exclusion checks.
- Product/pitch fit: how this person's ownership area maps to the configured outcome, pitch, and messaging.
- Evidence: cite only facts from the connection record, LinkedIn profile, or company LinkedIn page.
- Uncertainty: if evidence is thin, say what is missing — do not invent intent, budget, urgency, or funding.
Examples:
- Tier 1: `Tier 1 fit: VP of Sales at a 200-person B2B SaaS company in the US, matching the saved Tier 1 role and target industry. They likely own pipeline growth and outbound conversion — the exact problem the configured pitch addresses. Company is in the right size band and geography. Outreach should validate current priorities before assuming active budget.`
- Tier 2: `Tier 2 fit: Sales Operations Manager at a mid-market SaaS company. Not a direct economic buyer but holds strong process influence and is often a champion for tooling decisions. Industry and company size align with the ICP; role authority is one level below Tier 1.`
- Skipped: `Not a match: the title indicates an individual contributor with no apparent buying influence for the saved ICP roles. Company industry does not align with the configured product pitch.`
- Excluded: `Excluded: company matches the saved competitor exclusion list. Role fit is irrelevant — this account should not receive outreach.`
**`company_research_summary`** — 2–4 sentences covering: what the company does, industry/category, employee count or size signals, geography/HQ, and any product, funding, or growth signals that are relevant to why this connection is or isn't a fit for the pitch. Source everything from LinkedIn; note if the company page was unavailable.
## Step 4: Store results
Always write results to persistent agent memory first.
**Pro plan (${CLAUDE_PLUGIN_DATA}/config.json exists):**
- Sync results back via browser tab — POST to `API_URL/v1/gtm/sync` with `type: "connections"`
- Every synced record must include: `id` (when present), `linkedin_url`, `icp_tier`, `status`, `qualification_reason`, `company_research_summary`, `notes`, `industry`, `company_size`
- Tier 1/2 matches: set `icp_tier: 1` or `icp_tier: 2`; leave `status` as-is (do not overwrite to skipped)
- Non-matches and exclusions: set `status: "skipped"`, still include `qualification_reason`
- See `references/storage.md` for sync method
**Basic plan (no ${CLAUDE_PLUGIN_DATA}/config.json):**
- Write confirmed ICPs to the user's spreadsheet "ICP Connections" tab
- Columns: Name, LinkedIn URL, Title, Company, Industry, Company Size, Qualification Reason, Company Research Summary, ICP Tier, Status, Date Added
- See `references/storage.md` for spreadsheet method
Deduplicate against existing pipeline data in both cases: for Pro plan, the `status=new` fetch in Step 1 already excludes connections previously processed, so only skip a connection if it also appears in `leads.json` (normalized LinkedIn URL) — sync it as a lead there but do not create a second lead record. For Basic plan, before writing to "ICP Connections", skip any row whose normalized LinkedIn URL already exists in that tab or in the "Leads" tab.From Kasper-AI/gtm-kit-plugin, MIT.
More from Kasper-AI/gtm-kit-plugin
- 0.524score
connect-requests
Kasper-AI
Send connection requests to qualified leads on LinkedIn.
SkillBFreshness: BClaude Code +9 - 0.524score
sync-sheet
Kasper-AI
Sync agent memory data to a spreadsheet (Google Sheets, Excel Online, or local Excel).
SkillBFreshness: BClaude Code +9 - 0.520score
find-leads
Kasper-AI
Quick lead search on LinkedIn.
SkillBFreshness: BClaude Code +9 - 0.520score
check-responses
Kasper-AI
Check and handle LinkedIn message responses.
SkillBFreshness: BClaude Code +9 - 0.520score
process-leads
Kasper-AI
Process and qualify existing leads against the user's ICP.
SkillBFreshness: BClaude Code +9 - 0.520score
message-connections
Kasper-AI
Message qualified connections from the ICP Connections list.
SkillBFreshness: BClaude Code +9 - 0.520score
message-new-connections
Kasper-AI
Message recently accepted LinkedIn connections who match your ICP.
SkillBFreshness: BClaude Code +9 - 0.520score
prep-outreach
Kasper-AI
Research prospects and draft outreach messages without sending.
SkillBFreshness: BClaude Code +9 - 0.520score
run-all
Kasper-AI
Run the full GTM pipeline in sequence, pausing for approval before external sends.
SkillBFreshness: BClaude Code +9 - 0.520score
run-outreach
Kasper-AI
Research and draft a complete outreach batch, then send only after user approval.
SkillBFreshness: BClaude Code +9 - 0.520score
send-outreach
Kasper-AI
Send pre-drafted outreach messages on LinkedIn.
SkillBFreshness: BClaude Code +9 - 0.519score
setup
Kasper-AI
Configure GTM Kit from a configuration file exported by the Kasper GTM dashboard.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 25, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Kasper-AI/gtm-kit-plugin
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Kasper-AI
- 0.524score
sync-sheet
Kasper-AI
Sync agent memory data to a spreadsheet (Google Sheets, Excel Online, or local Excel).
SkillBFreshness: BClaude Code +9 - 0.524score
connect-requests
Kasper-AI
Send connection requests to qualified leads on LinkedIn.
SkillBFreshness: BClaude Code +9 - 0.520score
message-connections
Kasper-AI
Message qualified connections from the ICP Connections list.
SkillBFreshness: BClaude Code +9 - 0.520score
find-leads
Kasper-AI
Quick lead search on LinkedIn.
SkillBFreshness: BClaude Code +9 - 0.520score
check-responses
Kasper-AI
Check and handle LinkedIn message responses.
SkillBFreshness: BClaude Code +9 - 0.520score
process-leads
Kasper-AI
Process and qualify existing leads against the user's ICP.
SkillBFreshness: BClaude Code +9
Cite this page
process-connections skill. Agent Mart. https://agentmart.dev/skills/kasper-ai-process-connections (last updated 2026-10-24)