Setup
Turns Claude Code into your sales team — 8 slash-command skills for pipeline tracking, daily rituals, call analysis, lead scoring, and cold outreach. Built for 0-to-1 founders.
npx -y skills add himanshusaleria/gtm-engine --skill setupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
17.4 KB, as published. Nobody here has run it
GTM Engine Setup Wizard
Interactive setup wizard that configures the GTM Engine for a new user. Collects company context, team info, ICP, personas, messaging, and signals, then generates all config and context files.
Invocation
/setup-- Full 8-step wizard/setup --icp-- Just ICP Workshop (Step 4)/setup --personas-- Just Pain & Persona Mapping (Step 5)/setup --messaging-- Just Messaging & Objections (Step 6)/setup --signals-- Just Signal Playbook (Step 7)/setup --reinstall-- Regenerate config, CLAUDE.md, and reinstall skills from current config
Instructions
Parse $ARGUMENTS to determine mode:
- If
$ARGUMENTScontains--icp-> run only Step 4 - If
$ARGUMENTScontains--personas-> run only Step 5 - If
$ARGUMENTScontains--messaging-> run only Step 6 - If
$ARGUMENTScontains--signals-> run only Step 7 - If
$ARGUMENTScontains--reinstall-> run only Step 8 - Otherwise -> run Steps 1 through 8 in order
For individual steps (--icp, --personas, --messaging, --signals), first read config/config.yaml to load existing config. If it does not exist, tell the user to run /setup first.
Step 1: Welcome + Stack Discovery
Display this welcome message:
## Welcome to the GTM Engine
This is a Claude Code-powered sales system that gives you:
- Sales frameworks baked into every conversation
- Daily rituals (/good-morning, /good-night) to stay focused
- Self-improving skills that learn from your feedback
- Linear-based pipeline + task management
Let's get you set up. This takes about 10-15 minutes.
You can skip sections and come back to them later with flags like /setup --icp.
Then ask these questions one at a time, waiting for each answer:
-
"What CRM/project tracker do you use? Linear is required for the GTM Engine."
- If they say Linear -> proceed
- If they say something else -> explain Linear is required, link to https://linear.app, ask them to set it up first
- Store:
linear_confirmed = true
-
"Do you use a call recording tool for sales calls? (e.g., Fathom, Fireflies, Otter, Grain, or something else)"
- If they name a tool ->
call_recording_enabled = true,call_recording_provider = "{tool_name_lowercase}"(e.g., "fathom", "fireflies", "otter", "grain") - If none ->
call_recording_enabled = false
- If they name a tool ->
-
"Do you use Google Workspace (Gmail, Google Calendar, Google Sheets)?"
- If yes ->
google_workspace_enabled = true - If no ->
google_workspace_enabled = false
- If yes ->
-
"Will you use a Google Sheet to track outreach/leads?"
- If yes -> ask for the spreadsheet ID (the long string in the URL) ->
outreach_sheet_enabled = true, store ID - If no ->
outreach_sheet_enabled = false
- If yes -> ask for the spreadsheet ID (the long string in the URL) ->
Summarize what integrations will be enabled and confirm before proceeding.
Step 2: MCP Installation
Based on the integrations from Step 1, guide the user through MCP server setup.
Always required -- Linear MCP:
Say: "The Linear MCP server connects Claude Code to your Linear workspace. Let me check if it's already installed."
- Try calling
mcp__linear__list_teamsto test the connection- If it works -> "Linear MCP is connected! Found your teams: [list team names]"
- If it fails -> Guide installation:
To install the Linear MCP server:
1. Get your Linear API key from Settings -> API -> Personal API keys
2. Add this to your Claude Code MCP config:
Server name: linear
Command: npx
Args: ["@anthropic/linear-mcp-server"]
Env: LINER_API_KEY=your-key-here
See docs/mcp-setup.md for detailed instructions.
Wait for user to confirm it's working, then verify with mcp__linear__list_teams again.
If Google Workspace enabled:
Say: "The Google Workspace MCP server connects Gmail, Calendar, Sheets, and Docs."
- Try calling
mcp__google-workspace__time_getCurrentDateto test- If it works -> "Google Workspace MCP is connected!"
- If it fails -> Guide installation, referencing docs/mcp-setup.md
If call recording enabled (API-based provider — fathom, fireflies):
Say: "Your call recording tool ({provider}) uses an API key stored in your .env file."
- Check if
.envfile exists in the repo root - Determine the env var name based on provider:
- Fathom ->
FATHOM_API_KEY(get from Fathom Settings -> Integrations -> API) - Fireflies ->
FIREFLIES_API_KEY(get from Fireflies Settings -> Integrations -> API)
- Fathom ->
- If
.envdoesn't exist or doesn't contain the key, tell user to add it:{ENV_VAR_NAME}=your-key-here - Explain where to find the API key for their specific provider
If call recording enabled (manual provider — otter, grain, etc.):
Say: "{provider} doesn't require an API key. You can import transcripts manually using /sync-calls — it will prompt you to paste or drop transcript files."
Step 3: Company Context
Ask these questions one at a time:
- "What is your company name?"
- "What is your product name?" (may be same as company name)
- "What is your website URL?"
- "Give me a one-liner -- one sentence that explains what you do."
- "What stage are you at?" (Pre-revenue / Early revenue / Scaling)
- "What is your first name?" (for content voice -- "I" perspective)
Then ask about Linear teams:
- "In Linear, what is your pipeline tracking team called? (default: 'Sales')"
- If they just press enter or say default -> use "Sales"
- "What is your action/tasks team called? (default: 'GTM')"
- If they just press enter or say default -> use "GTM"
- "What label should be applied to all engine-created tasks? (default: 'gtm-engine')"
Then ask about team members:
- "Let's set up your team. I'll look up Linear user IDs for you."
- Call
mcp__linear__list_usersto get all users - Display the list: "Here are the users in your Linear workspace: [table of name, email, ID]"
- Ask: "Which one is you (the default assignee)?" -> store their user ID
- Ask: "Any other team members to add? For each, tell me their name, role (sdr/cs/engineer/other), and which user from the list above."
- Repeat until user says "done" or "that's all"
- Call
Store all values for config generation in Step 8.
Step 4: ICP Workshop
If user chose to skip: Display "Skipping ICP for now. You can run /setup --icp anytime to come back to this." and move to Step 5.
Say:
## ICP Workshop
Let's define your Ideal Customer Profile using a three-layer model:
- **IMP** (Ideal Market Profile) -- which markets to target
- **ICP** (Ideal Customer Profile) -- which companies within those markets
- **IPP** (Ideal Prospect Profile) -- which people within those companies
This usually takes 5-10 minutes.
IMP Layer:
Ask:
- "What industry or vertical are your best customers in? (can be multiple)"
- "What geography do you target? (global, US-only, India, etc.)"
- "What market trend is driving demand for your product right now?"
ICP Layer:
Ask:
- "What company size (employees) is your sweet spot? (e.g., 10-500)"
- "Any tech stack requirements? (e.g., must use React, must have CI/CD)"
- "Any org structure signals? (e.g., must have a QA team, must have product team)"
- "What does their buying process look like? (founder decides, committee, procurement)"
IPP Layer:
Ask:
- "What title/role is your primary buyer? (the person who says yes)"
- "Who is the champion inside the org? (the person who pushes for you)"
- "What KPIs does your buyer own?"
- "Where does your buyer hang out online? (LinkedIn, Twitter, Slack communities, etc.)"
Scoring and No-Go Rules:
- Show the default scoring criteria from the template and ask: "Want to customize these criteria, or are the defaults good?"
- If customize -> walk through each criterion, let them edit
- Ask: "What are your no-go rules? Companies you should NEVER pursue, regardless of score. (e.g., 'Enterprise 5000+ employees', 'Government contracts')"
- Collect until user says done
Generate the file:
Read the template from templates/icp-definition.md, fill in all collected answers, and write to my-context/icp-definition.md.
Show the user what was generated and ask: "Does this look right? Want to change anything?"
Step 5: Pain & Persona Mapping
If user chose to skip: Display "Skipping personas for now. Run /setup --personas anytime." and move to Step 6.
Say:
## Pain & Persona Mapping
Let's map out your buyer personas and their pains.
We'll do 2-3 personas. For each one, I'll ask about their world and what hurts.
For each persona (repeat 2-3 times):
- "What is the title/role of this persona? (e.g., VP of Engineering, QA Lead)"
- "Who do they report to?"
- "What do they care about most in their day-to-day?"
- "What are their top 3 pains related to the problem you solve?"
- For each pain, ask: "How does this pain impact them? How often?"
- "How do they currently solve this problem? (manual process, competitor tool, ignore it)"
- "What triggers them to start looking for a solution?"
- "What objections do they typically raise?"
- "What's the best channel to reach them?"
Ask: "Want to add another persona?" -> repeat or move on.
Generate the file:
Read the template from templates/persona-pain-map.md, fill in all collected answers, and write to my-context/persona-pain-map.md.
Build the Persona-Pain Matrix at the bottom by cross-referencing all pains across all personas (High/Medium/Low relevance for each).
Step 6: Messaging & Objections
If user chose to skip: Display "Skipping messaging for now. Run /setup --messaging anytime." and move to Step 7.
Part A: Company Overview
Say: "Let me generate your company overview based on what you've told me so far."
- Read the template from
templates/company-overview.md - Pre-fill what you already know from Step 3 (company name, product, website, one-liner, stage)
- Ask:
- "Can you give me 2-3 paragraphs describing what your product does, who it's for, and how it works?"
- "Why now? What market shift or trend makes this the right time?"
- "What are your top 3 differentiators vs. alternatives?"
- "What's your current traction? (customers, revenue, key metrics)"
- "Who are your main competitors? For each, what do they do and what's your advantage?"
- Write to
my-context/company-overview.md
Part B: Objections Playbook
Say:
## Objections Playbook
Let's document the objections you hear most often.
For each one, we'll build a response framework.
Ask: "What are the top 5 objections you hear from prospects? Give me the exact words they say."
For each objection:
- "Why do they say this? What's the root cause or underlying fear?"
- "What evidence or proof do you have to counter it? (case studies, data, demos)"
- "When do you hear this? Which persona and which stage of the sales process?"
Read template from templates/objections-playbook.md, fill in answers, write to my-context/objections-playbook.md.
Step 7: Signal Playbook
If user chose to skip: Display "Skipping signals for now. Run /setup --signals anytime." and move to Step 8.
Say:
## Signal Playbook
Intent signals tell you WHEN to reach out. Let's catalog the signals
that indicate a company might need your product.
Walk through each signal category:
- Hiring Signals: "What job postings indicate a company needs your product? (e.g., 'Hiring a QA engineer' means they're investing in testing)"
- Tech Stack Signals: "What technologies in their stack indicate fit? (e.g., 'Uses Selenium' means they have test automation)"
- Content/Event Signals: "What content or events indicate interest? (e.g., 'CTO posts about testing challenges on LinkedIn')"
- Pain Trigger Signals: "What events create urgency? (e.g., 'Production outage', 'Failed audit', 'Negative reviews')"
- Competitive Signals: "What competitor usage signals are relevant? (e.g., 'Currently using X', 'Contract renewal')"
For each signal they mention:
- Ask: "How strong is this signal? (Strong / Medium / Weak)"
- Ask: "Where do you find this signal?"
- Ask: "What should you do when you see it?"
Read template from templates/signal-playbook.md, fill in answers, write to my-context/signal-playbook.md.
Step 8: Finalize
This step generates all config files and completes setup.
8a: Generate config/config.yaml
Read config/config.example.yaml as the schema reference. Generate config/config.yaml with all values collected during setup:
- Company section: name, product, website, one_liner, stage
- Team section: all team members with name, role, linear_user_id, is_default_assignee
- Linear section: pipeline_team, action_team, default_label, pipeline_stages (use defaults), canceled_spelling
- Integrations section: google_workspace.enabled, call_recording.enabled + provider + api_key_env, outreach_sheet.enabled + spreadsheet_id
- ICP section: scoring_criteria (from Step 4 or defaults), no_go_rules, tiers
- Content section: creator_name, platforms, audience, voice_notes
- Ritual section: use defaults from config.example.yaml, set cohort.enabled = false
- last_seen_version: read from VERSION file
8b: Generate CLAUDE.md
Generate a CLAUDE.md file in the repo root with:
# GTM Engine — [Company Name]
## Project
This is the GTM Engine for [Company Name]. It contains sales frameworks, customer context, and automated skills for running outbound sales with Claude Code.
## Linear Configuration
- **Pipeline team (leads/deals):** [pipeline_team]
- **Action team (tasks/follow-ups):** [action_team]
- **Default label:** [default_label]
- **Default assignee:** [default person name] — user ID `[their ID]`
[For each additional team member:]
- **[Name] ([Role]):** user ID `[their ID]` — [role-appropriate task description]
## Linear Two-Team Workflow
### [pipeline_team] team = Pipeline tracking (leads/deals only)
### [action_team] team = Action tasks (follow-ups, emails, outreach, CS, strategy)
**Cross-team rules:**
- When creating a [action_team] task for a [pipeline_team] lead, always reference the ticket ID in the description
- When updating a [pipeline_team] deal, check if a [action_team] follow-up task is needed
- When completing a [action_team] task, update the corresponding [pipeline_team] ticket
**Email/Message workflow:**
1. Draft emails/messages as comments on the relevant [action_team] ticket
2. After user confirms sent, create a follow-up task in [action_team] Backlog with a due date
3. Follow-up timing: 2-3 days for warm leads, 1 week for cold outreach
## Sales Frameworks Reference
[List all frameworks in frameworks/ as a table: Framework | File | When to Apply]
## Key Context Files
- Company overview: `my-context/company-overview.md`
- ICP definition: `my-context/icp-definition.md`
- Persona-pain map: `my-context/persona-pain-map.md`
- Objections playbook: `my-context/objections-playbook.md`
- Signal playbook: `my-context/signal-playbook.md`
## Config
- Config file: `config/config.yaml`
- To update config: edit directly or run `/setup --reinstall`
- To check for updates: run `/whats-new`
Populate the frameworks table by reading all .md files in frameworks/ and listing them.
8c: Install skills
Copy skill SKILL.md files from skills/ to ~/.claude/skills/:
- List all subdirectories in
skills/ - For each skill directory that contains a SKILL.md:
- Create
~/.claude/skills/[skill-name]/if it doesn't exist - Copy the SKILL.md file there
- If the skill has a
learnings.md, create an empty one in the destination
- Create
- Skip skills that require integrations the user doesn't have:
sync-calls-> skip if call_recording not enabled- Skills that heavily use Google Workspace -> skip if not enabled
Report which skills were installed.
8d: Create support files
- Create
memory/directory if it doesn't exist - Create
memory/daily_streak.mdwith initial content:
# Daily 3+2 Streak
## Current Streak: 0 days
## Last Scored: never
## History
| Date | Meaningful (done/planned) | Light (done/planned) | Score |
|------|--------------------------|---------------------|-------|
8e: Show summary
Display a summary:
## Setup Complete!
### Company
- [Company name] ([stage])
- [one-liner]
### Linear
- Pipeline: [pipeline_team] | Tasks: [action_team]
- Label: [default_label]
- Team: [list names and roles]
### Integrations
- Linear: Connected
- Google Workspace: [Enabled/Disabled]
- Call Recording: [Enabled/Disabled] ([provider name] if enabled)
- Outreach Sheet: [Enabled/Disabled]
### Context Files Generated
- [list each my-context/ file that was created]
- [show "skipped" for any that were skipped]
### Skills Installed
- [list each skill installed to ~/.claude/skills/]
### What's Next
- Try `/good-morning` to see your first daily briefing
- Run `/setup --icp` if you skipped the ICP workshop
- Run `/whats-new` to check for updates anytime
Important Notes
- Always wait for user responses before proceeding to the next question
- If user says "skip" at any step, mark it as skipped and move on
- For individual step flags (--icp, --personas, etc.), read existing config first and only run that step
- For --reinstall, read existing config.yaml, regenerate CLAUDE.md, and re-copy skills
- Never overwrite my-context/ files without asking -- if a file already exists, ask "This file already exists. Overwrite it?"
- Use markdown formatting in all generated files
- All file paths are relative to the repo root