Agent skill
gtm-icp
Triggers when a user asks to create, update, delete, or check an ideal customer profile, or ICP, in a GTM workspace, with phrasings like "create an ICP for lean B2B SaaS", "our ICP should require HubSpot", "delete the SaaS ICP", or "check the ICPs".
Filed under Prospecting and list building.
From eliasstravik/gtm-skills · 7 skill entries · 13 · pushed 2026-09-21
What it does when it runs
Triggers when a user asks to create, update, delete, or check an ideal customer profile, or ICP, in a GTM workspace, with phrasings like "create an ICP for lean B2B SaaS", "our ICP should require HubSpot", "delete the SaaS ICP", or "check the ICPs". Owns the ICP files and their 13 company criteria. Not for the workspace, its members, or the organization's own facts (gtm-workspace), personas (gtm-persona), checking a given company against an ICP (gtm-qualify-prospects), or workflows that score accounts on a schedule (gtm-workflow).
Automated analysis of the skill and the 2 files 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
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- 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
- writes files
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/eliasstravik/gtm-skills.git /tmp/gtm-skills git -C /tmp/gtm-skills sparse-checkout set "skills/gtm-icp" mkdir -p ~/.claude/skills/gtm-icp cp -R "/tmp/gtm-skills/skills/gtm-icp/." ~/.claude/skills/gtm-icp/
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.
The skill
Source on GitHub ↗Reproduced in full from eliasstravik/gtm-skills/blob/2f986ae36d384bded1df28ba51fee25a672fdf4d/skills/gtm-icp/SKILL.md, which is licensed MIT (repository). 479 words, 10 headings.
GTM ICP
Trigger
Apply this skill when a request creates, changes, removes, or checks an ICP in a GTM workspace.
Scope
This skill owns icps/<slug>/ICP.md in the workspace found by the contract. An ICP records desired or accepted criteria for target accounts in the 13 fields of company data, never facts about the organization itself.
Inputs
Criteria from the user or sources the user supplies; the existing ICPs, for the near-duplicate check; the names of ICPs copied into workflows/workflows/*.ts, for the copy notice.
Roles
The user approves every change through the host's write permission; the agent proposes, edits, commits, and reports.
Procedure
Talk by the six rules in interaction; reproduce the dialogues.
| Job | Do |
|---|---|
| Create | When an existing ICP overlaps the request, offer Update first. Otherwise copy templates/ICP.md to icps/<slug>/ICP.md, fill only the criteria the user gave, leave the rest Unknown, and say the rest stays Unknown because criteria are never borrowed from the company record. Omit ## Company signals and ## Disqualifiers when empty. |
| Update | Change the named criteria, signals, or disqualifiers. When a workflow file names this ICP, say that workflow keeps its own copy of the criteria until it is updated. |
| Delete | When several ICPs match, ask which; say whether a workflow carries a copy, which keeps running. Remove icps/<slug>/; close with what disappeared and that it stays in the workspace's history. |
| Doctor | Flag an ICP with no account-matchable criterion (every field Unknown), a placeholder husk, a missing H1, or a folder name that is not its slug; offer the fixes as options; rewrite what the user accepts. Unknown in Description and Domain is normal. |
Every save: one sentence on what will change, pull first when origin/main exists, edit through the host's write path, commit on main with a plain-language message, push when a remote exists, verify the commit (and that it reached origin/main when a remote exists), close with what was created, changed, or deleted.
Outputs
icps/<slug>/ICP.md in the template's shape, each change a commit on main.
Exceptions
Requires the gtm-workspace skill installed alongside this one; when ../gtm-workspace/SKILL.md is missing, say: install it the same way this skill was installed, with npx skills add eliasstravik/gtm-skills -s gtm-workspace -y (add -g when this skill lives in the global skills directory), then retry. A criterion the user did not state stays Unknown; nothing is derived from ORG.md.
QC
- The 13 fields appear in order, one line each; nested bullets only under Location, Products and services, and Tech stack.
- The H1 is present and the folder name is its slug; empty optional sections are absent.
- The closing statement of what changed follows a verified commit.
References
interactions dialogues; templates/ICP.md; from gtm-workspace: interaction, contract, company data.
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.
- sales-icp by zubair-trabzada · 1,373
- icp-onboarding by growthenginenowoslawski · 718
- icp-prompt-builder by growthenginenowoslawski · 718
- icp-builder by OpenClaudia · 697
- reddit-icp-monitor by Varnan-Tech · 660
- icp-import by Othmane-Khadri · 310
- icp-definer by Othmane-Khadri · 310
- lemlist-campaign-from-icp by Othmane-Khadri · 310
Need help setting it up?
This page tells you what gtm-icp 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.