From 1b89ff49a908d76dfd554a4514b87fbcfa375705 Mon Sep 17 00:00:00 2001 From: cching-openai Date: Wed, 13 May 2026 09:08:52 -0700 Subject: [PATCH] Add HubSpot CRM workflow skills (#240) --- plugins/hubspot/.codex-plugin/plugin.json | 19 ++++++++++--- .../skills/hubspot-crm-data-hygiene/SKILL.md | 27 +++++++++++++++++++ .../agents/openai.yaml | 5 ++++ .../skills/hubspot-customer-prep/SKILL.md | 20 ++++++++++++++ .../hubspot-customer-prep/agents/openai.yaml | 5 ++++ .../skills/hubspot-pipeline-health/SKILL.md | 22 +++++++++++++++ .../agents/openai.yaml | 5 ++++ plugins/hubspot/skills/hubspot/SKILL.md | 25 +++++++++++++++++ .../hubspot/skills/hubspot/agents/openai.yaml | 5 ++++ 9 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 plugins/hubspot/skills/hubspot-crm-data-hygiene/SKILL.md create mode 100644 plugins/hubspot/skills/hubspot-crm-data-hygiene/agents/openai.yaml create mode 100644 plugins/hubspot/skills/hubspot-customer-prep/SKILL.md create mode 100644 plugins/hubspot/skills/hubspot-customer-prep/agents/openai.yaml create mode 100644 plugins/hubspot/skills/hubspot-pipeline-health/SKILL.md create mode 100644 plugins/hubspot/skills/hubspot-pipeline-health/agents/openai.yaml create mode 100644 plugins/hubspot/skills/hubspot/SKILL.md create mode 100644 plugins/hubspot/skills/hubspot/agents/openai.yaml diff --git a/plugins/hubspot/.codex-plugin/plugin.json b/plugins/hubspot/.codex-plugin/plugin.json index 48330f89..07671674 100644 --- a/plugins/hubspot/.codex-plugin/plugin.json +++ b/plugins/hubspot/.codex-plugin/plugin.json @@ -9,7 +9,14 @@ "homepage": "https://www.hubspot.com/", "repository": "https://github.com/openai/plugins", "license": "MIT", - "keywords": [], + "keywords": [ + "hubspot", + "crm", + "sales", + "pipeline", + "customer-support" + ], + "skills": "./skills/", "apps": "./.app.json", "interface": { "displayName": "HubSpot", @@ -17,12 +24,18 @@ "longDescription": "Work with your HubSpot data to analyze patterns, create and update records, and manage your CRM operations. Read from and write to deals, contacts, companies, tickets, engagements, and other objects you have permission to access. Prepare reports, update deal stages, log calls and emails, create tasks, or review pipeline details before meetings. Use it for quick updates in chat or comprehensive CRM management, all grounded in your actual HubSpot data.", "developerName": "HubSpot", "category": "Productivity", - "capabilities": [], + "capabilities": [ + "Interactive", + "Read", + "Write" + ], "websiteURL": "https://www.hubspot.com/", "privacyPolicyURL": "https://legal.hubspot.com/privacy-policy", "termsOfServiceURL": "https://legal.hubspot.com/terms-of-service", "defaultPrompt": [ - "Create follow-up task to schedule meeting" + "Review pipeline health and flag risky open deals", + "Prepare an account brief for a customer meeting", + "Find CRM records with stale or missing data" ], "screenshots": [], "composerIcon": "./assets/app-icon.png", diff --git a/plugins/hubspot/skills/hubspot-crm-data-hygiene/SKILL.md b/plugins/hubspot/skills/hubspot-crm-data-hygiene/SKILL.md new file mode 100644 index 00000000..96d711ad --- /dev/null +++ b/plugins/hubspot/skills/hubspot-crm-data-hygiene/SKILL.md @@ -0,0 +1,27 @@ +--- +name: hubspot-crm-data-hygiene +description: Use when auditing HubSpot data quality for missing fields, stale records, duplicates, associations, owners, or cleanup tasks. +--- + +# HubSpot CRM Data Hygiene + +Identify cleanup needs across contacts, companies, deals, and tickets. Follow [../hubspot/SKILL.md](../hubspot/SKILL.md) for access, URLs, pagination, and write approvals. + +## Workflow + +1. Call `get_user_details` and confirm read access to the requested object types. +2. Clarify issue classes: missing fields, stale records, duplicate-like records, owner gaps, associations, lifecycle/stage issues, or imports. +3. Discover properties with `search_properties`: contact email/phone/company/owner/lifecycle; company name/domain/website/owner; deal stage/pipeline/amount/close date; ticket subject/stage/priority/category/owner. +4. Use `get_properties` for enums, then `search_crm_objects` count queries with `NOT_HAS_PROPERTY`, `HAS_PROPERTY`, filters, and `associatedWith`. +5. For duplicate-like checks, prefer strong keys: contact email, company domain/website, phone, or deal name plus associated company. If aggregation is unavailable, sample and say so. +6. Fetch examples with `get_crm_objects` only when current values affect cleanup. + +## Issue Classes + +- Missing routing or identity fields. +- Stale activity, old modified dates, past close dates, or unresolved ticket age. +- Broken associations, inconsistent lifecycle/stage values, or duplicate-like records sharing strong identifiers. + +## Output + +Return coverage, top issues with counts, example URLs, why each issue matters, recommended fix, cleanup backlog, human-review items, and caveats. Do not auto-merge duplicates or overwrite fields. For writes, use the core confirmation table. diff --git a/plugins/hubspot/skills/hubspot-crm-data-hygiene/agents/openai.yaml b/plugins/hubspot/skills/hubspot-crm-data-hygiene/agents/openai.yaml new file mode 100644 index 00000000..99a9780d --- /dev/null +++ b/plugins/hubspot/skills/hubspot-crm-data-hygiene/agents/openai.yaml @@ -0,0 +1,5 @@ +interface: + display_name: "CRM Data Hygiene" + short_description: "Find missing, stale, or duplicate CRM data" + brand_color: "#FF7A59" + default_prompt: "Use $hubspot-crm-data-hygiene to find missing CRM fields, stale records, duplicates, and cleanup actions." diff --git a/plugins/hubspot/skills/hubspot-customer-prep/SKILL.md b/plugins/hubspot/skills/hubspot-customer-prep/SKILL.md new file mode 100644 index 00000000..9701fe9a --- /dev/null +++ b/plugins/hubspot/skills/hubspot-customer-prep/SKILL.md @@ -0,0 +1,20 @@ +--- +name: hubspot-customer-prep +description: Use when preparing HubSpot customer briefs for meetings, renewals, QBRs, sales calls, escalations, handoffs, or follow-ups. +--- + +# HubSpot Customer Prep + +Assemble a customer-ready brief while separating CRM facts from inferred recommendations. Follow [../hubspot/SKILL.md](../hubspot/SKILL.md) for access, URLs, pagination, and write approvals. + +## Workflow + +1. Call `get_user_details` and confirm read access to the needed object types. +2. Clarify seed record and goal: company, contact, deal, ticket, meeting type, attendees, date, and desired outcome. +3. Find the seed record with `search_crm_objects` using name, domain, email, deal name, or ticket subject. If multiple records match, return a disambiguation list with URLs. +4. Discover properties with `search_properties`: company owner/lifecycle/domain; contact title/email/last contact; deal amount/stage/close date/next step; ticket status/priority/category. +5. Use `associatedWith` searches for related contacts, companies, deals, and tickets. Fetch selected records with `get_crm_objects` when richer fields are needed. + +## Brief + +Return source record URLs, snapshot, people, open opportunities, support health, recommended agenda, questions to ask, follow-ups, and caveats. For tasks, next steps, associations, ownership, or stage changes, show exact proposed changes and get approval before `manage_crm_objects`. diff --git a/plugins/hubspot/skills/hubspot-customer-prep/agents/openai.yaml b/plugins/hubspot/skills/hubspot-customer-prep/agents/openai.yaml new file mode 100644 index 00000000..6703e5f2 --- /dev/null +++ b/plugins/hubspot/skills/hubspot-customer-prep/agents/openai.yaml @@ -0,0 +1,5 @@ +interface: + display_name: "Customer Prep" + short_description: "Prepare account and deal briefs from HubSpot" + brand_color: "#FF7A59" + default_prompt: "Use $hubspot-customer-prep to prepare an account, deal, or support brief from HubSpot context." diff --git a/plugins/hubspot/skills/hubspot-pipeline-health/SKILL.md b/plugins/hubspot/skills/hubspot-pipeline-health/SKILL.md new file mode 100644 index 00000000..efcf2e86 --- /dev/null +++ b/plugins/hubspot/skills/hubspot-pipeline-health/SKILL.md @@ -0,0 +1,22 @@ +--- +name: hubspot-pipeline-health +description: Use when reviewing HubSpot pipeline health, forecasts, stale deals, slipping close dates, or open deal risks. +--- + +# HubSpot Pipeline Health + +Turn open deal data into a concise pipeline-health readout. Follow [../hubspot/SKILL.md](../hubspot/SKILL.md) for access, URLs, pagination, and write approvals. + +## Workflow + +1. Call `get_user_details` and confirm deal read access. +2. Clarify pipeline, owner/team, timeframe, and closed-deal inclusion. Default to open deals in the current quarter or next 90 days. +3. Discover deal fields: `dealname`, `amount`, `dealstage`, `pipeline`, `closedate`, owner, forecast, next step, last activity/contact. +4. Use `get_properties` for pipeline/stage/forecast enums, then `search_crm_objects` for open deals. Check `total` and page or segment large pipelines. +5. Use `get_crm_objects` for high-signal deals; use `associatedWith` for companies/contacts only when context changes the recommendation. + +## Risk And Output + +Flag deals with past or near close dates, stale activity, missing owner/contact/next step, missing amount/stage/close date, late stage with weak recent touch, or stage concentration without clear next actions. State which signals were unavailable. + +Return coverage, 2-4 executive takeaways, an at-risk deals table with URLs, pipeline hygiene patterns, recommended follow-ups, and caveats. Use `manage_crm_objects` only after the core confirmation table. diff --git a/plugins/hubspot/skills/hubspot-pipeline-health/agents/openai.yaml b/plugins/hubspot/skills/hubspot-pipeline-health/agents/openai.yaml new file mode 100644 index 00000000..1c060e38 --- /dev/null +++ b/plugins/hubspot/skills/hubspot-pipeline-health/agents/openai.yaml @@ -0,0 +1,5 @@ +interface: + display_name: "Pipeline Health" + short_description: "Assess deal risk and stale pipeline" + brand_color: "#FF7A59" + default_prompt: "Use $hubspot-pipeline-health to audit open deals, stale stages, owner coverage, and next actions." diff --git a/plugins/hubspot/skills/hubspot/SKILL.md b/plugins/hubspot/skills/hubspot/SKILL.md new file mode 100644 index 00000000..3d362ecd --- /dev/null +++ b/plugins/hubspot/skills/hubspot/SKILL.md @@ -0,0 +1,25 @@ +--- +name: hubspot +description: Use when working with HubSpot CRM records to search, summarize, create, update, associate, or analyze objects and properties. +--- + +# HubSpot + +## Rules + +1. Call `get_user_details` first; check object read/write availability. +2. Clarify scope: object type, owner/team, pipeline, timeframe, stage, and whether writes are requested. +3. Use `search_properties` for fields, max 5 `keywords`; use `get_properties` for enum values. +4. Use `search_crm_objects` for records, counts, filters, pagination, and associations; use `get_crm_objects` for known IDs. Do not use deprecated `search` or `fetch`. +5. Include clickable HubSpot URLs with UTM params for returned records. State filters, totals, pagination, and whether analysis is sampled. + +## Writes + +Before `manage_crm_objects`, show exact proposed changes and get approval: + +| Object Type | ID | Property | Current Value | New Value | +|---|---:|---|---|---| + +On the first confirmation, add: `Want to skip confirmations for this chat? Just ask.` + +Batch at most 10 objects. Confirm associations explicitly. Do not write inferred data or overwrite user-entered context without clear consent. diff --git a/plugins/hubspot/skills/hubspot/agents/openai.yaml b/plugins/hubspot/skills/hubspot/agents/openai.yaml new file mode 100644 index 00000000..1635b79a --- /dev/null +++ b/plugins/hubspot/skills/hubspot/agents/openai.yaml @@ -0,0 +1,5 @@ +interface: + display_name: "HubSpot" + short_description: "Operate safely across HubSpot CRM" + brand_color: "#FF7A59" + default_prompt: "Use $hubspot to inspect HubSpot records, summarize CRM context, or prepare confirmed changes."