skills/integrations/hubspot/hubspot-master/SKILL.md
Shared resource library for HubSpot integration skills. DO NOT load directly - provides common references (setup, API docs, error handling, authentication) and scripts used by hubspot-connect and individual HubSpot skills.
npx skillsauth add beam-ai-team/beam-next-skills hubspot-masterInstall 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.
This is NOT a user-facing skill. It's a shared resource library referenced by HubSpot integration skills.
Provides shared resources to eliminate duplication across:
hubspot-connect - Meta-skill for HubSpot CRM operationshubspot-list-contacts - List contactshubspot-create-contact - Create contacthubspot-update-contact - Update contacthubspot-search-contacts - Search contactshubspot-list-companies - List companieshubspot-create-company - Create companyhubspot-search-companies - Search companieshubspot-list-deals - List dealshubspot-create-deal - Create dealhubspot-update-deal - Update dealhubspot-search-deals - Search dealshubspot-get-associations - Get CRM associationshubspot-list-emails - List email engagementshubspot-log-email - Log email engagementhubspot-list-calls - List call engagementshubspot-log-call - Log call engagementhubspot-list-notes - List noteshubspot-create-note - Create notehubspot-list-meetings - List meetingshubspot-create-meeting - Create meetingInstead of loading this skill, users directly invoke the specific skill they need above.
Problem solved: HubSpot skills would have duplicated content (setup instructions, API docs, auth flow, error handling).
Solution: Extract shared content into hubspot-master/references/ and hubspot-master/scripts/, then reference from each skill.
Result: Single source of truth, reduced context per skill.
All HubSpot skills reference these resources (progressive disclosure).
setup-guide.md - Complete setup wizard
api-reference.md - HubSpot API patterns
error-handling.md - Troubleshooting
authentication.md - Token management
check_hubspot_config.py - Pre-flight validation
uv run python check_hubspot_config.py [--json]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --json | No | False | Output structured JSON for AI consumption |
Exit codes: 0=configured, 1=partial, 2=not configured
When to Use: Run this FIRST before any HubSpot operation. Use to validate access token is configured, diagnose authentication issues, or check if setup is needed.
setup_hubspot.py - Interactive setup wizard
uv run python setup_hubspot.py
No arguments - runs interactively. Guides through Private App setup, tests connection, saves to .env.
When to Use: Use when HubSpot integration needs initial setup, when check_hubspot_config.py returns exit code 2, or when user needs to reconfigure credentials.
list_contacts.py - List contacts (GET /crm/v3/objects/contacts)
uv run python list_contacts.py [--limit N] [--properties PROPS] [--after CURSOR] [--json]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --limit | No | 10 | Number of results (max 100) |
| --properties | No | email,firstname,lastname | Comma-separated properties |
| --after | No | - | Pagination cursor |
| --json | No | False | Output as JSON |
When to Use: Use when user says "list contacts", "get contacts", "show contacts".
create_contact.py - Create contact (POST /crm/v3/objects/contacts)
uv run python create_contact.py --email EMAIL [--firstname NAME] [--lastname NAME] [--phone PHONE] [--company COMPANY] [--json]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --email | Yes | - | Contact email address |
| --firstname | No | - | First name |
| --lastname | No | - | Last name |
| --phone | No | - | Phone number |
| --company | No | - | Company name |
| --json | No | False | Output as JSON |
When to Use: Use when user says "create contact", "add contact", "new contact".
update_contact.py - Update contact (PATCH /crm/v3/objects/contacts/{id})
uv run python update_contact.py --id CONTACT_ID [--email EMAIL] [--firstname NAME] [--lastname NAME] [--phone PHONE] [--json]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --id | Yes | - | Contact ID to update |
| --email | No | - | New email |
| --firstname | No | - | New first name |
| --lastname | No | - | New last name |
| --phone | No | - | New phone |
| --json | No | False | Output as JSON |
When to Use: Use when user says "update contact", "edit contact", "modify contact".
search_contacts.py - Search contacts (POST /crm/v3/objects/contacts/search)
uv run python search_contacts.py [--email EMAIL] [--name NAME] [--company COMPANY] [--limit N] [--json]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --email | No | - | Search by email |
| --name | No | - | Search by name (first or last) |
| --company | No | - | Search by company |
| --limit | No | 10 | Max results |
| --json | No | False | Output as JSON |
When to Use: Use when user says "search contacts", "find contact", "lookup contact".
list_companies.py - List companies (GET /crm/v3/objects/companies)
uv run python list_companies.py [--limit N] [--properties PROPS] [--after CURSOR] [--json]
When to Use: Use when user says "list companies", "get companies", "show companies".
create_company.py - Create company (POST /crm/v3/objects/companies)
uv run python create_company.py --name NAME [--domain DOMAIN] [--industry INDUSTRY] [--json]
When to Use: Use when user says "create company", "add company", "new company".
search_companies.py - Search companies (POST /crm/v3/objects/companies/search)
uv run python search_companies.py [--name NAME] [--domain DOMAIN] [--industry INDUSTRY] [--limit N] [--json]
When to Use: Use when user says "search companies", "find company", "lookup company".
list_deals.py - List deals (GET /crm/v3/objects/deals)
uv run python list_deals.py [--limit N] [--properties PROPS] [--after CURSOR] [--json]
When to Use: Use when user says "list deals", "get deals", "show deals", "show pipeline".
create_deal.py - Create deal (POST /crm/v3/objects/deals)
uv run python create_deal.py --name NAME [--amount AMOUNT] [--stage STAGE] [--pipeline PIPELINE] [--json]
When to Use: Use when user says "create deal", "add deal", "new deal", "new opportunity".
update_deal.py - Update deal (PATCH /crm/v3/objects/deals/{id})
uv run python update_deal.py --id DEAL_ID [--name NAME] [--amount AMOUNT] [--stage STAGE] [--json]
When to Use: Use when user says "update deal", "edit deal", "change deal stage".
search_deals.py - Search deals (POST /crm/v3/objects/deals/search)
uv run python search_deals.py [--name NAME] [--stage STAGE] [--min-amount N] [--max-amount N] [--limit N] [--json]
When to Use: Use when user says "search deals", "find deal", "lookup deal".
get_associations.py - Get associations (GET /crm/v4/objects/{type}/{id}/associations/{toType})
uv run python get_associations.py --object-type TYPE --object-id ID --to-type TO_TYPE [--json]
When to Use: Use when user says "get associations", "linked records", "related contacts".
list_emails.py - List email engagements log_email.py - Log email engagement list_calls.py - List call engagements log_call.py - Log call engagement list_notes.py - List notes create_note.py - Create note list_meetings.py - List meetings create_meeting.py - Create meeting
When a HubSpot skill fails due to missing configuration, the AI should:
uv run python 00-system/skills/hubspot/hubspot-master/scripts/check_hubspot_config.py --json
ai_action Field| ai_action | What to Do |
|-----------|------------|
| proceed_with_operation | Config OK, continue with the original operation |
| prompt_for_access_token | Ask user: "I need your HubSpot access token. Create a Private App to get one." |
| create_env_file | Create .env file and ask user for credentials |
| add_missing_scopes | Guide user to add scopes in HubSpot Private App settings |
| verify_token | Token exists but connection failed - verify it's correct |
If ai_action is prompt_for_access_token:
.env:
HUBSPOT_ACCESS_TOKEN=pat-na1-their-token-here
Required in .env:
HUBSPOT_ACCESS_TOKEN=pat-na1-xxxxxxxxxxxxx
All API requests go to: https://api.hubapi.com
Version: 1.0 Created: 2025-12-13 Status: Production Ready
development
--- name: taste-skill type: skill version: '1.0' author: Leonxlnx (packaged by Zhichao Li) category: general tags: - frontend - design - anti-slop - landing-page updated: '2026-06-11' visibility: public description: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check. license: MIT.
development
Use when communicating quantitative information in any form — Slack updates, emails, reports, decks, dashboards, landing pages, product UI, public talks. Covers two integrated layers: (1) making numbers semantically meaningful (translation, anchoring, simplification, story-pairing) and (2) showing numbers cleanly (chart vs table vs prose, chart-by-message, pre-attentive emphasis, color discipline, decluttering). Distilled and integrated from *Show Me the Numbers* (Stephen Few) and *Make Numbers Count* (Chip Heath & Karla Starr). Not for raw data analysis or statistics — this is about communication of numbers, not their derivation.
development
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
tools
Stateful multi-session tutor adapted for Beam — teach a stakeholder to understand, trust, and operate a specific agent, or teach a Solution Engineer a client's business process for delivery. Grounds every lesson in Knowledge Hub sources (real agent graphs, real tasks, transcripts, Linear) before any web resource. Also works for any general topic. Trigger on "teach me", "beam teach", "教我", "onboard <person> on <agent>", "help <stakeholder> understand the agent", "learn this client's process".