Agent skill
morning-pipeline
Full daily sales pipeline execution.
Filed under Outbound email.
From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11
What it does when it runs
Full daily sales pipeline execution. Run at 9 AM via cron. Scans for signals, enriches company leads, auto-applies to gigs, runs multi-channel outreach, processes follow-ups. All delivery automated via Chrome DevTools MCP.
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- chrome-devtools
- Hosts it reaches
- app.snov.io
- www.linkedin.com
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- network
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/playbooks/morning-pipeline" mkdir -p ~/.claude/skills/morning-pipeline cp -R "/tmp/b2b-gtm-skills/skills/playbooks/morning-pipeline/." ~/.claude/skills/morning-pipeline/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs chrome-devtools, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/playbooks/morning-pipeline/SKILL.md, which is licensed MIT (repository). 2,028 words, 41 headings.
Morning Pipeline
The daily sales engine. Runs at 9 AM via cron. Orchestrates the full pipeline: inbox pre-scan, signal detection, enrichment, automated outreach, follow-ups, and calling list.
Daily Target: 5 company leads + 20 gig leads = 25 total leads/day
Geo Split: 75% US/UK/AU/EU, 25% India
Delivery: All automated via Chrome DevTools MCP (mcp__chrome-devtools__*)
Prerequisites
agency.config.jsonfully populated (run/agency-setupfirst)- CRM initialized (run
/crm-setupfirst) - Chrome Beta logged in: Apollo.io, Snov.io, Lemlist, LinkedIn, Instagram, Zoho webmail
- Chrome DevTools MCP available
Composites & Capabilities Used
inbox-scanner-- pre-scan for overnight repliesreply-analyzer-- classify any replies foundsignal-scanner-- find and score new leads (reads keywords from config)lead-scorer-- score with separate gig vs company criteriacompany-researcher-- research company leads (includes LinkedIn URL)cro-auditor-- CRO + AI audit for company leadsdecision-maker-finder-- find 5 DMs per company via Apollo UI (Chrome DevTools MCP)email-validator-- validate emails via Snov.io (Chrome DevTools MCP)phone-finder-- get phone numbers via Lemlist (Chrome DevTools MCP)personalization-enricher-- build personalization packetscold-email-drafter-- generate emails with super catchy subject linesmessage-generator-- LinkedIn notes, Instagram DMs, call scriptsoutreach-draft-pipeline-- route and deliver all outreach (no approval gate)follow-up-engine-- process today's follow-ups (10-day cadence)crm-writer-- update CRM throughout
Phase 0: Morning Briefing + Inbox Pre-Scan
Step 0.1: Read CRM Dashboard
SKILL: crm-writer (READ)
TOOL: Google Sheets webhook
Read CRM dashboard and present:
MORNING BRIEFING -- [Date]
---
Pipeline snapshot:
- Total active leads: N
- NEW (awaiting enrichment): N
- OUTREACH_READY (awaiting outreach): N
- CONTACTED (in cadence): N
- REPLIED (need attention): N
- DEMO_BOOKED: N
Today's targets:
- Company leads to find: 5
- Gig leads to find: 20
- Follow-ups due: N leads
- Calls due: N leads
Step 0.2: Inbox Pre-Scan (6 PM yesterday to 9 AM today)
SKILL: inbox-scanner
TOOL: Chrome DevTools MCP (Zoho webmail, LinkedIn, Instagram) + Zoho MCP (being integrated)
AUTH: All logged in via Chrome Beta
Check email, LinkedIn, and Instagram for any overnight replies:
- Use
mcp__chrome-devtools__navigate_pageto Zoho webmail, scan for new replies - Use
mcp__chrome-devtools__navigate_pageto LinkedIn messaging, scan for new messages - Use
mcp__chrome-devtools__navigate_pageto Instagram DMs, scan for new DMs
If replies found:
- Run
reply-analyzerto classify sentiment - Update CRM via
crm-writer: setresponse_received = "Yes", pause cadence - This prevents follow-up-engine from messaging leads who already replied overnight
Output: CRM has up-to-date response statuses before follow-ups run.
Phase 1: Signal Scan
Step 1.1: Generate Search Queries FROM agency.config.json
SKILL: signal-scanner
TOOL: None (reads config, generates queries)
Read agency.config.json for current keywords and positioning. Queries MUST come from config, not hardcoded. When Plasho's positioning changes week-to-week, queries change automatically because they're derived from config keywords.
Step 1.2: Execute Searches with Geo Split + Lead Type Targeting
SKILL: signal-scanner
TOOL: WebSearch
Search across all configured platforms with these constraints:
DAILY TARGET
- 20 gig leads (Freelancer, Upwork, PeoplePerHour, Guru, Fiverr)
- 5 company leads (LinkedIn, Reddit, funding news, Product Hunt, etc.)
= 25 total leads/day
GEO SPLIT
- 75% from US / UK / AU / EU (~19 leads)
- 25% from India (~6 leads)
QUALITY BAR
- Gig leads: must be HOT (clear buying signal, budget)
- Company leads: must be VERY HOT (strong signal + fit)
Step 1.3: Score Each Signal
SKILL: lead-scorer
Separate scoring for gig leads vs company leads:
- Company leads: extremely high bar (only 5/day, must be truly hot)
- Gig leads: high bar but more volume (20/day)
- Enforce 75/25 geo split in output (not just scoring boost)
Step 1.4: Dedup Against Existing CRM Leads
SKILL: crm-writer (READ) + signal-scanner
TOOL: Google Sheets webhook
Step 1.5: Write HOT Leads to CRM
SKILL: crm-writer (APPEND to "Pipeline" tab)
TOOL: Google Sheets webhook
Only truly HOT leads make it. 25 total (20 gig + 5 company).
Output: CRM has 25 NEW leads (20 gig + 5 company, 75/25 geo split)
Phase 2: Enrichment (Company Leads Only)
Gig leads skip to Phase 3. Only the 5 company leads go through enrichment.
Step 2.1: Company Research (Include LinkedIn URL)
SKILL: company-researcher
TOOL: WebSearch
Must include the company's LinkedIn page URL in output.
Step 2.2: CRO + AI Audit
SKILL: cro-auditor (updated)
TOOL: WebSearch + Chrome DevTools MCP (screenshots)
Dual audit:
PART 1: CRO AUDIT
- Conversion issues on their Shopify store
- Product page, navigation, checkout friction
- Standard CRO findings
PART 2: AI AUDIT
- Based on publicly visible data, what can they automate?
- AI recommendations for their store (AI-powered product recs, chatbot, workflow automation, Claude-based systems)
- "Here's what we can set up for you using Claude + AI"
- Focused on their specific market/vertical
CRM UPDATE: Stage NEW → RESEARCHED
Step 2.3: Find 5 Decision Makers per Company
SKILL: decision-maker-finder
TOOL: Chrome DevTools MCP ONLY (Apollo.io UI in Chrome Beta)
AUTH: Already signed in via Chrome Beta
mcp__chrome-devtools__navigate_pageto Apollo.io- Search for people at [company name]
- Filter by ICP titles (Founder, CEO, Head of Ecomm, etc.)
- Pick 5 decision makers per company
- DO NOT enrich on Apollo (no credits used)
- Export the list (they already have LinkedIn profile URLs)
Output: 5 companies x 5 people = ~25 decision makers Each with: name, title, company, LinkedIn URL
Step 2.4: Email Validation via Snov.io LinkedIn Search
SKILL: email-validator
TOOL: Chrome DevTools MCP ONLY (Snov.io UI, already logged in)
CRITICAL: Use Snov.io LinkedIn Search (app.snov.io/linkedin/search) with each person's LinkedIn profile URL. Snov.io returns the actual verified email from the profile. NEVER guess email patterns.
For each decision maker from Step 2.3:
- Navigate to
https://app.snov.io/linkedin/search - Paste the person's LinkedIn profile URL (e.g.
https://www.linkedin.com/in/chris-ferguson-80b98b79) - Click search -- Snov.io finds and verifies the real email
- Record the verified email (green dot = valid)
- Repeat for all contacts
Threshold: at least 3 verified emails per company. If < 3 verified emails: FLAG AS RED on CRM sheet.
NEVER send emails without Snov.io verification. NEVER guess from domain patterns.
Output: Verified emails mapped to each contact
Step 2.5: Get Phone Numbers via Lemlist
SKILL: phone-finder
TOOL: Chrome DevTools MCP ONLY (Lemlist UI)
- Upload LinkedIn profile list to Lemlist via Chrome DevTools MCP
- Lemlist returns phone numbers where available
- Populate phone numbers back into CRM Pipeline tab
Output: Phone numbers added to CRM for contacts that have them
CRM UPDATE: Stage RESEARCHED → ENRICHED → OUTREACH_READY
Step 2.6: Build Personalization Packets
SKILL: personalization-enricher
TOOL: WebSearch
Output: 5 company leads are OUTREACH_READY with contacts, emails, phones, CRO+AI findings, personalization packets
Phase 3: Outreach (Automated, No Approval Gates)
Step 3.1: Route Leads by Type
SKILL: outreach-draft-pipeline
GIG LEADS (20/day): 2-day cadence
Day 1: AUTO-APPLY on gig platform via Chrome DevTools MCP
(navigate to gig page, fill proposal form, submit automatically)
Day 3: Email if we found their email/company
COMPANY LEADS (5/day): Full 10-day cadence
Only company leads use the email cadence.
Email volume: ~5 new + follow-ups = well under Zoho 50/day webmail limit.
Step 3.2: Generate Cold Emails (Super Catchy Subject Lines)
SKILL: cold-email-drafter
TOOL: None (LLM generation)
Subject lines must be SUPER catchy. Short, attention-grabbing, curiosity-driven.
Step 3.3: Generate LinkedIn Notes
SKILL: message-generator (linkedin-note)
Step 3.4: Generate Instagram DMs
SKILL: message-generator (instagram-dm)
Step 3.5: Generate Call Scripts
SKILL: message-generator (call-script)
NO APPROVAL GATE. All content generated and sent automatically.
Step 3.6: DELIVER Email (Automated)
SKILL: outreach-draft-pipeline
TOOL: Chrome DevTools MCP → Zoho webmail (already logged in)
Compose email in Zoho webmail via Chrome DevTools MCP, send it. No manual copy-paste. Fully automated.
Step 3.7: DELIVER LinkedIn Connection Requests (Automated)
SKILL: outreach-draft-pipeline
TOOL: Chrome DevTools MCP → LinkedIn (already logged in)
Send connection request with personalized note via Chrome. No Dripify. No CSV export. Direct browser automation.
Step 3.8: DELIVER Instagram DMs (Automated, 1 DM per 2 min)
SKILL: outreach-draft-pipeline
TOOL: Chrome DevTools MCP → Instagram (already logged in)
Send DM via Instagram web. Enforce 1 DM per 2 minutes spacing.
Step 3.9: DELIVER Calls → CRM Sheet + Telegram Notification
SKILL: crm-writer (APPEND to "Call Today")
TOOL: Google Sheets webhook + Telegram Bot API
Populate calling sheet, then send Telegram message: "Your call leads are ready for the day. [N] calls scheduled."
Step 3.10: Save to CRM (After Sending)
SKILL: crm-writer (APPEND to "Outreach CRM" + UPDATE "Pipeline")
TOOL: Google Sheets webhook
Log all sent outreach, update stage to CONTACTED, set cadence_day=1, next_action, next_action_date.
Output: All Day 1 outreach sent automatically. Telegram notification sent.
Phase 4: Follow-Ups (Leads Already in Cadence)
Phase 0.2 already ran inbox pre-scan, so response_received is up-to-date before follow-ups run.
Step 4.1: Query CRM for Leads Due Today
SKILL: crm-writer (READ)
TOOL: Google Sheets webhook
Query: stage = CONTACTED, next_action_date ≤ today, response_received ≠ "Yes"
Step 4.2: Classify by Cadence Day (10-Day Company Cadence)
SKILL: follow-up-engine
| Day | Action |
|---|---|
| Day 1 | EMAIL_1 + IG_ENGAGE |
| Day 2 | LINKEDIN_CONNECT (personalized note) |
| Day 3 | CALL_1 (first call) |
| Day 4 | EMAIL_2 (new angle) |
| Day 5 | CALL_2 + IG_DM_FOLLOWUP |
| Day 6 | REST |
| Day 7 | EMAIL_3 (Kibi Sports case study) |
| Day 8 | LINKEDIN_MSG (if accepted) + CALL_3 |
| Day 9 | REST |
| Day 10 | EMAIL_BREAKUP ("not a priority, thanks") |
Step 4.3: Generate Follow-Up Content
SKILL: cold-email-drafter + message-generator
Key angles:
- Email 2 (Day 4): New pain point, different from Email 1
- Email 3 (Day 7): Kibi Sports case study + Plasho's work
- Breakup (Day 10): "Looks like this isn't a priority right now. Thanks for your time. If things change, we're here."
- LinkedIn msg (Day 8): Only if they accepted connection. If not accepted, skip.
Step 4.4: DELIVER Follow-Ups (Automated)
TOOL: Chrome DevTools MCP for all channels
- Email → Chrome DevTools MCP → Zoho webmail (auto send)
- LinkedIn → Chrome DevTools MCP → LinkedIn (auto send)
- Instagram → Chrome DevTools MCP → Instagram (1 per 2 min)
- Calls → CRM "Call Today" tab + Telegram notification
After all follow-ups sent: Send Telegram confirmation: "Follow-ups completed. [N] emails, [N] LinkedIn, [N] IG DMs sent. [N] calls added to sheet."
Step 4.5: Update CRM Cadence Tracking
SKILL: crm-writer (UPDATE)
Bump cadence_day, set next_action + next_action_date. Day 10 breakup → stage = BREAKUP_SENT, no more actions.
Phase 5: Calling Sheet + Daily Summary
Step 5.1: Consolidated Calling List + Telegram Notification
SKILL: crm-writer
TOOL: Google Sheets webhook + Telegram Bot
Build calling sheet, send Telegram: "Your call leads are ready. [N] calls for today."
Step 5.2: Daily Summary (Text Output + Telegram)
MORNING PIPELINE COMPLETE -- [Date]
---
NEW LEADS:
- Signals scanned: N across M platforms
- New leads added: 25 (20 gig, 5 company)
- Geo split: X% international, Y% India
ENRICHMENT (company leads):
- Companies researched: 5
- CRO + AI audits completed: 5
- Decision makers found: N contacts (5 per company)
- Emails validated (Snov.io): N (X valid)
- Phone numbers found (Lemlist): N
OUTREACH:
- Gig applications submitted: N
- Cold emails sent (Zoho webmail): N
- LinkedIn connection requests sent: N
- Instagram DMs/engagement: N
- Call scripts generated: N
FOLLOW-UPS:
- Follow-up emails sent: N
- LinkedIn messages sent: N
- Instagram follow-up DMs: N
- Calls added to sheet: N
- Breakup emails sent: N
PIPELINE:
- Total active leads: N
- Response rate (trailing 7d): X%
- Demos booked (trailing 7d): N
NEXT: Run /evening-scan at 6 PM to check for responses
Automation
Triggered daily at 9 AM via cron job.
Example Usage
Trigger phrases:
- "Run the morning pipeline"
- "It's 9 AM, start the daily leads"
- "Execute the full morning flow"
- "Run today's lead gen and outreach"
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- podcast-pipeline by ericosiu · 3,483
- sales-pipeline by ericosiu · 3,483
- short-form-pipeline by ericosiu · 3,483
- prospect-discovery-pipeline by Othmane-Khadri · 290
- pipeline-reviewer by janskuba · 200
- pipeline-management by louisblythe · 143
- content-pipeline by thatrebeccarae · 130
- content-to-pipeline by chadboyda · 76
Need help setting it up?
This page tells you what morning-pipeline does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.