Agent skill

CRM Integration

by manojbajaj95 in manojbajaj95/claude-gtm-plugin

CRM integration patterns for Close CRM, HubSpot, and Salesforce.

MITAuto-check passedSales & Support

Install CRM Integration

skills CLI
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/manojbajaj95/claude-gtm-plugin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/crm-integration .claude/skills/crm-integration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
crm-integration
GitHub stars
105
Token cost
~3.8k tokens
SKILL.md length
644 words
Files
3
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

CRM integration patterns for Close CRM, HubSpot, and Salesforce.

  • Works in 4 steps: Close CRM - Daily driver for SMB sales… → HubSpot - Marketing + Sales alignment… → Salesforce - Enterprise requirements and… → …
  • Activity logging
  • SKILL.md covers Workspace Context, Operating Contract, Platform Comparison and Entity Mapping, plus 10 more sections
  • Reaches api.close.com and login.salesforce.com; needs HUBSPOT_ACCESS_TOKEN and CLOSE_API_KEY

What it does

CRM Integration is an agent skill from manojbajaj95/claude-gtm-plugin. CRM integration patterns for Close CRM, HubSpot, and Salesforce. Use when: Close CRM, HubSpot, Salesforce, CRM API, lead sync, deal sync, activity logging, CRM webhook, pipeline automation, contact enrichment.

Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `config.json` and `reference/close-deep-dive.md`).

It sits in Sales & Support, covering CRM management. It works with Salesforce and HubSpot. The licence is MIT.

When your agent uses it

  • Activity logging
  • Pipeline automation
  • Contact enrichment

Example prompts

  • “/crm-integration”

Requirements

  • Python 3
  • A credential in CLOSE_API_KEY
  • A credential in HUBSPOT_ACCESS_TOKEN

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Close CRM - Daily driver for SMB sales (simplest API, best value)
  2. HubSpot - Marketing + Sales alignment with rich ecosystem
  3. Salesforce - Enterprise requirements and complex workflows
  4. Cross-CRM Sync - Bidirectional sync with conflict resolution

What it can do on your machine

Read from SKILL.md and the folder at commit 0830a46. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python, sql and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.close.com
    • login.salesforce.com
    • abcmech.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • HUBSPOT_ACCESS_TOKEN
    • CLOSE_API_KEY
    • CLOSE_WEBHOOK_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

CRM Integration loads about 3.8k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 644 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~56
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from manojbajaj95/claude-gtm-plugin at commit 0830a46, republished under its MIT licence (© manojbajaj95). 644 words, ~3,754 tokens.

Download SKILL.mdSave it as .claude/skills/crm-integration/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
crm-integration
description
CRM integration patterns for Close CRM, HubSpot, and Salesforce. Use when: Close CRM, HubSpot, Salesforce, CRM API, lead sync, deal sync, activity logging, CRM webhook, pipeline automation, contact enrichment.
<objective>
Integrate with CRM platforms for sales automation workflows:
  1. Close CRM - Daily driver for SMB sales (simplest API, best value)
  2. HubSpot - Marketing + Sales alignment with rich ecosystem
  3. Salesforce - Enterprise requirements and complex workflows
  4. Cross-CRM Sync - Bidirectional sync with conflict resolution

Key deliverables:

  • API client setup with proper authentication
  • CRUD operations for leads, contacts, deals, activities
  • Webhook handlers for real-time sync
  • Pipeline automation and reporting
    </objective>

Workspace Context

Read bootstrap context before asking questions: strategy/brand.md for brand, audience, offer, channels, tools, constraints, and metrics; about/me.md for personal voice; content/ideas.md and content/calendar.md for content planning. Use legacy product-marketing context files only as fallback. Save generated drafts to content/<platform>/drafts/YYYY-MM-DD_short-topic-slug.md, and route durable learnings back to strategy/brand.md, about/me.md, or content/ideas.md.

Operating Contract

