Agent skill
gtm
Run the GTM contact pipeline from a plain-English campaign brief.
Filed under Prospecting and list building.
From kkrlstrm/gtm-pipeline · 9 skill entries · 16 · pushed 2026-09-29
What it does when it runs
Run the GTM contact pipeline from a plain-English campaign brief. Interprets the brief against context/ + gtm.config.yaml, plans the run, and drives the stages (company_search → people_search → qualify → email_enrich → phone_enrich → activate) threading one list_id, with approval gates, a do-not-contact pass, list QA and an activation preflight. Also reports on or resumes an existing list. Use when the user describes a campaign ("find me … at … for …"), says "/gtm …", "run the pipeline", "build a list", "status of list N", or "resume list N".
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
- Bash
- WebSearch
- WebFetch
- Task
- Workflow
- 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" mkdir -p ~/.claude/skills/gtm cp -R "/tmp/gtm-pipeline/.claude/skills/gtm/." ~/.claude/skills/gtm/
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/SKILL.md, which is licensed APACHE-2.0 (repository). 227 words, 0 headings.
The user's input: $ARGUMENTS
Execute the orchestrator: read agents/orchestrator/agent.md and follow it exactly. Read
REVIEW.md once per session; it binds you and every sub-agent you start.
status <list_id>→python3 storage/cli.py run_report --input '{"list_id":<id>}'; present stages logged, counts, cost (estimate vs actual), open warnings and gate verdicts. Change nothing.resume <list_id>→ orchestrator §0: continue from the first stage whose latest event is not ok/warn/skipped, using the plan and expansion frozen on the list. Say where you are resuming and why.- Anything else is a brief:
- Read
gtm.config.yamland thecontext/files. Ificp.md/personas.mdare missing or still templates, offer/gtm-setupinstead of guessing an ICP. - Interpret the brief into a concrete plan, expand the role and segment, and preview titles on a few sample companies.
- Present the plan (Gate #1) and get approval unless autonomy says otherwise; freeze it onto the list.
- Run only the available stages, threading the
list_id. After each stage:log_event, then readlist_summaryback and compare it with what the stage reported. - Before activation:
qa,suppress posture=send,preflight_activate(must exit 0), then Gate #4. - Produce the export (say UNSCRUBBED if
suppression_appliedis false) and finish withrun_report.
- Read
If the brief is empty, ask for one (what to sell / who to target / where), or offer to
infer it from context/icp.md.
Need help setting it up?
This page tells you what gtm 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.