agentsclimarketplace

Crm integration agent

Skill skillim-hub/skills/crm-integration-agent

Production-grade AI agent skills & MCP servers for the Israeli market — סקילים

Install
npx -y skills add skillim-hub/skills --skill crm-integration-agent

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 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.

What its author says it does

Copied from the file, not written here

Syncs WhatsApp, email, and SMS conversations with Monday, HubSpot, and Salesforce for Israeli businesses using live-validated API paths, normalized contacts, consent checks, redaction, and audit logs.

SKILL.md

9.6 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it

CRM Integration Agent

Use this skill to sync WhatsApp, email, and SMS conversations into Monday, HubSpot, or Salesforce for Israeli small businesses, freelancers, and consumer-support teams. Treat the CRM as a customer-service record, not as an unrestricted message archive.

Outcomes

  • Create or update a CRM contact or lead from a conversation thread.
  • Normalize Israeli phone numbers to E.164 format.
  • Preserve service context such as quote requests, invoices, appointments, warranties, complaints, and follow-up tasks.
  • Record marketing consent only when explicit evidence exists.
  • Redact unnecessary sensitive data before sending notes into CRM.
  • Produce an audit trail for retries, troubleshooting, and privacy review.

Source channels

ChannelCommon sourceStable identifierNotes
WhatsAppWhatsApp Business export, gateway webhook, shared inboxsource_thread_id and source_message_idStore attachment metadata. Avoid storing private images unless required for the service case.
EmailGmail, Microsoft 365, helpdesk inboxmessage id or thread idKeep subject, sender, sent time, and summarized body.
SMSProvider webhook or CSV exportprovider message idTreat opt-out words such as הסר and STOP as immediate suppression signals.

Destination systems

CRMBest fitDefault object
MondaySmall teams managing boards and service queuesitem
HubSpotSales and service pipeline with email/marketing separationcontact
SalesforceFormal lead management and custom compliance fieldslead

Data model

Minimum thread input:

{
  "source_channel": "whatsapp",
  "source_thread_id": "wa-1001",
  "subject": "בקשה להצעת מחיר",
  "contact": {
    "full_name": "דנה כהן",
    "phone": "050-123-4567",
    "company": "כהן עיצוב"
  },
  "messages": [
    {
      "id": "wa-1001-1",
      "sent_at": "18/02/2026 09:44:00",
      "direction": "inbound",
      "body": "אפשר לקבל הצעת מחיר עד ₪2,500?"
    }
  ],
  "consent": {
    "marketing_opt_in": false,
    "evidence": "פנייה יזומה של לקוחה"
  },
  "business_purpose": "sales"
}

Use DD/MM/YYYY timestamps for localized manual files. Use ISO 8601 when receiving webhook timestamps.

Decision tree: choose write action

graph TD
    A[Receive conversation] --> B{Has phone, email, or external id?}
    B -- No --> C[Reject and request identifier]
    B -- Yes --> D[Normalize identifier]
    D --> E{Existing CRM match?}
    E -- Exact phone or external id --> F[Update existing record]
    E -- Exact email only --> G[Update if business context matches]
    E -- Multiple partial matches --> H[Send to manual review]
    E -- No match --> I[Create record]
    F --> J[Append redacted note]
    G --> J
    I --> J
    J --> K[Write audit event]

Decision tree: service or marketing

graph TD
    A[Message content] --> B{Customer requested service?}
    B -- Yes --> C[Service context]
    B -- No --> D{Explicit marketing opt-in evidence?}
    D -- Yes --> E[Marketing allowed]
    D -- No --> F[Do not send marketing]
    C --> G{Contains opt-out phrase?}
    G -- Yes --> H[Suppress marketing and keep service handling]
    G -- No --> I[Continue service follow-up]

Field mapping

Common normalized fields

FieldRule
full_nameTrim whitespace. Keep Hebrew spelling as written.
phoneConvert 050-123-4567 to +972501234567.
emailLowercase and trim.
business_purposeClassify as sales, support, appointment, admin, or service.
consent.marketing_opt_inSet to true only with explicit evidence.
message.bodyRedact ID numbers, payment-card numbers, and verification codes.

Monday

  • Use create_item for new board items.
  • Store contact details in phone and email columns.
  • Store the last redacted message in a text column.
  • Store source_thread_id for idempotency.

HubSpot

  • Use contacts for consumer and small-business contacts.
  • Store custom properties such as crm_source_channel, crm_source_thread_id, and crm_marketing_opt_in.
  • Keep marketing subscription status separate from service notes.

Salesforce

  • Use Lead for new prospects and Contact for known customers when the org model supports it.
  • Store custom fields such as Source_Channel__c, Source_Thread_ID__c, and Marketing_Opt_In__c.
  • Require a production base_url such as https://example.my.salesforce.com.

Concrete examples

Freelancer receiving a WhatsApp quote request

Input phrase: אפשר לקבל הצעת מחיר עד ₪2,500?

Action:

  1. Classify as sales.
  2. Normalize phone.
  3. Create or update CRM record.
  4. Add a note with the redacted conversation summary.
  5. Add a task for follow-up within business hours.

Clinic receiving an SMS appointment request

Input phrase: אפשר לקבוע תור ל-21/02/2026?

