Social Selling And Dm
social-media-skills/skills
Social selling and DM funnels — consent-first selling in the DMs, never spam.
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…
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install swan-gtm/gtm-skills audience-icp-filter --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "audience-icp-filter" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filter into .claude/skills/audience-icp-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audience-icp-filter", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filterType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install swan-gtm/gtm-skills audience-icp-filter --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/erwann-lefevre/audience-icp-filter .agents/skills/audience-icp-filter && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "audience-icp-filter" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filter into .agents/skills/audience-icp-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audience-icp-filter", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install swan-gtm/gtm-skills audience-icp-filter --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/erwann-lefevre/audience-icp-filter .cursor/skills/audience-icp-filter && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "audience-icp-filter" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filter into .cursor/skills/audience-icp-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audience-icp-filter", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/swan-gtm/gtm-skills.git --path skills/erwann-lefevre/audience-icp-filter--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install swan-gtm/gtm-skills audience-icp-filter --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/erwann-lefevre/audience-icp-filter .gemini/skills/audience-icp-filter && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "audience-icp-filter" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filter into .gemini/skills/audience-icp-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audience-icp-filter", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install swan-gtm/gtm-skills audience-icp-filterInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/erwann-lefevre/audience-icp-filter .github/skills/audience-icp-filter && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "audience-icp-filter" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filter into .github/skills/audience-icp-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audience-icp-filter", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swan-gtm/gtm-skills --skill audience-icp-filter -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install swan-gtm/gtm-skills audience-icp-filter --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/erwann-lefevre/audience-icp-filter .opencode/skills/audience-icp-filter && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "audience-icp-filter" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/erwann-lefevre/audience-icp-filter into .opencode/skills/audience-icp-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audience-icp-filter", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
audience-icp-filterA 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. 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.
Read from SKILL.md and the folder at commit 67abd04. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from swan-gtm/gtm-skills at commit 67abd04, republished under its MIT licence (© swan-gtm). 1,133 words, ~1,939 tokens.
.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.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.
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.
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.
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.
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.
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.
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.
© 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
SKILL.md and 6 other files (scripts, references) in skills/erwann-lefevre/audience-icp-filter of swan-gtm/gtm-skills.
Open the folder on GitHubat commit 67abd04
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Audience Icp Filter this skillswan-gtm/gtm-skills | 172 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Social Selling And Dmsocial-media-skills/skills | 134 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Email WriteAgriciDaniel/claude-email | 130 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Cold Email Personalizationgtmagents/gtm-agents | 414 | 1 repos | ~853 | Automated safety check: Pass | Apache-2.0 | |
| Email Response Simulationextruct-ai/gtm-skills | 109 | — | ~2.8k | Automated safety check: Pass | None | |
| Personalization At Scalemanojbajaj95/claude-gtm-plugin | 105 | 2 repos | ~2.7k | Automated safety check: Pass | MIT |
social-media-skills/skills
Social selling and DM funnels — consent-first selling in the DMs, never spam.
AgriciDaniel/claude-email
Compose high-converting emails using proven copy frameworks (PAS, AIDA, BAB, FAB, 4Ps).
gtmagents/gtm-agents
Writes personalized B2B cold emails from prospect research, using a gated workflow, a quality rubric and follow-up sequences.
extruct-ai/gtm-skills
Deep persona simulation and skeptical buyer review for cold emails.
manojbajaj95/claude-gtm-plugin
Generate unique personalized first lines for hundreds of prospects using company news, LinkedIn activity, and mutual connections.
Othmane-Khadri/YALC-the-GTM-operating-system
Analyzes a target persona and context to generate 3 distinct campaign angles for outbound sequences.
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.
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…
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…
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.
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…
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…
Categories
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.
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.
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.
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.
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.
Going by SKILL.md and its folder, Audience Icp Filter needs Python for the scripts in its folder. Our summary lists: Python 3.
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.
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.
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.
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.
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.
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.