Files
Corey Haines f86637eace feat: add prospecting skill + truelist integration (#308)
* feat: add prospecting skill + truelist integration

New skill: skills/prospecting/
- SKILL.md (251 lines, well under 500 limit): branch picker for SaaS / B2B /
  Local SMB, shared 5-phase framework (ICP -> discovery -> qualify -> score ->
  output), compliance guardrails, tool selection quick-picks, output formats
- references/saas-prospecting.md: tech stack signals, funding/hiring triggers,
  SaaS-specific sources and qualification
- references/b2b-prospecting.md: industry/firmographic signals, trigger events,
  decision-maker mapping, B2B-specific sources
- references/local-prospecting.md: 4-tier website status classification,
  browser-assisted research workflow (generalized from the local-client-
  prospector pattern), proximity scoring
- references/data-sources.md: deep dives on Apollo, Clay, ZoomInfo, Clearbit,
  Hunter, Snov, Truelist, LinkedIn Sales Nav, BuiltWith, Crunchbase, RB2B,
  with sequencing recommendations across the three branches
- references/compliance.md: CAN-SPAM, GDPR, CASL, platform ToS (LinkedIn,
  Google Maps, Apollo/ZI/Clearbit), anti-patterns, audit checklist
- evals/evals.json: 6 evals (2 SaaS, 2 B2B, 1 Local SMB, 1 deliverability)

New integration:
- tools/integrations/truelist.md: email deliverability validation
  (Deliverable / Risky / Undeliverable / Unknown classification)

Registry + marketplace wiring:
- tools/REGISTRY.md: truelist row + new Email Verification category section
- .claude-plugin/marketplace.json: bumped to 2.1.0, prospecting added to
  plugin description
- VERSIONS.md: prospecting 1.0.0 + 2.1.0 changelog entry
- README.md: skill table re-synced, prospecting added to ASCII flow under
  Sales & GTM column

All 41 skills pass validation. sync-skills.js is idempotent.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(prospecting): add GitHub stargazers/forks/watchers as discovery channel

Net-new in this commit:
- tools/clis/github-prospects.js: zero-dep Node CLI with commands
  stargazers / forks / watchers / user / rate-limit. Pagination via Link header,
  optional --enrich for full profile data, --with-email / --with-company /
  --with-blog filters, --format csv|json output, --dry-run preview. Uses
  GITHUB_TOKEN for 5000/hr rate limit (vs 60/hr unauthenticated).
- tools/integrations/github.md: integration guide covering auth, rate limits,
  endpoints, workflows for SaaS prospecting, compliance notes (public API, not
  scraping), CLI reference.

Skill updates:
- skills/prospecting/SKILL.md: added GitHub to the tool selection quick picks
  and to the tool integrations table.
- skills/prospecting/references/saas-prospecting.md: added GitHub to Tier 3
  buying signals plus a dedicated "GitHub prospecting pattern (when audience
  is developers)" subsection with end-to-end workflow.
- skills/prospecting/references/data-sources.md: added GitHub deep-dive
  section between RB2B and Free fallbacks.

Registry:
- tools/REGISTRY.md: github row in Tool Index, new Developer Intent / GitHub
  category section.

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(prospecting): apply review suggestions

CLI hardening + optimization:
- github-prospects.js: encodeURIComponent on username path interpolation
  (defense in depth; GitHub usernames are restricted enough that this is safe
  in practice, but good hygiene).
- github-prospects.js: refactored enrichUsers to filter inline and support
  --target N early termination. Previously, --with-email on a 1000-star repo
  would enrich all 1000 users before filtering down to the ~50 that match.
  Now you can pass --target 25 to stop as soon as 25 matches are found,
  saving API quota on restrictive filters.
- github.md: documented the new --target flag.

Reverse cross-references (so prospecting is discoverable from sibling skills):
- cold-email: added prospecting as the natural upstream skill
- customer-research: added "Translating customer research into an ICP for
  outbound" hand-off to prospecting
