LinkedIn Growth — Automated LinkedIn Networking Pipeline
Turn a LinkedIn or Sales Navigator search into an automated lead pipeline: import, qualify against your ICP, store locally, then send connection invites on a controlled schedule.
Main risks are largely visible: local SQLite storage, read-only SQL enforced to SELECT, error states with manual reset; no malware or credential theft found. Clear deductions: the skill auto-sends bulk connection invites and auto-retries from other accounts after refusals (max_connect_attempts='all'), which inherently evades LinkedIn's rate/restriction mechanisms — real account-ban and ToS risk; SKILL.md explicitly instructs the agent to hide the scheduler's internal tick frequency from the user, a deliberate transparency cut; real outbound actions have limits and active windows but lack a one-time explicit user confirmation and rollback for the whole pipeline. Fits the 'main risks visible but confirmation/recovery incomplete' anchor.
High internal consistency: state machine, schema, error classification (alreadyPending, limitExceeded, requestNotAllowed disambiguation), and interruption-recovery logic are detailed and coherent; doctor self-check and explicit failure paths are pluses. But static review finds no executable test evidence (CI only syntax-checks and smoke-tests the root CLI, never this skill's scripts/ key paths), and behavior depends on external linkedin-cli — unverifiable statically, so not above the 10 anchor.
Triggers, vocabulary, status-question decision tree, and the qualification JSON contract are well defined; non-fit boundary (import never sends invites) is declared. Deductions: core function depends entirely on LinkedIn/linkedapi.io and Sales Navigator, which are poorly reachable from mainland China networks, with no Chinese-language support declared; LinkedIn's own tolerance for automation further limits the usable environment.
Good layering: SKILL.md manual + README + slash commands + config files + qualification prompt; install/dependency notes are complete, MIT license explicit, data locations documented. Deductions: no changelog (skill version 0.1.0, private, no CHANGELOG), maintenance responsibility and update path only implied, and the SKILL.md text appears truncated at the Scheduler section; unverified publisher means attribution rests solely on the repo's own claims.
The value claim is concrete (manual LinkedIn outreach is genuinely costly), the pipeline yields a directly queryable leads database and CSV export, and transparent qualification reporting adds marginal value. Deductions: static review cannot verify that key outputs (searches, invite sends) actually work; effectiveness hinges on third-party linkedin-cli stability and the persistence of LinkedIn's policies; cost/benefit proportionality is unevidenced, so above the 7 anchor is unreachable.
Auditable primary material exists: full schema, defaults file, explicit state transitions and error-classification rules, plus repository CI workflows. However, CI covers only syntax and a smoke test of the root installer — none of this skill's key paths; there are no test suites, no third-party execution evidence, and no cross-source corroboration, keeping it below the 5 anchor.
- Automated bulk connection invites plus cross-account retry may violate LinkedIn's Terms of Service, with real risk of account restriction or ban; users bear this risk.
- SKILL.md instructs the agent to conceal the scheduler's internal tick details — transparency is deliberately reduced; users should demand a full explanation of background behavior.
- Core function depends entirely on overseas services (LinkedIn/linkedapi.io), likely unreachable from mainland China networks, with no Chinese-language support.
- Static review executed nothing: no tests or CI coverage target this skill's scripts/, so key-path reliability is unproven.
- Publisher identity is unverified by FollowSkills; attribution and maintenance commitments rest solely on the repository's own claims.
What does this skill do, and when should you use it?
linkedin-growth is a skill in the Linked-API/linkedin-skills repository that converts LinkedIn search results into a managed networking pipeline via linkedin-cli. It runs in two phases: Phase A, triggered by the user, imports leads from a search URL or filters, has an AI sub-agent qualify each candidate against a user-defined ICP, stores results in a local SQLite database, and round-robin assigns leads across one or more LinkedIn accounts. Phase B runs on an OS-native background scheduler, sending invites at a controlled pace during each account's active hours and withdrawing stale pending requests. Cross-account retry policies and natural-language status queries round it out — built for sales teams growing their LinkedIn network at scale.
Runs import.mjs prepare, which calls linkedin-cli to execute a LinkedIn or Sales Navigator search (nv capped at 2500, st at 1000), dedupes against existing rows, and writes a candidates JSON file. The AI reads the candidates and judges each against the ICP stored in the database's settings table, writing a results file; import.mjs commit inserts qualified leads with round-robin owner_account assignment. A background scheduler (launchd/systemd-user/cron/schtasks) wakes per account: it sends one invite when the daily quota and minimum interval (default 15 minutes) allow, and independently processes up to pending_batch_size stale pending leads — withdrawing those past max_pending_days and applying the global max_connect_attempts retry policy (reassign to an untried account, else mark exhausted). Users query counts, conversions, and errors via status.mjs, lead.mjs, and the read-only query.mjs.
- A B2B or export salesperson with a Sales Navigator search URL who says 'import up to 500 leads from this search into a list called North America SaaS VPs of Sales' — the AI interviews them for the ICP, then qualifies and stores the batch
- Multi-account operators who want invites spread across several LinkedIn accounts with per-account daily caps (e.g. 35/day) and pacing (max one connect every 15 minutes) to reduce restriction risk
- A sales lead asking natural-language questions like 'how many pending on kiril?', 'which lists convert best?', or 'which requests have been pending over 10 days?'
- Team managers who pause an account ('pause kiril') so the scheduler and imports skip it, then resume later
- Users wanting automatic retries: set max_connect_attempts to 2 or all so declined or withdrawn leads get tried from other accounts before being marked exhausted
What are this skill's strengths and limitations?
- Complete two-phase pipeline: import, AI qualification, storage, scheduled invites, and stale-request withdrawal in one skill
- Multi-account support: round-robin lead assignment, cross-account retry policy, and per-account daily limits, active hours, and minimum intervals
- All state persisted in a local SQLite database with per-operation writes — interruptions resume cleanly with nothing to roll back
- Thoughtful rate-limit handling: distinguishes account-level gating from per-lead failure and disambiguates requestNotAllowed by streak vs isolated pattern
- doctor script diagnoses the environment with per-check remediations; the ICP is user-owned and stored in the database, never hardcoded
- MIT-licensed and maintained by Linked API, with an npx one-command installer and CI-friendly JSON output
- Hard dependency on the paid Linked API service and linkedin-cli (exit code 3 specifically signals a required subscription/plan)
- Phase B performs real writes to real LinkedIn accounts; restriction risk is borne by the user and only mitigated through pacing controls
- Misconfiguration (e.g. too-short intervals) in scheduled invites and withdrawals could endanger account safety
- No test suite, star count, or adoption evidence in the source; the same person imported via both nv and st searches becomes two rows, which mixed-use teams must watch
- Import caps of 2500 (Sales Nav) / 1000 (standard search) and reliance on LinkedIn page structure mean LinkedIn changes can break workflows
- Default guidance is to run qualification sub-agents on a cheap model; nuanced ICPs may require manually raising the model tier
How do you install this skill?
1) Install the collection (recommended): run npx @linkedapi/skills, or non-interactively npx @linkedapi/skills add linkedin-growth --yes (optionally with --agent claude-code --scope project). 2) Manual fallback: copy the linkedin-growth folder into your agent's skills directory (e.g. .claude/skills/linkedin-growth/ or ~/.claude/skills/), then inside it run npm install --omit=dev and node scripts/doctor.mjs. Prerequisites: Node.js ≥ 20, the globally installed @linkedapi/linkedin-cli, and Linked API Token + Identification Token from app.linkedapi.io configured via linkedin setup.
How do you use this skill?
1) Run node scripts/doctor.mjs -- in the skill directory until ok:true (doctor walks you through account registration and DB init). 2) Answer two setup questions: invite pace (default one connect every 15 minutes) and retry policy (default no retry). 3) After registering at least one account, run node scripts/schedule.mjs install to enable the background scheduler. 4) Trigger an import by saying e.g. 'Import the first 200 leads from this Sales Navigator search into a list called VP of Sales TOP 100' — the AI confirms the count and ICP, then runs Phase A's prepare→qualify→commit. Phase B then runs automatically in the background during each account's active hours; ask status questions anytime ('how many pending on kiril?') or say 'pause/resume an account'.
How does this skill compare with similar options?
The repository's other skill, linkedin, is general-purpose LinkedIn automation (profile fetches, search, messaging, posting), while linkedin-growth focuses specifically on the two-phase lead pipeline — the two are complementary and share the same linkedin-cli and Linked API backend.