Agent skill
gtm-setup
First-run setup for the GTM pipeline.
Filed under Prospecting and list building.
From kkrlstrm/gtm-pipeline · 9 skill entries · 16 · pushed 2026-09-29
What it does when it runs
First-run setup for the GTM pipeline. Asks a few questions, reads the user's website, and writes context/icp.md, personas.md, segments.md, exclusions.md and do-not-contact.csv, copies gtm.config.yaml and .env from their examples, then runs scripts/doctor.py and suggests a first brief. Use when the user says "/gtm-setup", "set this up", "get started", "onboard me", or when /gtm finds the context files missing or still templates.
Automated analysis of the skill and the 0 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
- Read
- Write
- Bash
- WebFetch
- WebSearch
- Actions present in the files
- shellnetwork
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/kkrlstrm/gtm-pipeline.git /tmp/gtm-pipeline git -C /tmp/gtm-pipeline sparse-checkout set ".claude/skills/gtm-setup" mkdir -p ~/.claude/skills/gtm-setup cp -R "/tmp/gtm-pipeline/.claude/skills/gtm-setup/." ~/.claude/skills/gtm-setup/
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 kkrlstrm/gtm-pipeline/blob/3fdc07a14e4f3991eba66ec2e8a9feb8fec4a197/.claude/skills/gtm-setup/SKILL.md, which is licensed APACHE-2.0 (repository). 494 words, 2 headings.
Set up this checkout so /gtm <brief> works. The user should be able to finish in about five
minutes without reading the docs. Input, if any: $ARGUMENTS
Rules
- Never overwrite an existing, filled-in file. If
context/icp.mdexists without<placeholder>text, show it and ask what to change instead. - Never write an API key. Copy
.env.exampleto.envonly if.envis missing, and tell the user which keys to fill in. Keys never go in any other file. - Never invent a customer, a competitor or a seed company. Seeds and do-not-contact entries come from the user. Titles and segments you infer are drafts, and you say so.
Steps
-
Copy what is missing (never overwrite):
[ -f gtm.config.yaml ] || cp gtm.config.example.yaml gtm.config.yamland the same for.env. -
Ask, in one message (accept short answers; skip what the user doesn't know):
- Your website URL.
- What you sell, in one sentence.
- Who buys it: job titles, and who else is involved in the decision.
- Where: countries or regions.
- Three to ten of your best customers (names or domains). These become look-alike seeds.
- Anyone you must never contact: current customers, partners, opt-outs. A list of domains/emails, a CSV path, or "none for now".
- Company types you never sell to (e.g. agencies, competitors).
-
Read the website (home, product, customers/case-studies, pricing pages; WebFetch) for the product, the buyer, and the industries it names. Use it to draft; do not quote marketing claims as facts about the market.
-
Draft the files from the
.exampletemplates, keeping their headings so the pipeline can read them:context/icp.md— product, segments in priority order, default geography, default seniorities, the seeds from answer 5, anti-fit signals.context/personas.md— one block per buyer role from answer 3, each withTitles:,Also-known-as:(sector and local-language variants for the user's region), a vertical-appropriateSeniority:,Why relevant:and aDisambiguation:line naming the wrong senses of the title.context/segments.md— A/B/C criteria from the segments, the default 0–10 rubric and thresholds.context/exclusions.md— answer 7 plus the standard always-skip titles.context/do-not-contact.csv— headeremail,domain,phone,linkedin_url,reason, then answer 6, one entry per row with a reason. If the user said "none", write the header only and tell them that means "checked against an empty list".
-
Show the drafts (personas and segments in full, the rest summarized) and ask for corrections. Apply them, then write the files.
-
Check the setup:
python3 scripts/doctor.py. Explain each FAIL and warning in one line with its fix. The usual remaining item is provider keys: say which one key would give the biggest improvement for this user's stages (seedocs/single-provider.md), and that the pipeline runs without any keys on the builtin web research, just thinner. -
Suggest a first brief built from their answers, e.g.
/gtm find <persona> at <segment> in <region> for <product>, and mention/gtm status <id>and/gtm resume <id>.
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.
- ab-test-setup-and-analysis by irinabuht12-oss · 4,293
- zapmail-domain-setup-public by growthenginenowoslawski · 759
- ab-test-setup by OpenClaudia · 714
- setup by Othmane-Khadri · 318
- ab-test-setup by louisblythe · 179
- ab-test-setup by manojbajaj95 · 106
- setup by himanshusaleria · 20
- setup-workspace by timscheuerai · 13
Need help setting it up?
This page tells you what gtm-setup 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.