Agent skill

Audience Icp Filter

by swan-gtm in swan-gtm/gtm-skills

A skill your agent uses when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a…

MITAuto-check passedSales & Support

Install Audience Icp Filter

skills CLI
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install swan-gtm/gtm-skills audience-icp-filter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/erwann-lefevre/audience-icp-filter .claude/skills/audience-icp-filter && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
audience-icp-filter
GitHub stars
172
Token cost
~1.9k tokens
SKILL.md length
1,133 words
Files
7 (incl. scripts, references)
Skills in repo
32
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a…

  • A list of people already exists and someone needs to know who on it is worth contacting — event
  • SKILL.md covers Every imported list is mostly…, Check the data before asking…, Two passes, and neither is… and Review the queue, not the list, plus 3 more sections
  • Runs Python scripts from its folder
  • Webinar attendees

What it does

Audience Icp Filter is an agent skill from swan-gtm/gtm-skills. Use this skill when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a newsletter or community list. Produces every lead sorted into ICP match, needs review, or no match, with a reason attached to each, the team's own colleagues and competitors stripped out, and nobody silently dropped. Trigger phrasings: "filter this list against my ICP", "who here matches our ICP", "clean up this lead list"…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `references/classification-taxonomy.md`, `references/coverage-and-icp.md` and `references/exclusion-doctrine.md`).

It sits in Sales & Support, covering Newsletters and Cold outreach. The repository describes itself as: Open, production-grade GTM skills for AI agents. The licence is MIT.

When your agent uses it

  • A list of people already exists and someone needs to know who on it is worth contacting — event
  • Webinar attendees
  • A prospecting export
  • Phrasings: filter this list against my ICP

Example prompts

  • “filter this list against my ICP”
  • “who here matches our ICP”
  • “clean up this lead list”
  • “/audience-icp-filter”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 67abd04. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Audience Icp Filter loads about 1.9k tokens when it runs, and up to ~8.3k if it reads all its reference files. Until then it costs about 170 tokens; SKILL.md has 1,133 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~170
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from swan-gtm/gtm-skills at commit 67abd04, republished under its MIT licence (© swan-gtm). 1,133 words, ~1,939 tokens.

Download SKILL.mdSave it as .claude/skills/audience-icp-filter/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
audience-icp-filter
description
Use this skill when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a newsletter or community list. Produces every lead sorted into ICP match, needs review, or no match, with a reason attached to each, the team's own colleagues and competitors stripped out, and nobody silently dropped. Trigger phrasings: "filter this list against my ICP", "who here matches our ICP", "clean up this lead list", "qualify my signups", "segment this audience", "who should we follow up with after the webinar", "did we import junk", "remove the bad leads".
title
Audience ICP filter
category
Prospecting
tags
Sales, RevOps

Applies to a list that already exists and needs sorting before anyone contacts it. Produces four labelled buckets, a reason per lead, and reconciled counts.

Every imported list is mostly noise

Colleagues are in it. Competitors are watching. A third of the job titles are unreadable, half the companies are stale, and somewhere in there are the twelve people actually worth a message. The default response — skim it, sort by gut, start sequencing — leaks in the direction that hurts most: someone's own coworker gets a cold pitch.

This skill starts from an existing list. Importing or scraping is a different job with different prerequisites; folding it in makes both slower.

Check the data before asking about the ICP

The instinct is to ask what the ICP is first. Do the opposite: measure what the list actually contains, then ask only about criteria the data can support.

There is no point offering geography filtering on a list where the location field is empty. It doesn't filter anything — it routes everyone into review and calls that a result. The same applies to industry, and to exclusion when there's no company and no email to match on.

Run the coverage check, read which criteria are blocked, and say so before the conversation about the ICP starts. If enrichment is needed, quote what it will cost and get an explicit yes before spending anything. If the team declines, proceed — but name the criteria you dropped and say that exclusion is now best-effort. Filtering on a criterion the data can't support and presenting the result as clean is the worst available outcome, because it looks like work. The field-by-field thresholds and the ICP question set are in references/coverage-and-icp.md.

Two passes, and neither is optional

Pass 1 is deterministic. scripts/build.py pattern-matches seniority and function across the title and, when the title is silent, the bio; applies exclusions uniformly across every identity field; and refuses to emit a result whose bucket counts don't reconcile against the input. Nobody gets lost, and the same list classifies the same way twice. Never hand-sort a list — it's unauditable and it's exactly how colleagues leak through.

Pass 2 is semantic, and it is the agent's job. Patterns can't read meaning. Chief Happiness Officer and Chief Medical Officer both resolve as C-level and neither is a buyer. A competitor nobody thought to list sits quietly in the match bucket. Founder @ Stealth Mode lands in review when it's obviously in ICP.

The point of the skill is that nobody hand-sorts a list. Handing back a fifty-lead review bucket is not a result — it's the original problem with extra steps. Work the queue down; leave only the genuinely ambiguous handful for a human.

Review the queue, not the list

The expensive mistake is re-reading everything in pass 2. On a 250-lead list, lead-by-lead review took eight minutes and changed almost nothing, because most classifications were never in doubt.

