Skill instructions
hubspot1.14 KB
View saved version →
---
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.
Referenced files: 1 — file references are metadata, not package contents.
hubspot-crm-data-hygiene1.71 KB
View saved version →
---
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.
Referenced files: 1 — file references are metadata, not package contents.
hubspot-customer-prep1.39 KB
View saved version →
---
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`.
Referenced files: 1 — file references are metadata, not package contents.
hubspot-onboarding6.16 KB
View saved version →
---
name: hubspot-onboarding
description: Use when setting up HubSpot for the first time, just after connecting HubSpot, when asking where to begin, or when a new or empty portal needs onboarding help.
---
# HubSpot Onboarding
Guide a new user through setting up HubSpot, one step at a time, conversationally. Follow [../hubspot/SKILL.md](../hubspot/SKILL.md) for access checks, URL construction, and write approvals.
Tool names below are the expected HubSpot MCP tools. If a named tool isn't available, adapt to the closest available tool or skip that step.
## Step 0 — Confirm connection and read portal state
Check whether HubSpot tools (e.g. `get_user_details`) are in the current session.
- If not available: ask the user to connect the HubSpot app in ChatGPT, tell them "HubSpot isn't connected yet — connect it and I'll pick up from there," and stop.
- If available, call in parallel:
- `get_organization_details` → store portalId, uiDomain, currency
- `get_user_details` → store the onboarded flag
- `search_crm_objects` for contacts (limit 1) → read the `total` field → contactTotal
- `search_crm_objects` for deals (limit 1) → read the `total` field → dealTotal
- `manage_onboarding` (no action) → store goalStatus, goal, taskGroup, guidance, guideLink. If this tool isn't available, skip it and use a freeform goal question in Step 2.
Always read the `total` field for counts; never infer counts from the number of records returned.
## Step 1 — Decide the path
Evaluate in order; an established portal always wins, even if a goal happens to be set.
1. **Established portal** — if `onboarded: true`, OR contactTotal ≥ 3 (HubSpot pre-populates 2 sample contacts, so 3+ means real data), OR dealTotal ≥ 1:
- Open with: "You've already got [contactTotal] contacts[ and dealTotal deals] in HubSpot. Here are a few things you can try in ChatGPT:"
- Show 2–3 short, ready-to-use prompts personalised to actual CRM records. Reuse records already fetched; if needed, make a small, read-only search for relevant records, favouring the current user's open deals and recent contacts.
- Ground every personalised detail in returned data. Use actual record names and suggest useful actions supported by the available context.
- Match suggestions to available tools and permissions. Don't claim a deal is stalled, a follow-up is overdue, or a relationship is at risk without supporting evidence.
- If there is insufficient accessible data, offer 1–2 prompts supported by what is available, without inventing names or details.
- End the onboarding flow here. Do not render onboarding tasks, ask for a goal, execute the suggested prompts, or hand off to another skill.
2. **Goal already set** — else if goalStatus is COMPLETE: do not ask the user to pick a goal again. Go straight to Step 3.
3. **New or empty portal** — else: continue to Step 2.
## Step 2 — Capture the primary goal (new/empty portal only)
Source the goal options directly from the `goal` parameter's enum in the `manage_onboarding` schema — never hardcode goals or descriptions here. Present each canonical value as a plain-language label (e.g. organizeAndTrackContacts → "Organize and track contacts") and always include an open-ended option for a freeform answer.
Ask: "Before we start — what's your main goal with HubSpot?" Accept a number, the goal name, or a freeform description. Map a freeform answer to the single closest enum value; if nothing maps well, use `stillExploring`.
Call `manage_onboarding` with action SET_GOAL and the mapped goal. Acknowledge briefly ("Got it — [goal].") and store the returned taskGroup, guidance, and guideLink for Step 3 — don't render them yet.
If `manage_onboarding` wasn't available in Step 0, ask the freeform question only and skip the SET_GOAL call. Either way, continue to Step 3.
## Step 3 — Show start-guide tasks
Refresh first: call `manage_onboarding` (no action) again rather than reusing the values from Step 0 or Step 2, since things maPreview of the first 4,000 characters. Read full instructions →
Referenced files: 1 — file references are metadata, not package contents.
hubspot-pipeline-health1.42 KB
View saved version →
---
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.
Referenced files: 1 — file references are metadata, not package contents.