Action:

  1. Classify as appointment.
  2. Avoid marketing status changes.
  3. Add appointment request note.
  4. Route to scheduling owner.

Retailer receiving an email complaint

Input phrase: המוצר תקול ולא הגיע בזמן

Action:

  1. Classify as support.
  2. Add warranty or delivery case note.
  3. Avoid sending promotional follow-up.
  4. Keep delivery documents only when required for the complaint.

Edge cases

CaseHandling
Phone exists and email belongs to a different personDo not merge automatically. Send to manual review.
Same phone used by family membersKeep one household record only when the business process supports it. Otherwise create separate records with external ids.
Customer writes הסר during a service threadContinue service handling. Suppress marketing.
Message contains Israeli ID numberRedact before CRM note. Store full value only in a controlled system when legally required.
Customer sends payment-card detailsRedact immediately. Instruct staff to use a compliant payment page.
Attachment contains medical, legal, or financial dataStore metadata and link to approved storage. Avoid copying the file into CRM by default.
Duplicate webhook deliveryUse source_channel, source_thread_id, source_message_id, and provider as idempotency key.
Provider rate limitRetry with exponential backoff and keep a pending audit event.

Anti-patterns

  • Do not sync entire inboxes without filtering by business purpose.
  • Do not treat a service conversation as marketing consent.
  • Do not store private images in CRM unless required for the case.
  • Do not use name-only matching for automatic merges.
  • Do not overwrite existing CRM fields with blank values from message exports.
  • Do not keep verification codes, payment-card numbers, or Israeli ID numbers in CRM notes.
  • VAT is not calculated by this skill. When showing service examples, use the 18% Israeli VAT rate from 01/01/2025 only as current context and verify accounting output in the accounting system.
  • Do not run production sync before dry-run review.

Troubleshooting summary

SymptomLikely causeFix
Contact requires phone, email, or external_idMissing identifierAdd phone, email, or a source-system customer id.
Marketing action requires explicit opt-inMissing consent evidenceAdd clear evidence or run as service context only.
Salesforce base URL errorMissing instance URLSet SALESFORCE_BASE_URL or pass --base-url.
Duplicate CRM contactsWeak matching rulePrefer external id or normalized phone. Run migration dedupe.
Hebrew appears escapedJSON output not using UTF-8 settingsUse json.dumps(..., ensure_ascii=False, indent=2).
Provider 429Rate limitRetry later and batch smaller chunks.

Production checklist

  • Confirm the lawful purpose for storing each conversation category.
  • Map source identifiers to CRM fields before the first live run.
  • Create custom CRM fields for channel, source thread id, consent status, and consent evidence.
  • Run sandbox dry-runs on at least 20 representative scenarios.
  • Review duplicate contacts manually before enabling automatic merge.
  • Verify opt-out handling for הסר, בטל, STOP, and unsubscribe.
  • Configure token storage through environment variables or a secrets manager.
  • Enable audit JSONL output for every production run.
  • Define retention rules for attachments and sensitive notes.
  • Test provider rate limits and retry behavior.
  • Document owner handoff for unresolved conflicts.

CLI commands

crm-integration-agent normalize-phone "050-123-4567"
crm-integration-agent dry-run --provider hubspot --input thread.json --env sandbox
crm-integration-agent sync --provider hubspot --input thread.json --env production --live --audit-log audit.jsonl
crm-integration-agent classify "אפשר לקבל הצעת מחיר?"

Python usage

from crm_integration_agent import CRMIntegrationClient, load_thread_file, result_to_dict

thread = load_thread_file("thread.json")
client = CRMIntegrationClient.from_env("hubspot", environment="sandbox")
result = client.sync_thread(thread)
print(result_to_dict(result))

Acceptance criteria

A production-ready run must produce a CRM object, a redacted note, a deterministic contact key, and an audit event for each source message. Failed writes must keep enough context for retry without exposing unnecessary personal data.

What ships with it: 25 files

107.9 KB alongside SKILL.md, 11 of them executable

crm_integration_agent/

Gives 0 of the 12 instructions most context ai engineering skills give in ~2.3k tokens

Counted across 1,193 of the 1,976 authors here whose files we hold, read 2026-08-07

  • Dispatch a fresh implementer subagent per taskin 48 of 1193, across 19 files
  • Dispatch a final code reviewer after all tasksin 33 of 1193, across 8 files
  • Provide full task text to the subagentin 30 of 1193, across 9 files
  • Review spec compliance before code qualityin 27 of 1193, across 10 files
  • Make the hook script executablein 26 of 1193, across 8 files
  • Re-snapshot after navigation or DOM changesin 25 of 1193, across 19 files
  • Read files before editing themin 22 of 1193, across 11 files
  • Answer subagent questions before proceedingin 22 of 1193, across 7 files
  • Mark task complete in TodoWrite after approvalin 22 of 1193, across 6 files
  • Merge hook into existing settingsin 21 of 1193, across 3 files
  • Ask if installation is global or projectin 20 of 1193, across 2 files
  • Copy the hook script to target locationin 20 of 1193, across 2 files

Said here and by no other author read

  • normalize Israeli phone numbers to E.164 format
  • create or update CRM contacts from conversation threads
  • record marketing consent only with explicit evidence
  • redact sensitive data before sending CRM notes
  • produce an audit event for each source message
  • reject conversations missing phone, email, or external id

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.