- competitor-profiling: distinguished from prospecting ("this skill does deep
  research on specific accounts; prospecting builds the initial list")

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(truelist): align integration doc with actual OpenAPI spec

Source of truth: Truelist-Labs/truelist-openapi (OpenAPI 3.1).

The earlier integration doc had inferred (and wrong) endpoint paths, request
shapes, and status enum values. Corrected against the published spec:

Base URL: https://api.truelist.io
Endpoints (real):
- POST /api/v1/verify_inline?email=... (sync single, email is query param)
- POST /api/v1/verify (async bulk, body: {emails: [...]})
- GET /me (account info)

Real email_state enum:
- ok, email_invalid, risky, unknown, accept_all
(not the inferred "Deliverable / Risky / Undeliverable / Unknown")

Real email_sub_state enum:
- email_ok, is_disposable, is_role, unknown_error, failed_smtp_check

Also corrected:
- Truelist has an official MCP server (Truelist-Labs/truelist-mcp) — was
  marked as MCP unavailable
- Truelist has 7 official SDKs (Node, Python, Ruby, PHP, Go, Java, .NET) +
  framework integrations (Django, Laravel, Next.js, Rails, React, Svelte,
  Vue, WordPress) — was marked as SDK unavailable
- Native integrations with Mailchimp, Klaviyo, HubSpot, Zapier, Make, n8n,
  Clay, Salesforce, ActiveCampaign, Brevo, ConvertKit, Drip, BigCommerce,
  Go High Level — was unlisted
- Rate limits: 10 req/s per endpoint (was unspecified)

Files updated:
- tools/integrations/truelist.md: full rewrite against spec
- tools/REGISTRY.md: MCP and SDK columns now show ✓ for truelist; classifier
  note in the Email Verification section reflects real enum values
- skills/prospecting/evals/evals.json: eval #6 expected_output and assertions
  use real email_state values and mention the MCP server
- skills/prospecting/references/data-sources.md: Truelist deep-dive uses real
  endpoint paths, real enum values, and lists the MCP/SDK ecosystem

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(prospecting): add Firecrawl + Browserbase for single-target site research

Both tools are programmatic scrapers, but their use in prospecting is
strictly bounded: extract content from individual public business sites
(the prospect's own website URL), never from the platforms hosting them
(Google Maps, LinkedIn, Yelp, Apollo, etc.). This matches the line drawn
by the original local-client-prospector reference skill and our own
compliance section.

New integration docs:
- tools/integrations/firecrawl.md: REST + MCP + SDKs (Node/Python/Go/Rust);
  scrape / map / crawl / extract / search endpoints; explicit "when NOT to
  use" section listing the prohibited platforms.
- tools/integrations/browserbase.md: real Chromium via Playwright/Puppeteer
  or Stagehand (AI-friendly natural-language extraction); session
  recordings; useful when rendering or interaction is required.

Prospecting skill updates:
- SKILL.md: added Firecrawl + Browserbase to tool selection quick picks
  and tool integrations table.
- references/data-sources.md: new "Firecrawl / Browserbase (single-target
  site research)" section between RB2B and Free fallbacks. Includes the
  compliance line inline so the framing isn't lost.
- references/local-prospecting.md: optional "programmatic verification"
  paragraph in the browser research workflow — once you have a candidate's
  URL from manual Maps discovery, you can hit it programmatically.
- references/compliance.md: anti-pattern #1 now explicitly clarifies that
  Firecrawl/Browserbase are fine for the prospect's own website but not
  for the platforms hosting prospects.

Registry:
- tools/REGISTRY.md: firecrawl + browserbase rows in Tool Index, new "Site
  Scraping (single-target only)" category section with the compliance
  framing in the agent recommendation.

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 11:20:26 -07:00
..

Marketing CLIs

Zero-dependency, single-file CLI tools for marketing platforms that don't ship their own.

Every CLI is a standalone Node.js script (Node 18+) with no npm install required — just chmod +x and go.

Install

Option 1: Run directly

node tools/clis/ahrefs.js backlinks list --target example.com
# Symlink any CLI you want available globally
ln -sf "$(pwd)/tools/clis/ahrefs.js" ~/.local/bin/ahrefs
ln -sf "$(pwd)/tools/clis/resend.js" ~/.local/bin/resend

# Then use directly
ahrefs backlinks list --target example.com
resend send --from you@example.com --to them@example.com --subject "Hello" --html "<p>Hi</p>"

Option 3: Add the whole directory to PATH

export PATH="$PATH:/path/to/marketingskills/tools/clis"

Authentication

Every CLI reads credentials from environment variables:

CLI Environment Variable
activecampaign ACTIVECAMPAIGN_API_KEY, ACTIVECAMPAIGN_API_URL
adobe-analytics ADOBE_ACCESS_TOKEN, ADOBE_CLIENT_ID, ADOBE_COMPANY_ID
ahrefs AHREFS_API_KEY
amplitude AMPLITUDE_API_KEY, AMPLITUDE_SECRET_KEY
apollo APOLLO_API_KEY
beehiiv BEEHIIV_API_KEY
brevo BREVO_API_KEY
buffer BUFFER_API_KEY
calendly CALENDLY_API_KEY
clearbit CLEARBIT_API_KEY
customer-io CUSTOMERIO_APP_KEY (App API), CUSTOMERIO_SITE_ID + CUSTOMERIO_API_KEY (Track API)
dataforseo DATAFORSEO_LOGIN, DATAFORSEO_PASSWORD
demio DEMIO_API_KEY, DEMIO_API_SECRET
dub DUB_API_KEY
exa EXA_API_KEY
g2 G2_API_TOKEN
ga4 GA4_ACCESS_TOKEN
google-ads GOOGLE_ADS_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_CUSTOMER_ID
google-search-console GSC_ACCESS_TOKEN
hotjar HOTJAR_CLIENT_ID, HOTJAR_CLIENT_SECRET
intercom INTERCOM_API_KEY
keywords-everywhere KEYWORDS_EVERYWHERE_API_KEY
kit KIT_API_KEY, KIT_API_SECRET
klaviyo KLAVIYO_API_KEY
linkedin-ads LINKEDIN_ACCESS_TOKEN
livestorm LIVESTORM_API_TOKEN
mailchimp MAILCHIMP_API_KEY
mention-me MENTIONME_API_KEY
meta-ads META_ACCESS_TOKEN, META_AD_ACCOUNT_ID
mixpanel MIXPANEL_TOKEN (ingestion), MIXPANEL_API_KEY + MIXPANEL_SECRET (query)
onesignal ONESIGNAL_REST_API_KEY, ONESIGNAL_APP_ID
optimizely OPTIMIZELY_API_KEY
paddle PADDLE_API_KEY, PADDLE_SANDBOX (optional)
partnerstack PARTNERSTACK_PUBLIC_KEY, PARTNERSTACK_SECRET_KEY
plausible PLAUSIBLE_API_KEY, PLAUSIBLE_BASE_URL (optional, for self-hosted)
postmark POSTMARK_API_KEY
resend RESEND_API_KEY
rewardful REWARDFUL_API_KEY
savvycal SAVVYCAL_API_KEY
segment SEGMENT_WRITE_KEY (tracking), SEGMENT_ACCESS_TOKEN (profile)
semrush SEMRUSH_API_KEY
sendgrid SENDGRID_API_KEY
tiktok-ads TIKTOK_ACCESS_TOKEN, TIKTOK_ADVERTISER_ID
tolt TOLT_API_KEY
trustpilot TRUSTPILOT_API_KEY, TRUSTPILOT_API_SECRET, TRUSTPILOT_BUSINESS_UNIT_ID
typeform TYPEFORM_API_KEY
hunter HUNTER_API_KEY
instantly INSTANTLY_API_KEY
lemlist LEMLIST_API_KEY
snov SNOV_CLIENT_ID, SNOV_CLIENT_SECRET
wistia WISTIA_API_KEY
zapier ZAPIER_API_KEY

Security

Never hardcode API keys or tokens in scripts. All CLIs read credentials exclusively from environment variables.

  • Store keys in your shell profile (~/.zshrc, ~/.bashrc) or a .env file
  • The .env file is gitignored — but double-check before committing
  • Use --dry-run on any command to preview the request without sending it (credentials are masked as ***)
  • If you fork this repo, audit your commits to ensure no secrets are included

Command Pattern

All CLIs follow the same structure:

{tool} <resource> <action> [options]

Examples:

ahrefs backlinks list --target example.com --limit 50
semrush keywords overview --phrase "marketing automation" --database us
mailchimp campaigns list --limit 20
resend send --from you@example.com --to them@example.com --subject "Hello" --html "<p>Hi</p>"
dub links create --url https://example.com/landing --key summer-sale

Output

All CLIs output JSON to stdout for easy piping:

# Pipe to jq
ahrefs backlinks list --target example.com | jq '.backlinks[].url_from'

# Save to file
semrush keywords overview --phrase "saas marketing" --database us > keywords.json

# Use in scripts
DOMAINS=$(rewardful affiliates list | jq -r '.data[].email')

Available CLIs

CLI Category Tool
activecampaign.js Email/CRM ActiveCampaign
adobe-analytics.js Analytics Adobe Analytics
ahrefs.js SEO Ahrefs
amplitude.js Analytics Amplitude
apollo.js Data Enrichment Apollo.io
beehiiv.js Newsletter Beehiiv
brevo.js Email/SMS Brevo
buffer.js Social Buffer
calendly.js Scheduling Calendly
clearbit.js Data Enrichment Clearbit
customer-io.js Email Customer.io
dataforseo.js SEO DataForSEO
demio.js Webinar Demio
dub.js Links Dub.co
exa.js AI Search Exa
g2.js Reviews G2
ga4.js Analytics Google Analytics 4
google-ads.js Ads Google Ads
google-search-console.js SEO Google Search Console
hotjar.js CRO Hotjar
hunter.js Email Outreach Hunter.io
instantly.js Email Outreach Instantly.ai
intercom.js Messaging Intercom
keywords-everywhere.js SEO Keywords Everywhere
kit.js Email Kit
klaviyo.js Email/SMS Klaviyo
lemlist.js Email Outreach Lemlist
linkedin-ads.js Ads LinkedIn Ads
livestorm.js Webinar Livestorm
mailchimp.js Email Mailchimp
mention-me.js Referral Mention Me
meta-ads.js Ads Meta Ads
mixpanel.js Analytics Mixpanel
onesignal.js Push OneSignal
optimizely.js A/B Testing Optimizely
paddle.js Payments Paddle
partnerstack.js Affiliate PartnerStack
plausible.js Analytics Plausible
postmark.js Email Postmark
resend.js Email Resend
rewardful.js Referral Rewardful
savvycal.js Scheduling SavvyCal
segment.js Analytics Segment
semrush.js SEO SEMrush
sendgrid.js Email SendGrid
snov.js Email Outreach Snov.io
tiktok-ads.js Ads TikTok Ads
tolt.js Referral Tolt
trustpilot.js Reviews Trustpilot
typeform.js Forms Typeform
wistia.js Video Wistia
zapier.js Automation Zapier