skills/integrations/hubspot/hubspot-crm/SKILL.md
All HubSpot CRM operations — contacts, companies, deals, engagements, search, associations (read and create default), and delete (archive). Load when user says 'list contacts', 'create deal', 'search companies', 'log call', 'log email', 'create note', 'create meeting', 'get associations', 'link contact to company', 'delete contact', 'update contact', 'update deal', 'hubspot search'.
npx skillsauth add beam-ai-team/beam-next-skills hubspot-crmInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Unified reference for all HubSpot CRM operations. All scripts live in hubspot-master/scripts/.
Before creating/updating/archiving contacts, companies, deals, engagements, or associations, show the portal/account, target records or matching criteria, payload summary, association changes, and expected side effects. Require explicit user approval in the current turn before mutating HubSpot records or writing files. Listing and searching records with an approved scope do not require additional approval.
Replaces: hubspot-list-contacts, hubspot-create-contact, hubspot-update-contact,
hubspot-search-contacts, hubspot-list-companies, hubspot-create-company,
hubspot-search-companies, hubspot-list-deals, hubspot-create-deal, hubspot-update-deal,
hubspot-search-deals, hubspot-create-deal-from-transcript, hubspot-list-emails,
hubspot-log-email, hubspot-list-calls, hubspot-log-call, hubspot-list-notes,
hubspot-create-note, hubspot-list-meetings, hubspot-create-meeting,
hubspot-get-associations.
# List contacts (paginated)
uv run python hubspot-master/scripts/list_contacts.py --limit 20
uv run python hubspot-master/scripts/list_contacts.py --limit 50 --properties email,firstname,lastname,company
# Create contact
uv run python hubspot-master/scripts/create_contact.py --email "[email protected]" --firstname Jane --lastname Doe --company "Acme"
# Update contact
uv run python hubspot-master/scripts/update_contact.py --id 12345 --email "[email protected]" --company "NewCorp"
# Search contacts
uv run python hubspot-master/scripts/search_contacts.py --email "[email protected]"
uv run python hubspot-master/scripts/search_contacts.py --name "Jane Doe"
uv run python hubspot-master/scripts/search_contacts.py --company "Acme" --limit 10
# List companies
uv run python hubspot-master/scripts/list_companies.py --limit 20
# Create company
uv run python hubspot-master/scripts/create_company.py --name "Acme Corp" --domain "acme.com" --industry "Technology"
# Search companies
uv run python hubspot-master/scripts/search_companies.py --name "Acme"
uv run python hubspot-master/scripts/search_companies.py --domain "acme.com"
# List deals
uv run python hubspot-master/scripts/list_deals.py --limit 20
# Create deal
uv run python hubspot-master/scripts/create_deal.py --name "Enterprise License" --amount 50000 --stage "appointmentscheduled"
# Update deal
uv run python hubspot-master/scripts/update_deal.py --id 67890 --stage "closedwon" --amount 55000
# Search deals
uv run python hubspot-master/scripts/search_deals.py --name "Enterprise"
uv run python hubspot-master/scripts/search_deals.py --stage "closedwon" --min-amount 10000
Workflow (no dedicated script — compose from existing scripts):
create_association.py (default label)Deletes use CRM v3 archive-by-default. Always require explicit confirmation before running.
uv run python hubspot-master/scripts/delete_crm_object.py --object-type contacts --id 12345 --yes
uv run python hubspot-master/scripts/delete_crm_object.py --object-type deals --id 67890 --yes --json
uv run python hubspot-master/scripts/list_emails.py --limit 20
uv run python hubspot-master/scripts/log_email.py --subject "Follow-up" --body "Thanks for the meeting" --direction EMAIL
uv run python hubspot-master/scripts/list_calls.py --limit 20
uv run python hubspot-master/scripts/log_call.py --title "Discovery call" --body "Discussed pricing" --duration 30
uv run python hubspot-master/scripts/list_notes.py --limit 20
uv run python hubspot-master/scripts/create_note.py --body "Key decision: proceeding with Enterprise plan"
uv run python hubspot-master/scripts/list_meetings.py --limit 20
uv run python hubspot-master/scripts/create_meeting.py --title "Quarterly review" --start "2026-04-01T10:00:00Z" --end "2026-04-01T11:00:00Z"
# Get records associated with an object
uv run python hubspot-master/scripts/get_associations.py --object-type contacts --object-id 12345 --to-type deals
uv run python hubspot-master/scripts/get_associations.py --object-type deals --object-id 67890 --to-type companies
# Create default association (v4 batch — primary/generic label for the object pair)
uv run python hubspot-master/scripts/create_association.py --from-type contacts --from-id 12345 --to-type companies --to-id 67890
uv run python hubspot-master/scripts/create_association.py --from-type deals --from-id 111 --to-type contacts --to-id 222 --json
All endpoints use https://api.hubapi.com with Bearer token auth.
| Resource | Operation | Method | Endpoint |
|----------|-----------|--------|----------|
| Contacts | list | GET | /crm/v3/objects/contacts |
| Contacts | create | POST | /crm/v3/objects/contacts |
| Contacts | update | PATCH | /crm/v3/objects/contacts/{id} |
| Contacts | search | POST | /crm/v3/objects/contacts/search |
| Companies | list | GET | /crm/v3/objects/companies |
| Companies | create | POST | /crm/v3/objects/companies |
| Companies | search | POST | /crm/v3/objects/companies/search |
| Deals | list | GET | /crm/v3/objects/deals |
| Deals | create | POST | /crm/v3/objects/deals |
| Deals | update | PATCH | /crm/v3/objects/deals/{id} |
| Deals | search | POST | /crm/v3/objects/deals/search |
| Emails | list | GET | /crm/v3/objects/emails |
| Emails | log | POST | /crm/v3/objects/emails |
| Calls | list | GET | /crm/v3/objects/calls |
| Calls | log | POST | /crm/v3/objects/calls |
| Notes | list | GET | /crm/v3/objects/notes |
| Notes | create | POST | /crm/v3/objects/notes |
| Meetings | list | GET | /crm/v3/objects/meetings |
| Meetings | create | POST | /crm/v3/objects/meetings |
| Associations | get | GET | /crm/v4/objects/{type}/{id}/associations/{toType} |
| Associations | create default | POST | /crm/v4/associations/{fromType}/{toType}/batch/associate/default |
| Any object | delete (archive) | DELETE | /crm/v3/objects/{objectType}/{objectId} |
All list endpoints support cursor-based pagination via --after. The scripts handle paging.next automatically when using --limit.
Search scripts use a smart fallback: when no filters are provided, they fall back to GET on the list endpoint (recent results). When filters are provided, they POST to the /search endpoint with filterGroups.
tools
Build a Palantir-shape, PDF-native use-case proposal document for a sophisticated enterprise account: research-grounded use cases (each with description, challenge, impact, value), an operating-graph ontology page, a recommended PoC with a week-by-week plan, and a closing page that asks for one decision. Load when a client asks us to 'propose high-impact use cases', requests a use-case presentation/catalog for a function (finance, HR, ops), or when a technical evaluation team will review candidates to pick a PoC. NOT for single-account cold outreach (use prospect-brief), full process diagnostics (use operating-diagnostic), or priced proposals (use proposal-creation).
development
Convert Beam Figma slide designs into high-fidelity, editable HTML presentation decks. Use when Codex is asked to audit Figma slides, extract slide templates, rebuild Beam slides as HTML decks, decide whether Figma imagery should be exported or rebuilt in HTML/CSS, create Beam/Prism-compatible deck templates, or improve fidelity of existing Beam HTML slide rebuilds.
development
Use the Beam AI reusable slide library: individual HTML slide templates extracted from Beam Figma rebuilds, kept separate from deck themes and full deck templates. Load when the user asks for a slide library, specific Beam slide patterns, reusable Figma-inspired slides, Prism slide-library items, or slide-level HTML templates.
development
Use Beam AI deck and report design packs, HTML templates, and curated examples to create sales decks, customer intro decks, RPO decks, and DIN A4 use-case proposal reports. Load when the user asks for Beam-branded presentation templates, Prism-compatible deck templates, Beam report templates, customer intro decks, commercial proposals, or reusable HTML deck/report examples.