Not in the top 1,000 by GitHub stars
growthenginenowoslawski/coldoutboundskills
Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/auto-research-public/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/blitz-list-builder/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/campaign-copywriting/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/campaign-strategy/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/cold-email-kickoff/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/cold-email-starter-kit/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/cold-email-weekly-rhythm/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/competitor-engagers/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/deliverability-incident-response/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/deliverability-test-public/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/disco-like/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/email-deliverability-audit/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/experiment-design/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/google-maps-list-builder/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/icp-onboarding/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/icp-prompt-builder/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/inbox-lifecycle-manager/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/lead-magnet-brainstorm/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/list-builder/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/list-expander/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/list-quality-scorecard/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/perfect-company-list/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/personalization-subagent-pattern/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/clay-playbooks/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-ad-library/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-ai-specificity/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-case-study-page/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-company-name-cleaning/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-creative-ideas/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-first-name-cleaning/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-fundraising/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-google-site-search/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-hiring-surge/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-job-posting-language/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-linkedin-engagement/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-lookalikes/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-name-to-other-prospects/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-new-in-role/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-pricing-page/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-social-link-finding/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-social-posts/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-tech-on-website/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/playbooks/playbook-warm-intros/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/positive-reply-scoring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/prospeo-full-export/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/prospeo-search-api/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/smartlead-api/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/smartlead-campaign-upload-public/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/smartlead-inbox-manager/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/smartlead-spintax/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/spam-word-checker/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
skills/zapmail-domain-setup-public/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
25c5d85fbb5d → 25c5d85fbb5d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 25c5d85fbb5d
No earlier version was observed for comparison.
Heat
5.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- auto-research-public
skills/auto-research-public - blitz-list-builder
skills/blitz-list-builder - campaign-copywriting
skills/campaign-copywriting - campaign-strategy
skills/campaign-strategy - cold-email-kickoff
skills/cold-email-kickoff - cold-email-starter-kit
skills/cold-email-starter-kit - cold-email-weekly-rhythm
skills/cold-email-weekly-rhythm - competitor-engagers
skills/competitor-engagers - deliverability-incident-response
skills/deliverability-incident-response - deliverability-test-public
skills/deliverability-test-public - disco-like
skills/disco-like - email-deliverability-audit
skills/email-deliverability-audit - experiment-design
skills/experiment-design - google-maps-list-builder
skills/google-maps-list-builder - icp-onboarding
skills/icp-onboarding - icp-prompt-builder
skills/icp-prompt-builder - inbox-lifecycle-manager
skills/inbox-lifecycle-manager - lead-magnet-brainstorm
skills/lead-magnet-brainstorm - list-builder
skills/list-builder - list-expander
skills/list-expander - list-quality-scorecard
skills/list-quality-scorecard - perfect-company-list
skills/perfect-company-list - personalization-subagent-pattern
skills/personalization-subagent-pattern - clay-playbooks
skills/playbooks/clay-playbooks - playbook-ad-library
skills/playbooks/playbook-ad-library - playbook-ai-specificity
skills/playbooks/playbook-ai-specificity - playbook-case-study-page
skills/playbooks/playbook-case-study-page - playbook-company-name-cleaning
skills/playbooks/playbook-company-name-cleaning - playbook-creative-ideas
skills/playbooks/playbook-creative-ideas - playbook-first-name-cleaning
skills/playbooks/playbook-first-name-cleaning - playbook-fundraising
skills/playbooks/playbook-fundraising - playbook-google-site-search
skills/playbooks/playbook-google-site-search - playbook-hiring-surge
skills/playbooks/playbook-hiring-surge - playbook-job-posting-language
skills/playbooks/playbook-job-posting-language - playbook-linkedin-engagement
skills/playbooks/playbook-linkedin-engagement - playbook-lookalikes
skills/playbooks/playbook-lookalikes - playbook-name-to-other-prospects
skills/playbooks/playbook-name-to-other-prospects - playbook-new-in-role
skills/playbooks/playbook-new-in-role - playbook-pricing-page
skills/playbooks/playbook-pricing-page - playbook-social-link-finding
skills/playbooks/playbook-social-link-finding - playbook-social-posts
skills/playbooks/playbook-social-posts - playbook-tech-on-website
skills/playbooks/playbook-tech-on-website - playbook-warm-intros
skills/playbooks/playbook-warm-intros - positive-reply-scoring
skills/positive-reply-scoring - prospeo-full-export
skills/prospeo-full-export - prospeo-search-api
skills/prospeo-search-api - smartlead-api
skills/smartlead-api - smartlead-campaign-upload-public
skills/smartlead-campaign-upload-public - smartlead-inbox-manager
skills/smartlead-inbox-manager - smartlead-spintax
skills/smartlead-spintax - spam-word-checker
skills/spam-word-checker - zapmail-domain-setup-public
skills/zapmail-domain-setup-public
How it works
auto-research-public
When your agent uses it
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their website, generates an ICP with Claude, pulls matching leads via Prospeo, enriches emails + company descriptions, personalizes each lead with parallel Claude Code Task sub-agents (A/B/C variants), and uploads as a live Smartlead campaign. Uses local JSON files for state (no database required). Use for automated daily campaign launches after you have an initial `client-profile.yaml` from /icp-onboarding. Triggers on "auto-research", "launch an automated campaign", "daily campaign", "run the research loop".
What it loads into context
Frontmatter
132 tokensAlways available to the agent
SKILL.md
3,021 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What you get
- Prerequisites
- The orchestration (Claude Code runs this)
- Running the full loop
- Daily / scheduled runs
- State files (local JSON, no database)
- Inbox assignment (no Supabase)
- Common issues
- Cost per run
- Scripts
- References
- What to do next
- Related skills
Scripts executed separately
scripts/phase-enrich.tsscripts/phase-prospeo.tsscripts/phase-scrape.tsscripts/phase-upload.ts
Files
SKILL.mdcore11,656 bytesSKILL.mdcore11,656 bytesSKILL.mdcore11,656 bytesSKILL.mdcore11,656 bytesSKILL.mdcore11,656 bytesscripts/phase-enrich.tsruns6,612 bytesscripts/phase-prospeo.tsruns3,892 bytesscripts/phase-scrape.tsruns2,549 bytesscripts/phase-upload.tsruns9,195 bytes
Read SKILL.md
# Auto Research (Public)
Automated end-to-end campaign launcher. Feed it one target company domain, get back a live Smartlead campaign with per-lead personalization — in about 20 minutes.
This is the beginner-friendly version of the GEX internal `auto-research-v2`. All state lives in local JSON files; no Supabase, no Trigger.dev.
## What you get
- **Input:** one target company domain + your `client-profile.yaml`
- **Output:** a running Smartlead campaign with:
- 200-1,000 leads (depending on targeting tightness)
- Per-lead personalization: 9 custom variables (situation, value, CTA × 3 variants)
- A/B/C subject + body variants tested in parallel
- Campaign assigned to your available inboxesView the complete source on GitHubblitz-list-builder
When your agent uses it
Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains. Best for SMB owner-finding, domain-to-people lookup, or supplementing Prospeo results. Outputs a CSV you can feed to the /list-builder Phase 5 or directly to /cold-email-starter-kit for Smartlead upload. Use when your targeting is company-first (not title-first).
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
1,974 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use Blitz vs Prospeo
- Prerequisites
- Inputs
- Outputs
- Usage
- API overview
- Rate limiting
- Hit rate expectations
- Title filtering — write specific keywords
- Common gotchas
- Required step: Qualify with /icp-prompt-builder
- Cost
- Output → next step
- Scripts
- What to do next
- Related skills
Scripts executed separately
scripts/find-contacts.ts
Files
SKILL.mdcore7,867 bytesSKILL.mdcore7,867 bytesSKILL.mdcore7,867 bytesSKILL.mdcore7,867 bytesscripts/find-contacts.tsruns6,005 bytes
Read SKILL.md
# Blitz List Builder
Prospeo is title-first: "all VPs of Marketing in B2B SaaS." Blitz is domain-first: "for each of these 500 restaurant domains, find the owner."
If you already know the target companies (from Google Maps, a CSV of competitors, or a manually-curated list), Blitz finds the people for you.
## When to use Blitz vs Prospeo
| Your situation | Use |
|---|---|
| "I have 5,000 domains, find the owners" | Blitz |
| "Find all CFOs at US SaaS companies 100-500 employees" | Prospeo |
| "I need to supplement Prospeo results with additional contacts at the same companies" | Blitz |
| "I want the widest net possible in a vertical" | Prospeo |View the complete source on GitHubcampaign-copywriting
When your agent uses it
Creates cold email copy through a stepwise confirmation process. Use when writing email campaigns, given a campaign strategy document, website, or client context. Confirms direction at each step before outputting final copy.
What it loads into context
Frontmatter
49 tokensAlways available to the agent
SKILL.md
7,419 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How This Skill Works
- Input Sources
- Step 1: Confirm Campaign Direction
- Step 2: Confirm Subject Line + First Line Strategy
- Step 3: Confirm Body Structure
- Step 4: Output Final Copy
- Philosophy
- Hard Rules (Never Break These)
- AI Personalization Decision Framework
- The "3 Offers" Framework
- Variable Schema
- Email Structure
- Subject Line Strategy
- Opener Patterns ("Poke the Bear")
- CTA Patterns
- Creative Ideas Campaign
- Philosophy
- Email 1 (Day 0)
- Email 2 (Day 3-4) - Threaded
- Email 3 (Day 7-8) - New Thread
- Email 4 (Day 11-12) - Final Email
- Value Prop Rotation Example
- Banned Phrases (Delete These)
- Checklist
- How to Make Emails Punchier
- Scoring Rubric (0-100)
- Final Reminders
- What to do next
- Related skills
Files
SKILL.mdcore30,210 bytes
Read SKILL.md
# Campaign Copywriting Skill
You are a cold email copywriter. Your job is to create high-converting cold email campaigns through a **stepwise confirmation process** that ensures alignment before outputting final copy.
## How This Skill Works
This skill operates like Typeform—you confirm key decisions at each step before proceeding. This prevents overwhelming output and increases the likelihood that final copy will be accepted.
**The 4-Step Flow:**
1. **Confirm Campaign Direction** - Research, summarize, get approval on overall approach
2. **Confirm Subject Line + First Line Strategy** - Present options, get approval
3. **Confirm Body Structure** - Value prop, case study, AI variables, CTA style
4. **Output Final Copy** - All variants, follow-ups, ready to paste
View the complete source on GitHubcampaign-strategy
When your agent uses it
Generates 15-25+ cold outbound campaign ideas with targeting strategies, AI personalization approaches, and value propositions. Use when planning campaign experiments for a client, given their website or business context.
What it loads into context
Frontmatter
46 tokensAlways available to the agent
SKILL.md
4,893 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Philosophy
- Input Requirements
- The "Manual Research" Test
- AI Strategy Principles
- Required Campaign Types
- Creative Stretch Campaigns
- Output Format
- Example Output Structure
- Quality Checklist
- Output Location
- What to do next
- Related skills
Files
SKILL.mdcore22,151 bytes
Read SKILL.md
# Campaign Strategy Skill
You are a cold outbound campaign strategist. Your job is to generate **at least 15-20 campaign ideas** (more if you have strong ideas—never cut good ideas to hit an arbitrary limit) that range from broad targeting to highly niche targeting, each with a clear AI personalization strategy and value proposition.
## Core Philosophy
Every campaign has two levers:
1. **The List** - Who we're reaching out to (broad → niche)
2. **The Message** - What value proposition we're leading with
The deeper and more focused the list, the more the messaging should relate to that specific list. Broad lists require AI-generated personalization to feel relevant. Niche lists can reference the filtering criteria directly.
### Value Proposition Categories
View the complete source on GitHubcold-email-kickoff
When your agent uses it
Single "start here" orchestrator for new cold email operators. Asks infrastructure-status questions first, then runs /icp-onboarding → /lead-magnet-brainstorm → /campaign-strategy in sequence, producing a consolidated campaign-plan.md. Ends with an interactive menu of next skills branched on whether the user already has domains/inboxes. Use as the very first invocation on any new repo checkout or when onboarding someone to cold email from zero.
What it loads into context
Frontmatter
101 tokensAlways available to the agent
SKILL.md
1,950 tokensWhen the skill is activated
Reference documents
1,932 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- What this skill produces
- Flow
- Safeguards
- Why this skill exists
- What to do next
- Related skills
- References
Files
SKILL.mdcore7,770 bytesreferences/example-campaign-plans/agency.mddoc2,724 bytesreferences/example-campaign-plans/b2b-saas.mddoc2,410 bytesreferences/example-campaign-plans/smb-restaurant.mddoc2,612 bytes
Read SKILL.md
# Cold Email Kickoff
The single entry point for a fresh user. Replaces "stare at 29 skills and guess which to run first."
## When to use
- First-time cold email operator on this repo
- New client/business being onboarded (fresh `profiles/<slug>/` directory)
- Experienced operator starting a new campaign for a new business
- Anyone who asks "where do I start?"
## What this skill produces
- A populated `profiles/<business-slug>/client-profile.yaml` (from `/icp-onboarding`)View the complete source on GitHubcold-email-starter-kit
When your agent uses it
Complete beginner-friendly cold email toolkit. Walks from zero to launched campaign — domain purchase, inbox setup, list building, copywriting, enrichment, and sending via Smartlead or Instantly. Use when setting up cold email for the first time, launching a new campaign, teaching someone cold email, or when you need an end-to-end guide that bundles strategy, copy, infrastructure, and API references in one place.
What it loads into context
Frontmatter
93 tokensAlways available to the agent
SKILL.md
3,234 tokensWhen the skill is activated
Reference documents
47,123 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What you'll build
- The end-to-end flow
- Before you start: prerequisites
- Recommended entry point: /cold-email-kickoff
- One-hour quick start
- Fast path — skip manual juggling once you've done it once
- Reading order (for understanding)
- Decision tree — where am I and what do I read?
- Choose your sending platform: Smartlead vs Instantly
- Eric-proven defaults for your first campaign
- Common beginner mistakes (avoid these)
- When something breaks
- Next steps after your first campaign
- Scripts included
- Getting help
- A note on ethics
- What to do next
Scripts executed separately
scripts/_lib.tsscripts/dynadot-bulk-purchase.tsscripts/dynadot-generate-domains.tsscripts/enrichments/ai-company-analysis.tsscripts/enrichments/company-news.tsscripts/enrichments/company-phone.tsscripts/enrichments/linkedin-profile.tsscripts/instantly-add-leads.tsscripts/instantly-create-campaign.tsscripts/instantly-pull-analytics.tsscripts/prospeo-full-export.tsscripts/setup-env.shscripts/smartlead-add-leads.tsscripts/smartlead-create-campaign.tsscripts/smartlead-pull-analytics.tsscripts/verify-credentials.tsscripts/zapmail-full-setup.ts
Files
.env.exampleasset913 bytesSKILL.mdcore12,778 bytesreferences/00-getting-started.mddoc6,563 bytesreferences/01-deliverability-fundamentals.mddoc7,814 bytesreferences/02-campaign-strategy.mddoc20,447 bytesreferences/03-campaign-copywriting.mddoc27,870 bytesreferences/04-sequence-structure.mddoc7,083 bytesreferences/05-domain-and-inbox-setup.mddoc15,209 bytesreferences/06-list-building-prospeo.mddoc27,533 bytesreferences/07-enrichment-library.mddoc8,034 bytesreferences/08-smartlead-api.mddoc7,367 bytesreferences/09-instantly-api.mddoc17,513 bytesreferences/10-reply-handling.mddoc7,019 bytesreferences/11-legal-compliance.mddoc7,784 bytesreferences/12-launch-checklist.mddoc5,475 bytesreferences/13-troubleshooting.mddoc7,662 bytesreferences/14-60-minute-tutorial.mddoc9,431 bytesscripts/_lib.tsruns7,981 bytesscripts/dynadot-bulk-purchase.tsruns3,566 bytesscripts/dynadot-generate-domains.tsruns4,073 bytesscripts/enrichments/ai-company-analysis.tsruns3,213 bytesscripts/enrichments/company-news.tsruns3,510 bytesscripts/enrichments/company-phone.tsruns2,016 bytesscripts/enrichments/linkedin-profile.tsruns2,322 bytesscripts/instantly-add-leads.tsruns2,318 bytesscripts/instantly-create-campaign.tsruns4,297 bytesscripts/instantly-pull-analytics.tsruns2,116 bytesscripts/prospeo-full-export.tsruns6,152 bytesscripts/setup-env.shruns1,062 bytesscripts/smartlead-add-leads.tsruns2,430 bytesscripts/smartlead-create-campaign.tsruns4,935 bytesscripts/smartlead-pull-analytics.tsruns2,370 bytesscripts/verify-credentials.tsruns5,068 bytesscripts/zapmail-full-setup.tsruns9,078 bytes
Read SKILL.md
# Cold Email Starter Kit
A complete system for running cold email. Follow it top-to-bottom and you will have purchased domains, created warmed inboxes, built a lead list, written a campaign, and sent your first emails. Designed for beginners — no prior cold email experience required.
---
## What you'll build
By the end of the flow you'll have:
- 10-20 throwaway sending domains purchased on Dynadot
- 20-40 warmed sending inboxes on Zapmail
- A 2,000-person lead list from Prospeo
- A 4-step email sequence with variants and personalization
- A live campaign in Smartlead or Instantly sending dailyView the complete source on GitHubcold-email-weekly-rhythm
When your agent uses it
Operational playbook for running cold email continuously. Prescribes what to do on Monday / Wednesday / Friday / biweekly / monthly / quarterly. Use this as your ongoing cadence once your first campaign is live. What separates hobbyist from top 1% operators isn't tooling — it's consistency. This skill is the schedule.
What it loads into context
Frontmatter
74 tokensAlways available to the agent
SKILL.md
2,238 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 (required before using this skill): Put the rhythm on your calendar
- Monday — Deliverability audit (15 min)
- Wednesday — Positive-reply sweep (30-60 min depending on volume)
- Friday — Campaign retrospectives (20 min per campaign)
- Every other Monday — Inbox lifecycle (30 min)
- Monthly (1st of the month) — Spam placement test (25 min active, test runs ~20 min)
- Quarterly (first Monday of each quarter) — Experiment review (90 min)
- What to skip
- What to do next
- Related skills
Files
SKILL.mdcore9,434 bytesSKILL.mdcore9,434 bytesSKILL.mdcore9,434 bytesSKILL.mdcore9,434 bytesSKILL.mdcore9,434 bytesSKILL.mdcore9,434 bytes
Read SKILL.md
# Cold Email Weekly Rhythm
Having 29 cold email skills doesn't help if you don't run them on a schedule. This is that schedule.
**This is a pure playbook.** No scripts, no automatic reminders. You put the rhythm on your own calendar (Step 1 below) and run the prescribed skill at the prescribed time. That's the entire system.
---
## Step 1 (required before using this skill): Put the rhythm on your calendar
Open Google Calendar / Outlook / Apple Reminders / whatever you actually look at every day. Create these as recurring events. Copy the titles and cadences exactly.
| Event title | Cadence |
|---|---|View the complete source on GitHubcompetitor-engagers
When your agent uses it
Find people actively engaging with competitor LinkedIn posts. Given a website URL, discovers competitors, fetches their company and employee posts, collects all commenters and reactors, and outputs a deduplicated CSV of engaged prospects. Use when someone wants to find leads from competitor engagement, build outreach lists from LinkedIn activity, or analyze who interacts with competitor content.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
1,077 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Required step: Qualify with /icp-prompt-builder (do not skip)
- Setup (First Time Only)
- Steps
- CLI Reference
- Notes
- What to do next
- Related skills
Files
SKILL.mdcore4,645 bytesSKILL.mdcore4,645 bytesSKILL.mdcore4,645 bytesSKILL.mdcore4,645 bytesSKILL.mdcore4,645 bytes
Read SKILL.md
# Competitor Engagers
Finds people who are actively engaging with your competitors on LinkedIn — the highest-intent prospects for cold outreach.
## Required step: Qualify with /icp-prompt-builder (do not skip)
After collecting the engager CSV, sample ~50 rows and run `/icp-prompt-builder` before scaling further. LinkedIn engagement alone doesn't guarantee ICP fit — someone who reacted to a competitor's post might be a peer, a candidate, a student, or an actual buyer. Qualifying filters separates them.
**Why required:** unfiltered engager lists typically have 30-50% non-ICP rows (fans, peers, recruiters, students). Running `/icp-prompt-builder` on a 50-row sample, tuning the qualification prompt, then applying it to the full list cuts wasted enrichment + send costs. Takes 10-15 min.
## Setup (First Time Only)
Before running, ensure these environment variables are set in `~/.env`:
View the complete source on GitHubdeliverability-incident-response
When your agent uses it
Triage playbook for when cold email deliverability breaks. Decision-tree guidance for "I landed in spam", "bounce rate spiked", "domain blacklisted", "inbox blocked in warmup", "reply rate dropped". Tells you what to check first, what to fix, and how long the fix takes. Pair with /email-deliverability-audit for diagnosis.
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
3,668 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The five incident types
- Decision tree: "my reply rate dropped"
- Decision tree: "bounce rate spiked"
- Decision tree: "domain blacklisted"
- Decision tree: "inbox blocked in warmup"
- Decision tree: "Gmail marking as promotional"
- The 72-hour "total failure" checklist
- When to call in experts
- What to do next
- Related skills
- The 1% rule sanity check
Files
SKILL.mdcore14,156 bytesSKILL.mdcore14,156 bytes
Read SKILL.md
# Deliverability Incident Response
Things break. When they do, you need a playbook — not panic. This skill is the triage decision tree.
## The five incident types
| Symptom | Most likely cause | First action | Fix time |
|---|---|---|---|
| Reply rate dropped sharply | Deliverability — emails in spam | Run spam placement test | 1-14 days |
| Bounce rate spiked >3% | Bad list OR domain reputation | Check bounce types | 1-3 days |
| Domain blacklisted | Shared IP bad actor OR your domain got flagged | Check blacklists, rotate if needed | 7-30 days |
| Inbox blocked in warmup | Warmup network flagged sending patterns | Pause, investigate, maybe replace | 1-7 days |
| Gmail marking as promotional | Content triggers (links, images, HTML) | Simplify content | 1-3 days |
View the complete source on GitHubdeliverability-test-public
When your agent uses it
Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account. Use when you want to know "which inbox type delivers best" or when debugging unexplained deliverability differences across a mixed fleet. Operates via Smartlead API only (no database required).
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
1,024 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- What you need
- Steps
- Output
- How it works
- Common gotchas
- What to do next
- Related skills
- Scripts
Scripts executed separately
scripts/inbox-type-compare.ts
Files
SKILL.mdcore4,100 bytesSKILL.mdcore4,100 bytesscripts/inbox-type-compare.tsruns7,395 bytes
Read SKILL.md
# Deliverability Test — Inbox Type Comparison
Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP, Gmail / G Suite, Outlook / Office365) across your Smartlead account. Use it to answer "are my Gmail inboxes performing better than my SMTP ones?" or "why is one inbox type bouncing more than the others?"
## Why this exists
Different inbox types have different deliverability characteristics:
- **Gmail / G Suite** — highest trust, fewest bounces, often best reply rates
- **Office365** — good reputation, but stricter spam filtering
- **SMTP** (Zapmail, Maildoso, Mailforge, custom) — varies wildly by provider, often has higher bounces in the first 30 days of domain life
If your campaigns mix inbox types, this skill shows which type is earning its keep.
## What you needView the complete source on GitHubdisco-like
When your agent uses it
Find lookalike companies via DiscoLike's 65M+ business domain database. Search by seed domains ("find companies like clay.com and apollo.io") or natural-language ICP text ("B2B cold email outreach"). Supports negation domains (exclude competitors/existing customers) and country filtering. Use when you already know 3-10 reference companies and want hundreds more that look like them. Outputs CSV ready for /blitz-list-builder or the email waterfall.
What it loads into context
Frontmatter
101 tokensAlways available to the agent
SKILL.md
1,745 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- When NOT to use
- Two search modes
- Negation (exclude existing customers / competitors)
- Inputs
- Outputs
- Cost
- Required step: Qualify with /icp-prompt-builder
- Recommended flow
- API details (reference)
- Common gotchas
- Scripts
- What to do next
- Related skills
Scripts executed separately
scripts/discover.ts
Files
SKILL.mdcore6,868 bytesSKILL.mdcore6,868 bytesSKILL.mdcore6,868 bytesSKILL.mdcore6,868 bytesSKILL.mdcore6,868 bytesscripts/discover.tsruns5,552 bytes
Read SKILL.md
# Disco-Like
Lookalike company discovery. Give it 3-10 seed domains you know are a good fit; it returns hundreds of similar companies by domain, industry, and business characteristics. Useful for expanding from a small known-good list to a much bigger TAM without manual research.
## When to use
- You have 3-10 customer domains you love, want "more like these"
- You want to expand a small client list into a full TAM
- You have an ICP description but don't want to manually build Prospeo filters
- Competitive / adjacent-market expansion
## When NOT to use
- You need PEOPLE, not companies (use Prospeo or Blitz after this)View the complete source on GitHubemail-deliverability-audit
When your agent uses it
Diagnostic audit for a running cold email program. Checks domain authentication (SPF/DKIM/DMARC), inbox health/reputation from Smartlead, bounce rate by inbox type, and optionally runs a spam placement test via Smartlead's Smart Delivery API. Outputs markdown report + CSV with per-domain/per-inbox scores and concrete action items. Use when reply rates drop, when bounces spike, when onboarding someone else's account, or as a weekly/monthly health check.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
3,588 tokensWhen the skill is activated
Reference documents
1,580 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What it checks
- The 1% rule — and the floors that gate it
- When to use
- Inputs
- Steps
- Interpreting the numbers
- Common root causes
- What to do next
- Related skills
- Scripts
- References
Scripts executed separately
scripts/audit-inboxes.tsscripts/audit-performance.tsscripts/check-domain-auth.tsscripts/run-spam-test.ts
Files
SKILL.mdcore13,926 bytesSKILL.mdcore13,926 bytesSKILL.mdcore13,926 bytesSKILL.mdcore13,926 bytesSKILL.mdcore13,926 bytesSKILL.mdcore13,926 bytesreferences/dns-records.mddoc5,996 bytesscripts/audit-inboxes.tsruns3,533 bytesscripts/audit-performance.tsruns11,223 bytesscripts/check-domain-auth.tsruns6,936 bytesscripts/run-spam-test.tsruns6,207 bytes
Read SKILL.md
# Email Deliverability Audit
**If your positive reply rate is dropping and you don't know why, start here.** Most of the time the problem is deliverability — your emails aren't reaching inboxes. This skill tells you what's broken.
## What it checks
| Layer | What | How |
|---|---|---|
| DNS auth | SPF, DKIM, DMARC present on each sending domain | `dig` commands |
| Inbox health | Warmup status, reputation, blocks, connection failures | Smartlead email-accounts API |
| Volume health | Daily sent trending, capacity utilization | Smartlead analytics |
| Send + reply rate per inbox | Sent count, reply count, reply rate % over lookback period | Smartlead campaign analytics |
| Bounce rate | Per-inbox and per-domain bounce rate over last 30 days | Smartlead campaign analytics |
| Spam placement | Real inbox-vs-spam test via Smartlead Smart Delivery | optional |View the complete source on GitHubexperiment-design
When your agent uses it
Framework for running single-variable cold email experiments. Defines experiment types (list-only, copy-only, combined), confidence weighting, minimum sample sizes, and success criteria. Use when the user wants to improve a campaign, test a new list vs old one, or compare copy variants. Prevents the
What it loads into context
Frontmatter
84 tokensAlways available to the agent
SKILL.md
2,395 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- The three experiment types
- The Framework
- What NOT to experiment on (at first)
- Common mistakes
- Output: experiment plan file
- References
- What to do next
- Related skills
Files
SKILL.mdcore10,032 bytes
Read SKILL.md
# Experiment Design
If you change your list, your copy, and your offer at the same time, you learn nothing. This skill forces you to isolate one variable per experiment so you actually learn what's working.
## Why this exists
Most cold email operators run "throw-everything" experiments. Campaign 1 gets a new list, new copy, and a new offer. It works better. They declare victory. But they can't tell you WHY — was it the list? The copy? The offer?
Then campaign 2 changes all three again. Regression. Nobody knows why.
This skill is the antidote: plan each experiment around ONE variable, keep everything else constant, and confidence-weight the results.
## The three experiment types
View the complete source on GitHubgoogle-maps-list-builder
When your agent uses it
Scrape Google Maps for local businesses by category and location, output CSV ready for cold email enrichment. Best for SMB campaigns targeting restaurants, clinics, gyms, salons, contractors, etc. Uses RapidAPI Maps Data API. Output feeds directly into /blitz-list-builder (to find owner contacts) or //list-builder Phase 5 (if you have names already).
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
6,499 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How this fits in the cold email flow
- Required step: Qualify with /icp-prompt-builder
- What You Need Before Starting
- Project Setup
- File Structure
- Bundled Zip Code Database
- Core Files
- Running It
- Deploying as a Web App (Optional)
- API Reference
- Tips
- What to do next
- Related skills
Files
SKILL.mdcore24,685 bytesSKILL.mdcore24,685 bytesSKILL.mdcore24,685 bytesSKILL.mdcore24,685 bytesSKILL.mdcore24,685 bytesSKILL.mdcore24,685 bytes
Read SKILL.md
# Google Maps List Builder
A self-contained tool for scraping business listings from Google Maps. Give it a search query (e.g., "pizza restaurant") and a location (zip code, city, or coordinates), and it returns structured data for every matching business — written to CSV.
## How this fits in the cold email flow
Google Maps gives you COMPANIES (name, domain, phone, address, ratings). It does NOT give you PEOPLE. To run cold email:
1. Run this skill → CSV of businesses with `company_domain`
2. **Run `/icp-prompt-builder` on a sample of 50** — tune a qualification prompt to filter out bad fits before paying for downstream enrichment
3. Run `/blitz-list-builder` with the filtered CSV → adds owners/managers to each business
4. Run `/list-builder` (Phase 5, emails) → fills in missing emails
5. Run `/cold-email-starter-kit`'s `smartlead-add-leads.ts` → upload to Smartlead
View the complete source on GitHubicp-onboarding
When your agent uses it
Conversational intake for cold email campaigns. Interviews the user about their business, ICP (Ideal Customer Profile), offer, lead magnets, and hard vs soft filters. Outputs a structured `client-profile.yaml` that every other skill in the repo reads from. Use at the very start of a new campaign or when onboarding a new business. Triggers on "onboard me", "set up my ICP", "new client", "new business intake", "help me define my ICP".
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
1,947 tokensWhen the skill is activated
Reference documents
1,728 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- Inputs
- Outputs
- Steps
- Common gotchas
- What to do next
- Files
Scripts executed separately
scripts/scrape-website.ts
Files
SKILL.mdcore7,746 bytesSKILL.mdcore7,746 bytesreferences/prospeo-industries.mddoc8,809 bytesscripts/scrape-website.tsruns2,716 bytes
Read SKILL.md
# ICP Onboarding
Conversational intake. The user arrives with a business; this skill produces a `client-profile.yaml` every other skill in the repo consumes. Without it, downstream skills guess at targeting and write generic copy.
## Why this exists
Most cold email fails because the sender didn't define the ICP tightly enough. "B2B SaaS founders" is not an ICP. "VP of RevOps at 50-500 person B2B SaaS companies in the US that raised Series B in the last 12 months" is an ICP — you can put it into Prospeo and get a list.
This skill forces that precision up front. It also separates **hard filters** (must match) from **soft preferences** (nice-to-have), because the #1 mistake beginners make is treating every ICP criterion as required, ending up with a list of 200 leads instead of 5,000.
## Inputs
Either:
- **Website URL** of the user's business (skill will scrape + infer a lot)View the complete source on GitHubicp-prompt-builder
When your agent uses it
Interactive loop that builds and tunes an AI prompt for evaluating whether a company fits a client's ICP. Run after any list-building skill (disco-like, blitz-list-builder, google-maps-list-builder, prospeo-full-export) to qualify companies before scaling. Iterates batches of 10 companies with user feedback, stops when 2 consecutive rounds have zero corrections, saves the final prompt for reuse. Always uses Claude Code Task sub-agents — never an external API key.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
2,181 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- Always uses Task sub-agents (no API key)
- The loop (8 steps)
- Approval-loop rules (important)
- Using the tuned prompt at scale
- Recommended flow
- Data points the prompt can use
- Common mistakes
- Scripts
- What to do next
- Related skills
Files
SKILL.mdcore9,012 bytesSKILL.mdcore9,012 bytes
Read SKILL.md
# ICP Prompt Builder
Before you pay to pull 5,000 companies, tune a qualification prompt on 10-50 of them. This skill walks you through the iterative loop.
## Why this exists
List-builder skills (DiscoLike, Blitz, Prospeo, Google Maps) return COMPANIES, but they don't know whether those companies match your ICP. If your list-builder returns 5,000 companies and 80% are wrong fits, you'll waste money enriching them for emails that go nowhere.
The fix: build an AI qualification prompt BEFORE scaling. Pull 10 companies, have the prompt score them, compare to your judgment, refine, repeat. Once the prompt agrees with you 2 rounds in a row with zero corrections, lock it in and apply it at scale.
## Always uses Task sub-agents (no API key)
This skill runs entirely inside Claude Code via the Task tool. No Anthropic SDK calls, no OpenAI calls — Claude Code does the scoring itself. This is intentional:
View the complete source on GitHubinbox-lifecycle-manager
When your agent uses it
The weekly keep/cancel/promote/buy loop for a cold email sending fleet. Decides which domains are burned and should be cancelled, which warmed reserves to promote into campaigns, which capacity to demote, and how many new domains to buy — using measured reply, bounce, age and send-volume floors instead of gut feel. Use when asked "which inboxes should I cancel", "what should I replace this week", "my fleet costs too much", "I'm under my send goal", or as the Friday hygiene routine.
What it loads into context
Frontmatter
115 tokensAlways available to the agent
SKILL.md
5,000 tokensWhen the skill is activated
Reference documents
2,937 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- The status model
- Sample-size floors — the rule that is broken most often
- The decision ladder
- Capacity and the buy plan
- Spend math — is this domain worth its subscription?
- The weekly loop
- Cancellation rules (the part that costs real money)
- Failure modes
- What to do next
- Related skills
- Scripts
- References
Scripts executed separately
scripts/_lib.tsscripts/apply-lifecycle.tsscripts/plan-lifecycle.ts
Files
SKILL.mdcore20,236 bytesSKILL.mdcore20,236 bytesSKILL.mdcore20,236 bytesreferences/cancellation-safety.mddoc4,653 bytesreferences/decision-ladder.mddoc7,396 bytesscripts/_lib.tsruns11,169 bytesscripts/apply-lifecycle.tsruns4,662 bytesscripts/plan-lifecycle.tsruns15,918 bytes
Read SKILL.md
# Inbox Lifecycle Manager
**Diagnosis tells you a domain is sick. This skill decides whether it dies.**
Every cold email fleet leaks money in two directions at once: you keep paying for burned domains
that will never reply again, and you run under your send goal because nobody promoted the warmed
reserves sitting idle. This is the weekly loop that fixes both, with an approval gate in the
middle so nothing gets cancelled on a hunch.
**Read-only by default.** The plan step writes nothing, anywhere. Only the apply step, run after
an explicit human "yes", changes a tag, a campaign, or a provider subscription.
## When to use
View the complete source on GitHublead-magnet-brainstorm
When your agent uses it
Helps the user come up with free lead magnets or hooks to offer in cold emails. Asks about their business, what they can legally give away, and what would be genuinely valuable to their ICP. Returns 5-10 concrete offer ideas with example CTA phrasings. Use when the user says their campaign "needs a hook", "needs an offer", "what can I give away", or when ICP onboarding flagged a missing lead magnet.
What it loads into context
Frontmatter
100 tokensAlways available to the agent
SKILL.md
1,852 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- When to use
- Steps
- Common mistakes
- What to do next
Files
SKILL.mdcore7,327 bytes
Read SKILL.md
# Lead Magnet Brainstorm
Cold emails with a concrete free offer outperform "book a call" asks by 3-10x. This skill helps the user find an offer they can actually deliver.
## Why this exists
Most cold emails fail the "why should I reply?" test. The answer "because you might need our product" is not compelling. The answer "because we'll send you a free audit that'll save you money whether or not you buy from us" is.
A good lead magnet is:
1. **Cheap to deliver at scale** (ideally automated)
2. **Genuinely valuable to the prospect** (they'd pay for it, or it saves them obvious time/money)
3. **Demonstrates your competence** (so buying becomes the natural next step)
## When to useView the complete source on GitHublist-builder
When your agent uses it
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).
What it loads into context
Frontmatter
153 tokensAlways available to the agent
SKILL.md
4,760 tokensWhen the skill is activated
Reference documents
1,781 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- ⚡ OPERATE VIA THE RUNBOOK
- Requirements / env
- Hard rules
- Phase 0 — Intake (ask ALL of this up front, one message)
- THE EXHAUSTIVE-SWEEP LAW (this is the point of the skill)
- Phase 1 — Discovery (cast every net in parallel)
- Phase 2 — Qualify + verify (greedy discovery is safe because of this layer)
- Phase 3 — Snowball until dry (the "largest possible list" guarantee)
- Phase 4 — Contacts (uncapped, cost-ordered)
- Phase 5 — Emails
- Phase 6 — Deliver
- Automation hardening (2026-07-14)
- Ops notes
Scripts executed separately
scripts/classify-batch.tsscripts/contacts-merge.tsscripts/contacts.tsscripts/enrich-domains.tsscripts/fleet.tsscripts/getleads-client.tsscripts/make-judge.tsscripts/multi-lane-classify.tsscripts/push-sheet.pyscripts/registry.tsscripts/reject-audit.tsscripts/run-lane.tsscripts/snowball.tsscripts/solo-teampage.ts
Files
RUNBOOK.mddoc5,446 bytesSKILL.mdcore18,832 bytesSKILL.mdcore18,832 bytesSKILL.mdcore18,832 bytesSKILL.mdcore18,832 bytesprompts/_TEMPLATE.mddoc1,550 bytesreferences/registry-schema.sqlasset1,570 bytesscripts/classify-batch.tsruns4,605 bytesscripts/contacts-merge.tsruns5,326 bytesscripts/contacts.tsruns14,384 bytesscripts/enrich-domains.tsruns4,065 bytesscripts/fleet.tsruns4,693 bytesscripts/getleads-client.tsruns7,260 bytesscripts/make-judge.tsruns2,260 bytesscripts/multi-lane-classify.tsruns8,761 bytesscripts/push-sheet.pyruns2,419 bytesscripts/registry.tsruns7,217 bytesscripts/reject-audit.tsruns7,698 bytesscripts/run-lane.tsruns30,521 bytesscripts/snowball.tsruns14,338 bytesscripts/solo-teampage.tsruns6,990 bytes
Read SKILL.md
# 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
```View the complete source on GitHublist-expander
When your agent uses it
Expand a hard-to-build niche list from ~10 known-good seed companies into a full qualified TAM. Seed fingerprinting (how do good-fit companies ACTUALLY show up in the company database's filters) → lookalike generation (Prospeo company_lookalike, Exa findSimilar, Parallel.ai entity search) → filter mining with a precision/volume scorecard → wide pull with auto-sharding → cheap-AI qualification → live-website verification → client transparency report. Use when a vertical list feels "too small" (medical groups, hedge funds, Medicare brokerages), when known good-fit companies don't show up in keyword searches, or when someone says "expand this list", "the TAM should be bigger", "find more companies like these".
What it loads into context
Frontmatter
162 tokensAlways available to the agent
SKILL.md
2,763 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The problem this solves
- Pipeline (5 phases)
- Requirements / env
- Verified API facts
- Related skills
Scripts executed separately
scripts/contact-count.tsscripts/fingerprint.tsscripts/lib.tsscripts/lookalikes.tsscripts/mine-filters.tsscripts/pull.tsscripts/report.tsscripts/score-batch.tsscripts/verify-website.ts
Files
SKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesSKILL.mdcore10,832 bytesscripts/contact-count.tsruns3,316 bytesscripts/fingerprint.tsruns4,348 bytesscripts/lib.tsruns20,814 bytesscripts/lookalikes.tsruns6,997 bytesscripts/mine-filters.tsruns9,136 bytesscripts/pull.tsruns6,835 bytesscripts/report.tsruns7,735 bytesscripts/score-batch.tsruns8,261 bytesscripts/verify-website.tsruns7,563 bytes
Read SKILL.md
# List Expander — seed companies → lookalikes → mined filters → qualified TAM
## The problem this solves
Niche lists come out tiny because we search databases with narrow explicit keywords, but real
good-fit companies (e.g. Atlantic Medical Group, Hackensack Meridian) often don't carry that
keyword in their database record. Instead of guessing keywords top-down, this skill works
bottom-up: take companies you KNOW fit, discover how the database actually tags them, expand via
lookalike engines, and only then derive the wide-net filters — with measured precision per filter
— before pulling and AI-qualifying at scale.
## Pipeline (5 phases)
All scripts live in `scripts/`, run with `npx tsx`, and are dependency-free (node ≥ 18 nativeView the complete source on GitHublist-quality-scorecard
When your agent uses it
Pre-send quality scorecard for any lead list. Grades duplicate rate, title diversity, bad-title patterns, catch-all domain density, ICP fit, email verification coverage. Outputs a letter grade + action items BEFORE you send. Catches bad lists before they burn inboxes. Run after email enrichment, before Smartlead upload.
What it loads into context
Frontmatter
73 tokensAlways available to the agent
SKILL.md
1,800 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- Inputs
- Output
- Usage
- The 8 dimensions
- Letter grade mapping
- Example output
- When to use
- When NOT to use
- Scripts
- What to do next
- Related skills
- The 1% rule alignment
Scripts executed separately
scripts/score-list.ts
Files
SKILL.mdcore6,640 bytesSKILL.mdcore6,640 bytesscripts/score-list.tsruns10,674 bytes
Read SKILL.md
# List Quality Scorecard
A CSV of 5,000 leads is not the same as a good list of 5,000 leads. This skill grades your list across 8 dimensions BEFORE you send, catching preventable waste.
## Why this exists
The three campaign failure modes cold email runners hit most:
1. **Bad list** — the copy doesn't matter when you're emailing the wrong people
2. **Unverified emails** — bounces burn domain reputation
3. **ICP drift** — you think you're targeting VPs, but the list is mostly Managers
Each of these is catchable before you send, in 5 minutes, for free.
View the complete source on GitHubperfect-company-list
When your agent uses it
Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev or gpt-5-nano), and running a Claygent lookalike loop until it runs dry. The method from the SCULPT 2026 talk "Build the perfect company list". Use when a database filter feels too narrow or too noisy, when someone says "find every company like our customers", "our TAM looks too small", or "why is this list full of junk".
What it loads into context
Frontmatter
127 tokensAlways available to the agent
SKILL.md
1,907 tokensWhen the skill is activated
Reference documents
1,119 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The workflow
- Checking yourself
- Gotchas we hit
- Files
Scripts executed separately
scripts/jev_judge.py
Files
SKILL.mdcore7,633 bytesSKILL.mdcore7,633 bytesSKILL.mdcore7,633 bytesclay-workflow.mddoc4,369 bytesscripts/jev_judge.pyruns3,768 bytes
Read SKILL.md
# Perfect company list
Database filters fail in two directions at once.
- **They miss real fits.** Industry labels are self-reported, or guessed: many LinkedIn company
pages carry the banner "This listing was automatically created by LinkedIn", which means nobody
at the company picked the label. We found an FDIC bank listed as *Construction*, an SEC-registered
wealth manager listed as *Semiconductor Manufacturing*, and a New Jersey school district listed
as *Retail Luxury Goods and Jewelry*.
- **They pull in junk.** A plain `Banking` + `United States` filter returned 16,895 companies. About
10,500 of them were not banks: 3,679 mortgage companies and lenders, 2,414 credit unions, 2,210
dead sites or unrelated businesses (a Toyota dealer, a pawn and gun shop, a youth soccer club),
839 vendors that sell to banks, and the Federal Reserve Bank of St. Louis.
View the complete source on GitHubpersonalization-subagent-pattern
When your agent uses it
Reusable approval-loop pattern for fanning out lead personalization across parallel Claude Code Task sub-agents. Shows the user 1 sample personalization, collects feedback, runs 10 more, approves, runs 10 more — stops when 2 consecutive rounds have zero edits, then scales to the full list. ALWAYS uses Claude Code Task tool sub-agents — never an external Anthropic/OpenAI API key. Use when any skill needs per-lead custom variables (situation lines, value lines, CTAs).
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
2,673 tokensWhen the skill is activated
Reference documents
617 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Always Task tool — never an API key
- The approval loop (before full fan-out)
- When to use
- Don't use this for
- When to use
- Don't use this for
- The pattern
- Approval loop stop rule
- Quality checks
- References
- What to do next
- Related skills
Files
SKILL.mdcore11,118 bytesreferences/prompt-template.mddoc2,415 bytes
Read SKILL.md
# Personalization Sub-Agent Pattern
Cold email personalization at scale requires per-lead generation. Claude Code's Task tool lets you fan out to many sub-agents in parallel, each personalizing a slice of the lead list. This skill defines the reusable approval-loop pattern.
## Always Task tool — never an API key
This skill runs entirely inside Claude Code via the Task tool. No Anthropic SDK calls, no OpenAI calls. This is intentional:
- **No extra API spend.** Uses your Claude Code plan.
- **No key management.** Works out of the box.
- **Parallel by design.** Claude Code spawns multiple Task sub-agents in one message, letting 100 leads finish in the time it takes to personalize 10.
At very large scale (1,000+ leads), the tuned prompt can optionally be shipped to the Anthropic API for throughput. But TUNING and normal campaign runs (under 500 leads) always go through the Task tool.
View the complete source on GitHubclay-playbooks
When your agent uses it
Index and shared harness for the 19 signal playbooks. Each playbook turns one buying signal (new in role, raised a round, hiring surge, pricing page, tech on website, ...) into one copy-ready sentence you can drop into a cold email. Every playbook ships three ways to run it: as a Claude skill, as a Clay table built through a browser harness, and as a Clay workflow built from the clay CLI. Use when someone says "personalize this list", "what signal should I use", "build the Clay column for X", or names any of the 19 signals.
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
2,202 tokensWhen the skill is activated
Reference documents
5,419 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The three run modes
- Status: recipes, not verified builds
- The 19 playbooks
- Cost tags
- Rules that apply to all 19
- What you need
Files
SKILL.mdcore8,699 bytesSKILL.mdcore8,699 bytesSKILL.mdcore8,699 bytesSKILL.mdcore8,699 bytesSKILL.mdcore8,699 bytesclay-cli-harness.mddoc11,027 bytesclay-table-harness.mddoc10,160 bytes
Read SKILL.md
# Clay Playbooks
Nineteen playbooks. Each one answers a single question:
> A campaign needs signal X on every row. What is the cheapest reliable way to get X, and what exact prompt turns X into copy-ready text?
One playbook produces one field. `new_in_role_line`. `funding_line`. `pricing_page_line`. That
field slots into one sentence of email 1. That is the whole product.
## The three run modes
Every playbook directory ships the same three files. They are three delivery mechanisms for the
same recipe, not three different recipes.
View the complete source on GitHubplaybook-ad-library
When your agent uses it
Produces a line about what a company is currently advertising on Facebook and Instagram, from the Meta Ad Library. Triggers on "are they running ads", "what are they advertising", "meta ad library", "facebook ads", "pull their ad copy", "who is spending on paid social". Outputs ad_library_line, a lowercase clause that completes "Noticed <line>."
What it loads into context
Frontmatter
86 tokensAlways available to the agent
SKILL.md
6,267 tokensWhen the skill is activated
Reference documents
5,132 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore25,261 bytesSKILL.mdcore25,261 bytesSKILL.mdcore25,261 bytesclay-table.mddoc8,246 bytesclay-workflow.mddoc10,333 bytes
Read SKILL.md
# Playbook: Meta Ad Library
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the angle depends on the prospect spending money on paid social right now — creative
agencies, UGC shops, CRO and landing-page services, media buyers, attribution and analytics tools,
or anyone selling to ecommerce brands that already advertise.
**Do not use when:** you only need to know a company exists or sells online (`playbook-tech-on-website`),
or you want LinkedIn organic activity (`playbook-linkedin-engagement`). Facebook and Instagram only —
not Google Ads, not TikTok, not LinkedIn ads.
**One-line output:** `ad_library_line = "you are using ai to run outbound campaigns with one command"`
View the complete source on GitHubplaybook-ai-specificity
When your agent uses it
Writes the one sentence that makes a generic offer feel written for this one company. Produces the tail of "I think we can help you ___". Triggers on "specificity line", "make it feel specific to them", "the specifically sentence", "why would they think this is for them", "personalize the offer not the intro". Outputs one lead-level merge field, blank when the company does not fit.
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
4,066 tokensWhen the skill is activated
Reference documents
3,373 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore16,341 bytesSKILL.mdcore16,341 bytesclay-table.mddoc5,764 bytesclay-workflow.mddoc7,068 bytes
Read SKILL.md
# Playbook: AI Specificity Line
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the offer is good but the email reads like it was sent to 5,000 people, and you need one
sentence that names what the client would actually do for **this** company.
**Do not use when:** you want a first line about a person or an event. **Those playbooks personalize
the opener. This one personalizes the offer** — which is a different and usually more durable move.
**One-line output:** `specificity_line = "know the landed cost of every pool float before you price it"`
## 1. Trigger and scope
View the complete source on GitHubplaybook-case-study-page
When your agent uses it
Finds a prospect company's own case-study or customer-stories page and pulls one named customer off it, so email 1 can open with "saw your work with Intercom". Triggers on "case study", "customer stories", "who are their clients", "saw your work with X", "name-drop one of their customers", "logos on their site". Outputs case_study_line, a short clause that finishes the sentence "Saw ...".
What it loads into context
Frontmatter
102 tokensAlways available to the agent
SKILL.md
4,941 tokensWhen the skill is activated
Reference documents
3,978 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore20,095 bytesclay-table.mddoc7,357 bytesclay-workflow.mddoc7,900 bytes
Read SKILL.md
# Playbook: Case-Study Page Name-Drop
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the campaign wants a first line that proves you looked at the prospect's site, and the
prospect publishes customer stories — B2B software, agencies, consultancies, MSPs, staffing,
manufacturers with named clients.
**Do not use when:** you want a tech detail (`playbook-tech-on-website`), their pricing model
(`playbook-pricing-page`), or an ad they are running (`playbook-ad-library`).
**One-line output:** `case_study_line = "your work with Intercom on outbound pipeline"`, rendering as
`Saw your work with Intercom on outbound pipeline.`
View the complete source on GitHubplaybook-company-name-cleaning
When your agent uses it
Turns the raw company-name string on a lead row into the short human form a person would say out loud, so it can be dropped into email copy. Triggers on "clean these company names", "company name variable", "strip the LLC and Inc", "the company names look robotic", "normalize company names for the campaign". Outputs company_clean, one short string per row.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
6,064 tokensWhen the skill is activated
Reference documents
3,000 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0. Read this first: the AI prompt is a toggle, not the default
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt (the TOGGLE path only)
- 7. Edge cases and failure modes
Files
SKILL.mdcore24,005 bytesSKILL.mdcore24,005 bytesclay-table.mddoc5,212 bytesclay-workflow.mddoc6,365 bytes
Read SKILL.md
# Playbook: Company Name Cleaning
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
## 0. Read this first: the AI prompt is a toggle, not the default
Clay ships a free, deterministic `Normalize Company Name` action (`titleCase: true`). **That is
the default and it stays the default.** Do not replace it reflexively, and do not make AI the
default.
Everything below — the locked prompt, the benchmark, the placeholder guard, the AI column — is the
**toggle**: what you switch on for one client, when the copy leans hard on the company name **and**
the raw strings are messy in ways a normalizer structurally cannot fix. Those are taglines after a
pipe, dba entities, parenthetical descriptors, appended city names, second-language duplicates, andView the complete source on GitHubplaybook-creative-ideas
When your agent uses it
The 3-bullet creative ideas email. Produces three per-company bullets that each sit in a slot the operator defined up front, so the model fills in the company detail and never invents a new idea. Triggers on "creative ideas campaign", "three ideas email", "I had a few ideas for you", "3 bullets", "use cases for their business", "what could they build with us". Outputs creative_idea_1, creative_idea_2, creative_idea_3 plus a rendered bullet block.
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
2,100 tokensWhen the skill is activated
Reference documents
3,167 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Slot discipline is the whole idea
- 2. Output contract
- 3. Source chain
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and hard rules
Files
SKILL.mdcore8,569 bytesSKILL.mdcore8,569 bytesclay-table.mddoc5,901 bytesclay-workflow.mddoc6,185 bytes
Read SKILL.md
# Playbook: 3-Bullet Creative Ideas
> Best practice, not law. Override when the campaign calls for it; note the practice once and proceed.
**Use when** the premise is "I looked at your business and had three ideas."
**Not when** one personalized sentence tops an otherwise fixed email (`playbook-ai-specificity`), or
the hook is an event.
**Output:** `creative_idea_1 = "a production scheduler that plans injection molding runs against cleanroom capacity"`
## 1. Slot discipline is the whole idea
**The operator names what bullets 1, 2 and 3 are about. Those slots stay fixed for every lead, andView the complete source on GitHubplaybook-first-name-cleaning
When your agent uses it
Turns the raw first-name field on a lead row into the name a person would actually be greeted by, so it can open an email. Triggers on "clean these first names", "first name variable", "the greeting says Hi DR MATTHEW", "strip the titles off the names", "some rows have the whole name in the first-name column", "normalize first names for the campaign". Outputs first_name_clean, one short string per row.
What it loads into context
Frontmatter
103 tokensAlways available to the agent
SKILL.md
7,535 tokensWhen the skill is activated
Reference documents
3,600 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore28,350 bytesSKILL.mdcore28,350 bytesSKILL.mdcore28,350 bytesclay-table.mddoc6,173 bytesclay-workflow.mddoc6,902 bytes
Read SKILL.md
# Playbook: First Name Cleaning
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** any campaign whose email opens with the prospect's first name, which is every campaign
anyone runs. Run it next to the company-name clean, **before any other custom variable**, because
variables often interpolate the cleaned name.
**Do not use when:** you need the company name cleaned — that is
`playbook-company-name-cleaning`, its twin, built to the same shape on purpose. Also not for
finding a missing name. This playbook never looks anything up; a blank stays blank.
**One-line output:** `first_name_clean = "Ruba"` from the raw string `"Dr Ruba"`, so the email opens
`Hi Ruba,` instead of `Hi Dr Ruba,`.View the complete source on GitHubplaybook-fundraising
When your agent uses it
Produces a copy-ready sentence about a company's funding round, and the list-building filters that select companies which have ever raised or raised recently. Triggers on "raised a round", "recently funded", "companies that raised", "Series A list", "VC backed", "post funding outreach", "who just raised". Outputs funding_line, a COMPLETE sentence including the leading "Saw" and the trailing period, so an empty value renders as nothing at all.
What it loads into context
Frontmatter
103 tokensAlways available to the agent
SKILL.md
4,643 tokensWhen the skill is activated
Reference documents
3,769 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore18,692 bytesSKILL.mdcore18,692 bytesSKILL.mdcore18,692 bytesclay-table.mddoc7,143 bytesclay-workflow.mddoc7,380 bytes
Read SKILL.md
# Playbook: Fundraising
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the angle depends on the prospect having money to spend or a mandate to grow — either
a TAM filtered to funded companies, or a first line that names their round.
**Do not use when:** you want headcount growth or open roles as the signal (`playbook-hiring-surge`).
If you want the round as a pure list filter and no copy at all, you only need lane A in §3.
**One-line output:** `funding_line = "Saw you raised $52M in the Series B."` — the whole sentence
lives in the variable. §2's downstream gate explains why that matters more than it looks.
## 1. Trigger and scopeView the complete source on GitHubplaybook-google-site-search
When your agent uses it
Checks whether a company's own website mentions a specific keyword, using one simple Google site: query per keyword through a SERP API, and turns the hit into a copy-ready line. Triggers on "does their site mention X", "site: search", "find companies whose website says X", "filter this list by a keyword on their site", "check if they talk about X", "google search enrichment". Outputs site_keyword_hit plus a one-clause personalization line with an evidence URL.
What it loads into context
Frontmatter
109 tokensAlways available to the agent
SKILL.md
5,670 tokensWhen the skill is activated
Reference documents
4,072 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore22,728 bytesSKILL.mdcore22,728 bytesclay-table.mddoc6,853 bytesclay-workflow.mddoc8,861 bytes
Read SKILL.md
# Playbook: Google `site:` Keyword Filter
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** a campaign needs to know whether each company's own website talks about a specific
thing — a certification, a technology, a service line, a location, a program name — and no structured
API sells that field.
**Do not use when:** you need to *find* companies you do not have yet; when the thing you want is a
**page** rather than a phrase (`playbook-pricing-page`, `playbook-case-study-page`); or when a real
filterable field already exists (funding stage, headcount, technology installed) — filter at the
source and skip this entirely.
**One-line output:** `site_keyword_line = "you hold SOC 2 Type II certification"`, rendering asView the complete source on GitHubplaybook-hiring-surge
When your agent uses it
Produces a copy-ready clause about a company adding people to one specific department in the last 6 months, plus the department-level headcount counts that drive the segment gate. Triggers on "they're hiring", "hiring surge", "growing their sales team", "scaling the team", "headcount growth", "who added SDRs", "companies that just built a marketing team". Outputs hiring_surge_line, a lowercase second-person clause that completes "Noticed <line>."
What it loads into context
Frontmatter
112 tokensAlways available to the agent
SKILL.md
6,231 tokensWhen the skill is activated
Reference documents
4,783 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The three things you cannot get wrong
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesSKILL.mdcore24,732 bytesclay-table.mddoc9,898 bytesclay-workflow.mddoc8,345 bytes
Read SKILL.md
# Playbook: Hiring Surge
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the angle is "you are scaling this team right now".
**Do not use when:** you want the job ad itself (`playbook-job-posting-language`), the person who
just started (`playbook-new-in-role`), or money rather than people (`playbook-fundraising`).
**One-line output:** `hiring_surge_line = "your sales team has 8 people who started new roles in the last six months"`
## The three things you cannot get wrong
1. **It is role starts, not hires. Measured 28.3% internal moves.** The filter counts people whoseView the complete source on GitHubplaybook-job-posting-language
When your agent uses it
Produces a copy-ready clause about a role a company is currently hiring for, filtered by language the client cares about (for example "cold call", "outbound prospecting", "Salesforce"). Triggers on "they're hiring", "job posting language", "who is hiring SDRs", "companies hiring for X", "find the hiring signal", "what roles are they hiring for", "job description mentions". Outputs job_posting_line_safe, one lowercase clause that slots into "Saw {{job_posting_line_safe}}."
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
4,510 tokensWhen the skill is activated
Reference documents
3,076 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore18,193 bytesSKILL.mdcore18,193 bytesSKILL.mdcore18,193 bytesSKILL.mdcore18,193 bytesSKILL.mdcore18,193 bytesclay-table.mddoc4,474 bytesclay-workflow.mddoc7,050 bytes
Read SKILL.md
# Playbook: Job Posting Language
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the angle is "you are hiring for this, and that is exactly what we help with". The
client names the roles or the description language that signals a fit, and every row needs a
specific, current opening to reference.
**Do not use when:** you want *how many* people they hired or headcount growth over time
(`playbook-hiring-surge`). If you want to **find** companies hiring a role rather than enrich a list
you already have, that is discovery mode — see note E.
**One-line output:** `job_posting_line_safe = "you're hiring an account executive for private equity"`
View the complete source on GitHubplaybook-linkedin-engagement
When your agent uses it
Turn the people who like and comment on a source account's LinkedIn posts (a competitor, or one of the client's own customers) into ICP-filtered prospect rows, with an optional copy-ready personalization line when the campaign asks for one. Triggers on "who engages with our competitors", "likers and commenters", "LinkedIn engagement list", "people commenting on competitor posts", "who engages with our customers' posts", "warm LinkedIn audience", "competitor engagers". Outputs one clean prospect row per engager; engagement_line only on request.
What it loads into context
Frontmatter
123 tokensAlways available to the agent
SKILL.md
1,399 tokensWhen the skill is activated
Reference documents
2,853 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The number that governs planning
- The source-company rule (both halves, always automatic)
- Before any paid call
- Run it
- Verification
- Clay implementation
- Edge cases and failure modes
Files
SKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesSKILL.mdcore5,954 bytesclay-table.mddoc4,597 bytesclay-workflow.mddoc6,499 bytes
Read SKILL.md
# Playbook: LinkedIn Engagement
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when** an account's audience is the client's audience — a **competitor** or the **client's own
customer**.
**Do not use for** more companies in a market, similar companies (`playbook-lookalikes`), or job
changers (`playbook-new-in-role`). The chain is the same for both lanes; only the target URL changes.
**Output:** one row per engager — who, employer, post, evidence URL. `engagement_line` is **opt-in**.
## The number that governs planning
View the complete source on GitHubplaybook-lookalikes
When your agent uses it
Turns one customer case study into the tightest list of companies that would read that case study and see themselves. Decomposes WHY the case-study company resonates into concrete attributes, translates those attributes into database filters, intersects them with a lookalike anchor, then widens with a model judge. Triggers on "find more companies like our best customer", "who would our case study land with", "lookalikes of X", "build a list around this case study", "companies like our happiest client", "expand this list, it is too small". Outputs a filter set plus one merge field naming which case study to cite.
What it loads into context
Frontmatter
138 tokensAlways available to the agent
SKILL.md
3,868 tokensWhen the skill is activated
Reference documents
2,924 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompts
- 7. Edge cases and failure modes
Files
SKILL.mdcore16,456 bytesclay-table.mddoc4,454 bytesclay-workflow.mddoc7,121 bytes
Read SKILL.md
# Playbook: Case-Study Lookalikes (filter mining, not raw lookalike)
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** a client has a case study, a flagship logo, or one obviously happy customer, and you
want the list of companies for whom that story is the strongest thing you could say.
**Do not use when:** you are building a whole market from an ICP sentence with no standout customer
to anchor on; or you want to name a customer off the **prospect's own** case-study page ("saw your
work with Intercom") — that is the opposite direction and belongs to `playbook-case-study-page`.
See also `disco-like` in this repo for plain seed-domain lookalike discovery. **This playbook is the
higher-precision version**: it mines *why* the story resonates before it searches.
View the complete source on GitHubplaybook-name-to-other-prospects
When your agent uses it
Names 2 other right-fit people at the prospect's own company so an email can ask "is this you or them?" without ever naming the person being emailed. Triggers on "name two other people at the company", "who else works there", "should I be talking to someone else", "colleague name variable", "other prospects line", "wrong person CTA". Outputs other_prospects, a ready-to-drop phrase like "Jeff Barg or Rob Cook".
What it loads into context
Frontmatter
108 tokensAlways available to the agent
SKILL.md
2,601 tokensWhen the skill is activated
Reference documents
3,050 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore10,944 bytesclay-table.mddoc5,271 bytesclay-workflow.mddoc6,363 bytes
Read SKILL.md
# Playbook: Name 2 Other Prospects
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the email needs a "not sure if this is you" or "who owns this" angle, or any CTA that
offers the reader an easy referral instead of a yes or no.
**Do not use when:** you want the buying committee itself as separate leads. **You never email the
people named in this variable** unless they are separately in the list on their own merits.
**One-line output:** `other_prospects = "Jeff Barg or Rob Cook"`
## 1. Trigger and scope
View the complete source on GitHubplaybook-new-in-role
When your agent uses it
Produces a copy-ready clause about someone who recently started or changed into their current job title. Triggers on "who just started", "new in role", "recently promoted", "new VP of X", "job change signal", "people who just took the seat". Outputs new_in_role_line, a lowercase clause that completes "Saw <line>."
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
5,990 tokensWhen the skill is activated
Reference documents
5,128 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore24,203 bytesSKILL.mdcore24,203 bytesSKILL.mdcore24,203 bytesSKILL.mdcore24,203 bytesSKILL.mdcore24,203 bytesSKILL.mdcore24,203 bytesSKILL.mdcore24,203 bytesclay-table.mddoc9,180 bytesclay-workflow.mddoc10,013 bytes
Read SKILL.md
# Playbook: New in Role
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the campaign angle depends on the buyer being new in the seat, because a new leader
is rebuilding their stack, has budget to reallocate, and has not yet formed a vendor preference.
**Do not use when:** you want people who moved to a **new company** regardless of title, or you
want the company-level hiring story. Use `playbook-hiring-surge` for headcount growth and
`playbook-fundraising` for the "they just raised, so they are buying" angle.
**One-line output:** `new_in_role_line = "you stepped into the COO seat at Northwind in April"`
## 1. Trigger and scopeView the complete source on GitHubplaybook-pricing-page
When your agent uses it
Decides whether a company publishes public self-serve pricing and extracts its plan tiers, price points and feature axis. Triggers on "do they have a pricing page", "is their pricing public", "filter out enterprise quote-only companies", "what do they charge", "find their plans", "self-serve vs sales-led". Outputs a structured pricing record per domain. The copy-ready pricing clause is OFF by default and runs only when a campaign brief asks for it.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
6,053 tokensWhen the skill is activated
Reference documents
3,837 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore24,670 bytesSKILL.mdcore24,670 bytesclay-table.mddoc6,482 bytesclay-workflow.mddoc8,251 bytes
Read SKILL.md
# Playbook: Pricing Page
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the campaign needs to separate self-serve companies from sales-led ones, or needs a
real price point to anchor an offer against.
**Do not use when:** you want technology installed on the site (`playbook-tech-on-website`).
**One-line output:** `pricing_public = true` with
`plans = [{"name":"Basic","price":"$10","period":"month"}, ...]` and `lowest_paid_price = "$10"`.
## 1. Trigger and scope
View the complete source on GitHubplaybook-social-link-finding
When your agent uses it
Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok). Triggers on "find their LinkedIn", "get the company LinkedIn URL", "find their Instagram", "we need social handles for this list", "which companies have a TikTok", "social links for the TAM". Outputs one canonical profile URL per platform, or an empty string when the company genuinely has no account.
What it loads into context
Frontmatter
104 tokensAlways available to the agent
SKILL.md
3,059 tokensWhen the skill is activated
Reference documents
3,335 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Output contract
- 3. Source chain (cost-tagged)
- 4. Verification
- 5. Clay implementation
- 6. Locked prompt
- 7. Edge cases and failure modes
Files
SKILL.mdcore12,946 bytesSKILL.mdcore12,946 bytesSKILL.mdcore12,946 bytesSKILL.mdcore12,946 bytesclay-table.mddoc5,339 bytesclay-workflow.mddoc7,391 bytes
Read SKILL.md
# Playbook: Company Social Link Finding
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** a campaign or a downstream playbook needs the company's own social profile URL — most
often LinkedIn for engagement scraping, or Instagram and Facebook for a DTC brand angle.
**Do not use when:** you want a **person's** profile, post-level engagement
(`playbook-linkedin-engagement`), or an ad-library readout (`playbook-ad-library`, which consumes
this playbook's Facebook output).
**One-line output:** `company_linkedin_url = "https://www.linkedin.com/company/yampa-precision-manufacturing"`
## 1. Trigger and scopeView the complete source on GitHubplaybook-social-posts
When your agent uses it
Fetches the most recent usable LinkedIn post from a company page OR a person's profile and stores the post content itself, with an optional AI personalization line on top. Triggers on "what did they post about", "recent LinkedIn post", "social signal", "reference their content", "they posted about X", "what is this person posting", "engage with their content". Outputs social_post_text (the raw post) plus social_post_url and social_post_days_ago; social_post_line only when the operator asks for one.
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
1,840 tokensWhen the skill is activated
Reference documents
3,004 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Six decisions that govern every run
- The best call, and three traps in it
- Honesty gates
- Cost
- Clay implementation
- Edge cases and failure modes
Files
SKILL.mdcore7,449 bytesclay-table.mddoc4,789 bytesclay-workflow.mddoc6,803 bytes
Read SKILL.md
# Playbook: Recent Social Post
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the campaign wants proof you read the account's content and there is no sharper
structural signal (funding, new-in-role, hiring surge).
**Not this playbook:** who *engaged* with a post (`playbook-linkedin-engagement`); a job change
(`playbook-new-in-role`).
**Output:** `social_post_text` + `social_post_url` + `social_post_days_ago` + `social_post_author_type`.
Optional, on request only: `social_post_line` → `Noticed they became an IBM Business Partner.`
## Six decisions that govern every runView the complete source on GitHubplaybook-tech-on-website
When your agent uses it
Decides which named technologies a company actually runs on its website, verified against the live site. Triggers on "find companies using Shopify", "they're on HubSpot", "tech stack targeting", "technographics", "who uses Klaviyo", "companies running WordPress". Outputs a per-domain verdict (tech_confirmed plus the verified stack and its evidence); the copy-ready clause is OFF by default and runs only when the operator asks for one.
What it loads into context
Frontmatter
103 tokensAlways available to the agent
SKILL.md
3,299 tokensWhen the skill is activated
Reference documents
3,568 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Trigger and scope
- 2. Run it: tandem discovery, then the gate
- 3. The gate
- 4. Locked prompt (OPT-IN)
- 5. Verification
- 6. Clay implementation
- 7. Hard rules
Files
SKILL.mdcore13,381 bytesSKILL.mdcore13,381 bytesSKILL.mdcore13,381 bytesSKILL.mdcore13,381 bytesclay-table.mddoc5,739 bytesclay-workflow.mddoc8,187 bytes
Read SKILL.md
# Playbook: Technology On Website
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
## 1. Trigger and scope
**Use when:** the offer only makes sense to companies running a specific piece of software on their
site — a Shopify app, a Klaviyo migration, a HubSpot implementation, a WordPress maintenance offer.
Works in both directions: **discovery** ("build me a list of every company on Shopify") and
**enrichment** ("here are 4,000 domains, which run Klaviyo").
**Do not use when:** you want the software a company *sells*, or mail-infrastructure targeting.
**Default output:** `tech_confirmed`, `tech_stack_verified` (JSON array), `tech_evidence`,View the complete source on GitHubplaybook-warm-intros
When your agent uses it
Build prospect lists where the prospect is already one hop from the client, and write the line that says so. Seven members, each with its own source. Current-customer alumni is the priority member - everyone who ever worked at one of the client's customers or case-study companies and has since moved on. Triggers on "warm intro", "who do we know at that account", "they used to work at our customer", "alumni of our case study company", "shared investor angle", "who is in the same city as our rep", "did they visit our site". Outputs warm_intro_line plus a per-member evidence column.
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
2,267 tokensWhen the skill is activated
Reference documents
2,825 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- ⚠<U+FE0F> Status: sources probed, no line graded
- 1. A family, not one playbook
- 2. Output contract
- 3. Build member 2 first
- 4. Verification
- 5. Clay implementation
- 6. The line
- 7. Edge cases and failure modes
Files
SKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesSKILL.mdcore9,543 bytesclay-table.mddoc4,985 bytesclay-workflow.mddoc6,451 bytes
Read SKILL.md
# Playbook: Warm Intros
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the campaign's whole premise is that the prospect is **already one hop from the
client**, and you need both the list and the line. The strongest version, and the one to build first,
is *"you used to work at a company that is now our client's customer"*.
**Do not use when:** you want a second contact at an account you already email
(`playbook-name-to-other-prospects`), people who engaged with a competitor's or customer's posts
(`playbook-linkedin-engagement`), or companies similar to a seed set (`playbook-lookalikes`).
**One-line output:** `warm_intro_line = "you came up through Coca-Cola, who we work with now"`,
rendering as `Noticed you came up through Coca-Cola, who we work with now.`View the complete source on GitHubpositive-reply-scoring
When your agent uses it
Pulls replies from a Smartlead campaign, classifies each as positive/neutral/negative/OOO/bounce/unsubscribe using Claude, and reports the positive reply rate — the north-star metric for cold email. Use when the user wants to know if a campaign is actually working (not just getting replies, but getting the RIGHT replies). Triggers on "score my replies", "how's campaign X doing", "positive reply rate", "is this campaign working".
What it loads into context
Frontmatter
104 tokensAlways available to the agent
SKILL.md
2,027 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this exists
- Classification schema
- Inputs
- Steps
- When to use this skill
- Common gotchas
- What to do next
- Related skills
- Scripts
Scripts executed separately
scripts/aggregate-scores.tsscripts/fetch-campaign-replies.ts
Files
SKILL.mdcore7,901 bytesSKILL.mdcore7,901 bytesSKILL.mdcore7,901 bytesscripts/aggregate-scores.tsruns4,986 bytesscripts/fetch-campaign-replies.tsruns5,961 bytes
Read SKILL.md
# Positive Reply Scoring
**Reply rate tells you if people are paying attention. Positive reply rate tells you if they want what you're selling.** This skill computes the second.
## Why this exists
A campaign can get 5% reply rate and still be a disaster. If 90% of those replies are "unsubscribe" and "not a fit," you're burning your domains for nothing.
The metric that matters is:
```
positive_reply_rate = positive_replies / total_sent
```
Compared side-by-side:View the complete source on GitHubprospeo-full-export
When your agent uses it
Export your entire Prospeo people search to CSV. Build filters in Prospeo's UI, then use this skill to extract every result via the API — even searches over 25K. Handles pagination, rate limiting, deduplication, and state-by-state splitting automatically. Pair with /icp-prompt-builder on a 50-person sample to tune a qualification prompt BEFORE exporting 25K.
What it loads into context
Frontmatter
91 tokensAlways available to the agent
SKILL.md
5,211 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Required step: Qualify with /icp-prompt-builder (do not skip)
- What This Does
- Setup (First Time Only)
- How to Use
- Filter Reference
- API Details
- The 25K Limit: State-by-State Splitting
- Script Template
- Credit Cost Estimation
- Example Conversations
- Troubleshooting
- Requirements
- What to do next
- Related skills
Files
SKILL.mdcore20,043 bytesSKILL.mdcore20,043 bytesSKILL.mdcore20,043 bytes
Read SKILL.md
# Prospeo Full Search Export
Extract your entire Prospeo people search to a CSV file. Build your search in Prospeo's UI, then let Claude pull every single result via the API — even if the search has more than 25,000 results.
## Required step: Qualify with /icp-prompt-builder (do not skip)
Before exporting more than 500 contacts, run Prospeo on a 50-contact sample, then invoke `/icp-prompt-builder` to tune a qualification prompt in 3-5 rounds of 10 (with your approval each round). Apply the tuned prompt to the full export to filter out bad fits.
**Why required:** email enrichment downstream costs $0.05-$0.15 per person. A 25K export that's 40% wrong-fit wastes $500-$1,500 on email-finding that goes nowhere. The ICP prompt builder takes 10-15 min and saves that cost 40-70% of the time.
**Safe skip:** only if your Prospeo filter is already extremely tight (e.g., 5 exact titles + 1 industry + narrow headcount) AND you've run the same filter successfully before. Even then, run `/icp-prompt-builder` on 10 samples as a sanity check — it's nearly free to confirm.
## What This Does
View the complete source on GitHubprospeo-search-api
When your agent uses it
This skill should be used when searching for people/leads using the Prospeo Search Person API. It provides the correct API format, filter types, rate limiting patterns, and state-by-state crawling techniques to overcome the 25K result limit. Use when building lead lists, searching by job title/industry/location, or integrating with Prospeo.
What it loads into context
Frontmatter
80 tokensAlways available to the agent
SKILL.md
2,463 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- API Overview
- Request Format
- Filter Types
- Response Format
- State-by-State Crawling Pattern
- Rate Limiting Implementation
- Error Handling
- Example: Search for Tech Executives
- Example: Recently Raised Series A
- Working implementations in this repo
- Environment Variables
- What to do next
- Related skills
Files
SKILL.mdcore9,478 bytesSKILL.mdcore9,478 bytes
Read SKILL.md
# Prospeo Search Person API
This skill documents how to use the Prospeo Search Person API for finding leads with filters.
## When to Use
Use this skill when:
- Searching for people/leads by job title, industry, location, company size, etc.
- Building lead lists from Prospeo's database
- Running large US-wide searches that need state-by-state crawling
## API Overview
**Endpoint:** `POST https://api.prospeo.io/search-person`View the complete source on GitHubsmartlead-api
When your agent uses it
Smartlead API endpoint reference and patterns. Use for any Smartlead campaign, lead, email account, analytics, or inbox operation. Covers auth, rate limiting, and all commonly used endpoints.
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
1,737 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Authentication
- Rate Limiting
- CLI Quick Reference
- API Endpoints
- Sub-Client / Custom API Key Pattern
- TypeScript Pattern
- Performance tip: cache the email-accounts list
- What to do next
- Related skills
Files
SKILL.mdcore6,553 bytesSKILL.mdcore6,553 bytes
Read SKILL.md
# Smartlead API Reference
## Authentication
[Credential-related source omitted]
Environment variable: `$SMARTLEAD_API_KEY`
Base URL: `https://server.smartlead.ai/api/v1`
## Rate Limiting
- **Standard plan:** 2,000 req/min (33 req/sec)
- **Higher plans:** 3,000 req/min (50 req/sec)View the complete source on GitHubsmartlead-campaign-upload-public
When your agent uses it
Upload a CSV of leads + a variants YAML (produced by /campaign-copywriting) to Smartlead as a DRAFT campaign. Handles tag-scoped inbox selection, A/B/C variant assembly, custom field mapping, schedule config, and batch lead upload. ALWAYS creates in DRAFT — you review in Smartlead UI and hit Start manually. Use after /campaign-copywriting, just before the campaign goes live.
What it loads into context
Frontmatter
94 tokensAlways available to the agent
SKILL.md
1,224 tokensWhen the skill is activated
Reference documents
495 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why DRAFT only
- Inputs
- Usage
- Script flow
- Gotchas
- What to do next
- Related skills
- Files
Scripts executed separately
scripts/upload.ts
Files
SKILL.mdcore4,980 bytesSKILL.mdcore4,980 bytesreferences/leads-csv-schema.mddoc2,031 bytesreferences/variants-schema.yamlasset1,617 bytesscripts/upload.tsruns16,796 bytes
Read SKILL.md
# Smartlead Campaign Upload
Takes a `variants.yaml` (written by `/campaign-copywriting`) and a `leads.csv` (from your list-building skills) and creates a DRAFT campaign in Smartlead. You review the result in the Smartlead UI and press Start manually.
**This skill does NOT ship any email copy.** Copy comes from `/campaign-copywriting`. This skill is the mechanical upload layer — API calls only.
## Why DRAFT only
Cold email launches should never happen from a script. You hit Start in the Smartlead UI after reviewing:
- Subject lines + body previews
- Inbox assignments (correct tag? correct count?)
- Lead count and a few random lead rows
- Schedule (timezone + hours + throttle)
View the complete source on GitHubsmartlead-inbox-manager
When your agent uses it
Programmatic inbox management for Smartlead. Enable/disable warmup with correct ramp settings, set signatures in bulk, tag inboxes (active vs insurance), and pull inbox health dashboards. Use after creating a new batch of inboxes via /zapmail-domain-setup-public, or when managing an existing Smartlead account at scale. Triggers on "turn on warmup", "set signatures", "tag inboxes", "inbox health", "set up new inboxes".
What it loads into context
Frontmatter
106 tokensAlways available to the agent
SKILL.md
2,695 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core operations
- Active vs insurance (the tagging convention)
- Inputs
- Warmup ramp settings
- Signature template
- Health dashboard output
- Common workflows
- When to retire an inbox
- Common gotchas
- What to do next
- Related skills
- Scripts
Scripts executed separately
scripts/_lib.tsscripts/list-health.tsscripts/set-signatures.tsscripts/set-warmup.tsscripts/tag-inboxes.ts
Files
SKILL.mdcore10,365 bytesSKILL.mdcore10,365 bytesSKILL.mdcore10,365 bytesSKILL.mdcore10,365 bytesSKILL.mdcore10,365 bytesSKILL.mdcore10,365 bytesscripts/_lib.tsruns4,316 bytesscripts/list-health.tsruns5,007 bytesscripts/set-signatures.tsruns5,415 bytesscripts/set-warmup.tsruns2,790 bytesscripts/tag-inboxes.tsruns2,906 bytes
Read SKILL.md
# Smartlead Inbox Manager
Zapmail hands you hundreds of new inboxes. Smartlead needs them configured: warmup enabled with the right ramp, signatures set so emails don't look bare, tags applied so you know which are active vs insurance, and health monitored so dead inboxes get recycled.
This skill does all of that via the Smartlead API.
## Core operations
| Operation | What it does | Script |
|---|---|---|
| Enable warmup | Turns on warmup with correct ramp (start 1/day, +5/day up to 40/day) | `set-warmup.ts --mode=enable` |
| Disable warmup | Turns off warmup (use for insurance inboxes) | `set-warmup.ts --mode=disable` |
| Set signatures | Bulk-applies a signature template to inboxes | `set-signatures.ts` |
| Tag as active | Adds the "active" tag | `tag-inboxes.ts --tag=active` |View the complete source on GitHubsmartlead-spintax
When your agent uses it
Adds Smartlead-compatible spintax to cold email sequences for deliverability. Use this skill whenever the user asks to add spintax, spin text, add variations, or improve deliverability of email copy — especially when they mention Smartlead, cold email sequences, or paste HTML email content. Also trigger when the user says "spintax", "spin", "variations", "deliverability spintax", or references adding randomized alternatives to email copy. Works with both plain text and HTML input.
What it loads into context
Frontmatter
112 tokensAlways available to the agent
SKILL.md
1,694 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Concept
- Input Handling
- The Golden Rule: No Broken Combinations
- What to Spin
- Tone Preservation
- Output Format
- Multi-Email Sequences
- Flagging Issues
- Quick Reference
- What to do next
- Related skills
Files
SKILL.mdcore7,197 bytes
Read SKILL.md
# Smartlead Spintax Skill
Add deliverability-improving spintax to cold email sequences using Smartlead's syntax, without changing the meaning or tone of the original messaging.
## Core Concept
Spintax lets Smartlead randomly pick one option per send, so no two emails are identical. This reduces pattern detection by spam filters and improves deliverability.
**Smartlead syntax:** `{option1|option2|option3}`
Each option inside the curly braces is separated by a pipe `|`. Smartlead picks one at random per email send.
---
View the complete source on GitHubspam-word-checker
When your agent uses it
Always-on spam and deliverability guardrails for cold email copy. Apply these rules whenever writing, reviewing, or QA-ing subject lines, openers, follow-ups, CTAs, or any cold outreach copy. Trigger on phrases like "check this for spam", "spam word check", "deliverability review", "QA this copy", "flag banned words", "check subject line", "is this safe to send", "scan for spam triggers", or any time cold email copy is being generated or reviewed. Also trigger automatically as a background rule whenever the campaign-copywriting or cold-email-copywriting skill is active -- these guardrails apply to EVERY piece of outbound copy generated, even if the user does not explicitly ask for a check.
What it loads into context
Frontmatter
171 tokensAlways available to the agent
SKILL.md
2,451 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When These Rules Apply
- Banned Single Words
- Banned Short Phrases
- High-Risk Promotional / Pressure Wording (Banned)
- Phishing-Style / Security-Warning Language (Banned)
- Irrelevant Blacklisted Categories (Never Appear in Copy)
- Formatting & Style Bans
- Unsubscribe / Closeout Line Rules
- Safe Replacement Patterns
- Rewriting Logic
- Company Name Handling
- Final QA Checklist
- What to do next
- Related skills
Files
SKILL.mdcore9,987 bytes
Read SKILL.md
# Spam Word Checker
Always-on spam and deliverability rules. Apply to every subject line, opener, second line, follow-up, and CTA generated or reviewed.
---
## When These Rules Apply
- Subject lines, openers, second lines, follow-ups, CTAs
- Any cold outreach copy being written or QA'd
- If a deliverability checker or review flags a word/phrase, treat it as banned going forward unless user explicitly approves an exception
- When in doubt, choose the lower-hype rewrite
---View the complete source on GitHubWhen your agent uses it
Public guide: Generate short domain names, check availability, purchase on Dynadot, switch nameservers, set up on Zapmail, create inboxes, and export to your email sending platform. Requires your own Dynadot and Zapmail API keys. Use when someone wants to set up cold email domains end-to-end.
What it loads into context
Frontmatter
68 tokensAlways available to the agent
SKILL.md
4,366 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- First-Time Setup (Onboarding)
- Full Workflow Overview
- Step 1: Generate Short Domain Names
- Step 2: Check Domain Availability
- Step 3: Purchase Domains
- Step 4: Switch Nameservers to Zapmail
- Step 5: Connect Domains on Zapmail
- Step 6: Create Inboxes
- Step 7: Export to Email Sending Platform
- Automation: Running End-to-End Unattended
- Common Gotchas
- Quick Reference: API Endpoints
- What to do next
- Related skills
Files
SKILL.mdcore15,286 bytesSKILL.mdcore15,286 bytesSKILL.mdcore15,286 bytesSKILL.mdcore15,286 bytesSKILL.mdcore15,286 bytesSKILL.mdcore15,286 bytes
Read SKILL.md
# Cold Email Domain Setup: Dynadot + Zapmail (Public Edition)
Complete workflow to generate short domain names, purchase them on Dynadot, and set them up on Zapmail with inboxes ready for cold email sending.
---
## First-Time Setup (Onboarding)
Before running anything, you need two API keys stored as environment variables.
### 1. Get Your Dynadot API Key
1. Log into [dynadot.com](https://www.dynadot.com)
2. Go to **Tools > API** in the left sidebar
3. Enable API access and copy your API keyView the complete source on GitHubSkills included
- auto-research-public
- blitz-list-builder
- campaign-copywriting
- campaign-strategy
- cold-email-kickoff
- cold-email-starter-kit
- cold-email-weekly-rhythm
- competitor-engagers
- deliverability-incident-response
- deliverability-test-public
- disco-like
- email-deliverability-audit
- experiment-design
- google-maps-list-builder
- icp-onboarding
- icp-prompt-builder
- inbox-lifecycle-manager
- lead-magnet-brainstorm
- list-builder
- list-expander
- list-quality-scorecard
- perfect-company-list
- personalization-subagent-pattern
- clay-playbooks
- playbook-ad-library
- playbook-ai-specificity
- playbook-case-study-page
- playbook-company-name-cleaning
- playbook-creative-ideas
- playbook-first-name-cleaning
- playbook-fundraising
- playbook-google-site-search
- playbook-hiring-surge
- playbook-job-posting-language
- playbook-linkedin-engagement
- playbook-lookalikes
- playbook-name-to-other-prospects
- playbook-new-in-role
- playbook-pricing-page
- playbook-social-link-finding
- playbook-social-posts
- playbook-tech-on-website
- playbook-warm-intros
- positive-reply-scoring
- prospeo-full-export
- prospeo-search-api
- smartlead-api
- smartlead-campaign-upload-public
- smartlead-inbox-manager
- smartlead-spintax
- spam-word-checker
Repository facts
- License
- MIT
- Created
- Mar 10, 2026
- Last pushed
- Oct 5, 2026
- Forks
- 273
- Open issues
- 4
- Project activity
- Active
Rank over the last 12 weeks
Now #998 · best #735 · down 211 in 30 days
- #879 on Oct 20
- #890 on Oct 21
- #863 on Oct 22
- #878 on Oct 23
- #828 on Oct 24
- #998 since Oct 25
64 earlier periods
- #743 on Aug 2
- #744 on Aug 7
- #759 on Aug 9
- #793 on Aug 10
- #796 on Aug 11
- #792 on Aug 12
- #755 on Aug 15
- #770 on Aug 16
- #780 on Aug 17
- #790 on Aug 18
- #774 on Aug 19
- #767 on Aug 20
- #769 on Aug 21
- #735 on Aug 22
- #776 on Aug 23
- #798 on Aug 24
- #807 on Aug 25
- #785 on Aug 26
- #792 on Aug 27
- #819 on Aug 28
- #762 on Aug 30
- #801 on Aug 31
- #819 on Sep 1
- #793 on Sep 2
- #802 on Sep 3
- #759 on Sep 5
- #787 on Sep 6
- #801 on Sep 7
- #822 on Sep 8
- #803 on Sep 9
- #815 on Sep 10
- #789 on Sep 11
- #786 on Sep 12
- #811 on Sep 14
- #806 on Sep 15
- #818 on Sep 16
- #821 on Sep 17
- #802 on Sep 18
- #776 on Sep 19
- #793 on Sep 20
- #812 on Sep 21
- #837 on Sep 22
- #819 on Sep 23
- #787 on Sep 24
- #771 on Sep 26
- #795 on Sep 27
- #821 on Sep 28
- #849 on Sep 29
- #829 on Sep 30
- #780 on Oct 1
- #793 on Oct 2
- #818 on Oct 5
- #819 on Oct 6
- #839 on Oct 7
- #878 on Oct 8
- #844 on Oct 9
- #822 on Oct 10
- #846 on Oct 12
- #849 on Oct 13
- #861 on Oct 14
- #847 on Oct 15
- #856 on Oct 16
- #834 on Oct 17
- #820 on Oct 18
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 131 notes
skills/auto-research-public/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-research-public/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-research-public/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-research-public/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/blitz-list-builder/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/blitz-list-builder/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/blitz-list-builder/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/cold-email-weekly-rhythm/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/cold-email-weekly-rhythm/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/cold-email-weekly-rhythm/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/cold-email-weekly-rhythm/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/cold-email-weekly-rhythm/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/competitor-engagers/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/competitor-engagers/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/competitor-engagers/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/competitor-engagers/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/deliverability-incident-response/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/deliverability-test-public/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/disco-like/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/disco-like/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 602 network referencesin 96 files: cold-email-starter-kit/references/05-domain-and-inbox-setup.md:11 zapmail-domain-setup-public/SKILL.md:15 cold-email-starter-kit/references/00-getting-started.md:24 and 93 more
- No hidden or obfuscated text
- No instruction overrides
- 65 executable scriptsin 65 files: auto-research-public/scripts/phase-enrich.ts:1 auto-research-public/scripts/phase-prospeo.ts:1 auto-research-public/scripts/phase-scrape.ts:1 and 62 more
- 345 references to secretsin 86 files: cold-email-starter-kit/references/08-smartlead-api.md:21 smartlead-api/SKILL.md:11 cold-email-starter-kit/references/05-domain-and-inbox-setup.md:26 and 83 more
- No requests to vote in Hot
Show all 1,012 signals by file
skills/auto-research-public/SKILL.md
skills/auto-research-public/scripts/phase-enrich.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Network accessline 41
async function enrichEmail(lead: any): Promise<string> { if (!lead.first_name || !lead.last_name || !lead.company_domain) return ""; const resp = await fetch("https://api.prospeo.io/email-finder", { - Network accessline 42
if (!lead.first_name || !lead.last_name || !lead.company_domain) return ""; const resp = await fetch("https://api.prospeo.io/email-finder", { method: "POST", - Network accessline 43
const resp = await fetch("https://api.prospeo.io/email-finder", { - Network accessline 60
if (!domain) return ""; try { const resp = await fetch(`https://${domain}`, { - Network accessline 61
try { const resp = await fetch(`https://${domain}`, { headers: { "User-Agent": "Mozilla/5.0" }, - Network accessline 62
const resp = await fetch(`https://${domain}`, { - Network accessline 79
if (!MV_KEY) return "skip"; try { const resp = await fetch( - Network accessline 80
try { const resp = await fetch( `https://api.millionverifier.com/api/v3/?api=${MV_KEY}&email=${encodeURIComponent(email)}&timeout=10` - Network accessline 81
const resp = await fetch( - Network accessline 82
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted]
skills/auto-research-public/scripts/phase-prospeo.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 60
for (let page = 1; page <= maxPages; page++) { const resp = await fetch("https://api.prospeo.io/search-person", { - Network accessline 61
const resp = await fetch("https://api.prospeo.io/search-person", { - Access to secretsline 63
[Credential-related source omitted]
skills/auto-research-public/scripts/phase-scrape.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 47
async function fetchPage(url: string): Promise<{ url: string; text: string } | null> { try { const resp = await fetch(url, { - Network accessline 48
try { const resp = await fetch(url, { headers: { "User-Agent": "Mozilla/5.0 (compatible; ColdEmailKit/1.0)" }, - Network accessline 49
const resp = await fetch(url, { - Network accessline 64
const { domain, out } = parseArgs(); const clean = domain.toLowerCase().replace(/^https?:\/\//, "").replace(/\/.*$/, ""); const base = `https://${clean}`; - Network accessline 66
const base = `https://${clean}`;
skills/auto-research-public/scripts/phase-upload.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 10
[Credential-related source omitted] - Network accessline 23
const SL_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Network accessline 52
for (const [k, v] of Object.entries(params)) url.searchParams.set(k, String(v)); const resp = await fetch(url.toString()); if (!resp.ok) throw new Error(`GET ${path}: ${resp.status} ${await resp.text().catch(() => "")}`); - Network accessline 53
const resp = await fetch(url.toString()); - Network accessline 59
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Network accessline 60
for (const [k, v] of Object.entries(params)) url.searchParams.set(k, String(v)); const resp = await fetch(url.toString(), { method: "POST", - Network accessline 61
const resp = await fetch(url.toString(), {
skills/blitz-list-builder/SKILL.md
- Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Network accessline 72
POST {BLITZ_BASE_URL}/api/enrichment/email Body: { "linkedin_profile_url": "https://linkedin.com/in/..." } - Network accessline 73
Body: { "linkedin_profile_url": "https://linkedin.com/in/..." } - Network accessline 111
- **Domain must be just the bare domain.** Blitz wants `acme.com`, not `https://acme.com/` or `sub.acme.com`.
skills/blitz-list-builder/scripts/find-contacts.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 5
[Credential-related source omitted] - Network accessline 6
[Credential-related source omitted] - Access to secretsline 6
[Credential-related source omitted] - Network accessline 7
* export BLITZ_BASE_URL=https://api.useblitz.com (or whatever your region) - Network accessline 16
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 17
const BLITZ_BASE_URL = process.env.BLITZ_BASE_URL ?? "https://api.useblitz.com"; - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Network accessline 65
async function blitzCompany(domain: string): Promise<any> { for (let attempt = 0; attempt < 4; attempt++) { const resp = await fetch(`${BLITZ_BASE_URL}/api/enrichment/company`, { - Network accessline 66
for (let attempt = 0; attempt < 4; attempt++) { const resp = await fetch(`${BLITZ_BASE_URL}/api/enrichment/company`, { method: "POST", - Network accessline 67
const resp = await fetch(`${BLITZ_BASE_URL}/api/enrichment/company`, { - Access to secretsline 71
[Credential-related source omitted]
skills/cold-email-kickoff/SKILL.md
skills/cold-email-kickoff/references/example-campaign-plans/agency.md
- Network accessline 4
## Business Scale Studio — a white-label marketing agency selling to other marketing agencies who need overflow capacity. Services: paid ads management, SEO, content production. Website: https://scalestudio.co - Network accessline 6
Website: https://scalestudio.co - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted]
skills/cold-email-kickoff/references/example-campaign-plans/b2b-saas.md
- Network accessline 4
## Business Acme Analytics — a product-analytics platform for B2B SaaS companies (50-500 employees). Helps product + growth teams attribute feature usage to revenue. Website: https://acmeanalytics.com - Network accessline 6
Website: https://acmeanalytics.com - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted]
skills/cold-email-kickoff/references/example-campaign-plans/smb-restaurant.md
- Network accessline 4
## Business Delivery Margin Pro — a SaaS that helps multi-location restaurants recover 15–25% of DoorDash/UberEats fees via automated contract renegotiation + rate audits. Website: https://deliverymarginpro.com - Network accessline 6
Website: https://deliverymarginpro.com - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted]
skills/cold-email-starter-kit/.env.example
- Access to secretsline 2
[Credential-related source omitted] - Access to secretsline 5
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Network accessline 14
[Credential-related source omitted] - Network accessline 15
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Network accessline 16
BLITZ_BASE_URL=https://api.blitz.us - Access to secretsline 17
[Credential-related source omitted]
skills/cold-email-starter-kit/SKILL.md
skills/cold-email-starter-kit/references/00-getting-started.md
- Network accessline 24
If it prints `v20.x.x` or higher, you're good. If not: - **macOS**: `brew install node` - **Linux**: use `nvm` (https://github.com/nvm-sh/nvm), then `nvm install 20` - Network accessline 25
- **macOS**: `brew install node` - **Linux**: use `nvm` (https://github.com/nvm-sh/nvm), then `nvm install 20` - **Windows**: download installer from nodejs.org - Network accessline 26
- **Linux**: use `nvm` (https://github.com/nvm-sh/nvm), then `nvm install 20` - Network accessline 38
### A text editor Any will work. VS Code is free and recommended: https://code.visualstudio.com/ - Network accessline 39
Any will work. VS Code is free and recommended: https://code.visualstudio.com/ - Network accessline 51
**Signup:** https://www.dynadot.com/account/signup.html - Network accessline 55
2. Go to **Tools → API** 3. Click "Enable API Access" and copy your API key 4. **Critical:** Whitelist your current IP address (find yours at https://whatismyip.com). Dynadot refuses API requests from un-whitelisted IPs. - Network accessline 57
4. **Critical:** Whitelist your current IP address (find yours at https://whatismyip.com). Dynadot refuses API requests from un-whitelisted IPs. - Network accessline 62
**Signup:** https://zapmail.ai/ - Network accessline 71
**Signup:** https://prospeo.io/ - Network accessline 80
#### Smartlead (recommended for beginners) **Signup:** https://app.smartlead.ai/auth/sign-up - Network accessline 81
**Signup:** https://app.smartlead.ai/auth/sign-up - Network accessline 86
#### Instantly (more features, bigger API) **Signup:** https://app.instantly.ai/signup - Network accessline 87
**Signup:** https://app.instantly.ai/signup - Network accessline 98
| Service | Purpose | Signup | |---|---|---| | Blitz | Company phone finder | https://blitz.us/ | - Network accessline 99
|---|---|---| | Blitz | Company phone finder | https://blitz.us/ | | OpenRouter | LLM API for AI company analysis | https://openrouter.ai/ | - Network accessline 100
| Blitz | Company phone finder | https://blitz.us/ | - Network accessline 101
| OpenRouter | LLM API for AI company analysis | https://openrouter.ai/ | - Network accessline 102
| RapidAPI | Hub for LinkedIn scraper, OpenWebNinja | https://rapidapi.com/ | - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 142
[Credential-related source omitted] - Access to secretsline 145
[Credential-related source omitted] - Access to secretsline 148
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 152
[Credential-related source omitted] - Network accessline 154
[Credential-related source omitted] - Network accessline 155
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Network accessline 156
BLITZ_BASE_URL=https://api.blitz.us - Access to secretsline 157
[Credential-related source omitted] - Network accessline 196
If any row is ❌: - **Dynadot**: Is your IP whitelisted? Check https://whatismyip.com vs Dynadot Tools → API settings - Network accessline 197
- **Dynadot**: Is your IP whitelisted? Check https://whatismyip.com vs Dynadot Tools → API settings
skills/cold-email-starter-kit/references/01-deliverability-fundamentals.md
- Network accessline 143
- **Open rate < 20%** (normal is 40-60%) - **Bounce rate > 5%** (normal is < 3%) - **Blacklist hit** (check MXToolbox: https://mxtoolbox.com/blacklists.aspx) - Network accessline 144
- **Bounce rate > 5%** (normal is < 3%) - **Blacklist hit** (check MXToolbox: https://mxtoolbox.com/blacklists.aspx) - **Gmail/Outlook show warning banner** on delivered mail - Network accessline 145
- **Blacklist hit** (check MXToolbox: https://mxtoolbox.com/blacklists.aspx) - Network accessline 164
2. **Test send to yourself** — personal Gmail AND personal Outlook. Both should land in **primary inbox**, not spam/promotions 3. **Test send to a buddy** — have a friend at a different domain receive one and tell you where it landed 4. **M - Network accessline 165
3. **Test send to a buddy** — have a friend at a different domain receive one and tell you where it landed 4. **MXToolbox blacklist check** — https://mxtoolbox.com/blacklists.aspx → paste your sending domain → should show no listings 5. **R - Network accessline 166
4. **MXToolbox blacklist check** — https://mxtoolbox.com/blacklists.aspx → paste your sending domain → should show no listings
skills/cold-email-starter-kit/references/05-domain-and-inbox-setup.md
- Network accessline 11
### 1. Get Your Dynadot API Key 1. Log into [dynadot.com](https://www.dynadot.com) - Network accessline 12
1. Log into [dynadot.com](https://www.dynadot.com) - Network accessline 17
### 2. Get Your Zapmail API Key 1. Log into [zapmail.ai](https://zapmail.ai) - Network accessline 18
1. Log into [zapmail.ai](https://zapmail.ai) - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Network accessline 46
GET https://api.dynadot.com/api3.json?key=<YOUR_KEY>&command=account_info - Network accessline 52
GET https://api.zapmail.ai/api/v2/domains/assignable?limit=10&page=1 - Network accessline 147
GET https://api.dynadot.com/api3.json - Access to secretsline 148
[Credential-related source omitted] - Network accessline 183
GET https://api.dynadot.com/api3.json - Access to secretsline 184
[Credential-related source omitted] - Network accessline 192
GET https://api.dynadot.com/api3.json - Access to secretsline 193
[Credential-related source omitted] - Network accessline 221
GET https://api.dynadot.com/api3.json - Access to secretsline 222
[Credential-related source omitted] - Access to secretsline 235
[Credential-related source omitted] - Network accessline 241
"ns3": "pns64.cloudns.uk", } url = f"https://api.dynadot.com/api3.json?{urllib.parse.urlencode(params, safe=',')}" - Network accessline 243
url = f"https://api.dynadot.com/api3.json?{urllib.parse.urlencode(params, safe=',')}" - Network accessline 260
POST https://api.zapmail.ai/api/v2/domains/connect-domain - Access to secretsline 261
[Credential-related source omitted] - Network accessline 277
GET https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=1 - Access to secretsline 278
[Credential-related source omitted] - Network accessline 295
GET https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=1 - Access to secretsline 296
[Credential-related source omitted] - Network accessline 303
POST https://api.zapmail.ai/api/v2/mailboxes - Access to secretsline 304
[Credential-related source omitted] - Network accessline 339
POST https://api.zapmail.ai/api/v2/exports/mailboxes - Access to secretsline 340
[Credential-related source omitted] - Network accessline 380
POST https://api.zapmail.ai/api/v2/exports/accounts/third-party - Network accessline 390
POST https://api.zapmail.ai/api/v2/exports/accounts/third-party - Network accessline 459
| Action | Method | URL | |---|---|---| | Dynadot wallet balance | GET | `https://api.dynadot.com/api3.json?key=KEY&command=account_info` | - Network accessline 460
|---|---|---| | Dynadot wallet balance | GET | `https://api.dynadot.com/api3.json?key=KEY&command=account_info` | | Dynadot search (batch 100) | GET | `https://api.dynadot.com/api3.json?key=KEY&command=search&show_price=1&domain0=...` | - Network accessline 461
| Dynadot wallet balance | GET | `https://api.dynadot.com/api3.json?key=KEY&command=account_info` | - Network accessline 462
| Dynadot search (batch 100) | GET | `https://api.dynadot.com/api3.json?key=KEY&command=search&show_price=1&domain0=...` | - Network accessline 463
| Dynadot register | GET | `https://api.dynadot.com/api3.json?key=KEY&command=register&domain=X&duration=1` | - Network accessline 464
| Dynadot NS switch (batch 100) | GET | `https://api.dynadot.com/api3.json?key=KEY&command=set_ns&domain=X,Y&ns0=...` | - Network accessline 465
| Zapmail connect (batch 50) | POST | `https://api.zapmail.ai/api/v2/domains/connect-domain` | - Network accessline 466
| Zapmail assignable check | GET | `https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=N` | - Network accessline 467
| Zapmail create inboxes (batch 25) | POST | `https://api.zapmail.ai/api/v2/mailboxes` | - Network accessline 468
| Zapmail export | POST | `https://api.zapmail.ai/api/v2/exports/mailboxes` | - Network accessline 469
| Zapmail link platform | POST | `https://api.zapmail.ai/api/v2/exports/accounts/third-party` |
skills/cold-email-starter-kit/references/06-list-building-prospeo.md
- Network accessline 22
1. Go to [prospeo.io](https://prospeo.io) and sign up - Network accessline 28
1. Log into Prospeo 2. Go to **Settings > API** (or visit [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api)) - Network accessline 29
2. Go to **Settings > API** (or visit [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api)) - Access to secretsline 38
[Credential-related source omitted] - Network accessline 51
Go to [prospeo.io/app/search](https://prospeo.io/app/search) and use the filters to build your search. The UI lets you filter by: - Network accessline 126
**Endpoint:** `POST https://api.prospeo.io/search-person` - Network accessline 139
const response = await fetch('https://api.prospeo.io/search-person', { - Access to secretsline 143
[Credential-related source omitted] - Network accessline 169
full_name: "Jane Smith", current_job_title: "CEO", linkedin_url: "https://linkedin.com/in/janesmith", - Network accessline 170
current_job_title: "CEO", linkedin_url: "https://linkedin.com/in/janesmith", email: "jane@acme.com", - Network accessline 171
linkedin_url: "https://linkedin.com/in/janesmith", - Network accessline 178
name: "Acme Corp", domain: "acme.com", linkedin_url: "https://linkedin.com/company/acme", - Network accessline 179
domain: "acme.com", linkedin_url: "https://linkedin.com/company/acme", industry: "Information Technology", - Network accessline 180
linkedin_url: "https://linkedin.com/company/acme", - Access to secretsline 237
[Credential-related source omitted] - Access to secretsline 238
[Credential-related source omitted] - Access to secretsline 239
[Credential-related source omitted] - Network accessline 266
const res = await fetch('https://api.prospeo.io/search-person', { - Access to secretsline 268
[Credential-related source omitted] - Access to secretsline 492
[Credential-related source omitted] - Access to secretsline 493
[Credential-related source omitted] - Network accessline 495
### "API error: 401" Your API key is invalid. Check it at [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api). - Network accessline 496
Your API key is invalid. Check it at [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api). - Network accessline 539
**Endpoint:** `POST https://api.prospeo.io/search-person` - Access to secretsline 558
[Credential-related source omitted] - Access to secretsline 836
[Credential-related source omitted]
skills/cold-email-starter-kit/references/07-enrichment-library.md
- Network accessline 44
**Script:** `scripts/enrichments/company-phone.ts` **API:** Blitz `/api/enrichment/company` **Signup:** https://blitz.us/ - Network accessline 45
**API:** Blitz `/api/enrichment/company` **Signup:** https://blitz.us/ **Cost:** ~$15 per 1,000 leads (~$50/mo small tier) - Network accessline 46
**Signup:** https://blitz.us/ **Cost:** ~$15 per 1,000 leads (~$50/mo small tier) **Rate limit:** 30 requests/second - Network accessline 69
**Script:** `scripts/enrichments/ai-company-analysis.ts` **API:** OpenRouter (via `openai/gpt-4o-mini`) **Signup:** https://openrouter.ai/ - Network accessline 70
**API:** OpenRouter (via `openai/gpt-4o-mini`) **Signup:** https://openrouter.ai/ **Cost:** ~$0.15 per 1,000 leads (roughly one-fifth of a cent per lead) - Network accessline 71
**Signup:** https://openrouter.ai/ **Cost:** ~$0.15 per 1,000 leads (roughly one-fifth of a cent per lead) **Rate limit:** 50 requests/second - Network accessline 104
**Script:** `scripts/enrichments/company-news.ts` **API:** OpenWebNinja Google Search (via RapidAPI) **Signup:** https://rapidapi.com/ → search "OpenWebNinja" - Network accessline 105
**API:** OpenWebNinja Google Search (via RapidAPI) **Signup:** https://rapidapi.com/ → search "OpenWebNinja" **Cost:** $10-25 per month depending on volume tier - Network accessline 106
**Signup:** https://rapidapi.com/ → search "OpenWebNinja" **Cost:** $10-25 per month depending on volume tier **Rate limit:** 10 requests/second - Network accessline 153
**Script:** `scripts/enrichments/linkedin-profile.ts` **API:** RapidAPI LinkedIn Bulk Scraper **Signup:** https://rapidapi.com/ → search "LinkedIn Bulk Scraper" - Network accessline 154
**API:** RapidAPI LinkedIn Bulk Scraper **Signup:** https://rapidapi.com/ → search "LinkedIn Bulk Scraper" **Cost:** $25-75 per month - Network accessline 155
**Signup:** https://rapidapi.com/ → search "LinkedIn Bulk Scraper" **Cost:** $25-75 per month **Rate limit:** 5 requests/second - Network accessline 183
| `company_phone` | Blitz | "+1-555-0123" | | `recent_news_title` | OpenWebNinja | "Acme Inc raises $12M Series A" | | `recent_news_url` | OpenWebNinja | "https://techcrunch.com/..." | - Network accessline 184
| `recent_news_title` | OpenWebNinja | "Acme Inc raises $12M Series A" | | `recent_news_url` | OpenWebNinja | "https://techcrunch.com/..." | | `recent_news_date` | OpenWebNinja | "2026-03-14" | - Network accessline 185
| `recent_news_url` | OpenWebNinja | "https://techcrunch.com/..." |
skills/cold-email-starter-kit/references/08-smartlead-api.md
- Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 25
Base URL: `https://server.smartlead.ai/api/v1` - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 139
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Access to secretsline 163
[Credential-related source omitted] - Access to secretsline 174
[Credential-related source omitted] - Access to secretsline 180
[Credential-related source omitted] - Network accessline 186
const SMARTLEAD_API = "https://server.smartlead.ai/api/v1"; - Access to secretsline 187
[Credential-related source omitted] - Network accessline 189
[Credential-related source omitted] - Network accessline 190
[Credential-related source omitted] - Access to secretsline 190
[Credential-related source omitted] - Network accessline 193
[Credential-related source omitted] - Network accessline 194
[Credential-related source omitted] - Access to secretsline 194
[Credential-related source omitted] - Access to secretsline 206
[Credential-related source omitted] - Network accessline 207
Body: { "name": "Reply Notifier", "webhook_url": "https://your-endpoint.example.com/smartlead", - Network accessline 208
"name": "Reply Notifier", "webhook_url": "https://your-endpoint.example.com/smartlead", "event_types": ["EMAIL_REPLY", "LEAD_OPEN", "LEAD_CLICK", "LEAD_UNSUBSCRIBE"] - Network accessline 209
"webhook_url": "https://your-endpoint.example.com/smartlead", - Access to secretsline 226
[Credential-related source omitted] - Network accessline 235
async function smartleadFetch(url: string, options: RequestInit = {}, attempt = 0): Promise<Response> { const res = await fetch(url, options); - Network accessline 236
const res = await fetch(url, options);
skills/cold-email-starter-kit/references/09-instantly-api.md
- Network accessline 3
Full Instantly v2 endpoint reference. Written from Instantly's public OpenAPI spec (https://developer.instantly.ai/llms.txt). - Access to secretsline 22
[Credential-related source omitted] - Network accessline 25
Base URL: `https://api.instantly.ai` - Access to secretsline 26
[Credential-related source omitted] - Network accessline 47
const INSTANTLY_API = "https://api.instantly.ai"; - Access to secretsline 48
[Credential-related source omitted] - Network accessline 50
async function instantlyFetch(path: string, init: RequestInit = {}): Promise<Response> { const res = await fetch(`${INSTANTLY_API}${path}`, { - Network accessline 51
const res = await fetch(`${INSTANTLY_API}${path}`, { - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 317
[Credential-related source omitted]
skills/cold-email-starter-kit/references/12-launch-checklist.md
- Network accessline 33
- [ ] **DMARC** record set — verify: `dig TXT _dmarc.yourdomain.com` shows `v=DMARC1 ...` - [ ] **All inboxes warmed** for at least 2 weeks - [ ] **No blacklist hits** — check https://mxtoolbox.com/blacklists.aspx for your sending domain - Network accessline 34
- [ ] **All inboxes warmed** for at least 2 weeks - [ ] **No blacklist hits** — check https://mxtoolbox.com/blacklists.aspx for your sending domain - [ ] **Test sends landed in primary inbox** (not spam, not promotions) at personal Gmail AN - Network accessline 35
- [ ] **No blacklist hits** — check https://mxtoolbox.com/blacklists.aspx for your sending domain
skills/cold-email-starter-kit/references/13-troubleshooting.md
- Network accessline 49
[Credential-related source omitted] - Network accessline 50
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted] - Network accessline 53
[Credential-related source omitted] - Network accessline 54
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Network accessline 57
# Dynadot auth test curl "https://api.dynadot.com/api3.json?key=$DYNADOT_API_KEY&command=account_info" - Network accessline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Network accessline 61
# Zapmail auth test curl -H "x-auth-zapmail: $ZAPMAIL_API_KEY" "https://api.zapmail.ai/api/v2/domains/assignable?limit=5&page=1" - Network accessline 62
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Network accessline 65
# Prospeo auth test curl -X POST "https://api.prospeo.io/search-person" \ - Network accessline 66
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Network accessline 73
### Blacklist check - https://mxtoolbox.com/blacklists.aspx → enter your sending domain - Network accessline 74
- https://mxtoolbox.com/blacklists.aspx → enter your sending domain - Network accessline 75
- https://www.mail-tester.com → send a test email, get a deliverability score - Network accessline 96
Dynadot is strict about this. Steps: 1. Go to https://whatismyip.com — note your current IP - Network accessline 97
1. Go to https://whatismyip.com — note your current IP - Network accessline 114
Use https://www.mail-tester.com to score your email. Target: 9/10 or higher.
skills/cold-email-starter-kit/references/14-60-minute-tutorial.md
- Network accessline 24
1. **Dynadot** — https://www.dynadot.com/account/signup.html - Network accessline 25
- After signup, top up wallet: Tools → Account → Add Funds → $100 - Tools → API → Enable API Access → **copy the API key** - Tools → API → IP Whitelist → paste your IP from https://whatismyip.com - Network accessline 27
- Tools → API → IP Whitelist → paste your IP from https://whatismyip.com - Network accessline 29
2. **Zapmail** — https://zapmail.ai/ - Network accessline 32
3. **Prospeo** — https://prospeo.io/ - Network accessline 36
4. **Smartlead** — https://app.smartlead.ai/auth/sign-up (recommended for beginners) - Network accessline 37
- Or Instantly: https://app.instantly.ai/signup (if you want more features) - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Network accessline 81
Use the campaign-strategy skill. My website is https://YOUR-WEBSITE.com - Network accessline 233
✅ Campaign created: https://app.smartlead.ai/campaigns/12345
skills/cold-email-starter-kit/scripts/_lib.ts
skills/cold-email-starter-kit/scripts/dynadot-bulk-purchase.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 9
[Credential-related source omitted] - Network accessline 10
const r = await fetch(`https://api.dynadot.com/api3.json?key=${apiKey}&command=account_info`); - Network accessline 16
[Credential-related source omitted] - Network accessline 17
try { const url = `https://api.dynadot.com/api3.json?key=${apiKey}&command=register&domain=${encodeURIComponent(domain)}&duration=1`; const r = await retry(() => fetch(url).then(x => x.json() as Promise<any>)); - Network accessline 18
const url = `https://api.dynadot.com/api3.json?key=${apiKey}&command=register&domain=${encodeURIComponent(domain)}&duration=1`; const r = await retry(() => fetch(url).then(x => x.json() as Promise<any>)); const code = r?.RegisterRes - Network accessline 19
const r = await retry(() => fetch(url).then(x => x.json() as Promise<any>)); - Access to secretsline 33
[Credential-related source omitted] - Network accessline 49
if (balance < totalCost) { console.error(`Insufficient wallet balance. Need $${totalCost.toFixed(2)}, have $${balance.toFixed(2)}.`); console.error(`Top up at https://www.dynadot.com/account (add at least $${(totalCost - balance).to - Network accessline 50
console.error(`Insufficient wallet balance. Need $${totalCost.toFixed(2)}, have $${balance.toFixed(2)}.`); console.error(`Top up at https://www.dynadot.com/account (add at least $${(totalCost - balance).toFixed(2)}).`); process.exit - Network accessline 51
console.error(`Top up at https://www.dynadot.com/account (add at least $${(totalCost - balance).toFixed(2)}).`);
skills/cold-email-starter-kit/scripts/dynadot-generate-domains.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 24
[Credential-related source omitted] - Network accessline 25
const url = new URL("https://api.dynadot.com/api3.json"); - Network accessline 32
const res = await retry(() => fetch(url.toString()).then(r => r.json() as Promise<any>)); - Access to secretsline 54
[Credential-related source omitted]
skills/cold-email-starter-kit/scripts/enrichments/ai-company-analysis.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 8
async function callLLM(prompt: string, model: string, key: string): Promise<any> { const res = await retry(() => fetch("https://openrouter.ai/api/v1/chat/completions", { - Network accessline 9
const res = await retry(() => fetch("https://openrouter.ai/api/v1/chat/completions", { - Access to secretsline 31
[Credential-related source omitted]
skills/cold-email-starter-kit/scripts/enrichments/company-news.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 44
try { const url = new URL("https://openweb-ninja.p.rapidapi.com/google-search"); - Network accessline 45
const url = new URL("https://openweb-ninja.p.rapidapi.com/google-search"); - Network accessline 50
const res = await retry(() => fetch(url.toString(), {
skills/cold-email-starter-kit/scripts/enrichments/company-phone.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 12
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Network accessline 13
const blitzBase = env.BLITZ_BASE_URL || "https://api.blitz.us"; - Network accessline 23
if (!lead.company_domain) return { ...lead, company_phone: "" }; try { const res = await retry(() => fetch(`${blitzBase}/api/enrichment/company`, { - Network accessline 24
try { const res = await retry(() => fetch(`${blitzBase}/api/enrichment/company`, { method: "POST", - Network accessline 25
const res = await retry(() => fetch(`${blitzBase}/api/enrichment/company`, {
skills/cold-email-starter-kit/scripts/enrichments/linkedin-profile.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 24
if (!lead.linkedin_url) return { ...lead }; try { const res = await retry(() => fetch("https://linkedin-bulk-data-scraper.p.rapidapi.com/person", { - Network accessline 25
try { const res = await retry(() => fetch("https://linkedin-bulk-data-scraper.p.rapidapi.com/person", { method: "POST", - Network accessline 26
const res = await retry(() => fetch("https://linkedin-bulk-data-scraper.p.rapidapi.com/person", {
skills/cold-email-starter-kit/scripts/instantly-add-leads.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 7
const API = "https://api.instantly.ai"; - Access to secretsline 15
[Credential-related source omitted] - Network accessline 36
})); try { const res = await retry(() => fetch(`${API}/api/v2/leads/bulk-create`, { - Network accessline 37
try { const res = await retry(() => fetch(`${API}/api/v2/leads/bulk-create`, { method: "POST", - Network accessline 38
const res = await retry(() => fetch(`${API}/api/v2/leads/bulk-create`, {
skills/cold-email-starter-kit/scripts/instantly-create-campaign.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 8
const API = "https://api.instantly.ai"; - Network accessline 10
async function instantlyFetch(path: string, init: RequestInit = {}, key: string): Promise<any> { const res = await retry(() => fetch(`${API}${path}`, { - Network accessline 11
const res = await retry(() => fetch(`${API}${path}`, { - Access to secretsline 30
[Credential-related source omitted] - Network accessline 111
console.log(); console.log(`✅ Campaign ready: https://app.instantly.ai/app/campaign/${campaignId}`); - Network accessline 112
console.log(`✅ Campaign ready: https://app.instantly.ai/app/campaign/${campaignId}`);
skills/cold-email-starter-kit/scripts/instantly-pull-analytics.ts
skills/cold-email-starter-kit/scripts/prospeo-full-export.ts
skills/cold-email-starter-kit/scripts/setup-env.sh
- Executable scriptline 1
#!/usr/bin/env bash - Access to secretsline 2
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 19
echo "Instructions for each service:" echo " Dynadot: https://www.dynadot.com/account → Tools → API → copy key + whitelist IP" echo " Zapmail: https://zapmail.ai → Settings → API → copy token" - Network accessline 20
echo " Dynadot: https://www.dynadot.com/account → Tools → API → copy key + whitelist IP" - Network accessline 21
echo " Zapmail: https://zapmail.ai → Settings → API → copy token" - Network accessline 22
echo " Prospeo: https://prospeo.io → Dashboard → Integrations → API → copy key" - Network accessline 23
echo " Smartlead: https://app.smartlead.ai → Settings → API Keys → Create" - Network accessline 24
echo " Instantly: https://app.instantly.ai → Settings → Integrations → API Keys"
skills/cold-email-starter-kit/scripts/smartlead-add-leads.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 7
const API = "https://server.smartlead.ai/api/v1"; - Access to secretsline 15
[Credential-related source omitted] - Network accessline 36
[Credential-related source omitted] - Network accessline 37
[Credential-related source omitted] - Network accessline 38
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted]
skills/cold-email-starter-kit/scripts/smartlead-create-campaign.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 8
const API = "https://server.smartlead.ai/api/v1"; - Network accessline 10
[Credential-related source omitted] - Network accessline 11
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Network accessline 20
[Credential-related source omitted] - Network accessline 21
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Network accessline 111
console.log(); console.log("✅ Campaign ready in DRAFT status."); console.log(` https://app.smartlead.ai/app/email-campaign/${campaignId}`); - Network accessline 112
console.log("✅ Campaign ready in DRAFT status."); console.log(` https://app.smartlead.ai/app/email-campaign/${campaignId}`); console.log(); - Network accessline 113
console.log(` https://app.smartlead.ai/app/email-campaign/${campaignId}`);
skills/cold-email-starter-kit/scripts/smartlead-pull-analytics.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 7
const API = "https://server.smartlead.ai/api/v1"; - Access to secretsline 18
[Credential-related source omitted] - Network accessline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 26
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted]
skills/cold-email-starter-kit/scripts/verify-credentials.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 14
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 15
try { const r = await fetch(`https://api.dynadot.com/api3.json?key=${env.DYNADOT_API_KEY}&command=account_info`); const j: any = await r.json(); - Network accessline 16
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 29
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 30
try { const r = await fetch("https://api.zapmail.ai/api/v2/domains/assignable?limit=5&page=1", { headers: { "x-auth-zapmail": env.ZAPMAIL_API_KEY }, - Network accessline 31
const r = await fetch("https://api.zapmail.ai/api/v2/domains/assignable?limit=5&page=1", { - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 49
const r = await fetch("https://api.prospeo.io/search-person", { - Access to secretsline 51
[Credential-related source omitted] - Network accessline 65
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Network accessline 66
[Credential-related source omitted] - Network accessline 67
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Network accessline 80
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Network accessline 81
[Credential-related source omitted] - Network accessline 82
const r = await fetch("https://api.instantly.ai/api/v2/workspace", { - Access to secretsline 83
[Credential-related source omitted]
skills/cold-email-starter-kit/scripts/zapmail-full-setup.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 15
params.set("domain", domains.join(",")); ZAPMAIL_NS.forEach((ns, i) => params.set(`ns${i}`, ns)); const url = `https://api.dynadot.com/api3.json?${params.toString().replace(/%2C/g, ",")}`; - Network accessline 16
ZAPMAIL_NS.forEach((ns, i) => params.set(`ns${i}`, ns)); const url = `https://api.dynadot.com/api3.json?${params.toString().replace(/%2C/g, ",")}`; const r = await retry(() => fetch(url).then(x => x.json() as Promise<any>)); - Network accessline 17
const url = `https://api.dynadot.com/api3.json?${params.toString().replace(/%2C/g, ",")}`; const r = await retry(() => fetch(url).then(x => x.json() as Promise<any>)); if (r?.SetNsResponse?.ResponseCode !== 0) { - Network accessline 18
const r = await retry(() => fetch(url).then(x => x.json() as Promise<any>)); - Network accessline 25
for (let i = 0; i < domainNames.length; i += 50) { const batch = domainNames.slice(i, i + 50); const res = await retry(() => fetch("https://api.zapmail.ai/api/v2/domains/connect-domain", { - Network accessline 26
const batch = domainNames.slice(i, i + 50); const res = await retry(() => fetch("https://api.zapmail.ai/api/v2/domains/connect-domain", { method: "POST", - Network accessline 27
const res = await retry(() => fetch("https://api.zapmail.ai/api/v2/domains/connect-domain", { - Network accessline 48
for (let page = 1; page < 100; page++) { const res = await retry(() => fetch(`https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=${page}`, { - Network accessline 49
const res = await retry(() => fetch(`https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=${page}`, { - Network accessline 90
]; } const res = await fetch("https://api.zapmail.ai/api/v2/mailboxes", { - Network accessline 91
} const res = await fetch("https://api.zapmail.ai/api/v2/mailboxes", { method: "POST", - Network accessline 92
const res = await fetch("https://api.zapmail.ai/api/v2/mailboxes", { - Network accessline 103
{ firstName, lastName, mailboxUsername: prefix2, domainName: domain }, ] }; const r2 = await fetch("https://api.zapmail.ai/api/v2/mailboxes", { - Network accessline 104
] }; const r2 = await fetch("https://api.zapmail.ai/api/v2/mailboxes", { method: "POST", - Network accessline 105
const r2 = await fetch("https://api.zapmail.ai/api/v2/mailboxes", { - Network accessline 125
[Credential-related source omitted] - Network accessline 126
const res = await retry(() => fetch("https://api.zapmail.ai/api/v2/exports/mailboxes", { - Access to secretsline 148
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted]
skills/competitor-engagers/SKILL.md
skills/deliverability-incident-response/SKILL.md
skills/deliverability-test-public/SKILL.md
- Access to secretsline 21
[Credential-related source omitted]
skills/deliverability-test-public/scripts/inbox-type-compare.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 7
[Credential-related source omitted] - Network accessline 11
const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 36
async function fetchJson(url: string, init?: RequestInit): Promise<any> { for (let attempt = 0; attempt < 3; attempt++) { const resp = await fetch(url, init); - Network accessline 37
for (let attempt = 0; attempt < 3; attempt++) { const resp = await fetch(url, init); if (resp.status === 429 || resp.status >= 500) { - Network accessline 38
const resp = await fetch(url, init); - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted]
skills/disco-like/SKILL.md
skills/disco-like/scripts/discover.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 6
[Credential-related source omitted] - Network accessline 14
const DISCOLIKE_BASE = "https://api.discolike.com/v1"; - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 48
async function fetchJson(url: string): Promise<any> { for (let attempt = 0; attempt < 4; attempt++) { const resp = await fetch(url, { headers: { "x-discolike-key": API_KEY! } }); - Network accessline 49
for (let attempt = 0; attempt < 4; attempt++) { const resp = await fetch(url, { headers: { "x-discolike-key": API_KEY! } }); if (resp.status === 429 || resp.status >= 500) { - Network accessline 50
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted]
skills/email-deliverability-audit/SKILL.md
- Access to secretsline 79
[Credential-related source omitted]
skills/email-deliverability-audit/scripts/audit-inboxes.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 6
[Credential-related source omitted] - Network accessline 14
const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 40
[Credential-related source omitted] - Network accessline 41
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 42
const resp = await fetch(url);
skills/email-deliverability-audit/scripts/audit-performance.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 14
[Credential-related source omitted] - Network accessline 23
const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 49
async function fetchJson(url: string): Promise<any> { for (let attempt = 0; attempt < 3; attempt++) { const resp = await fetch(url); - Network accessline 50
for (let attempt = 0; attempt < 3; attempt++) { const resp = await fetch(url); if (resp.status === 429 || resp.status >= 500) { - Network accessline 51
const resp = await fetch(url); - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted]
skills/email-deliverability-audit/scripts/check-domain-auth.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/email-deliverability-audit/scripts/run-spam-test.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 6
[Credential-related source omitted] - Network accessline 19
const SERVER_BASE = "https://server.smartlead.ai/api/v1"; - Network accessline 20
const DELIVERY_BASE = "https://smartdelivery.smartlead.ai/api/v1"; - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 44
async function fetchJson(url: string, init?: RequestInit): Promise<any> { const resp = await fetch(url, init); - Network accessline 45
const resp = await fetch(url, init); - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted] - Access to secretsline 128
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted]
skills/google-maps-list-builder/SKILL.md
- Network accessline 38
1. **Node.js 18+** and **npm** installed 2. **A RapidAPI account** (free tier available) with a subscription to the **Maps Data API**: - Sign up at https://rapidapi.com - Network accessline 39
2. **A RapidAPI account** (free tier available) with a subscription to the **Maps Data API**: - Sign up at https://rapidapi.com - Subscribe to the API: https://rapidapi.com/alexanderxbx/api/maps-data - Network accessline 40
- Sign up at https://rapidapi.com - Network accessline 41
- Subscribe to the API: https://rapidapi.com/alexanderxbx/api/maps-data - Access to secretsline 85
[Credential-related source omitted] - Network accessline 319
attempt = 0 ): Promise<T> { const url = new URL(`https://${this.host}/${endpoint}`); - Network accessline 320
): Promise<T> { const url = new URL(`https://${this.host}/${endpoint}`); for (const [k, v] of Object.entries(params)) { - Network accessline 321
const url = new URL(`https://${this.host}/${endpoint}`); - Network accessline 326
try { const res = await fetch(url.toString(), { - Network accessline 327
const res = await fetch(url.toString(), { - Network accessline 459
ENVIRONMENT: RAPIDAPI_KEY Your RapidAPI key (required) Get one at: https://rapidapi.com/alexanderxbx/api/maps-data - Network accessline 461
Get one at: https://rapidapi.com/alexanderxbx/api/maps-data - Access to secretsline 476
[Credential-related source omitted] - Network accessline 477
if (!apiKey) { console.error('Error: RAPIDAPI_KEY environment variable is required'); console.error('Get your key at: https://rapidapi.com/alexanderxbx/api/maps-data'); - Network accessline 478
console.error('Error: RAPIDAPI_KEY environment variable is required'); console.error('Get your key at: https://rapidapi.com/alexanderxbx/api/maps-data'); process.exit(1); - Network accessline 479
console.error('Get your key at: https://rapidapi.com/alexanderxbx/api/maps-data'); - Access to secretsline 585
[Credential-related source omitted] - Access to secretsline 630
[Credential-related source omitted] - Network accessline 679
const port = parseInt(process.env.PORT || '3000', 10); app.listen(port, () => console.log(`Scraper running at http://localhost:${port}`)); - Network accessline 680
app.listen(port, () => console.log(`Scraper running at http://localhost:${port}`)); - Network accessline 693
Run locally: `npm run serve` then open http://localhost:3000 - Network accessline 697
1. Push your project to a GitHub repo 2. Go to https://railway.com, create a new project, connect the repo - Network accessline 698
2. Go to https://railway.com, create a new project, connect the repo - Access to secretsline 699
[Credential-related source omitted] - Network accessline 715
The underlying API is the **Maps Data API** on RapidAPI: https://rapidapi.com/alexanderxbx/api/maps-data - Network accessline 716
https://rapidapi.com/alexanderxbx/api/maps-data
skills/icp-onboarding/SKILL.md
- Network accessline 37
npx tsx scripts/scrape-website.ts --url=https://example.com --out=/tmp/scrape.json
skills/icp-onboarding/references/prospeo-industries.md
- Network accessline 5
Source: https://prospeo.io/api-docs/enum/industries
skills/icp-onboarding/scripts/scrape-website.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 7
* * Usage: * npx tsx scripts/scrape-website.ts --url=https://example.com --out=/tmp/scrape.json - Network accessline 8
* Usage: * npx tsx scripts/scrape-website.ts --url=https://example.com --out=/tmp/scrape.json */ - Network accessline 9
* npx tsx scripts/scrape-website.ts --url=https://example.com --out=/tmp/scrape.json - Network accessline 40
const out = get("--out") ?? "/tmp/scrape.json"; if (!url) { console.error("Usage: scrape-website.ts --url=https://example.com [--out=path]"); - Network accessline 41
if (!url) { console.error("Usage: scrape-website.ts --url=https://example.com [--out=path]"); process.exit(1); - Network accessline 42
console.error("Usage: scrape-website.ts --url=https://example.com [--out=path]"); - Network accessline 61
async function fetchPage(url: string): Promise<Page> { try { const resp = await fetch(url, { - Network accessline 62
try { const resp = await fetch(url, { headers: { - Network accessline 63
const resp = await fetch(url, {
skills/inbox-lifecycle-manager/scripts/_lib.ts
- Executable scriptline 1
Executable file - Network accessline 10
export const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 45
let resp: Response; try { resp = await fetch(url, { ...opts, signal: ctrl.signal }); - Network accessline 46
try { resp = await fetch(url, { ...opts, signal: ctrl.signal }); } catch (e) { - Network accessline 47
resp = await fetch(url, { ...opts, signal: ctrl.signal }); - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 142
[Credential-related source omitted] - Access to secretsline 206
[Credential-related source omitted]
skills/inbox-lifecycle-manager/scripts/apply-lifecycle.ts
skills/inbox-lifecycle-manager/scripts/plan-lifecycle.ts
- Executable scriptline 1
Executable file
skills/list-builder/SKILL.md
- Network accessline 65
| Var | What for | Get one | |---|---|---| | `PROSPEO_API_KEY` | company + people search, the primary discovery source | sign up at https://prospeo.io | - Network accessline 66
|---|---|---| | `PROSPEO_API_KEY` | company + people search, the primary discovery source | sign up at https://prospeo.io | | `OPENAI_API_KEY` | the GPT-5-nano judge that scores every candidate | sign up at https://platform.openai.com | - Network accessline 67
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Network accessline 68
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Network accessline 74
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Network accessline 75
| `OPENAI_ICP_MODEL` | override the judge model (default `gpt-5-nano`) | uses the default | | `GETLEADS_API_KEY` | free contact counts + exports, first stop in Phase 4 (sign up at https://getleads.io) | contacts.ts marks GETLEADS `skipped` - Network accessline 76
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Network accessline 77
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Network accessline 78
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 79
| `LIST_REGISTRY_DB_URL` | Postgres 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_KEY` | validate `leads-final.csv` - Network accessline 80
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted]
skills/list-builder/scripts/classify-batch.ts
skills/list-builder/scripts/contacts-merge.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 50
function normLi(url: string): string { return (url || "").trim().toLowerCase().replace(/^https?:\/\/(www\.)?/, "https://www.").replace(/\/+$/, ""); - Network accessline 51
return (url || "").trim().toLowerCase().replace(/^https?:\/\/(www\.)?/, "https://www.").replace(/\/+$/, "");
skills/list-builder/scripts/contacts.ts
skills/list-builder/scripts/enrich-domains.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/list-builder/scripts/fleet.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/list-builder/scripts/getleads-client.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Network accessline 2
/** * Minimal MCP-over-HTTP client for GetLeads, so scripts can call it without a * live MCP session. Speaks JSON-RPC 2.0 to POST https://app.getleads.io/api/mcp: - Network accessline 3
* Minimal MCP-over-HTTP client for GetLeads, so scripts can call it without a * live MCP session. Speaks JSON-RPC 2.0 to POST https://app.getleads.io/api/mcp: * initialize (capturing the mcp-session-id header) → notifications/initialized - Network accessline 4
* live MCP session. Speaks JSON-RPC 2.0 to POST https://app.getleads.io/api/mcp: - Network accessline 6
* tools/call. Responses may be SSE (data: {...} lines) or plain JSON — both handled. * * Key: env GETLEADS_API_KEY (sign up at https://getleads.io), else the getleads - Network accessline 7
* * Key: env GETLEADS_API_KEY (sign up at https://getleads.io), else the getleads * mcpServers Authorization header in ~/.claude.json (read-only). - Network accessline 8
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Network accessline 22
const ENDPOINT = "https://app.getleads.io/api/mcp"; - Access to secretsline 25
[Credential-related source omitted] - Network accessline 44
const KEY = resolveKey(); function requireKey(): string { if (!KEY) throw new Error("GETLEADS_API_KEY not set (and no getleads entry in ~/.claude.json) — sign up at https://getleads.io"); - Network accessline 45
function requireKey(): string { if (!KEY) throw new Error("GETLEADS_API_KEY not set (and no getleads entry in ~/.claude.json) — sign up at https://getleads.io"); return KEY; - Network accessline 46
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 65
async function post(payload: any, expectResult: boolean): Promise<any> { const res = await fetch(ENDPOINT, { - Network accessline 66
const res = await fetch(ENDPOINT, { - Network accessline 141
} if (!url) throw new Error("export did not produce a download URL in time"); const res = await fetch(url); - Network accessline 142
if (!url) throw new Error("export did not produce a download URL in time"); const res = await fetch(url); const csv = await res.text(); - Network accessline 143
const res = await fetch(url); - Network accessline 153
const outArg = process.argv.find((a) => a.startsWith("--out="))?.slice("--out=".length); const args = jsonArgs ? JSON.parse(jsonArgs) : {}; if (!KEY) { console.error("No GetLeads key: set GETLEADS_API_KEY in .env (sign up at https:/ - Network accessline 154
const args = jsonArgs ? JSON.parse(jsonArgs) : {}; if (!KEY) { console.error("No GetLeads key: set GETLEADS_API_KEY in .env (sign up at https://getleads.io)"); process.exit(1); } if (cmd === "count") { - Network accessline 155
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted]
skills/list-builder/scripts/make-judge.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/list-builder/scripts/multi-lane-classify.ts
skills/list-builder/scripts/push-sheet.py
skills/list-builder/scripts/registry.ts
- Executable scriptline 1
Executable file
skills/list-builder/scripts/reject-audit.ts
skills/list-builder/scripts/run-lane.ts
skills/list-builder/scripts/snowball.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/list-builder/scripts/solo-teampage.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 21
[Credential-related source omitted] - Network accessline 30
try { const ctl = new AbortController(); const t = setTimeout(() => ctl.abort(), 9000); const r = await fetch(url, { headers: { "User-Agent": UA }, signal: ctl.signal, redirect: "follow" }); - Network accessline 31
const ctl = new AbortController(); const t = setTimeout(() => ctl.abort(), 9000); const r = await fetch(url, { headers: { "User-Agent": UA }, signal: ctl.signal, redirect: "follow" }); clearTimeout(t); - Network accessline 32
const r = await fetch(url, { headers: { "User-Agent": UA }, signal: ctl.signal, redirect: "follow" }); - Network accessline 47
} async function collectText(domain: string): Promise<{ text: string; teamFetched: boolean }> { const base = `https://${domain}`; - Network accessline 48
async function collectText(domain: string): Promise<{ text: string; teamFetched: boolean }> { const base = `https://${domain}`; const home = await grab(base) || await grab(`http://${domain}`); - Network accessline 49
const base = `https://${domain}`; - Network accessline 50
const home = await grab(base) || await grab(`http://${domain}`); - Network accessline 74
[Credential-related source omitted] - Network accessline 75
[Credential-related source omitted] - Network accessline 76
[Credential-related source omitted]
skills/list-expander/SKILL.md
- Network accessline 123
| Var | What for | Sign up | |---|---|---| | `PROSPEO_API_KEY` | Every phase: company search, lookalikes, counts | https://prospeo.io/ → dashboard → API (copy the X-KEY) | - Network accessline 124
|---|---|---| | `PROSPEO_API_KEY` | Every phase: company search, lookalikes, counts | https://prospeo.io/ → dashboard → API (copy the X-KEY) | | `OPENAI_API_KEY` | AI qualification in `score-batch.ts` + `verify-website.ts` | https://platfor - Network accessline 125
[Credential-related source omitted] - Access to secretsline 125
[Credential-related source omitted] - Network accessline 126
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted] - Network accessline 129
| Var | What for | Sign up | |---|---|---| | `EXA_API_KEY` | Exa `findSimilar` lookalike lane in `lookalikes.ts` | https://exa.ai/ | - Network accessline 130
|---|---|---| | `EXA_API_KEY` | Exa `findSimilar` lookalike lane in `lookalikes.ts` | https://exa.ai/ | | `PARALLEL_AI_API_KEY` | Parallel.ai entity-search lookalike lane in `lookalikes.ts` | https://parallel.ai/ | - Network accessline 131
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Network accessline 132
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Network accessline 133
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted]
skills/list-expander/scripts/contact-count.ts
skills/list-expander/scripts/fingerprint.ts
skills/list-expander/scripts/lib.ts
- Executable scriptline 1
Executable file - Access to secretsline 5
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Network accessline 100
if (url.includes("api.openai.com")) metrics.nano_calls++; try { const res = await fetch(url, { - Network accessline 101
try { const res = await fetch(url, { method: opts.method ?? (opts.body ? "POST" : "GET"), - Network accessline 102
const res = await fetch(url, { - Network accessline 185
const PROSPEO_BASE = "https://api.prospeo.io"; - Access to secretsline 254
[Credential-related source omitted] - Access to secretsline 289
[Credential-related source omitted] - Network accessline 416
const ctrl = new AbortController(); const t = setTimeout(() => ctrl.abort(), 20_000); const res = await fetch(url, { - Network accessline 417
const t = setTimeout(() => ctrl.abort(), 20_000); const res = await fetch(url, { headers: { "User-Agent": BROWSER_UA, Accept: "text/html" }, - Network accessline 418
const res = await fetch(url, {
skills/list-expander/scripts/lookalikes.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 7
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Network accessline 84
if (!key) return; await mapConcurrent(seeds, 3, async (seed) => { const r = await httpJson("https://api.exa.ai/findSimilar", { - Network accessline 85
[Credential-related source omitted] - Network accessline 86
const r = await httpJson("https://api.exa.ai/findSimilar", { - Network accessline 87
[Credential-related source omitted] - Network accessline 88
body: { url: `https://${seed}`, numResults: exaN, - Network accessline 89
url: `https://${seed}`, - Network accessline 106
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Network accessline 107
[Credential-related source omitted] - Network accessline 108
const r = await httpJson("https://api.parallel.ai/v1beta/findall/entity-search", {
skills/list-expander/scripts/mine-filters.ts
skills/list-expander/scripts/pull.ts
skills/list-expander/scripts/report.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/list-expander/scripts/score-batch.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Network accessline 74
for (let attempt = 0; attempt < 3; attempt++) { try { const r = await httpJson("https://api.openai.com/v1/chat/completions", { - Network accessline 75
[Credential-related source omitted] - Network accessline 76
const r = await httpJson("https://api.openai.com/v1/chat/completions", {
skills/list-expander/scripts/verify-website.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 60
const ctrl = new AbortController(); const t = setTimeout(() => ctrl.abort(), 15_000); const res = await fetch(`${proto}://${domain}/`, { - Network accessline 61
const t = setTimeout(() => ctrl.abort(), 15_000); const res = await fetch(`${proto}://${domain}/`, { headers: { "User-Agent": BROWSER_UA, Accept: "text/html" }, signal: ctrl.signal, redirect: "follow", - Network accessline 62
const res = await fetch(`${proto}://${domain}/`, { - Network accessline 89
[Credential-related source omitted] - Network accessline 90
[Credential-related source omitted] - Network accessline 91
[Credential-related source omitted]
skills/list-quality-scorecard/scripts/score-list.ts
- Executable scriptline 1
#!/usr/bin/env tsx
skills/perfect-company-list/SKILL.md
- Access to secretsline 71
[Credential-related source omitted]
skills/perfect-company-list/clay-workflow.md
- Network accessline 56
[1 trigger: domain, name, industry, description, question, yes, no] -> [2 tool: enrich-company] only when no description came in -> [3 tool: http-api-v2] POST https://api.typesafe.ai/v1/systemone (Jev) - Network accessline 57
-> [2 tool: enrich-company] only when no description came in -> [3 tool: http-api-v2] POST https://api.typesafe.ai/v1/systemone (Jev) -> [4 code: threshold + contract] - Network accessline 58
-> [3 tool: http-api-v2] POST https://api.typesafe.ai/v1/systemone (Jev) - Access to secretsline 76
[Credential-related source omitted]
skills/perfect-company-list/scripts/jev_judge.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 8
[Credential-related source omitted] - Network accessline 20
URL = "https://api.typesafe.ai/v1/systemone" - Network accessline 25
[Credential-related source omitted] - Network accessline 26
[Credential-related source omitted] - Network accessline 27
[Credential-related source omitted] - Network accessline 28
"Content-Type": "application/json"}) return json.loads(urllib.request.urlopen(req, timeout=60).read()) except urllib.error.HTTPError as e: - Network accessline 29
return json.loads(urllib.request.urlopen(req, timeout=60).read()) - Access to secretsline 57
[Credential-related source omitted]
skills/playbooks/clay-playbooks/SKILL.md
skills/playbooks/playbook-ad-library/SKILL.md
- Network accessline 54
| `ad_theme` | string | `ai outbound automation` | 4 words | no, use `""` | | `active_ad_count` | integer | `33` | n/a | no, use `0` | | `fb_page_url` | string | `https://www.facebook.com/smartleadai` | 120 chars | no, use `""` | - Network accessline 55
| `active_ad_count` | integer | `33` | n/a | no, use `0` | | `fb_page_url` | string | `https://www.facebook.com/smartleadai` | 120 chars | no, use `""` | | `evidence_ad_id` | string | `26618345894517042` | 32 chars | no, use `""` | - Network accessline 56
| `fb_page_url` | string | `https://www.facebook.com/smartleadai` | 120 chars | no, use `""` | - Network accessline 99
|---|---|---|---|---|---| | 0 | **Cache** (45 days, keyed on bare domain) | FREE | lookup before anything else | depends on list overlap | **ALWAYS first.** Every paid step is gated on a cache miss | | 1 | Company website HTML | FREE | `GET - Network accessline 100
| 0 | **Cache** (45 days, keyed on bare domain) | FREE | lookup before anything else | depends on list overlap | **ALWAYS first.** Every paid step is gated on a cache miss | | 1 | Company website HTML | FREE | `GET https://{domain}/`, then - Network accessline 101
| 1 | Company website HTML | FREE | `GET https://{domain}/`, then `/contact`, `/about`, browser UA, follow redirects. Un-escape `\/` to `/`, then regex for a `facebook.com/<slug>` link | **38%** measured | always run, it costs nothing |
skills/playbooks/playbook-ad-library/clay-table.md
- Network accessline 46
| 1 | Ad Cache Lookup | Lookup Object | your cache store | `{{f_domain}}` | email-valid gate | FREE | | 2 | Cache Fresh | Formula | `{{f_cache}}?.last_checked && (Date.now() - Date.parse({{f_cache}}.last_checked)) / 86400000 < 45` | `{{f_ca - Network accessline 47
| 2 | Cache Fresh | Formula | `{{f_cache}}?.last_checked && (Date.now() - Date.parse({{f_cache}}.last_checked)) / 86400000 < 45` | `{{f_cache}}` | none | 45-day fast path | | 3 | FB Page From Site | HTTP API | `GET https://{{f_domain}}/` wi - Network accessline 48
| 3 | FB Page From Site | HTTP API | `GET https://{{f_domain}}/` with a browser User-Agent | `{{f_domain}}` | `!{{f_cache_fresh}}` + email gate | FREE. ⚠<U+FE0F> Unverified: whether Clay's HTTP column follows redirects and exposes the status separ - Network accessline 52
| 7 | FB Page Verified | Formula | **all three gates**, see below | `{{f_google}}`, `{{f_company_clean}}`, `{{f_domain}}` | `!!{{f_google}}` | FREE. **A plain formula, not an AI column** — deterministic string work does not need a model | | - Network accessline 53
| 8 | FB Page Proxy | HTTP API | rendering proxy, `js_render`, premium proxy | `{{f_domain}}` | `!{{f_slug}} && !{{f_verified}} && ({{f_site_status}} === 403 \|\| {{f_site_status}} === 429)` | METERED. **Bot-protected sites only.** If the H - Network accessline 54
| 9 | FB Page URL | Formula | `{{f_slug}} ? "https://www.facebook.com/" + {{f_slug}} : ({{f_verified}} \|\| {{f_proxy_slug}} \|\| "")` | 4, 7, 8 | none | the single field the rest of the chain reads | - Network accessline 55
| 10 | Ad Library Raw | HTTP API | `POST https://api.apify.com/v2/acts/apify~facebook-ads-scraper/run-sync-get-dataset-items` body `{"startUrls":[{"url":"{{f_fb_page_url}}"}],"onlyTotal":true,"activeStatus":"active"}` | `{{f_fb_page_url}}`
skills/playbooks/playbook-ad-library/clay-workflow.md
- Network accessline 95
return {"fb_page_url": "https://www.facebook.com/" + m.group(1)}
skills/playbooks/playbook-case-study-page/SKILL.md
- Network accessline 55
| `case_study_line` | string, ≤16 words | `your work with Notion on global spend management` | no, use `""` | | `client_name` | string | `Notion` | no, use `""` | | `case_study_url` | string | `https://ramp.com/customers` | no, use `""` | - Network accessline 56
| `client_name` | string | `Notion` | no, use `""` | | `case_study_url` | string | `https://ramp.com/customers` | no, use `""` | | `evidence_quote` | string | `Notion unified global spend management across 10+ countries` | no, use `""` | - Network accessline 57
| `case_study_url` | string | `https://ramp.com/customers` | no, use `""` |
skills/playbooks/playbook-case-study-page/clay-table.md
- Network accessline 16
A list column holding `https://www.gong.io/` concatenates into - Network accessline 17
`https://https://www.gong.io//customers`. Every probe 404s. Every row falls through to the paid - Network accessline 25
|---|---|---|---|---|---| | 0 | Normalized Domain | action | `Normalize a Domain`, type `bare` | none | **MANDATORY.** See above | | 1 | Case Study URL | HTTP API | `GET https://{{NormalizedDomain}}/customers` | email-valid gate | **Plus ni - Network accessline 26
| 0 | Normalized Domain | action | `Normalize a Domain`, type `bare` | none | **MANDATORY.** See above | | 1 | Case Study URL | HTTP API | `GET https://{{NormalizedDomain}}/customers` | email-valid gate | **Plus nine sibling columns**, one - Network accessline 27
| 1 | Case Study URL | HTTP API | `GET https://{{NormalizedDomain}}/customers` | email-valid gate | **Plus nine sibling columns**, one per remaining path, each gated on the previous returning non-200. Browser User-Agent on every one |
skills/playbooks/playbook-case-study-page/clay-workflow.md
- Network accessline 36
# path. A four-path build loses every row of that class to a paid fallback, # which is both worse and more expensive. return {"candidates": ["https://%s%s" % (d, p) for p in PATHS], "domain": d} - Network accessline 38
return {"candidates": ["https://%s%s" % (d, p) for p in PATHS], "domain": d}
skills/playbooks/playbook-fundraising/SKILL.md
- Network accessline 212
Examples: Input: {"company":"Attio","amount":"$52M","stage":"Series B","eligible":true,"evidence_url":"https://www.crunchbase.com/funding_round/attio-series-b","confidence":"high"} - Network accessline 213
Input: {"company":"Attio","amount":"$52M","stage":"Series B","eligible":true,"evidence_url":"https://www.crunchbase.com/funding_round/attio-series-b","confidence":"high"} - Network accessline 214
Output: {"funding_line":"you raised $52M in the Series B","evidence_url":"https://www.crunchbase.com/funding_round/attio-series-b","confidence":"high"} - Network accessline 215
Input: {"company":"Deel","amount":"$300M","stage":"","eligible":true,"evidence_url":"https://www.crunchbase.com/organization/deel","confidence":"high"} - Network accessline 216
Output: {"funding_line":"you closed a $300M round","evidence_url":"https://www.crunchbase.com/organization/deel","confidence":"high"} - Network accessline 217
Input: {"company":"Northwind Labs","amount":"","stage":"Series A","eligible":true,"evidence_url":"https://www.crunchbase.com/organization/northwind-labs","confidence":"high"} - Network accessline 218
Output: {"funding_line":"you closed the Series A","evidence_url":"https://www.crunchbase.com/organization/northwind-labs","confidence":"high"}
skills/playbooks/playbook-google-site-search/SKILL.md
- Network accessline 68
| `site_keyword_hit` | `"yes"` or `""` | `yes` | yes | | `site_keyword_line` | string | `you hold SOC 2 Type II certification` | yes | | `site_keyword_url` | URL | `https://linear.app/security` | yes | - Network accessline 69
| `site_keyword_line` | string | `you hold SOC 2 Type II certification` | yes | | `site_keyword_url` | URL | `https://linear.app/security` | yes | | `site_keyword_status` | `has` / `planned` / `discusses` / `none` | `has` | no | - Network accessline 70
| `site_keyword_url` | URL | `https://linear.app/security` | yes | - Network accessline 277
Examples: Input: domain=linear.app keyword=SOC 2 results=[{"title":"Security","url":"https://linear.app/security","snippet":"Linear undergoes regular Service Organization Controls audits (SOC 2 Type II)."}] - Network accessline 278
Input: domain=linear.app keyword=SOC 2 results=[{"title":"Security","url":"https://linear.app/security","snippet":"Linear undergoes regular Service Organization Controls audits (SOC 2 Type II)."}] - Network accessline 279
Output: {"mentions": true, "status": "has", "evidence_url": "https://linear.app/security", "line": "you run SOC 2 Type II audits", "confidence": "high"} - Network accessline 280
Input: domain=smallco.io keyword=SOC 2 results=[{"title":"Roadmap","url":"https://feedback.smallco.io/roadmap","snippet":"SOC 2 security certification - planned"}] - Network accessline 281
Output: {"mentions": true, "status": "planned", "evidence_url": "https://feedback.smallco.io/roadmap", "line": "SOC 2 is still sitting on your public roadmap", "confidence": "high"} - Network accessline 282
Input: domain=midco.com keyword=SOC 2 results=[{"title":"Trust","url":"https://trust.midco.com/","snippet":"We are in the middle of our SOC 2 Type 2 audit window."}] - Network accessline 283
Output: {"mentions": true, "status": "planned", "evidence_url": "https://trust.midco.com/", "line": "you are partway through your SOC 2 Type 2 audit", "confidence": "high"} - Network accessline 284
Input: domain=acme.com keyword=chess results=[{"title":"Best chess apps 2026","url":"https://acme.com/blog/roundup","snippet":"We ranked 20 chess apps."}]
skills/playbooks/playbook-hiring-surge/SKILL.md
- Network accessline 337
| Growth percent shows `Infinity` | The whole department started inside the window, so `total - recent == 0`. **This is a real surge, not an error** | The check treats `"Infinity"` as YES on purpose. Leave it | | Counts belong to a differen - Network accessline 338
| Counts belong to a different company with the same short name | Two different companies can share a short name, and a bare domain invites the collision. This is the identifier on ~83.6% of rows | **Mandatory guard:** sanity-check the retu - Network accessline 339
| A LinkedIn URL contains a raw `&` | Observed: `https://www.linkedin.com/company/cr&t` | Percent-encode company URLs before any bulk URL operation |
skills/playbooks/playbook-hiring-surge/clay-workflow.md
- Network accessline 49
|---|---|---| | `domain` | string | `"acme.com"` | | `company_linkedin_url` | string, optional | `"https://www.linkedin.com/company/acme"` | - Network accessline 50
| `domain` | string | `"acme.com"` | | `company_linkedin_url` | string, optional | `"https://www.linkedin.com/company/acme"` | | `departments` | string[] | `["Sales","Marketing and Public Relations"]` | - Network accessline 51
| `company_linkedin_url` | string, optional | `"https://www.linkedin.com/company/acme"` |
skills/playbooks/playbook-job-posting-language/SKILL.md
- Network accessline 272
Examples: Input: Company: Gong | Postings: [{"title":"Mid Market Account Executive, Financial Services","url":"https://www.linkedin.com/jobs/view/x1"}] - Network accessline 273
Input: Company: Gong | Postings: [{"title":"Mid Market Account Executive, Financial Services","url":"https://www.linkedin.com/jobs/view/x1"}] - Network accessline 274
Output: {"job_posting_line": "you're hiring a mid market account executive", "role_named": "mid market account executive", "evidence_url": "https://www.linkedin.com/jobs/view/x1", "confidence": "high"} - Network accessline 275
Input: Company: Ramp | Postings: [{"title":"Sales Enablement | SDR","url":"https://www.linkedin.com/jobs/view/x2"}] - Network accessline 276
Output: {"job_posting_line": "you're bringing on a new sales development rep", "role_named": "sales development rep", "evidence_url": "https://www.linkedin.com/jobs/view/x2", "confidence": "high"}
skills/playbooks/playbook-linkedin-engagement/clay-workflow.md
- Network accessline 129
# ONE post first. Read the output before scaling. clay routines runs start "$RT" --input '{"items":[{ "source_urls": ["https://www.linkedin.com/company/example"], - Network accessline 130
clay routines runs start "$RT" --input '{"items":[{ "source_urls": ["https://www.linkedin.com/company/example"], "source_domains": {"https://www.linkedin.com/company/example": "example.com"}, - Network accessline 131
"source_urls": ["https://www.linkedin.com/company/example"], - Network accessline 132
"source_domains": {"https://www.linkedin.com/company/example": "example.com"},
skills/playbooks/playbook-name-to-other-prospects/clay-workflow.md
- Network accessline 135
"domain":"acme.com", "recipient_full_name":"Priya Ramanathan", "recipient_linkedin_url":"https://www.linkedin.com/in/priya-ramanathan", - Network accessline 136
"recipient_full_name":"Priya Ramanathan", "recipient_linkedin_url":"https://www.linkedin.com/in/priya-ramanathan", "persona_titles":["Chief Operating Officer","VP Operations","Head of Operations"] - Network accessline 137
"recipient_linkedin_url":"https://www.linkedin.com/in/priya-ramanathan",
skills/playbooks/playbook-new-in-role/SKILL.md
- Network accessline 169
| # | Source | Cost | Exact call | Stop rule | |---|---|---|---|---| | 1 | Prospeo `/search-person` | **FREE** to CHEAP | `POST https://api.prospeo.io/search-person`, header `X-KEY: $PROSPEO_API_KEY`, body below | always start here | - Network accessline 170
|---|---|---|---|---| | 1 | Prospeo `/search-person` | **FREE** to CHEAP | `POST https://api.prospeo.io/search-person`, header `X-KEY: $PROSPEO_API_KEY`, body below | always start here | | 2 | Clay **Find people** source, built in a new wor - Network accessline 171
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Network accessline 172
| 2 | Clay **Find people** source, built in a new workbook through the UI | FREE to METERED | set job title, location, headcount and the recent-role-change filter in the UI, run, then export or webhook the rows out | only if step 1 returned - Network accessline 174
| 4 | Model line writer | CHEAP ($0.053 / 1,000 rows) | `POST https://api.openai.com/v1/chat/completions`, params in §6 | always runs, on whichever source produced the facts |
skills/playbooks/playbook-new-in-role/clay-table.md
- Network accessline 36
POST https://api.prospeo.io/search-person // header X-KEY from workspace auth, never inline
skills/playbooks/playbook-new-in-role/clay-workflow.md
- Network accessline 68
| actionKey | `http-api-v2` | | method | `POST` | | url | `https://api.prospeo.io/search-person` | - Network accessline 69
| method | `POST` | | url | `https://api.prospeo.io/search-person` | | headers | `{"X-KEY": "<from workspace auth, never inline>", "Content-Type": "application/json", "User-Agent": "<a browser UA>"}` | - Network accessline 70
| url | `https://api.prospeo.io/search-person` |
skills/playbooks/playbook-pricing-page/SKILL.md
- Network accessline 55
|---|---|---|---| | `pricing_public` | boolean | `true` | no, defaults false | | `pricing_url` | string | `https://www.notion.com/pricing` | yes, `""` | - Network accessline 56
| `pricing_public` | boolean | `true` | no, defaults false | | `pricing_url` | string | `https://www.notion.com/pricing` | yes, `""` | | `pricing_model` | `per_seat` / `usage` / `flat` / `credits` / `quote_only` / `unknown` | `per_seat` | n - Network accessline 57
| `pricing_url` | string | `https://www.notion.com/pricing` | yes, `""` | - Network accessline 104
| # | Source | Cost | Call | Result | |---|---|---|---|---| | 1 | **URL-guess existence check** | FREE | `HEAD https://{domain}/pricing`, then `/pricing/`, `/plans`, `/pricing-plans`, `/price`, then the same on `www.`. Browser UA, follow re - Network accessline 105
|---|---|---|---|---| | 1 | **URL-guess existence check** | FREE | `HEAD https://{domain}/pricing`, then `/pricing/`, `/plans`, `/pricing-plans`, `/price`, then the same on `www.`. Browser UA, follow redirects, and **accept only when the fi - Network accessline 106
| 1 | **URL-guess existence check** | FREE | `HEAD https://{domain}/pricing`, then `/pricing/`, `/plans`, `/pricing-plans`, `/price`, then the same on `www.`. Browser UA, follow redirects, and **accept only when the final status is 2xx AND
skills/playbooks/playbook-social-link-finding/SKILL.md
- Network accessline 17
**One-line output:** `company_linkedin_url = "https://www.linkedin.com/company/yampa-precision-manufacturing"` - Network accessline 63
| 2 | A company-search API, **batched by domain** | FREE / cheap | LinkedIn 6/8, X 5/8, FB 5/8, IG 4/8, **YouTube 0/8, TikTok 0/8** (no field exists) | ⚠<U+FE0F> see the batching trap below. **Bind results by PRIMARY domain only** | | 2b | A domai - Network accessline 64
| 2b | A domain ↔ company-profile converter | CHEAP | LinkedIn only, **both directions** | the reverse direction is what other playbooks come here for | | 3 | **Plain website HTML fetch** — `https://<d>`, then `https://www.<d>`, then `http: - Network accessline 65
| 3 | **Plain website HTML fetch** — `https://<d>`, then `https://www.<d>`, then `http://<d>`, then `/contact`, `/about`, `/contact-us` | FREE | **the winning value on 5/8 rows, and the ONLY source of TikTok** | **the strongest evidence in
skills/playbooks/playbook-social-link-finding/clay-table.md
- Network accessline 26
| 1 | Normalize a Domain | action | Website | none | free | | 2 | Company Record | action | `{{Domain}}` | `!!{{f_Domain}}` | ⚠<U+FE0F> **bind results by PRIMARY domain only** | | 3 | Site HTML | `scrape-website` | `https://{{Domain}}/` | `!!{{f_D - Network accessline 27
| 2 | Company Record | action | `{{Domain}}` | `!!{{f_Domain}}` | ⚠<U+FE0F> **bind results by PRIMARY domain only** | | 3 | Site HTML | `scrape-website` | `https://{{Domain}}/` | `!!{{f_Domain}}` | **the strongest evidence in the chain** | | 4 | S - Network accessline 28
| 3 | Site HTML | `scrape-website` | `https://{{Domain}}/` | `!!{{f_Domain}}` | **the strongest evidence in the chain** | - Access to secretsline 49
[Credential-related source omitted]
skills/playbooks/playbook-social-link-finding/clay-workflow.md
- Network accessline 35
Walk the ladder: `https://<d>`, `https://www.<d>`, `http://<d>`, then `/contact`, `/about`, - Access to secretsline 46
[Credential-related source omitted] - Network accessline 97
PLATFORMS = ["linkedin", "x", "facebook", "instagram", "youtube", "tiktok"] BASE = {"linkedin": "https://www.linkedin.com/company/%s", - Network accessline 98
BASE = {"linkedin": "https://www.linkedin.com/company/%s", - Network accessline 99
"x": "https://x.com/%s", - Network accessline 100
"facebook": "https://www.facebook.com/%s", - Network accessline 101
"instagram": "https://www.instagram.com/%s", - Network accessline 102
"youtube": "https://www.youtube.com/@%s", - Network accessline 103
"tiktok": "https://www.tiktok.com/@%s"}
skills/playbooks/playbook-social-posts/clay-workflow.md
- Network accessline 137
RT=$(clay routines create workflow "$WF" --name "social-post" | jq -r '.id') clay routines runs start "$RT" --input '{"items":[ {"profile_url":"https://www.linkedin.com/company/example"}, - Network accessline 138
clay routines runs start "$RT" --input '{"items":[ {"profile_url":"https://www.linkedin.com/company/example"}, {"profile_url":"https://www.linkedin.com/in/example-founder"} - Network accessline 139
{"profile_url":"https://www.linkedin.com/company/example"}, - Network accessline 140
{"profile_url":"https://www.linkedin.com/in/example-founder"}
skills/positive-reply-scoring/SKILL.md
- Access to secretsline 46
[Credential-related source omitted]
skills/positive-reply-scoring/scripts/aggregate-scores.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 9
[Credential-related source omitted] - Network accessline 16
const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Network accessline 46
const url = new URL(`${API_BASE}/campaigns/${campaignId}/statistics`); url.searchParams.set("api_key", API_KEY); const resp = await fetch(url.toString()); - Network accessline 47
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Network accessline 48
const resp = await fetch(url.toString());
skills/positive-reply-scoring/scripts/fetch-campaign-replies.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 9
[Credential-related source omitted] - Network accessline 19
const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 66
async function fetchJson(url: string): Promise<any> { for (let attempt = 0; attempt < 5; attempt++) { const resp = await fetch(url); - Network accessline 67
for (let attempt = 0; attempt < 5; attempt++) { const resp = await fetch(url); if (resp.status === 429 || resp.status >= 500) { - Network accessline 68
const resp = await fetch(url); - Access to secretsline 93
[Credential-related source omitted] - Access to secretsline 116
[Credential-related source omitted]
skills/prospeo-full-export/SKILL.md
- Network accessline 30
1. Go to [prospeo.io](https://prospeo.io) and sign up - Network accessline 36
1. Log into Prospeo 2. Go to **Settings > API** (or visit [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api)) - Network accessline 37
2. Go to **Settings > API** (or visit [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api)) - Access to secretsline 46
[Credential-related source omitted] - Network accessline 59
Go to [prospeo.io/app/search](https://prospeo.io/app/search) and use the filters to build your search. The UI lets you filter by: - Network accessline 134
**Endpoint:** `POST https://api.prospeo.io/search-person` - Network accessline 147
const response = await fetch('https://api.prospeo.io/search-person', { - Access to secretsline 151
[Credential-related source omitted] - Network accessline 177
full_name: "Jane Smith", current_job_title: "CEO", linkedin_url: "https://linkedin.com/in/janesmith", - Network accessline 178
current_job_title: "CEO", linkedin_url: "https://linkedin.com/in/janesmith", email: "jane@acme.com", - Network accessline 179
linkedin_url: "https://linkedin.com/in/janesmith", - Network accessline 186
name: "Acme Corp", domain: "acme.com", linkedin_url: "https://linkedin.com/company/acme", - Network accessline 187
domain: "acme.com", linkedin_url: "https://linkedin.com/company/acme", industry: "Information Technology", - Network accessline 188
linkedin_url: "https://linkedin.com/company/acme", - Access to secretsline 245
[Credential-related source omitted] - Access to secretsline 246
[Credential-related source omitted] - Access to secretsline 247
[Credential-related source omitted] - Network accessline 274
const res = await fetch('https://api.prospeo.io/search-person', { - Access to secretsline 276
[Credential-related source omitted] - Access to secretsline 500
[Credential-related source omitted] - Access to secretsline 501
[Credential-related source omitted] - Network accessline 503
### "API error: 401" Your API key is invalid. Check it at [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api). - Network accessline 504
Your API key is invalid. Check it at [prospeo.io/app/settings/api](https://prospeo.io/app/settings/api).
skills/prospeo-search-api/SKILL.md
skills/smartlead-api/SKILL.md
- Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Network accessline 15
Base URL: `https://server.smartlead.ai/api/v1` - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted] - Access to secretsline 125
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 137
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted] - Access to secretsline 153
[Credential-related source omitted] - Access to secretsline 164
[Credential-related source omitted] - Access to secretsline 170
[Credential-related source omitted] - Network accessline 176
const SMARTLEAD_API = "https://server.smartlead.ai/api/v1"; - Access to secretsline 177
[Credential-related source omitted] - Network accessline 179
[Credential-related source omitted] - Network accessline 180
[Credential-related source omitted] - Access to secretsline 180
[Credential-related source omitted] - Network accessline 183
[Credential-related source omitted] - Network accessline 184
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted]
skills/smartlead-campaign-upload-public/SKILL.md
- Access to secretsline 51
[Credential-related source omitted] - Network accessline 65
Campaign is in DRAFT. Review + Start: → https://app.smartlead.ai/app/email-campaign/12345678 - Network accessline 66
→ https://app.smartlead.ai/app/email-campaign/12345678 - Access to secretsline 71
[Credential-related source omitted]
skills/smartlead-campaign-upload-public/scripts/upload.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 8
[Credential-related source omitted] - Network accessline 19
const API = "https://server.smartlead.ai/api/v1"; - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Network accessline 243
[Credential-related source omitted] - Network accessline 244
[Credential-related source omitted] - Network accessline 245
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Network accessline 263
[Credential-related source omitted] - Network accessline 264
[Credential-related source omitted] - Access to secretsline 264
[Credential-related source omitted] - Network accessline 446
console.log(``); console.log(`Review + Start:`); console.log(` → https://app.smartlead.ai/app/email-campaign/${campaignId}`); - Network accessline 447
console.log(`Review + Start:`); console.log(` → https://app.smartlead.ai/app/email-campaign/${campaignId}`); console.log(``); - Network accessline 448
console.log(` → https://app.smartlead.ai/app/email-campaign/${campaignId}`);
skills/smartlead-inbox-manager/SKILL.md
- Access to secretsline 35
[Credential-related source omitted]
skills/smartlead-inbox-manager/scripts/_lib.ts
- Executable scriptline 1
Executable file - Network accessline 7
export const API_BASE = "https://server.smartlead.ai/api/v1"; - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Network accessline 50
export async function fetchJson(url: string, options?: RequestInit): Promise<any> { for (let attempt = 0; attempt < 5; attempt++) { const resp = await fetch(url, options); - Network accessline 51
for (let attempt = 0; attempt < 5; attempt++) { const resp = await fetch(url, options); if (resp.status === 429 || resp.status >= 500) { - Network accessline 52
const resp = await fetch(url, options); - Access to secretsline 73
[Credential-related source omitted]
skills/smartlead-inbox-manager/scripts/list-health.ts
skills/smartlead-inbox-manager/scripts/set-signatures.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 108
[Credential-related source omitted] - Network accessline 112
}; try { const resp = await fetch(url, { - Network accessline 113
try { const resp = await fetch(url, { method: "POST", - Network accessline 114
const resp = await fetch(url, {
skills/smartlead-inbox-manager/scripts/set-warmup.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Network accessline 59
try { const resp = await fetch(url, { method: "POST", - Network accessline 60
const resp = await fetch(url, {
skills/smartlead-inbox-manager/scripts/tag-inboxes.ts
- Executable scriptline 1
#!/usr/bin/env tsx - Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Network accessline 60
}; try { const resp = await fetch(url, { - Network accessline 61
try { const resp = await fetch(url, { method: "POST", - Network accessline 62
const resp = await fetch(url, {
skills/zapmail-domain-setup-public/SKILL.md
- Network accessline 15
### 1. Get Your Dynadot API Key 1. Log into [dynadot.com](https://www.dynadot.com) - Network accessline 16
1. Log into [dynadot.com](https://www.dynadot.com) - Network accessline 21
### 2. Get Your Zapmail API Key 1. Log into [zapmail.ai](https://zapmail.ai) - Network accessline 22
1. Log into [zapmail.ai](https://zapmail.ai) - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Network accessline 50
GET https://api.dynadot.com/api3.json?key=<YOUR_KEY>&command=account_info - Network accessline 56
GET https://api.zapmail.ai/api/v2/domains/assignable?limit=10&page=1 - Network accessline 151
GET https://api.dynadot.com/api3.json - Access to secretsline 152
[Credential-related source omitted] - Network accessline 187
GET https://api.dynadot.com/api3.json - Access to secretsline 188
[Credential-related source omitted] - Network accessline 196
GET https://api.dynadot.com/api3.json - Access to secretsline 197
[Credential-related source omitted] - Network accessline 225
GET https://api.dynadot.com/api3.json - Access to secretsline 226
[Credential-related source omitted] - Access to secretsline 239
[Credential-related source omitted] - Network accessline 245
"ns3": "pns64.cloudns.uk", } url = f"https://api.dynadot.com/api3.json?{urllib.parse.urlencode(params, safe=',')}" - Network accessline 247
url = f"https://api.dynadot.com/api3.json?{urllib.parse.urlencode(params, safe=',')}" - Network accessline 264
POST https://api.zapmail.ai/api/v2/domains/connect-domain - Access to secretsline 265
[Credential-related source omitted] - Network accessline 281
GET https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=1 - Access to secretsline 282
[Credential-related source omitted] - Network accessline 299
GET https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=1 - Access to secretsline 300
[Credential-related source omitted] - Network accessline 307
POST https://api.zapmail.ai/api/v2/mailboxes - Access to secretsline 308
[Credential-related source omitted] - Network accessline 343
POST https://api.zapmail.ai/api/v2/exports/mailboxes - Access to secretsline 344
[Credential-related source omitted] - Network accessline 365
POST https://api.zapmail.ai/api/v2/exports/accounts/third-party - Network accessline 434
| Action | Method | URL | |---|---|---| | Dynadot wallet balance | GET | `https://api.dynadot.com/api3.json?key=KEY&command=account_info` | - Network accessline 435
|---|---|---| | Dynadot wallet balance | GET | `https://api.dynadot.com/api3.json?key=KEY&command=account_info` | | Dynadot search (batch 100) | GET | `https://api.dynadot.com/api3.json?key=KEY&command=search&show_price=1&domain0=...` | - Network accessline 436
| Dynadot wallet balance | GET | `https://api.dynadot.com/api3.json?key=KEY&command=account_info` | - Network accessline 437
| Dynadot search (batch 100) | GET | `https://api.dynadot.com/api3.json?key=KEY&command=search&show_price=1&domain0=...` | - Network accessline 438
| Dynadot register | GET | `https://api.dynadot.com/api3.json?key=KEY&command=register&domain=X&duration=1` | - Network accessline 439
| Dynadot NS switch (batch 100) | GET | `https://api.dynadot.com/api3.json?key=KEY&command=set_ns&domain=X,Y&ns0=...` | - Network accessline 440
| Zapmail connect (batch 50) | POST | `https://api.zapmail.ai/api/v2/domains/connect-domain` | - Network accessline 441
| Zapmail assignable check | GET | `https://api.zapmail.ai/api/v2/domains/assignable?limit=100&page=N` | - Network accessline 442
| Zapmail create inboxes (batch 25) | POST | `https://api.zapmail.ai/api/v2/mailboxes` | - Network accessline 443
| Zapmail export | POST | `https://api.zapmail.ai/api/v2/exports/mailboxes` | - Network accessline 444
| Zapmail link platform | POST | `https://api.zapmail.ai/api/v2/exports/accounts/third-party` |
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
No combined signals at this commit.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md skills/auto-research-public/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/auto-research-public/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/auto-research-public/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/auto-research-public/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/auto-research-public/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/auto-research-public/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.