ads-audit
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Pipeline review and next-action planner. Pulls all prospects from a specified CRM pipeline stage, analyzes every email thread and meeting transcript per prospect, then delivers a concise per-prospect status summary with sales cycle recap, action items (yours and theirs), and
$ npx -y skills add naveedharri/benai-skills --skill pipeline-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/pipeline-reviewContext preview
The summary Claude sees to decide when to auto-load this skill.
Pipeline review and next-action planner. Pulls all prospects from a specified CRM pipeline stage, analyzes every email thread and meeting transcript per prospect, then delivers a concise per-prospect status summary with sales cycle recap, action items (yours and theirs), and
name: pipeline-review description: Pipeline review and next-action planner. Pulls all prospects from a specified CRM pipeline stage, analyzes every email thread and meeting transcript per prospect, then delivers a concise per-prospect status summary with sales cycle recap, action items (yours and theirs), and contact details, plus a cross-pipeline synthesis of patterns and priorities. Works with Attio or Pipedrive, Gmail, and Fireflies, and degrades gracefully when a source is missing. Use when the user says "review my pipeline", "what is the status of my deals", "next actions for my prospects", "pipeline review for [stage]", or wants a stage-by-stage read of where every deal stands and what to do next. disable-model-invocation: true
Pull every prospect from a target pipeline stage, cross-reference their full email history and meeting transcripts, and produce a concise action-oriented summary sent via Slack.
A Slack message (sent to the user or a channel they specify) containing, for each prospect:
The message is concise and skimmable -- no emojis, no walls of text. A busy founder should be able to scan it in under 2 minutes and know exactly what to do today.
Use `AskUserQuestion` to collect what you need. Combine into 1-2 calls.
**Question 1 -- Which pipeline and stage?** "Which CRM list/pipeline should I review, and which stage(s) do you want me to focus on?"
**Question 2 -- Where should I send the summary?** "Where do you want the pipeline summary sent? I can DM you on Slack or post it to a channel."
**Question 3 -- Any prospects to skip?** "Should I review ALL prospects in that stage, or skip any?"
After collecting answers, confirm your understanding before pulling data.
Read `references/CONNECTORS.md` for connector-specific patterns. The general flow:
1. **Find the list**: Use `list-lists` (Attio) or equivalent to locate the target pipeline 2. **Understand the schema**: Use `list-list-attribute-definitions` to identify the stage field slug, deal value field, and other entry-level attributes 3. **Identify record-level fields**: Use `list-attribute-definitions` on the parent object (usually "people") to understand where email, phone, name live
This is the step that requires the most care. CRM APIs paginate (typically 50 records max per request), and stage filtering can be unreliable depending on the CRM.
**Recommended approach -- full scan with local filtering:**
Rather than relying on server-side stage filters (which can fail silently or have inconsistent syntax), pull ALL entries from the list in paginated batches and filter locally. This is more reliable and avoids missing prospects due to filter syntax issues.
offset = 0
all_target_entries = []
while has_more:
batch = list-records-in-list(list=TARGET_LIST, limit=50, offset=offset)
for entry in batch:
if entry.stage == TARGET_STAGE:
all_target_entries.append(entry)
offset += 50Save entry-level data as you go: entry_id, parent_record_id, stage, deal value, priority, forecast, close date, notes, agreement stage.
**Important**: Count your results and sanity-check with the user. If they say "I see 10 prospects" but you only found 4, you missed some. Go back and re-scan.
Collect all unique `parent_record_id` values from the entries, then batch-fetch person records:
get-records-by-ids(object="people", record_ids=[...])
Extract for each prospect:
For every prospect, search for all email threads using their email address:
search-emails-by-metadata(participant_email_addresses=["prospect@company.com"], limit=10)
This returns email metadata: subject, summary, snippet, sender, sent_at. For the most recent 2-3 emails, pull full content with `get-email-content` if the summary alone doesn't tell you enough about the current state.
Key things to extract from emails:
Run email searches in parallel where possible -- don't do them one at a time.
Check which transcription tools are available:
For each prospect, pull the summary of their most recent 1-2 calls. You need:
Expert automation skills for Claude Code, organized by department.
Repo: naveedharri/benai-skills
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Budget allocation and bidding strategy review across all ad platforms. Evaluates spend distribution, bidding strategy appropriateness, scaling readiness, and…
Competitor ad intelligence analysis across Google, Meta, LinkedIn, TikTok, and Microsoft. Analyzes competitor ad copy, creative strategy, keyword targeting,…
Cross-platform creative quality audit covering ad copy, video, image, and format diversity across all platforms. Detects creative fatigue, evaluates…
Google Ads deep analysis covering Search, Performance Max, Display, YouTube, and Demand Gen campaigns. Evaluates 74 checks across conversion tracking, wasted…
Landing page quality assessment for paid advertising campaigns. Evaluates message match, page speed, mobile experience, trust signals, form optimization, and…