17 AI skills for finding customers and making content
ideal-customer-profile
find out who actually buys from you, from your own wins and losses
How the two work together
Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.
Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.
No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.
Prompt for Claude
---
name: ideal-customer-profile
description: Turn your last 20-50 won and lost deals into a Green, Yellow and Red ideal customer profile, back-tested on real customers; use when asked who to target or why nobody replies.
---
# Find out who actually buys from you
Filter rules from your own wins and losses, proven on real customers.
## Claude does
1. Collect the last 20-50 closed-won and closed-lost deals (CRM or memory): the seven row fields, who signed, who first engaged, months to close, ARR, months as customer, expanded or churned, loss reason. Under 20: `hypothesis`, rebuilt at 20; else `evidence`.
2. Exclude customers under 90 days, one-off mega deals and churned accounts; rank the rest by post-sale value (top 20% ARR, NRR above 115%, lowest churn, fastest time to value): the best customers.
3. Row by row (industry, size, geography, decision maker, dependent technology, use case, current platform), nail Green first: what best customers share that losses do not; signal is 60% of them across 5+ deals, else `unknown`.
4. Then Yellow (inbound only) and Red (disqualify even inbound) from the losses, by loss reason.
5. Cells are ten-second filters: "50-500 employees", not "mid-market".
6. Ask "how do you know that? where would you check that?" per cell; tag deal IDs; mark Priority on the 2-3 go/no-go rows.
7. Name the best customers' trigger, 2-3 channels that reach them (or which is missing), 2-5 back-test customers including one surprise, and the ten-second sentence about the perfect prospect.
## Then Codex does
Codex builds the deal table, worksheet and back-test sorting every deal and named customer through the rules, all mechanical. Fill {COMPANY}, {STATUS}, {DEALS}, {BEST_IDS}, {GRID}, {TRIGGER_AND_CHANNELS}, {TEST_CUSTOMERS}, {TEN_SECOND_SENTENCE} into CODEX.md, then run in the working folder:
```
codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
```
## Claude checks
1. `DEALS.csv` holds exactly the deals supplied.
2. `BACKTEST.md`: test customers and last 10 wins land Green, last 10 losses Yellow or Red; a great customer sorted otherwise: change the cell, not the customer.
3. Green creep: a row matching over half of won deals discriminates nothing.
4. Red cells name a cost and deal IDs; every cell is a filter; unsourced cells stay `unknown`; losses split by reason.
Any failure: fix, rerun, recheck; show nothing until all pass.
## Rules
- Every cell cites deal IDs or says `unknown`; never invent a filler.
- One page; end with the ten-second sentence.
- Red must cost something: churn, refunds, support burden; else Yellow.
- No vague bands; an ICP that disqualifies nobody is not an ICP.
- Never average across loss reasons or segments, or refine from new, churned or one-off mega-deal customers.
- No trigger, no reachable channel, "companies that need X", no rubric: fail.
- Reviews skew to power users, tickets to problems; weigh that.
- Never ship without the back-test; refresh quarterly or at 10 new customers, 90 days is overdue; never loosen under sales pressure.
## If Codex is not installed
Claude does that half and says so.
## Built from
Stars: api.github.com.
- Stage 2 Capital ICP-Builder, https://github.com/stage-2-capital/ICP-Builder (1 star; Mark Roberge's GTM fund)
- borghei/Claude-Skills, https://github.com/borghei/Claude-Skills/blob/main/project-management/gtm/ideal-customer-profile/SKILL.md (702 stars)
- alirezarezvani/claude-skills, https://github.com/alirezarezvani/claude-skills/blob/main/marketing-skill/skills/marketing-strategy-pmm/SKILL.md (25,542 stars)
- tech-leads-club/agent-skills, https://github.com/tech-leads-club/agent-skills/blob/main/packages/skills-catalog/skills/(gtm)/positioning-icp/SKILL.md (5,121 stars)
- coreyhaines31/marketingskills, https://github.com/coreyhaines31/marketingskills/blob/main/skills/customer-research/SKILL.md (46,908 stars)
- phuryn/pm-skills, https://github.com/phuryn/pm-skills/blob/main/pm-go-to-market/skills/ideal-customer-profile/SKILL.md (26,000 stars)
Prompt for Codex
# Find out who actually buys from you - Codex task
Claude has decided everything; turn it into files in the current folder using nothing beyond the inputs.
## You are given
- {COMPANY}: the company.
- {STATUS}: `evidence` or `hypothesis`.
- {DEALS}: 20-50 closed-won and closed-lost deals with the fields in the CSV columns below; fields may be missing.
- {BEST_IDS}: the won deals ranked as best customers.
- {GRID}: seven rows, one per CSV column from industry to current_platform, each with Green, Yellow and Red filter rules, Priority yes or no, source deal IDs or `unknown`.
- {TRIGGER_AND_CHANNELS}: the buying trigger and 2-3 channels.
- {TEST_CUSTOMERS}: 2-5 real customers with fields and the bucket each actually ended up in.
- {TEN_SECOND_SENTENCE}: verbatim.
## Produce
1. `DEALS.csv`: one row per deal, columns `id, outcome, company, industry, headcount, geography, decision_maker, dependent_tech, use_case, current_platform, months_to_close, arr, months_customer, expansion_or_churn, loss_reason, best`. IDs W1 onwards for won, L1 onwards for lost, in the order given; `best` is yes for {BEST_IDS}; copy fields as given, blank if missing.
2. `ICP-WORKSHEET.md`, under 400 words: `# Ideal customer profile - {COMPANY}`; if {STATUS} is `hypothesis`, the line `**Hypothesis, not evidence. Rebuild at 20 deals.**`; a table with columns Row, Green (target outbound), Yellow (inbound only), Red (disqualify), Priority, Source, one line per {GRID} row, cells verbatim; `## Trigger and channels` ({TRIGGER_AND_CHANNELS}); `## Refresh by` and the date three months from today; last line {TEN_SECOND_SENTENCE}, unchanged, nothing after it.
3. `BACKTEST.md`, four sections:
- **Tally**: per row, how many best, other won and lost deals match its Green rule, as counts and percentage of each group.
- **Sort**: run every deal and test customer through {GRID}: Red if any row matches its Red rule, else Yellow if any matches Yellow, else Green, skipping rows whose cell is `unknown` or field blank. Table: id, name, predicted, actual, hit or miss.
- **Score**: hit rate for the last 10 wins, last 10 losses and test customers, separately; list every miss with the row that caused it.
- **Losses by reason**: lost deals per stated reason (price, fit, timing, other), never merged.
## Rules
- Use only the inputs; invent no deal, rule, figure or name; `unknown` stays `unknown`.
- Apply rules literally; never loosen one to make a customer fit, report the miss.
- Every number must be recomputable from `DEALS.csv`.
- British English, no em dashes.
## Return
Print only: each file's path; `ICP-WORKSHEET.md` word count; deals as won / lost / best; per row, percentage of won deals matching Green; hit rates for last 10 wins, last 10 losses, test customers; every miss with its row; cells still `unknown`. Then stop.
Built from the best public work on this
Find out who actually buys from you - sources
Every source below was opened and checked on 5 Sep 2026. Star counts are from api.github.com unless stated.
Built from
- Stage 2 Capital, ICP-Builder, https://github.com/stage-2-capital/ICP-Builder (Mark Roberge's GTM fund; method by Mandy Cole, "How to Use Claude to Define Your Ideal Customer Profile", 8 Aug 2026, https://gtm.stage2.capital/p/how-to-use-claude-to-define-your; 1 star, evidenced on the repo page, weight is the authors' record). Gave the closed-won versus closed-lost start, the seven rows, Green/Yellow/Red, filter-rule cells, Red with teeth, the pressure-test against real customers and the "how do you know that" discipline.
- borghei/Claude-Skills, ideal-customer-profile, https://github.com/borghei/Claude-Skills/blob/main/project-management/gtm/ideal-customer-profile/SKILL.md (702 stars). Gave the top-20 refinement from closed customers, NRR above 115%, 60% clustering, the wrong-cohort warning, the anti-patterns and the quarterly or 10-new-customers refresh.
- alirezarezvani/claude-skills, marketing-strategy-pmm, https://github.com/alirezarezvani/claude-skills/blob/main/marketing-skill/skills/marketing-strategy-pmm/SKILL.md (25,542 stars). Gave top 20% by LTV, 5+ paying customers matching the profile, and the success test that A-fit customers churn least and close fastest.
- tech-leads-club/agent-skills, positioning-icp, https://github.com/tech-leads-club/agent-skills/blob/main/packages/skills-catalog/skills/(gtm)/positioning-icp/SKILL.md (5,121 stars). Gave the top 20-50 export, the back-test against the last 10 wins and losses before rollout, and the 90-day overdue flag.
- coreyhaines31/marketingskills, customer-research, https://github.com/coreyhaines31/marketingskills/blob/main/skills/customer-research/SKILL.md (46,908 stars). Gave segment-by-reason, 5 independent data points per segment, leave blanks blank, and the sample-bias checks.
- phuryn/pm-skills, ideal-customer-profile, https://github.com/phuryn/pm-skills/blob/main/pm-go-to-market/skills/ideal-customer-profile/SKILL.md (26,000 stars). Gave segment-by-value (highest LTV, fastest time to value, lowest churn, highest expansion) and disqualification criteria as a named output.
Not used: HubSpot's free "ICP Builder" Claude skill (https://offers.hubspot.com/icp-builder-skill). The prompt is gated behind a lead-capture form and could not be inspected, so it carries no weight here.
Best public prompt we found for this job
From Stage 2 Capital's ICP-Builder, SKILL.md inside icp-worksheet-builder.skill: https://github.com/stage-2-capital/ICP-Builder (quoted verbatim; the two long dashes in the original are shown as hyphens)
Closed-won vs. closed-lost analysis (best source, always start here). Pull your last 20-30 closed-won and closed-lost deals (CRM export, or list your best and worst customers from memory if you don't have a CRM). For each row, look for the pattern: what did the closed-won accounts have in common that closed-lost didn't? A vertical, size band, or buyer title that shows up repeatedly in wins and rarely in losses is a strong Green signal. One that shows up in losses, refunds, or high-churn accounts is a Red signal.
Go row by row, not column by column. For each row, first nail the Green definition, then work out what pushes something to Yellow vs. Red by asking what's different about the deals that didn't work. Don't accept a vague answer without asking "how do you know that" or "where would you check that."
Sanity-check against real accounts. Before finalizing, pressure-test: name 2-3 real customers and see if the worksheet correctly sorts them into the bucket they actually ended up in. If a known great customer falls out as Yellow or Red, the criteria are miscalibrated - go back and adjust.
Cells should read like filter rules a rep could apply cold: "50-500 employees," not "small to mid-sized companies that are growing." If you can't say why something is Red instead of Yellow, it probably belongs in Yellow - Red should be reserved for criteria with teeth.
Want this running in your business?
I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.
Foxera