This skill is self-contained for its frontmatter scope: use its local instructions, references, scripts, and assets as the playbook; ask only for missing task-specific inputs; hand off to adjacent skills instead of expanding scope; and return an actionable artifact, decision, plan, draft, or diagnostic.

<quick_start> Close CRM (API Key Auth):

python
import httpx

class CloseClient:
    BASE_URL = "https://api.close.com/api/v1"

    def __init__(self, api_key: str):
        self.client = httpx.Client(
            base_url=self.BASE_URL,
            auth=(api_key, ""),  # Basic auth, password empty
            timeout=30.0,
        )

    def create_lead(self, data: dict) -> dict:
        response = self.client.post("/lead/", json=data)
        response.raise_for_status()
        return response.json()

    def search_leads(self, query: str) -> list:
        response = self.client.post("/data/search/", json={
            "query": {"type": "query_string", "value": query},
            "results_limit": 100
        })
        return response.json()["data"]

# Usage
close = CloseClient(os.environ["CLOSE_API_KEY"])
leads = close.search_leads("company:Coperniq")

HubSpot (Python SDK):

python
from hubspot import HubSpot
from hubspot.crm.contacts import SimplePublicObjectInputForCreate

client = HubSpot(access_token=os.environ["HUBSPOT_ACCESS_TOKEN"])

# Create contact
contact = client.crm.contacts.basic_api.create(
    SimplePublicObjectInputForCreate(properties={
        "email": "user@example.com",
        "firstname": "Jane",
        "lastname": "Smith"
    })
)
print(f"Created: {contact.id}")

Salesforce (JWT Bearer):

python
import jwt
from datetime import datetime, timedelta

class SalesforceClient:
    def __init__(self, client_id: str, username: str, private_key: str):
        self.auth_url = "https://login.salesforce.com"
        self._authenticate(client_id, username, private_key)

    def _authenticate(self, client_id, username, private_key):
        payload = {
            "iss": client_id,
            "sub": username,
            "aud": self.auth_url,
            "exp": int((datetime.utcnow() + timedelta(minutes=3)).timestamp())
        }
        assertion = jwt.encode(payload, private_key, algorithm="RS256")

        response = httpx.post(f"{self.auth_url}/services/oauth2/token", data={
            "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
            "assertion": assertion
        })
        self.access_token = response.json()["access_token"]
        self.instance_url = response.json()["instance_url"]

</quick_start>

<success_criteria> A CRM integration is successful when:

  • API authentication works without errors
  • CRUD operations complete for all entity types
  • Rate limits are respected (Close: 100 req/10s, HubSpot: varies by tier)
  • Webhooks fire and process correctly
  • Data syncs bidirectionally without duplicates </success_criteria>

<crm_comparison>

Platform Comparison

FeatureCloseHubSpotSalesforce
AuthAPI KeyOAuth 2.0 / Private AppJWT Bearer
Rate Limit100 req/10s100-200 req/10s by tier100k req/day
Best ForSMB sales, simplicityMarketing + SalesEnterprise
Starting Price$49/user/moFree (limited)$25/user/mo
API AccessAll plansStarter+ ($45+)All plans
WebhooksAll plansPro+ ($800+)All plans

Entity Mapping

ConceptCloseHubSpotSalesforce
CompanyleadcompanyAccount
PersoncontactcontactContact / Lead
DealopportunitydealOpportunity
ActivityactivityengagementTask / Event
Custom Fieldcustom.cf_xxxpropertiesField__c

Pipeline Stage Mapping

StageCloseHubSpotSalesforce
NewLeadappointmentscheduledProspecting
QualifiedContactedqualifiedtobuyQualification
DemoOpportunitypresentationscheduledNeeds Analysis
ProposalProposaldecisionmakerboughtinProposal/Price Quote
WonWonclosedwonClosed Won
LostLostclosedlostClosed Lost
</crm_comparison>

<close_patterns>

Close CRM (Daily Driver)

Query Language (for Smart Views)
python
# Leads with no activity in 30 days
'sort:date_updated asc date_updated < "30 days ago"'

# High-value opportunities
'opportunities.value >= 50000 opportunities.status_type:active'

