Google Maps Export
gmapsscraper/google-maps-agent-skills
Export Google Maps business data to CSV, JSON, or CRM format (HubSpot, Pipedrive, Salesforce).
CRM integration patterns for Close CRM, HubSpot, and Salesforce.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "crm-integration" agent skill from https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integration into .claude/skills/crm-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crm-integration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/manojbajaj95/claude-gtm-plugin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/crm-integration .agents/skills/crm-integration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "crm-integration" agent skill from https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integration into .agents/skills/crm-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crm-integration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/manojbajaj95/claude-gtm-plugin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/crm-integration .cursor/skills/crm-integration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "crm-integration" agent skill from https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integration into .cursor/skills/crm-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crm-integration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/manojbajaj95/claude-gtm-plugin.git --path skills/crm-integration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/manojbajaj95/claude-gtm-plugin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/crm-integration .gemini/skills/crm-integration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "crm-integration" agent skill from https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integration into .gemini/skills/crm-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crm-integration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/manojbajaj95/claude-gtm-plugin.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/crm-integration .github/skills/crm-integration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "crm-integration" agent skill from https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integration into .github/skills/crm-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crm-integration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill crm-integration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install manojbajaj95/claude-gtm-plugin crm-integration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/manojbajaj95/claude-gtm-plugin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/crm-integration .opencode/skills/crm-integration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "crm-integration" agent skill from https://github.com/manojbajaj95/claude-gtm-plugin/tree/main/skills/crm-integration into .opencode/skills/crm-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "crm-integration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
crm-integrationCRM 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. 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.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0830a46. It shows what the files ask for, not the result of running them.
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.
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.
Hosts in commands or code, which the agent is likely to contact:
api.close.comlogin.salesforce.comabcmech.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
HUBSPOT_ACCESS_TOKENCLOSE_API_KEYCLOSE_WEBHOOK_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from manojbajaj95/claude-gtm-plugin at commit 0830a46, republished under its MIT licence (© manojbajaj95). 644 words, ~3,754 tokens.
.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.<objective>
Integrate with CRM platforms for sales automation workflows:
Key deliverables:
</objective>
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.
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):
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):
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):
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:
<crm_comparison>
| Feature | Close | HubSpot | Salesforce |
|---|---|---|---|
| Auth | API Key | OAuth 2.0 / Private App | JWT Bearer |
| Rate Limit | 100 req/10s | 100-200 req/10s by tier | 100k req/day |
| Best For | SMB sales, simplicity | Marketing + Sales | Enterprise |
| Starting Price | $49/user/mo | Free (limited) | $25/user/mo |
| API Access | All plans | Starter+ ($45+) | All plans |
| Webhooks | All plans | Pro+ ($800+) | All plans |
| Concept | Close | HubSpot | Salesforce |
|---|---|---|---|
| Company | lead | company | Account |
| Person | contact | contact | Contact / Lead |
| Deal | opportunity | deal | Opportunity |
| Activity | activity | engagement | Task / Event |
| Custom Field | custom.cf_xxx | properties | Field__c |
| Stage | Close | HubSpot | Salesforce |
|---|---|---|---|
| New | Lead | appointmentscheduled | Prospecting |
| Qualified | Contacted | qualifiedtobuy | Qualification |
| Demo | Opportunity | presentationscheduled | Needs Analysis |
| Proposal | Proposal | decisionmakerboughtin | Proposal/Price Quote |
| Won | Won | closedwon | Closed Won |
| Lost | Lost | closedlost | Closed Lost |
| </crm_comparison> |
<close_patterns>
# 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'# 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"
})X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704067200See
reference/close-deep-dive.mdfor query language, Smart Views, sequences, and reporting. </close_patterns>
<hubspot_patterns>
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)| From | To | Type ID |
|---|---|---|
| Contact | Company | 1 |
| Contact | Deal | 4 |
| Company | Deal | 6 |
| Deal | Contact | 3 |
See
reference/hubspot-patterns.mdfor batch operations, custom properties, and workflows. </hubspot_patterns>
<salesforce_patterns>
-- 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)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.mdfor JWT setup, Platform Events, and bulk API. </salesforce_patterns>
<webhook_patterns>
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"}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>
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Close │────▶│ Sync Layer │◀────│ HubSpot │
│ (Primary) │◀────│ (Postgres) │────▶│ (Marketing)│
└─────────────┘ └──────────────┘ └─────────────┘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);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 mergedSee
reference/sync-patterns.mdfor deduplication, migration scripts, and bulk sync. </sync_architecture>
<file_locations>
CRM-Specific:
reference/close-deep-dive.md - Query language, Smart Views, sequences, reportingreference/hubspot-patterns.md - SDK patterns, batch operations, workflowsreference/salesforce-patterns.md - JWT auth, SOQL, Platform Events, bulk APIOperations:
reference/sync-patterns.md - Cross-CRM sync, deduplication, migrationreference/automation.md - Webhook setup, sequences, workflowsTemplates:
templates/close-client.py - Full Close API clienttemplates/hubspot-client.py - HubSpot SDK wrappertemplates/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>
# 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>
User: "I need to push enriched leads from my sales-agent to Close CRM"
Claude:
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"]Make sure you have these custom fields in Close:
cf_tier (choices: Gold, Silver, Bronze)cf_source (choices: sales-agent, inbound, referral)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
SKILL.md and 2 other files in skills/crm-integration of manojbajaj95/claude-gtm-plugin.
Open the folder on GitHubat commit 0830a46
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| CRM Integration this skillmanojbajaj95/claude-gtm-plugin | 105 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Google Maps Exportgmapsscraper/google-maps-agent-skills | 132 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Pipeline Reviewgooseworks-ai/goose-skills | 1.2k | 1 repos | ~6.9k | Automated safety check: Pass | MIT | |
| Hubspot Bulk Migrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~3.9k | Automated safety check: Pass | MIT | |
| CRMmagnus919/agent-skills | 115 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Fathom Core Workflow Bjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~871 | Automated safety check: Pass | MIT |
gmapsscraper/google-maps-agent-skills
Export Google Maps business data to CSV, JSON, or CRM format (HubSpot, Pipedrive, Salesforce).
gooseworks-ai/goose-skills
Pipeline analysis composite. An agent skill from gooseworks-ai/goose-skills.
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…
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…
jeremylongshore/tons-of-skills-marketplace
Sync Fathom meeting data to CRM and build automated follow-up workflows.
LeoYeAI/openclaw-master-skills
Deduplicate, normalize, and enrich CRM contacts and companies.
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.
manojbajaj95/claude-gtm-plugin
Comprehensive market research and analysis skill. An agent skill from manojbajaj95/claude-gtm-plugin.
manojbajaj95/claude-gtm-plugin
Create professional investor pitch decks with structured content and visual design.
manojbajaj95/claude-gtm-plugin
Generate QR codes with URLs and UTM tracking. An agent skill from manojbajaj95/claude-gtm-plugin.
manojbajaj95/claude-gtm-plugin
SEO, AEO (Answer Engine Optimization), and GEO strategy for search engines and AI visibility.
manojbajaj95/claude-gtm-plugin
LinkedIn profile optimization and content creation. An agent skill from manojbajaj95/claude-gtm-plugin.
Works with
Categories
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.
CRM Integration fits situations like: activity logging; pipeline automation; contact enrichment.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.