Skip to content
Back to skills

Gtm Setup

ASecurity

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.

  • 16 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 29, 2026
ai-agentspythongobashapi

Works with

  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add kkrlstrm/gtm-pipeline --skill gtm-setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gtm Setup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gtm Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kkrlstrm-gtm-setup/badge)](https://www.skillsdirectory.com/skills/kkrlstrm-gtm-setup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gtm-setup
description: >
  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.
allowed-tools: Read, Write, Bash, WebFetch, WebSearch
---

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.md` exists without
  `<placeholder>` text, show it and ask what to change instead.
- **Never write an API key.** Copy `.env.example` to `.env` only if `.env` is 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

1. **Copy what is missing** (never overwrite):
   `[ -f gtm.config.yaml ] || cp gtm.config.example.yaml gtm.config.yaml` and the same for
   `.env`.

2. **Ask, in one message** (accept short answers; skip what the user doesn't know):
   1. Your website URL.
   2. What you sell, in one sentence.
   3. Who buys it: job titles, and who else is involved in the decision.
   4. Where: countries or regions.
   5. Three to ten of your best customers (names or domains). These become look-alike seeds.
   6. Anyone you must never contact: current customers, partners, opt-outs. A list of
      domains/emails, a CSV path, or "none for now".
   7. Company types you never sell to (e.g. agencies, competitors).

3. **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.

4. **Draft the files** from the `.example` templates, 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 with `Titles:`,
     `Also-known-as:` (sector and local-language variants for the user's region), a
     vertical-appropriate `Seniority:`, `Why relevant:` and a `Disambiguation:` 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` — header `email,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".

5. **Show the drafts** (personas and segments in full, the rest summarized) and ask for
   corrections. Apply them, then write the files.

6. **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 (see `docs/single-provider.md`), and that the
   pipeline runs without any keys on the builtin web research, just thinner.

7. **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>`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.