# Custom field filtering
'custom.cf_industry = "MEP Contractor"'

# Multiple trade types (your ICP)
'custom.cf_trades:HVAC OR custom.cf_trades:Electrical'
Core Operations
python
# Create lead with contacts
lead = close.create_lead({
    "name": "ABC Mechanical",
    "url": "https://abcmech.com",
    "contacts": [{
        "name": "John Smith",
        "title": "Owner",
        "emails": [{"email": "john@abcmech.com", "type": "office"}],
        "phones": [{"phone": "555-1234", "type": "office"}]
    }],
    "custom.cf_tier": "Gold",
    "custom.cf_source": "sales-agent"
})

# Create opportunity
opp = close._request("POST", "/opportunity/", json={
    "lead_id": lead["id"],
    "value": 50000,
    "confidence": 50,
    "status_id": "stat_xxx"  # Pipeline stage
})

# Log activity
close._request("POST", "/activity/note/", json={
    "lead_id": lead["id"],
    "note": "Initial discovery call - interested in demo"
})
Rate Limit Headers (RFC-compliant)
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704067200

See reference/close-deep-dive.md for query language, Smart Views, sequences, and reporting. </close_patterns>

<hubspot_patterns>

HubSpot Integration

Python SDK Pattern
python
from hubspot import HubSpot
from hubspot.crm.deals import SimplePublicObjectInputForCreate
from hubspot.crm.contacts import PublicObjectSearchRequest

client = HubSpot(access_token=os.environ["HUBSPOT_ACCESS_TOKEN"])

# Create deal with association
deal = client.crm.deals.basic_api.create(
    SimplePublicObjectInputForCreate(properties={
        "dealname": "Enterprise Deal",
        "amount": "50000",
        "dealstage": "appointmentscheduled",
        "pipeline": "default"
    })
)

# Search contacts by email domain
search = PublicObjectSearchRequest(
    filter_groups=[{
        "filters": [{
            "propertyName": "email",
            "operator": "CONTAINS",
            "value": "@example.com"
        }]
    }],
    properties=["email", "firstname", "lastname"],
    limit=50
)
results = client.crm.contacts.search_api.do_search(search)
Show full SKILL.md (271 more words)Show less
Association Types
FromToType ID
ContactCompany1
ContactDeal4
CompanyDeal6
DealContact3

See reference/hubspot-patterns.md for batch operations, custom properties, and workflows. </hubspot_patterns>

<salesforce_patterns>

Salesforce Integration

SOQL Query Patterns
sql
-- Parent-child relationship (Contacts of Account)
SELECT Id, Name, (SELECT LastName, Email FROM Contacts)
FROM Account WHERE Industry = 'Technology'

-- Child-parent relationship
SELECT Id, FirstName, Account.Name, Account.Industry
FROM Contact WHERE Account.Industry = 'Technology'

-- Semi-join (Accounts with open Opportunities)
SELECT Id, Name FROM Account
WHERE Id IN (SELECT AccountId FROM Opportunity WHERE IsClosed = false)
REST API v59.0
python
def create_opportunity(self, data: dict) -> dict:
    """Required: Name, StageName, CloseDate."""
    response = self.client.post(
        f"{self.instance_url}/services/data/v59.0/sobjects/Opportunity/",
        headers={"Authorization": f"Bearer {self.access_token}"},
        json=data
    )
    return response.json()

# Composite API (batch up to 200 records)
def composite_create(self, records: list) -> dict:
    return self.client.post(
        f"{self.instance_url}/services/data/v59.0/composite/sobjects",
        json={"allOrNone": False, "records": records}
    )

See reference/salesforce-patterns.md for JWT setup, Platform Events, and bulk API. </salesforce_patterns>

<webhook_patterns>

Webhook Handlers

Close Webhook (FastAPI)
python
from fastapi import FastAPI, Request, HTTPException
import hmac, hashlib

app = FastAPI()