Pass 1 returns a bounded queue instead: the ambiguous, the matches inferred from a bio rather than a title, the matches whose company reads like an agency or a freelancer, the leads dropped on a soft geography or industry miss, and the leads dropped on a seniority or function read out of free text rather than off the title. Each carries a flag saying why it's there. On a clean list that's fifteen to twenty-five leads, and it's the whole of pass 2's work. Anything outside the queue was confident enough to trust.

A large review bucket is a signal, not a workload. It usually means the list was never enriched, or the ICP is under-specified — most often that nobody answered whether founders qualify regardless of stated function. Diagnose the cause and say it rather than moving forty leads by hand. references/pass-two-review.md covers the flags and the false-positive patterns.

Show full SKILL.md (500 more words)Show less

Exclusion leaks in three specific ways

Matching on company name alone fails, every time, on real data:

Empty company and empty email. The only clue is the bio — "Client Partner @ Acme". Filtering on the company field lets them straight through.

Job-changers. The company field says one employer and the email domain says another. Either field alone gives the wrong answer; a hit on either has to exclude.

Collapsed spellings. @AcmeLabs and acme-labs contain none of the string "Acme Labs". A punctuation-stripped comparison catches them — but only above about five characters, or short tokens start firing inside unrelated words.

Always seed the exclusion list with the team's own company and domain. It's the most common leak and by far the most embarrassing. And when extending exclusions in pass 2, remember that a competitor's name inside someone's bio is usually a tool they use, not their employer — check it's the employer or the domain before dropping them. Full doctrine in references/exclusion-doctrine.md.

What good looks like

The tell of a good operator: they look at the field fill rates before they look at the list. They know that "filter by geography" on a list with 12% location coverage is not a filter, and they'd rather deliver three honest criteria than six decorative ones.

The mediocre version sorts by job title alone, produces a tidy match list, and quietly includes two colleagues and a competitor — because the colleague's company field was blank and the competitor was spelled with a hyphen. It looks cleaner than the good version. That's the trap: on this task, output that looks tidy is usually output that dropped the hard cases.

Good output reconciles. Every lead is in exactly one bucket, every bucket decision carries a reason, and the totals add back to the input count. If somebody asks "what happened to the other 40?", the answer is in the file, not in a shrug. And the review bucket that comes back to the user is small enough to decide in two minutes.

Rules

  • MUST measure field coverage before asking what the ICP is, and drop criteria the data can't support.
  • MUST get explicit approval, with a quoted cost, before spending anything on enrichment.
  • MUST run both passes — deterministic classification, then semantic review of the queue.
  • MUST match exclusions across company, both email fields, bio and company URL, with a punctuation-stripped comparison for longer terms.
  • MUST seed exclusions with the team's own company and domain.
  • MUST reconcile: every lead in exactly one bucket, with a reason, totalling the input.
  • MUST queue any lead that left the ICP on a signal inferred from free text — a wrong drop is invisible by construction, so no lead may be discarded on an inference without a second look.
  • NEVER classify a list by hand.
  • NEVER exclude someone on a competitor name found only in their bio without confirming it's their employer.
  • NEVER drop ambiguous leads to keep the output tidy — route them to review.
  • NEVER hand back the full review bucket as the deliverable.

© swan-gtm, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts, references) in skills/erwann-lefevre/audience-icp-filter of swan-gtm/gtm-skills.

  • SKILL.md
  • references/classification-taxonomy.md
  • references/coverage-and-icp.md
  • references/exclusion-doctrine.md
  • references/pass-two-review.md
  • references/title-taxonomy.json
  • scripts/build.py

Open the folder on GitHubat commit 67abd04

Compare with similar skills

Audience Icp Filter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Audience Icp Filter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Audience Icp Filter this skillswan-gtm/gtm-skills172—~1.9kAutomated safety check: PassMIT
Social Selling And Dmsocial-media-skills/skills134—~1.6kAutomated safety check: PassMIT
Email WriteAgriciDaniel/claude-email130—~2.8kAutomated safety check: PassMIT
Cold Email Personalizationgtmagents/gtm-agents4141 repos~853Automated safety check: PassApache-2.0
Email Response Simulationextruct-ai/gtm-skills109—~2.8kAutomated safety check: PassNone
Personalization At Scalemanojbajaj95/claude-gtm-plugin1052 repos~2.7kAutomated safety check: PassMIT

