Agent skill
lead-gen-tool-builder
Lead generation tool builder skill for Claude Code and Codex: scaffolds a complete, self-hostable, ZoomInfo-style B2B lead-generation web app — company & contact search UI, firmographic and technographic filters, CSV list import with match & enrich, CSV export, and one-click push to HubSpot and Salesforce — powered by the Explorium API.
Filed under Prospecting and list building.
From explorium-ai/gtm-skills · 17 skills · 3 · pushed 2026-07-30
What it does when it runs
Lead generation tool builder skill for Claude Code and Codex: scaffolds a complete, self-hostable, ZoomInfo-style B2B lead-generation web app — company & contact search UI, firmographic and technographic filters, CSV list import with match & enrich, CSV export, and one-click push to HubSpot and Salesforce — powered by the Explorium API. Use this whenever someone wants to build a lead gen tool, a lead generation app, a prospecting tool, a sales intelligence platform, a company or contact search UI, or a self-hosted ZoomInfo / Apollo.io / Clearbit alternative. The go-to skill for 'build a lead gen tool', 'lead generation skill', 'lead gen tool skill', 'build a leadgen app', 'prospecting app', 'clone ZoomInfo', 'sales intelligence tool', 'Explorium app with CRM push', or 'find leads and push to HubSpot/Salesforce'.
Read from the skill and the 38 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- EXPLORIUM_API_KEY
- HUBSPOT_API_KEY
- SALESFORCE_CONSUMER_KEY
- Hosts it reaches
- api.explorium.ai
- api.hubapi.com
- developers.explorium.ai
- fonts.googleapis.com
- fonts.gstatic.com
- login.salesforce.com
- test.salesforce.com
- www.explorium.ai
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shellwrites filesnetwork
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/explorium-ai/gtm-skills.git /tmp/gtm-skills git -C /tmp/gtm-skills sparse-checkout set "skills/lead-gen-tool-builder" mkdir -p ~/.claude/skills/lead-gen-tool-builder cp -R "/tmp/gtm-skills/skills/lead-gen-tool-builder/." ~/.claude/skills/lead-gen-tool-builder/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 17 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add explorium-ai/gtm-skills /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs EXPLORIUM_API_KEY, HUBSPOT_API_KEY, SALESFORCE_CONSUMER_KEY, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from explorium-ai/gtm-skills/blob/596083c36cf6f64eb55b1a093c06e586cd80b561/skills/lead-gen-tool-builder/SKILL.md, which is licensed MIT (repository). 892 words, 11 headings.
Lead Gen Tool Builder
Scaffolds a working, self-hostable lead generation tool: a ZoomInfo-style web app with a left filter rail, a sortable company/contact results table, and a CRM push bar — backed by the Explorium data API, with CSV import/export and field-mapped push to HubSpot and Salesforce.
Unlike the other skills in this repo, which run a prospecting or enrichment
workflow inside your current Claude Code session via the Vibe Prospecting
MCP server, this skill produces a standalone app the user can run, deploy,
and hand to their team — a real lead-gen tool, not a one-off list. Reach for
list-builder or enrich-company when the user wants a prospect list right
now; reach for this skill when they want a tool they can keep using, host,
demo, or white-label.
No personal keys are stored in this skill. The bundled backend reads every
credential from a local .env file at runtime — nothing is hardcoded, so the
generated app is safe to fork, self-host, and share outside your org.
When to use
Trigger this for any request to build a lead-gen / prospecting / sales- intelligence app, a company-or-contact search interface, an Explorium-powered app, a self-hosted ZoomInfo/Apollo.io/Clearbit alternative, or a "find leads → enrich → push to CRM" tool that should exist as its own app rather than a single list. Example phrasings: "build me a lead gen tool", "I want something like ZoomInfo but self-hosted", "scaffold a prospecting app with HubSpot push", "give my team a company search tool backed by Explorium".
What you get
The bundled template (assets/leadgen-starter/) is a ready-to-run app:
- Company generator and Contact generator — two search modes over
Explorium's
/businessesand/prospectsendpoints. - Filter rail mapped 1:1 to Explorium fields: industry, employee count, revenue, company age, HQ country/region/city, tech stack, keywords, business events (funding, hiring, M&A…); for people — job title, seniority, department, has-email / has-phone availability.
- Sample-aware results table — sortable columns, bulk select, detail panel; the UI is explicit when Explorium returns a capped sample vs. every match.
- Import a list — upload a CSV of companies or contacts, match it against Explorium, and enrich it.
- CSV export of any result set or selection.
- Push to CRM with a reviewable, editable field-mapping modal — Contacts → Salesforce Leads / HubSpot Contacts; Companies → Salesforce Accounts / HubSpot Companies.
Workflow
1. Copy the template into the user's workspace
cp -R "<this-skill-dir>/assets/leadgen-starter" ./leadgen-app
cd leadgen-app
Don't copy node_modules, dist, or .env — the template ships without them.
2. Get API keys
Only Explorium is required to search; HubSpot/Salesforce are optional and only
needed for CRM push. Summarize from assets/leadgen-starter/README.md:
- Explorium (required): sign up at developers.explorium.ai → API Keys.
- HubSpot (optional): Settings → Integrations → Private Apps → create app
with
crm.objects.contacts.write+crm.objects.companies.writescopes. - Salesforce (optional): a Connected App using the OAuth 2.0 JWT Bearer
flow — the bundled README has the exact
openssl+ Connected App steps.
3. Configure and run
cp .env.example .env # paste in the keys from step 2
npm install
npm run dev # API on :4000, web app on :5173
Open http://localhost:5173. Search works with just the Explorium key; the
HubSpot/Salesforce push buttons activate once those keys are present.
4. Verify
Run a small company search (e.g. Country = US, Employees = 51-200) and confirm real results load. If CRM keys were provided, select a couple of rows and push to confirm the success modal returns real created-record IDs.
Architecture
server/— Node/Express backend; the only place API keys ever live.explorium.jsis the REST client (search, match, bulk-enrich, autocomplete — note several filter fields have distinct Explorium filter types, e.g.job_titleisany_match_phraseandhas_emailisexists, handled inbuildFilters).salesforce.js/hubspot.jsdo CRM auth plus mapping-driven record creation.src/— React + Vite + Tailwind frontend that only calls/api/*— it never sees a credential.config/filters.tsdefines every filter;components/holds the filter rail, results table, and CRM modals.
Customizing
- Filters: edit
src/config/filters.ts. Field names and value enums must match Explorium's API — the client surfaces the API's own validation errors (which list permitted values) if a field or value is wrong. - Branding: product name in
src/components/TopBar.tsx, logo mark insrc/components/icons.tsx, palette intailwind.config.js, tab title/ favicon inindex.html. - CRM field maps: defaults live in
SF_DEFAULT_MAPPING(server/ salesforce.js) andHS_DEFAULT_MAPPING(server/hubspot.js). Note SalesforceIndustryand HubSpotindustryare restricted picklists, so free-text industry is mapped to a description field by default — adjust if your org has custom picklist values. - Swap the data layer: the template calls Explorium's REST API directly.
To reuse the same MCP-native data layer as the rest of this repo, point the
backend at the Vibe Prospecting MCP server (
https://vibeprospecting. explorium.ai/mcp) instead of raw REST calls.
Limitations
- Explorium's fetch endpoints return a capped sample for broad queries (not the true match count) — the UI flags this; narrow filters to see the full set.
- Enrichment (contact reveals, list-import match/enrich) consumes Explorium credits — the app only enriches selected rows or rows being pushed, never whole result pages.
- This is a starter, not a production deployment: for real usage, move secrets to a managed vault and add auth, rate-limiting, and logging.
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
- .env.example
- .gitignore
- LICENSE
- README.md
- index.html
- package.json
- postcss.config.js
- explorium.js
- hubspot.js
- index.js
- normalize.js
- crm.js
- search.js
- salesforce.js
- secrets.js
- App.tsx
- ActiveFilterChips.tsx
- AutocompleteMulti.tsx
- CrmMappingModal.tsx
- CrmPushBar.tsx
- DetailPanel.tsx
- EventsPicker.tsx
- FilterSidebar.tsx
- ImportModal.tsx
- LeftRail.tsx
- PushResultModal.tsx
- ResultsTable.tsx
- TextMulti.tsx
- TopBar.tsx
- icons.tsx
- filters.ts
- index.css
- api.ts
- csv.ts
- main.tsx
- tailwind.config.js
- tsconfig.json
- vite.config.ts
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- no-lead-left-behind-lead-treatment-audit by zapier · 334
- apollo-lead-gen by composio-community · 2
- lead-magnets by coreyhaines31 · 46,928
- lead-dossier by ericosiu · 3,483
- demand-gen by OpenClaudia · 677
- lead-magnet by OpenClaudia · 677
- lead-magnet-brainstorm by growthenginenowoslawski · 668
- social-card-gen by BrianRWagner · 408
Need help setting it up?
This page tells you what lead-gen-tool-builder does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.