@app.post("/webhooks/close")
async def close_webhook(request: Request):
    body = await request.body()
    signature = request.headers.get("Close-Sig")

    expected = hmac.new(
        CLOSE_WEBHOOK_SECRET.encode(), body, hashlib.sha256
    ).hexdigest()

    if not hmac.compare_digest(signature, expected):
        raise HTTPException(401, "Invalid signature")

    data = await request.json()
    event_type = data["event"]["event_type"]

    handlers = {
        "lead.created": handle_lead_created,
        "opportunity.status_changed": handle_opp_stage_change,
    }

    if handler := handlers.get(event_type):
        await handler(data["event"]["data"])

    return {"status": "ok"}
Close Webhook Events
lead.created, lead.updated, lead.deleted, lead.status_changed
contact.created, contact.updated
opportunity.created, opportunity.status_changed
activity.note.created, activity.call.created, activity.email.created
unsubscribed_email.created

</webhook_patterns>

<sync_architecture>

Cross-CRM Sync

Architecture
┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│   Close     │────▶│  Sync Layer  │◀────│  HubSpot    │
│  (Primary)  │◀────│  (Postgres)  │────▶│  (Marketing)│
└─────────────┘     └──────────────┘     └─────────────┘
Sync Record Schema
sql
CREATE TABLE crm_sync_records (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    entity_type VARCHAR(50) NOT NULL,
    close_id VARCHAR(100) UNIQUE,
    hubspot_id VARCHAR(100) UNIQUE,
    salesforce_id VARCHAR(100) UNIQUE,
    email VARCHAR(255),
    company_name VARCHAR(255),
    last_synced_at TIMESTAMPTZ,
    sync_source VARCHAR(50),
    sync_hash VARCHAR(64)
);

CREATE INDEX idx_sync_email ON crm_sync_records(email);
Conflict Resolution
python
from enum import Enum

class ConflictStrategy(Enum):
    CLOSE_WINS = "close"      # Close is source of truth
    LAST_WRITE_WINS = "lww"   # Most recent update wins

def resolve_conflict(close_record, hubspot_record, strategy):
    if strategy == ConflictStrategy.CLOSE_WINS:
        merged = close_record.copy()
        for key, value in hubspot_record.items():
            if key not in merged or not merged[key]:
                merged[key] = value
        return merged

See reference/sync-patterns.md for deduplication, migration scripts, and bulk sync. </sync_architecture>

<file_locations>

Reference Files

CRM-Specific:

  • reference/close-deep-dive.md - Query language, Smart Views, sequences, reporting
  • reference/hubspot-patterns.md - SDK patterns, batch operations, workflows
  • reference/salesforce-patterns.md - JWT auth, SOQL, Platform Events, bulk API

Operations:

  • reference/sync-patterns.md - Cross-CRM sync, deduplication, migration
  • reference/automation.md - Webhook setup, sequences, workflows

Templates:

  • templates/close-client.py - Full Close API client
  • templates/hubspot-client.py - HubSpot SDK wrapper
  • templates/sync-service.py - Cross-CRM sync service </file_locations>
<routing>
## Request Routing

User wants CRM integration: → Ask which CRM (Close recommended for simplicity) → Provide auth setup + basic CRUD

User wants Close CRM: → Provide API key setup, query language → Reference: reference/close-deep-dive.md

User wants HubSpot: → Provide SDK setup, search patterns → Reference: reference/hubspot-patterns.md

User wants Salesforce: → Provide JWT auth, SOQL patterns → Reference: reference/salesforce-patterns.md

User wants sync between CRMs: → Provide sync architecture, conflict resolution → Reference: reference/sync-patterns.md

User wants webhooks: → Provide handler pattern for specified CRM → Include signature verification </routing>

<env_setup>

Environment Variables

bash
# Close CRM
export CLOSE_API_KEY="api_xxx"
export CLOSE_WEBHOOK_SECRET="whsec_xxx"

# HubSpot
export HUBSPOT_ACCESS_TOKEN="pat-xxx"

