重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
crm-integration by manojbajaj95/claude-gtm-plugin
npx skills add https://github.com/manojbajaj95/claude-gtm-plugin --skill crm-integration关键交付成果:
<quick_start> Close CRM (API 密钥认证):
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")
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
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> CRM 集成成功的标准是:
<crm_comparison>
| 功能 | Close | HubSpot | Salesforce |
|---|---|---|---|
| 身份验证 | API 密钥 | OAuth 2.0 / 私有应用 | JWT Bearer |
| 速率限制 | 100 次请求/10秒 | 根据套餐等级 100-200 次请求/10秒 | 10万次请求/天 |
| 最适合 | 中小型企业销售,简单易用 | 营销与销售协同 | 企业级 |
| 起步价格 | $49/用户/月 | 免费(有限制) | $25/用户/月 |
| API 访问 | 所有套餐 | Starter+ ($45+) | 所有套餐 |
| Webhooks | 所有套餐 | Pro+ ($800+) | 所有套餐 |
| 概念 | Close | HubSpot | Salesforce |
|---|---|---|---|
| 公司 | lead | company | Account |
| 个人 | contact | contact | Contact / Lead |
| 交易 | opportunity | deal | Opportunity |
| 活动 | activity | engagement | Task / Event |
| 自定义字段 | custom.cf_xxx | properties | Field__c |
| 阶段 | Close | HubSpot | Salesforce |
|---|---|---|---|
| 新建 | Lead | appointmentscheduled | Prospecting |
| 已确认 | Contacted | qualifiedtobuy | Qualification |
| 演示 | Opportunity | presentationscheduled | Needs Analysis |
| 提案 | Proposal | decisionmakerboughtin | Proposal/Price Quote |
| 已赢得 | Won | closedwon | Closed Won |
| 已丢失 | Lost | closedlost | Closed Lost |
| </crm_comparison> |
<close_patterns>
# 30 天内无活动的线索
'sort:date_updated asc date_updated < "30 days ago"'
# 高价值商机
'opportunities.value >= 50000 opportunities.status_type:active'
# 自定义字段筛选
'custom.cf_industry = "MEP Contractor"'
# 多种行业类型(您的理想客户画像)
'custom.cf_trades:HVAC OR custom.cf_trades:Electrical'
# 创建带联系人的线索
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"
})
# 创建商机
opp = close._request("POST", "/opportunity/", json={
"lead_id": lead["id"],
"value": 50000,
"confidence": 50,
"status_id": "stat_xxx" # 销售流程阶段
})
# 记录活动
close._request("POST", "/activity/note/", json={
"lead_id": lead["id"],
"note": "初始发现电话 - 对演示感兴趣"
})
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704067200
有关查询语言、智能视图、序列和报告,请参阅
reference/close-deep-dive.md。 </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"])
# 创建带关联的交易
deal = client.crm.deals.basic_api.create(
SimplePublicObjectInputForCreate(properties={
"dealname": "企业级交易",
"amount": "50000",
"dealstage": "appointmentscheduled",
"pipeline": "default"
})
)
# 按邮箱域名搜索联系人
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)
| 从 | 到 | 类型 ID |
|---|---|---|
| 联系人 | 公司 | 1 |
| 联系人 | 交易 | 4 |
| 公司 | 交易 | 6 |
| 交易 | 联系人 | 3 |
有关批量操作、自定义属性和工作流,请参阅
reference/hubspot-patterns.md。 </hubspot_patterns>
<salesforce_patterns>
-- 父子关系(账户的联系人)
SELECT Id, Name, (SELECT LastName, Email FROM Contacts)
FROM Account WHERE Industry = 'Technology'
-- 子父关系
SELECT Id, FirstName, Account.Name, Account.Industry
FROM Contact WHERE Account.Industry = 'Technology'
-- 半连接(有关联的未关闭商机的账户)
SELECT Id, Name FROM Account
WHERE Id IN (SELECT AccountId FROM Opportunity WHERE IsClosed = false)
def create_opportunity(self, data: dict) -> dict:
"""必需字段: 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()
# 复合 API(最多批量处理 200 条记录)
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}
)
有关 JWT 设置、平台事件和批量 API,请参阅
reference/salesforce-patterns.md。 </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 │────▶│ 同步层 │◀────│ HubSpot │
│ (主系统) │◀────│ (Postgres) │────▶│ (营销) │
└─────────────┘ └──────────────┘ └─────────────┘
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 是事实来源
LAST_WRITE_WINS = "lww" # 最近更新者胜出
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
有关去重、迁移脚本和批量同步,请参阅
reference/sync-patterns.md。 </sync_architecture>
<file_locations>
CRM 特定文件:
reference/close-deep-dive.md - 查询语言、智能视图、序列、报告reference/hubspot-patterns.md - SDK 模式、批量操作、工作流reference/salesforce-patterns.md - JWT 身份验证、SOQL、平台事件、批量 API操作文件:
reference/sync-patterns.md - 跨 CRM 同步、去重、迁移reference/automation.md - Webhook 设置、序列、工作流模板文件:
templates/close-client.py - 完整的 Close API 客户端templates/hubspot-client.py - HubSpot SDK 包装器templates/sync-service.py - 跨 CRM 同步服务 </file_locations>用户需要 CRM 集成: → 询问需要哪个 CRM(推荐 Close,因其简单) → 提供身份验证设置 + 基本 CRUD
用户需要 Close CRM: → 提供 API 密钥设置、查询语言 → 参考:reference/close-deep-dive.md
用户需要 HubSpot: → 提供 SDK 设置、搜索模式 → 参考:reference/hubspot-patterns.md
用户需要 Salesforce: → 提供 JWT 身份验证、SOQL 模式 → 参考:reference/salesforce-patterns.md
用户需要在 CRM 之间同步: → 提供同步架构、冲突解决 → 参考:reference/sync-patterns.md
用户需要 webhooks: → 为指定的 CRM 提供处理器模式 → 包含签名验证
<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"
# 安装依赖
pip install httpx pyjwt hubspot-api-client python-dotenv
</env_setup>
<example_session>
用户: "我需要将来自销售代理的已丰富线索推送到 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"]
2. 确保在 Close 中拥有这些自定义字段:
* `cf_tier` (选项: Gold, Silver, Bronze)
* `cf_source` (选项: sales-agent, inbound, referral)
3. 速率限制:每 10 秒 100 次请求。批量导入时,在请求之间添加 asyncio.sleep(0.1)。 </example_session>
每周安装数
91
代码仓库
GitHub 星标数
24
首次出现
Mar 11, 2026
安全审计
安装于
opencode91
github-copilot17
codex17
kimi-cli17
gemini-cli17
cursor17
Key deliverables:
<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 |
| Stage | Close | HubSpot | Salesforce |
|---|---|---|---|
| New | Lead | appointmentscheduled | Prospecting |
| Qualified | Contacted | qualifiedtobuy | Qualification |
| Demo | Opportunity |
<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: 1704067200
See
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 merged
See
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>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
<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"
# Install dependencies
pip install 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"]
2. Make sure you have these custom fields in Close:
* `cf_tier` (choices: Gold, Silver, Bronze)
* `cf_source` (choices: sales-agent, inbound, referral)
3. Rate limit: 100 requests per 10 seconds. Add asyncio.sleep(0.1) between requests for bulk imports. </example_session>
Weekly Installs
91
Repository
GitHub Stars
24
First Seen
Mar 11, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode91
github-copilot17
codex17
kimi-cli17
gemini-cli17
cursor17
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
48,700 周安装
Scala 3.4+ 开发专家:函数式编程、Akka、Cats Effect、ZIO、Spark 大数据处理
57 周安装
AST-Grep:基于抽象语法树的多语言代码搜索、重构与安全扫描工具
57 周安装
Amazon购物AI助手:智能搜索推荐商品,自动化比价与验证,提升购物效率
57 周安装
Momenta Web Skill - 智能代理技能目录,集成多开发工具提升工作效率
57 周安装
领域识别与分组技能:自动分析代码组件,为微服务和领域驱动设计(DDD)做准备
57 周安装
agent-council:创建管理Discord AI智能体,OpenClaw集成与自动化
57 周安装
opportunity |
deal |
Opportunity |
| Activity | activity | engagement | Task / Event |
| Custom Field | custom.cf_xxx | properties | Field__c |
presentationscheduled |
Needs Analysis |
| Proposal | Proposal | decisionmakerboughtin | Proposal/Price Quote |
| Won | Won | closedwon | Closed Won |
| Lost | Lost | closedlost | Closed Lost |
| </crm_comparison> |