META skill — build the largest possible qualified lead list for any request, end to end.

MITAuto-check: notesDocuments & Office

Install List Builder

skills CLI
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill list-builder -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install growthenginenowoslawski/coldoutboundskills list-builder --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/list-builder .claude/skills/list-builder && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
list-builder
GitHub stars
753
Token cost
~4.7k tokens
SKILL.md length
2,208 words
Files
18 (incl. scripts, references)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

META skill — build the largest possible qualified lead list for any request, end to end.

  • Works in 7 steps: Intake (ask ALL of this up front, one… → Discovery (cast every net in parallel) → Qualify + verify (greedy discovery is… → …
  • Any build me a list
  • SKILL.md covers ⚡ OPERATE VIA THE RUNBOOK, Requirements / env, Hard rules and Phase 0 — Intake (ask ALL of…, plus 9 more sections
  • Runs TypeScript and Python scripts from its folder; calls npx, npm and pip; needs OPENAI_API_KEY and PROSPEO_API_KEY

What it does

List Builder is an agent skill from growthenginenowoslawski/coldoutboundskills. META skill — build the largest possible qualified lead list for any request, end to end. Orchestrates discovery (Prospeo + GetLeads + Blitz + Google Maps + lookalike snowball from /list-expander), AI qualification with live-website verify, uncapped contact pull (GetLeads → Blitz → Prospeo), and provider emails (GetLeads/Blitz/Prospeo) validated with MillionVerifier before sending. Use for any "build me a list", "get me leads for X", "find everyone who...", client list request, or campaign list build. Starts with…

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 20 other files, including scripts and reference files (for example `RUNBOOK.md`, `prompts/_TEMPLATE.md` and `scripts/classify-batch.ts`).

It sits in Documents & Office, covering Excel spreadsheets and CSV and tabular files. It works with PostgreSQL, Google Maps Platform and Google Sheets. The repository describes itself as: Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code. The licence is MIT.

When your agent uses it

  • Any build me a list
  • Get me leads for X
  • Find everyone who...
  • Client list request

Example prompts

  • “build me a list”
  • “get me leads for X”
  • “find everyone who...”
  • “/list-builder”

Requirements

  • Python 3
  • Node.js
  • A credential in PROSPEO_API_KEY
  • A credential in OPENAI_API_KEY

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Intake (ask ALL of this up front, one message)
  2. Discovery (cast every net in parallel)
  3. Qualify + verify (greedy discovery is safe because of this layer)
  4. Snowball until dry (the "largest possible list" guarantee)
  5. Contacts (uncapped, cost-ordered)
  6. Emails
  7. Deliver

What it can do on your machine

Read from SKILL.md and the folder at commit 25c5d85. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 14 files in scripts/ (TypeScript and Python), which the agent can run.

    Shell commands in SKILL.md call:

    • npx
    • npm
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • prospeo.io
    • platform.openai.com
    • getleads.io
    • parallel.ai
    • millionverifier.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • OPENAI_API_KEY
    • PROSPEO_API_KEY
    • GETLEADS_API_KEY
    • BLITZ_API_KEY
    • EXA_API_KEY
    • PARALLEL_AI_API_KEY
    • MILLIONVERIFIER_API_KEY
    • GOOGLE_APPLICATION_CREDENTIALS

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

List Builder loads about 4.7k tokens when it runs, and up to ~5.1k if it reads all its reference files. Until then it costs about 153 tokens; SKILL.md has 2,208 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~153
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:59
    `. Copy the repo-root `.env.example` to `.env` and fill in the keys below — scripts walk up from `skills/list-builder/sc
  • NoteMentions a .env fileSKILL.md:61
    Put these in a `.env` at the repo root (or `~/.env` — `loadEnv()` reads both) or export them.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from growthenginenowoslawski/coldoutboundskills at commit 25c5d85, republished under its MIT licence (© growthenginenowoslawski). 2,208 words, ~4,663 tokens.

Download SKILL.mdSave it as .claude/skills/list-builder/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.
name
list-builder
description
META skill — build the largest possible qualified lead list for any request, end to end. Orchestrates discovery (Prospeo + GetLeads + Blitz + Google Maps + lookalike snowball from /list-expander), AI qualification with live-website verify, uncapped contact pull (GetLeads → Blitz → Prospeo), and provider emails (GetLeads/Blitz/Prospeo) validated with MillionVerifier before sending. Use for any "build me a list", "get me leads for X", "find everyone who...", client list request, or campaign list build. Starts with a 7-line intake brief; outputs to Postgres, Google Sheet, and/or CSV (asks which).

List Builder — the meta list-building process

⚡ OPERATE VIA THE RUNBOOK

The manual phase-by-phase flow below still documents the concepts, but the OPERATIONAL path is now three one-command scripts — see RUNBOOK.md in this skill directory for the decision table and failure playbook. In short:

bash
npx tsx scripts/make-judge.ts --spec=judge-spec.json --out=prompt.txt   # judge (mandatory blocks)
npx tsx scripts/run-lane.ts  --config=lane.json                         # full lane, resumable
npx tsx scripts/snowball.ts  --config=lane.json                         # sweep until dry
npx tsx scripts/contacts.ts  --config=lane.json                         # contacts + emails after approval

Re-running the same command resumes after ANY failure. summary.md line 1 = READY / NOT READY with the next command. Cross-run dedup via the OPTIONAL list_builder_judged_domains Postgres registry (WAL-first; scripts/registry.ts; DDL in references/registry-schema.sql; leave LIST_REGISTRY_DB_URL unset and it degrades to per-run WAL dedup). Prospeo pacing is globally rate-limited across processes (lib.ts slot reservation — never tune it).

One entry point for every list request. This skill owns the PROCESS and delegates to tool skills that own the provider gotchas. Read the referenced skill whenever you touch its provider.

LayerDelegate
Company discovery + qualification + snowball/list-expander (scripts in its scripts/)
Prospeo filters/syntax/prospeo-search-api
Blitz domain→people/blitz-list-builder (scripts/find-contacts.ts)
GetLeads counts/exportsscripts/getleads-client.ts (counts are free) — optional, skipped without a key
Email validationprovider emails from GetLeads/Blitz/Prospeo → leads-final.csv; validate with MillionVerifier (/cold-email-starter-kit) before upload
Judge tuning/icp-prompt-builder
Local/SMB discovery/google-maps-list-builder
List QA before delivery/list-quality-scorecard

Scripts in THIS skill's scripts/: contacts-merge.ts (normalize/dedup contact pulls, keeps every raw provider field), enrich-domains.ts (batch Prospeo enrichment for any domain list — headcount/revenue/state/ phone; strips subdomains), classify-batch.ts (multi-segment nano classifier — one pass assigns each company to one of N segments; use for industry sweeps that feed several lanes).

Observability + multi-lane helpers (2026-07-14):

  • fleet.ts — read-only status board over ~/output/list-builder/lanes/*: one row per lane (current stage, status, rows in newest stream, minutes idle, snowball in flight, READY?). Zero side effects — safe to run against live runs. npx tsx scripts/fleet.ts (add --json).
  • multi-lane-classify.ts — when several lanes for one client draw from OVERLAPPING pulls, union their MERGE candidate pools by domain and label every unique company in ONE nano pass (labels = lane names, prompt built from each lane's judge ICP one-liner). Writes per-lane <client>-<lane>-candidates.csv for consumption via extra_candidates. Additive — does not change run-lane's per-lane flow. npx tsx scripts/multi-lane-classify.ts --lanes=a.json,b.json.

Requirements / env

Prerequisites: Node ≥ 18 with npx tsx (npm i -g tsx); python3 + pip install gspread only if you use the Google Sheet destination; psql on PATH only if you set LIST_REGISTRY_DB_URL. Copy the repo-root .env.example to .env and fill in the keys below — scripts walk up from skills/list-builder/scripts/ to find it.

Put these in a .env at the repo root (or ~/.env — loadEnv() reads both) or export them.

REQUIRED

VarWhat forGet one
PROSPEO_API_KEYcompany + people search, the primary discovery sourcesign up at https://prospeo.io
OPENAI_API_KEYthe GPT-5-nano judge that scores every candidatesign up at https://platform.openai.com

OPTIONAL — each of these degrades gracefully: the script logs a skip line and continues.

VarWhat forWithout it
OPENAI_API_KEY_NANOa separate key/project for nano scoringfalls back to OPENAI_API_KEY
OPENAI_ICP_MODELoverride the judge model (default gpt-5-nano)uses the default
GETLEADS_API_KEYfree contact counts + exports, first stop in Phase 4 (sign up at https://getleads.io)contacts.ts marks GETLEADS skipped and every domain falls through to Blitz/Prospeo
BLITZ_API_KEYdomain→people fallback via /blitz-list-builder (see that skill for signup)BLITZ stage skips, Prospeo covers those domains
EXA_API_KEY, PARALLEL_AI_API_KEYlookalike / entity discovery inside /list-expander Phase 2 (sign up at https://exa.ai, https://parallel.ai)those sub-sources are skipped, seeds + filters still run
LIST_REGISTRY_DB_URLPostgres URL for cross-run dedup (DDL: references/registry-schema.sql)WAL-only dedup: a run never re-judges itself, but earlier runs are not deduped
MILLIONVERIFIER_API_KEYvalidate leads-final.csv before upload (https://millionverifier.com)OPTIONAL for the build; REQUIRED before you send
GOOGLE_APPLICATION_CREDENTIALSservice-account JSON for the Google Sheet destination (push-sheet.py)omit destination.sheet_id in lane.json for a CSV-only lane

psql must be on PATH for the optional registry. Nothing else is required.

Emails

GetLeads, Blitz and Prospeo each return an email + verification status per person. contacts.ts writes every contact that has one to leads-final.csv with an email_status column (verified when the provider says so, else unverified). Before you upload, run the whole file through MillionVerifier (see /cold-email-starter-kit) and keep only ok/valid results — never catch-all, never unknown.

Hard rules

  1. ALL matching titles at ALL companies — never cap contacts per company.
  2. Emails: validate every address before sending. A provider status of verified/VALID is a hint, not send-ready; MillionVerifier ok is the gate.
  3. Keep only strict valid results. Never catch-all/unknown.
  4. Save the MAXIMUM data providers return — every contact row carries raw_json; database destinations get a raw_json JSONB column.
  5. A live Google Sheet progress view is the default whenever you have sheet credentials (scripts/push-sheet.py, destination.sheet_id in lane.json) — stream verified rows as they land. Without credentials the lane is CSV-only; everything else is identical.

Phase 0 — Intake (ask ALL of this up front, one message)

  1. Seeds: ~10 known-good companies (client's customers are best). If none given, derive candidates and confirm.
  2. ICP one-liner + explicit disqualifiers (what looks close but is NOT a fit).
  3. Bands: employee range, revenue floor, founded, etc. — applied AT PULL TIME.
  4. Geography.
  5. Target titles/seniorities (no cap on matches).
  6. Destination: database table / Google Sheet / local CSV — ask; any combo.
  7. Exclusions: any CSV/table of domains to skip (optional; do NOT auto-dedupe against your sending platform — that is handled at upload time).

THE EXHAUSTIVE-SWEEP LAW (this is the point of the skill)

Recall is sacred; precision is nano's job. "I don't care how much money we spend on AI to clean these things up. I want the largest list we can possibly grab."

  1. Industries: if even ONE confirmed-fit company carries an industry tag, pull EVERY company in that industry (within band + geography) and nano-score all of them. A hedge fund tagged "Financial Services" means you pull all of Financial Services in scope. Never pre-filter an industry pull by keywords.
  2. Keywords: every discriminative keyword/phrase found on confirmed fits gets pulled across ALL industries (you have no clue what industries a "SaaS"-tagged company sits in). Multi-word phrases beat their parts: "medical" bad, "group" bad, "medical group" good. Drop only stopword-grade single tokens; when unsure, pull it and let nano sort.
  3. The ONLY pre-filters allowed at pull time are the client's hard band (headcount/ revenue) and geography. Everything else is decided by the GPT-5 Nano judge reading the company's description/homepage.
  4. Score EVERYTHING pulled. Never sample, never cap, never skip scoring to save money — nano costs ~$1-3 per 10k companies; a missed segment costs a client.
  5. Snowball: every nano-confirmed fit enlarges the seed set → re-derive industries + keywords from the LARGER set → sweep the delta → repeat until a round adds <2-3% net-new qualified companies. That convergence is the only valid reason to stop.
  6. The filter-precision scorecard is REPORTING (transparency for the client), never a gate that excludes a filter from being pulled.

Corollary: hand-picking a few keywords "for speed" is a bug, not a shortcut — an Investment Management industry sweep surfaced several large funds that keyword search missed entirely.

Operating rules:

  • Industry trigger is LITERAL (1 confirmed fit = sweep the industry). Mega-industries (>100k companies in scope) go through the SAME Prospeo /search-company pull: pull.ts auto-shards any filter whose page-1 total_count exceeds 24k — country-wide into 50 states + DC, then a single state by headcount-band bisection — so Prospeo's ~25k-per-filter tail truncation never silently drops the remainder. snowball.ts logs [mega] <industry>: N in scope when it hands one of these to the sharder.
  • Keywords: pull unless stopword-grade. Multi-word always; specific single tokens ("SaaS", "REIT", "Medicare") yes; generic ("group", "services") no; unsure → pull.
  • Cost gate: run without asking below ~500k total sweep; above that, show the operator the count/cost breakdown first.
Show full SKILL.md (982 more words)Show less

Phase 1 — Discovery (cast every net in parallel)

Run ALL applicable sources, dedup by domain (normDomain in list-expander lib.ts):

  • Seed-driven core (when seeds exist — almost always): /list-expander Phases 1–3 (fingerprint → lookalikes → filter mining with precision×volume scorecard).
  • Prospeo /search-company with the winning filters (450ms pacing; re-pulls free 30d).
  • GetLeads count_contacts/search_contacts with company_description + technographic filters (free counts; a third corpus).
  • Blitz POST /v2/search/companies (free) when company-first.
  • Google Maps when local/SMB — /google-maps-list-builder (live scrape by category × metro). Category names are ground truth for local trades (e.g. 'Fence contractor'), so sweep the category rather than a keyword guess. If you keep a bulk Maps export on disk (Common Outbound Lists/Google Maps Scrape - 12M US Businesses/), grep it by category first (free) and feed the result in as extra_candidates.
  • Shopify / DTC — start from the bundled Common Outbound Lists/shopify-stores-259k-active.csv.zip (259K Active stores with ≥1k estimated monthly visits; domain, merchant_name, description, company_linkedin). Unzip and pass the CSV as extra_candidates. Still run /icp-prompt-builder + live-site verify; ~11–12% of snapshot stores go dead.
  • Parallel entity-search / Exa findSimilar / DiscoLike — already inside list-expander Phase 2 (see /disco-like). For local-service TAMs, ALSO run a Parallel per-metro fan-out (one objective per metro, match_limit ~40, ~$0.005/call, then keyword-filter the output — roughly 75% is padding). Parallel returns NO domains: resolve them by company-name search in Prospeo /search-company, then Exa search (needs credits).

External-source CSVs feed the lane via extra_candidates in lane.json: absolute CSV paths with a domain column; rows merge into MERGE with normDomain + registry dedup + emp-band-when-known. This is how Maps pulls, Parallel fan-outs, and ad-hoc keyword pulls enter the judged pipeline.

Post-lane EXPANSION pass for local trades (measured +56% on top of a READY lane): after a lane is READY, sweep LIVE sources and run the delta through judge→verify→registry:

  1. Live Maps by QUERY (not category) — see /google-maps-list-builder; ~350 cities × trade queries, keep the website field; ~70% net-new versus category-based candidates.
  2. Yellow Pages — Apify trudax/yellow-pages-us-scraper, ONE run with startUrls = yellowpages.com/search?search_terms=X&geo_location_terms=<STATE> × 50 states. Spam-dense (36% aggregator/doorway junk, 25% judge-pass) — never skip judge+verify. automation-lab actor returns NULL websites.
  3. Yelp — Apify memo23/yelp-scraper (startUrls = yelp search URLs, fetchBusinessDetails) — ~90% website fill + businessOwnerName (owner first names → contacts phase); shallow yield. Both Apify actors are optional: skip them and the lane still completes. Delta pipeline: dedup vs lane WAL → score-batch.ts → verify-website.ts (--run=__abs__<dir>, stream files must be named pull-batch*-scored.csv.stream.csv) → walAppend + registry.ts sync → append tab to the destination sheet.

Phase 2 — Qualify + verify (greedy discovery is safe because of this layer)

  • Tune the judge once via /icp-prompt-builder (10-company rounds until 2 clean).
  • Scale-score with list-expander/scripts/score-batch.ts (GPT-5 Nano, OPENAI_API_KEY_NANO or OPENAI_API_KEY, concurrency 60, --scrape for missing descriptions; streams to .stream.csv).
  • Always run list-expander/scripts/verify-website.ts — ~10% of DB-qualified companies are dead/parked ghosts; live homepage re-judge catches stale-DB false positives.

Phase 3 — Snowball until dry (the "largest possible list" guarantee)

Feed each round's confirmed fits back as new seeds → new lookalikes → new candidate filters → pull the delta → qualify. Stop when a round adds <2-3% net-new qualified companies. Record rounds + net-new counts — the convergence curve goes in the client report as proof of full-market coverage.

Phase 4 — Contacts (uncapped, cost-ordered)

For every qualified company, pull ALL people matching target titles:

  1. GetLeads (free counts/exports, optional key): search_contacts/export_contacts filtered by domains (batch ≤500), job_titles/seniority. Download export CSV. No key ⇒ the stage is skipped and every domain falls to Blitz/Prospeo.
  2. Blitz (optional key): /blitz-list-builder scripts/find-contacts.ts for domains GetLeads covered thinly.
  3. Prospeo /search-person with company.websites {include:[...]} (LAST — most expensive; strip subdomains or the whole batch 400s).

Merge + dedup: npx tsx scripts/contacts-merge.ts --run=<slug> --csv=<file>:<provider> ... (dedupes by linkedin_url, else domain+first+last; keeps every original column in raw_json).

Phase 5 — Emails

contacts.ts step 6 writes leads-final.csv (every merged contact with a provider email, email_status = verified|unverified). Then validate:

bash
# MillionVerifier bulk validation — see /cold-email-starter-kit for the script and key setup
# keep result == "ok" only; drop catch_all / unknown / invalid

Phase 6 — Deliver

  • Chosen destination(s): a per-client database table (raw_json JSONB; RLS on if you use Supabase) and/or Sheet and/or CSV.
  • The sheet, if configured, is already populated from Phase 2 onward.
  • Transparency report: list-expander/scripts/report.ts + snowball convergence curve + contact/email funnel. Verified-email ceiling via contact-count.ts (free) BEFORE Phase 4 so the client sees the ceiling early.

Automation hardening (2026-07-14)

The orchestrators now self-protect against the failure classes that caused silent misses:

  • Auto-shard >24k Prospeo filters (pull.ts): any single filter whose page-1 total exceeds 24k is auto-sharded — country-wide → 50 states + DC, then a single state → headcount band bisection (recursively), merged by domain. Logs sharded <label> into N sub-pulls. Inherited by run-lane PULL and every snowball pull; no more lost tails.
  • PRECHECK config validation (run-lane.ts): probes Prospeo once with the emp band and once with ALL industries in one call, and rejects emp_max>100000 (unless a no-band lane). A bad band/industry now fails PRECHECK with the exact offending field and BLOCKS pull — no wasted run.
  • Legacy industry map (list-expander/lib.ts LEGACY_INDUSTRY_MAP / mapIndustry): snowball translates legacy LinkedIn tags (Manufacturing → General Manufacturing, etc. — all probed valid) to the modern Prospeo enum before sweeping, so a legacy tag sweeps its modern equivalent instead of erroring the whole set. Add only names verified valid via a free count probe.
  • snowball rounds now run the same REJECT_AUDIT rescue as run-lane on each round's rejects, check child exit status + output length (throw a resume message instead of silently continuing), use a two-phase swept-ledger (a filter is "done" only after a judged entry lands — a crash between pull and judge re-pulls, free within 30d; old single-phase ledgers still honored), and stream dedup round rows straight to snowball-rN.csv (flat memory).
  • score-batch straggler deadline + retry: each row's classify (incl. scrape) has a 120s hard timeout (marks scored=false reason=timeout, no more 99.99%-done hangs), and one automatic retry pass re-scores all failures before reporting the final count.

Ops notes

  • Run a 50–100-row test before every full run; read the first progress output and confirm real successes; surface failures immediately rather than at the end.
  • Prospeo pacing is 450ms and globally enforced across processes. MillionVerifier 403s the default Python/Node User-Agent — send a browser UA.
  • Reference funnel from a real pilot: 10 seeds → 30,405 pulled → 11,198 qualified → 9,247 live-verified → 1,727 in-band → ~30,755 verified-email ceiling.

© growthenginenowoslawski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 17 other files (scripts, references) in skills/list-builder of growthenginenowoslawski/coldoutboundskills.

  • SKILL.md
  • RUNBOOK.md
  • prompts/_TEMPLATE.md
  • references/registry-schema.sql
  • scripts/classify-batch.ts
  • scripts/contacts-merge.ts
  • scripts/contacts.ts
  • scripts/enrich-domains.ts
  • scripts/fleet.ts
  • scripts/getleads-client.ts
  • scripts/make-judge.ts
  • scripts/multi-lane-classify.ts
  • scripts/push-sheet.py
  • scripts/registry.ts
  • scripts/reject-audit.ts
  • scripts/run-lane.ts
  • scripts/snowball.ts
  • scripts/solo-teampage.ts

Open the folder on GitHubat commit 25c5d85

Compare with similar skills

List Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

List Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
List Builder this skillgrowthenginenowoslawski/coldoutboundskills753—~4.7kAutomated safety check: NotesMIT
Recipe Backup Sheet As CSVgoogleworkspace/cli31k—~212Automated safety check: PassApache-2.0
Executive Dashboard Generatormanojbajaj95/claude-gtm-plugin1052 repos~3.4kAutomated safety check: PassMIT
CSV Formula Injectionyaklang/hack-skills2.4k—~1.1kAutomated safety check: PassMIT
XLSXrvdbreemen/OTGW-firmware20735 repos~2.9kAutomated safety check: PassProprietary
Managing Google Workspacetaylorwilsdon/google_workspace_mcp3.3k—~2.9kAutomated safety check: PassMIT

Similar skills

  • Recipe Backup Sheet As CSV

    googleworkspace/cli

    Export a Google Sheets spreadsheet as a CSV file for local backup or processing.

    31k GitHub stars~212 tokensUpdated 4 days ago
    Documents & OfficeAuto-check passed
  • Executive Dashboard Generator

    manojbajaj95/claude-gtm-plugin

    Transform raw data from CSVs, Google Sheets, or databases into executive-ready reports with visualizations, key metrics, trend analysis, and actionable recommendations.

    105 GitHub starsUsed in 2 repos~3.4k tokens
    Documents & OfficeAuto-check passed
  • CSV Formula Injection

    yaklang/hack-skills

    CSV/spreadsheet formula injection (DDE, Excel/LibreOffice, Google Sheets IMPORT).

    2.4k GitHub stars~1.1k tokensUpdated 28 days ago
    Documents & OfficeAuto-check passed
  • XLSX

    rvdbreemen/OTGW-firmware

    Use this skill any time a spreadsheet file is the primary input or output.

    207 GitHub starsUsed in 35 repos~2.9k tokens
    Documents & OfficeAuto-check passed
  • Managing Google Workspace

    taylorwilsdon/google_workspace_mcp

    Manages Google Workspace operations across 12 services (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Apps Script, Custom Search).

    3.3k GitHub stars~2.9k tokensUpdated 2 days ago
    Documents & OfficeAuto-check passed
  • Official

    Load before calling data-tables or parse-file. An agent skill from n8n-io/n8n.

    207k GitHub stars~2.3k tokensUpdated today
    Documents & OfficeAuto-check passed

More from growthenginenowoslawski/coldoutboundskills

All 49 skills in this repo
  • Email Deliverability Audit

    growthenginenowoslawski/coldoutboundskills

    Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~3.4k tokensUpdated 5 days ago
    Auto-check passed
  • Icp Onboarding

    growthenginenowoslawski/coldoutboundskills

    Conversational intake for cold email campaigns. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~1.9k tokensUpdated 5 days ago
    Auto-check passed
  • Auto Research Public

    growthenginenowoslawski/coldoutboundskills

    Autonomous cold email campaign launcher. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~2.9k tokensUpdated 5 days ago
    Auto-check passed
  • Blitz List Builder

    growthenginenowoslawski/coldoutboundskills

    Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains.

    753 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check passed
  • Deliverability Test Public

    growthenginenowoslawski/coldoutboundskills

    Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account.

    753 GitHub stars~1k tokensUpdated 5 days ago
    Auto-check passed
  • Disco Like

    growthenginenowoslawski/coldoutboundskills

    Find lookalike companies via DiscoLike's 65M+ business domain database.

    753 GitHub stars~1.7k tokensUpdated 5 days ago
    Auto-check passed

Questions about List Builder

What does List Builder do?

META skill — build the largest possible qualified lead list for any request, end to end. List Builder is an agent skill from growthenginenowoslawski/coldoutboundskills. META skill — build the largest possible qualified lead list for any request, end to end.

When should I use List Builder?

List Builder fits situations like: any build me a list; get me leads for X; find everyone who..; client list request.

How do I install List Builder in Claude Code?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill list-builder -a claude-code`. Or copy the skill folder (skills/list-builder in growthenginenowoslawski/coldoutboundskills) into .claude/skills/list-builder in your project. Claude Code loads it when a task matches its description.

How do I install List Builder in Codex?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill list-builder -a codex`. Or copy the skill folder (skills/list-builder in growthenginenowoslawski/coldoutboundskills) into .agents/skills/list-builder in your project. Codex loads it when a task matches its description.

Can I use List Builder in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthenginenowoslawski/coldoutboundskills --skill list-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/list-builder, .gemini/skills/list-builder, .github/skills/list-builder and .opencode/skills/list-builder in your project.

What does List Builder need to run?

Going by SKILL.md and its folder, List Builder needs TypeScript and Python for the scripts in its folder, the command-line tools its instructions call (npx, npm and pip) and credentials named OPENAI_API_KEY, PROSPEO_API_KEY, GETLEADS_API_KEY and BLITZ_API_KEY. Our summary lists: Python 3; Node.js; A credential in PROSPEO_API_KEY; A credential in OPENAI_API_KEY.

Does List Builder access the network?

SKILL.md names 5 domains. As links in the text: prospeo.io, platform.openai.com, getleads.io, parallel.ai and millionverifier.com. This is read from the text; nothing was executed.

Is List Builder safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does List Builder use?

List Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does List Builder use?

About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 393 tokens, read only when the agent opens those files.

What are the alternatives to List Builder?

Skills that share tags, products or a category with List Builder: Recipe Backup Sheet As CSV (googleworkspace/cli, 31k stars), Executive Dashboard Generator (manojbajaj95/claude-gtm-plugin, 105 stars), CSV Formula Injection (yaklang/hack-skills, 2.4k stars) and XLSX (rvdbreemen/OTGW-firmware, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains List Builder?

growthenginenowoslawski (a GitHub user) maintains it in growthenginenowoslawski/coldoutboundskills, which has 753 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.

Source: growthenginenowoslawski/coldoutboundskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.