# Salesforce
export SF_CLIENT_ID="xxx"
export SF_USERNAME="user@company.com"
export SF_PRIVATE_KEY_PATH="./salesforce.key"
export SF_INSTANCE_URL="https://yourorg.my.salesforce.com"
# Dependencies: httpx pyjwt hubspot-api-client python-dotenv

</env_setup>

<example_session>

Example Session

User: "I need to push enriched leads from my sales-agent to Close CRM"

Claude:

  1. Here's the pattern for pushing enriched data to Close:
python
async def push_to_close(close_client, enriched_data: dict) -> str:
    lead_data = {
        "name": enriched_data["company_name"],
        "url": enriched_data.get("website"),
        "custom.cf_tier": enriched_data["tier"],
        "custom.cf_source": "sales-agent",
        "contacts": [{
            "name": c["name"],
            "title": c.get("title"),
            "emails": [{"email": c["email"]}] if c.get("email") else []
        } for c in enriched_data.get("contacts", [])]
    }

    result = close_client.create_lead(lead_data)
    return result["id"]
  1. Make sure you have these custom fields in Close:

    • cf_tier (choices: Gold, Silver, Bronze)
    • cf_source (choices: sales-agent, inbound, referral)
  2. Rate limit: 100 requests per 10 seconds. Add asyncio.sleep(0.1) between requests for bulk imports. </example_session>

© manojbajaj95, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in skills/crm-integration of manojbajaj95/claude-gtm-plugin.

  • SKILL.md
  • config.json
  • reference/close-deep-dive.md

Open the folder on GitHubat commit 0830a46

Compare with similar skills

CRM Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

CRM Integration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
CRM Integration this skillmanojbajaj95/claude-gtm-plugin105—~3.8kAutomated safety check: PassMIT
Google Maps Exportgmapsscraper/google-maps-agent-skills132—~1.2kAutomated safety check: PassMIT
Pipeline Reviewgooseworks-ai/goose-skills1.2k1 repos~6.9kAutomated safety check: PassMIT
Hubspot Bulk Migrationjeremylongshore/tons-of-skills-marketplace2.8k—~3.9kAutomated safety check: PassMIT
CRMmagnus919/agent-skills115—~2.1kAutomated safety check: PassMIT
Fathom Core Workflow Bjeremylongshore/tons-of-skills-marketplace2.8k—~871Automated safety check: PassMIT

Similar skills

  • Google Maps Export

    gmapsscraper/google-maps-agent-skills

    Export Google Maps business data to CSV, JSON, or CRM format (HubSpot, Pipedrive, Salesforce).

    132 GitHub stars~1.2k tokensUpdated 4 mo ago
    Sales & SupportAuto-check passed
  • Pipeline Review

    gooseworks-ai/goose-skills

    Pipeline analysis composite. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~6.9k tokens
    Sales & SupportAuto-check passed
  • Hubspot Bulk Migration

    jeremylongshore/tons-of-skills-marketplace

    Bulk-migrate CRM data into HubSpot from Salesforce, Pipedrive, or Copper — or export off HubSpot — with field mapping, ID continuity, association re-linking, dedup safety, rate-limit budgeting, and…

    2.8k GitHub stars~3.9k tokensUpdated yesterday
    Sales & SupportAuto-check passed
  • CRM

    magnus919/agent-skills

    Operate HubSpot CRM from a terminal or agent: list and search contact records, view deal pipeline stages, and — with explicit confirmation — move deals between stages, backed by a bundled crm-cli…

    115 GitHub stars~2.1k tokensUpdated today
    Sales & SupportAuto-check passed
  • Fathom Core Workflow B

    jeremylongshore/tons-of-skills-marketplace

    Sync Fathom meeting data to CRM and build automated follow-up workflows.

    2.8k GitHub stars~871 tokensUpdated yesterday
    Sales & SupportAuto-check passed
  • CRM Data Cleaner

    LeoYeAI/openclaw-master-skills

    Deduplicate, normalize, and enrich CRM contacts and companies.

    2.2k GitHub stars~7.3k tokensUpdated 2 mo ago
    Sales & SupportAuto-check passed