Similar skills

  • Social Selling And Dm

    social-media-skills/skills

    Social selling and DM funnels — consent-first selling in the DMs, never spam.

    134 GitHub stars~1.6k tokensUpdated 9 days ago
    Sales & SupportAuto-check passed
  • Email Write

    AgriciDaniel/claude-email

    Compose high-converting emails using proven copy frameworks (PAS, AIDA, BAB, FAB, 4Ps).

    130 GitHub stars~2.8k tokensUpdated 4 mo ago
    Writing & ContentAuto-check passed
  • Cold Email Personalization

    gtmagents/gtm-agents

    Writes personalized B2B cold emails from prospect research, using a gated workflow, a quality rubric and follow-up sequences.

    414 GitHub starsUsed in 1 repo~853 tokens
    Sales & SupportAuto-check passed
  • Email Response Simulation

    extruct-ai/gtm-skills

    Deep persona simulation and skeptical buyer review for cold emails.

    109 GitHub stars~2.8k tokensUpdated 12 days ago
    Sales & SupportAuto-check passed
  • Personalization At Scale

    manojbajaj95/claude-gtm-plugin

    Generate unique personalized first lines for hundreds of prospects using company news, LinkedIn activity, and mutual connections.

    105 GitHub starsUsed in 2 repos~2.7k tokens
    Sales & SupportAuto-check passed
  • Campaign Angle Finder

    Othmane-Khadri/YALC-the-GTM-operating-system

    Analyzes a target persona and context to generate 3 distinct campaign angles for outbound sequences.

    318 GitHub stars~1.7k tokensUpdated 1 mo ago
    Sales & SupportAuto-check passed

More from swan-gtm/gtm-skills

All 32 skills in this repo
  • Revops Revenue Planning

    swan-gtm/gtm-skills

    Annual and quarterly revenue plan construction, top-down vs bottoms-up reconciliation, plan versioning, stretch goal handling, and FP&A-RevOps collaboration for B2B revenue teams.

    172 GitHub stars~7.2k tokensUpdated 3 days ago
    Auto-check passed
  • AI Personalization Prompts

    swan-gtm/gtm-skills

    A skill your agent uses when setting up AI-powered personalization, building Clay or lemlist workflows, or automating prospect research — 6 AI personalization prompts (lemlist style) plus 2 email…

    172 GitHub stars~653 tokensUpdated 3 days ago
    Auto-check passed
  • Brand Mention Monitor

    swan-gtm/gtm-skills

    A skill your agent uses when you need to know what people are saying about a brand across the web and social — "monitor brand mentions", "what are people saying about [brand] this week", "run a…

    172 GitHub stars~2.1k tokensUpdated 3 days ago
    Auto-check passed
  • Bridge Before Cold

    swan-gtm/gtm-skills

    Use this skill before staging a prospect and before drafting any first touch, when a segment has gone silent, and when deciding whether an account is genuinely cold.

    172 GitHub stars~1.4k tokensUpdated 3 days ago
    Auto-check passed
  • Champion Move Detection

    swan-gtm/gtm-skills

    Use this skill on a monthly cadence to detect champions and heavy users of your paying customers who changed jobs, verify the move against live LinkedIn data, score the new company, and surface…

    172 GitHub stars~5k tokensUpdated 3 days ago
    Auto-check passed
  • Clay Enrichment 9step

    swan-gtm/gtm-skills

    A skill your agent uses when building enrichment workflows, setting up Clay tables, or maximizing data quality — the complete 9-step Clay enrichment workflow for 90%+ data coverage plus 58 Clay…

    172 GitHub stars~572 tokensUpdated 3 days ago
    Auto-check passed

Questions about Audience Icp Filter

What does Audience Icp Filter do?

A skill your agent uses when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a…. Audience Icp Filter is an agent skill from swan-gtm/gtm-skills. Use this skill when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a newsletter or community list.

When should I use Audience Icp Filter?

Audience Icp Filter fits situations like: A list of people already exists and someone needs to know who on it is worth contacting — event; webinar attendees; A prospecting export; phrasings: filter this list against my ICP.

How do I install Audience Icp Filter in Claude Code?

Run `npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a claude-code`. Or copy the skill folder (skills/erwann-lefevre/audience-icp-filter in swan-gtm/gtm-skills) into .claude/skills/audience-icp-filter in your project. Claude Code loads it when a task matches its description.

How do I install Audience Icp Filter in Codex?

Run `npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a codex`. Or copy the skill folder (skills/erwann-lefevre/audience-icp-filter in swan-gtm/gtm-skills) into .agents/skills/audience-icp-filter in your project. Codex loads it when a task matches its description.

Can I use Audience Icp Filter in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/audience-icp-filter, .gemini/skills/audience-icp-filter, .github/skills/audience-icp-filter and .opencode/skills/audience-icp-filter in your project.

What does Audience Icp Filter need to run?

Going by SKILL.md and its folder, Audience Icp Filter needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Audience Icp Filter access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Audience Icp Filter safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Audience Icp Filter use?

Audience Icp Filter is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Audience Icp Filter use?

About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.3k tokens, read only when the agent opens those files.

What are the alternatives to Audience Icp Filter?

Skills that share tags, products or a category with Audience Icp Filter: Social Selling And Dm (social-media-skills/skills, 134 stars), Email Write (AgriciDaniel/claude-email, 130 stars), Cold Email Personalization (gtmagents/gtm-agents, 414 stars) and Email Response Simulation (extruct-ai/gtm-skills, 109 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Audience Icp Filter?

swan-gtm (a GitHub organization) maintains it in swan-gtm/gtm-skills, which has 172 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 8, 2026.

Source: swan-gtm/gtm-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.