More from manojbajaj95/claude-gtm-plugin

All 52 skills in this repo
  • App Store Optimization

    manojbajaj95/claude-gtm-plugin

    A skill your agent uses when optimizing app store listings, researching keywords, or tracking mobile app performance on Apple App Store and Google Play Store.

    105 GitHub stars~4.2k tokensUpdated 22 days ago
    Auto-check passed
  • Market Research Analysis

    manojbajaj95/claude-gtm-plugin

    Comprehensive market research and analysis skill. An agent skill from manojbajaj95/claude-gtm-plugin.

    105 GitHub stars~2.6k tokensUpdated 22 days ago
    Auto-check passed
  • Pitch Deck Creation

    manojbajaj95/claude-gtm-plugin

    Create professional investor pitch decks with structured content and visual design.

    105 GitHub stars~2.1k tokensUpdated 22 days ago
    Auto-check passed
  • Qr Code Generator

    manojbajaj95/claude-gtm-plugin

    Generate QR codes with URLs and UTM tracking. An agent skill from manojbajaj95/claude-gtm-plugin.

    105 GitHub starsUsed in 1 repo~694 tokens
    Auto-check passed
  • SEO And Aeo Strategy

    manojbajaj95/claude-gtm-plugin

    SEO, AEO (Answer Engine Optimization), and GEO strategy for search engines and AI visibility.

    105 GitHub stars~4k tokensUpdated 22 days ago
    Auto-check passed
  • Linkedin

    manojbajaj95/claude-gtm-plugin

    LinkedIn profile optimization and content creation. An agent skill from manojbajaj95/claude-gtm-plugin.

    105 GitHub stars~3.2k tokensUpdated 22 days ago
    Auto-check passed

Categories

Questions about CRM Integration

What does CRM Integration do?

CRM integration patterns for Close CRM, HubSpot, and Salesforce. CRM Integration is an agent skill from manojbajaj95/claude-gtm-plugin. CRM integration patterns for Close CRM, HubSpot, and Salesforce.

When should I use CRM Integration?

CRM Integration fits situations like: activity logging; pipeline automation; contact enrichment.

How do I install CRM Integration in Claude Code?

Run `npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a claude-code`. Or copy the skill folder (skills/crm-integration in manojbajaj95/claude-gtm-plugin) into .claude/skills/crm-integration in your project. Claude Code loads it when a task matches its description.

How do I install CRM Integration in Codex?

Run `npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a codex`. Or copy the skill folder (skills/crm-integration in manojbajaj95/claude-gtm-plugin) into .agents/skills/crm-integration in your project. Codex loads it when a task matches its description.

Can I use CRM Integration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/crm-integration, .gemini/skills/crm-integration, .github/skills/crm-integration and .opencode/skills/crm-integration in your project.

What does CRM Integration need to run?

Going by SKILL.md and its folder, CRM Integration needs credentials named HUBSPOT_ACCESS_TOKEN, CLOSE_API_KEY and CLOSE_WEBHOOK_SECRET. Our summary lists: Python 3; A credential in CLOSE_API_KEY; A credential in HUBSPOT_ACCESS_TOKEN.

Does CRM Integration access the network?

SKILL.md names 3 domains. In commands or code: api.close.com, login.salesforce.com and abcmech.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is CRM Integration safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does CRM Integration use?

CRM Integration is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does CRM Integration use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to CRM Integration?

Skills that share tags, products or a category with CRM Integration: Google Maps Export (gmapsscraper/google-maps-agent-skills, 132 stars), Pipeline Review (gooseworks-ai/goose-skills, 1.2k stars), Hubspot Bulk Migration (jeremylongshore/tons-of-skills-marketplace, 2.8k stars) and CRM (magnus919/agent-skills, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains CRM Integration?

manojbajaj95 (a GitHub user) maintains it in manojbajaj95/claude-gtm-plugin, which has 105 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on September 18, 2026.

Source: manojbajaj95/claude-gtm-plugin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.