00-system/skills/hubspot/hubspot-connect/SKILL.md
Connect to HubSpot CRM for contact, company, deal, and engagement management. Load when user mentions 'hubspot', 'crm', 'contacts', 'companies', 'deals', 'list contacts', 'create contact', 'search deals', or any HubSpot CRM operations. Meta-skill that validates config, discovers CRM objects, and routes to appropriate operations.
npx skillsauth add abdullahbeam/nexus-design-abdullah hubspot-connectInstall 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.
User-facing meta-skill for HubSpot CRM integration.
Single entry point for all HubSpot CRM operations:
Follows the master/connect pattern - references hubspot-master for shared scripts and references.
Load this skill when user says:
Before ANY HubSpot operation, validate configuration:
python 00-system/skills/hubspot/hubspot-master/scripts/check_hubspot_config.py --json
| ai_action | What to Do |
|-------------|------------|
| proceed_with_operation | Config OK → Continue |
| prompt_for_access_token | Ask user for access token, save to .env |
| create_env_file | Create .env with token |
| add_missing_scopes | Guide user to add scopes in HubSpot |
| verify_token | Token exists but invalid |
Display this complete setup guide to user:
I need to set up HubSpot integration first.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HUBSPOT PRIVATE APP SETUP
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1: Create Private App
─────────────────────────
1. Log into HubSpot
2. Click gear icon (Settings) → Integrations → Private Apps
3. Click "Create a private app"
4. Name: "Nexus Integration"
STEP 2: Select Required Scopes
──────────────────────────────
In the "Scopes" tab, enable these permissions:
CRM (Required):
☑️ crm.objects.contacts.read
☑️ crm.objects.contacts.write
☑️ crm.objects.companies.read
☑️ crm.objects.companies.write
☑️ crm.objects.deals.read
☑️ crm.objects.deals.write
Engagements (Optional - for emails/calls/notes/meetings):
☑️ crm.objects.emails.read
☑️ crm.objects.emails.write
☑️ crm.objects.calls.read
☑️ crm.objects.calls.write
☑️ crm.objects.notes.read
☑️ crm.objects.notes.write
☑️ crm.objects.meetings.read
☑️ crm.objects.meetings.write
STEP 3: Get Your Token
──────────────────────
1. Click "Create app"
2. Copy the access token shown
3. Token starts with: pat-na1-... or pat-eu1-...
⚠️ IMPORTANT: Save this token securely - you won't see it again!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Please paste your HubSpot access token:
After user provides token:
# Write to .env
HUBSPOT_ACCESS_TOKEN=pat-na1-xxx
# Re-run config check to verify
python 00-system/skills/hubspot/hubspot-master/scripts/check_hubspot_config.py --json
If user gets 403 errors after setup, they're missing scopes:
⚠️ Missing HubSpot permissions!
The operation failed because your Private App is missing required scopes.
To fix:
1. Go to HubSpot Settings → Integrations → Private Apps
2. Click on "Nexus Integration" (or your app name)
3. Go to "Scopes" tab
4. Add the missing scope: [scope name from error]
5. Click "Commit changes"
6. IMPORTANT: Copy the NEW access token (it changes after scope updates)
7. Update your .env with the new token
Then try again!
Trigger: Before any operation
Script: check_hubspot_config.py --json
Output: Config status, required actions
Trigger: "list contacts", "show contacts", "get contacts"
python 00-system/skills/hubspot/hubspot-master/scripts/list_contacts.py --json
Display Format:
Found 10 contacts:
1. John Doe
Email: [email protected]
ID: 12345
Company: Acme Corp
2. Jane Smith
Email: [email protected]
ID: 12346
...
Trigger: "create contact", "add contact", "new contact"
Required: Email Optional: First name, last name, phone, company
python 00-system/skills/hubspot/hubspot-master/scripts/create_contact.py \
--email "[email protected]" \
--firstname "John" \
--lastname "Doe" \
--json
Trigger: "search contacts", "find contact", "lookup contact"
python 00-system/skills/hubspot/hubspot-master/scripts/search_contacts.py \
--email "[email protected]" \
--json
or
python 00-system/skills/hubspot/hubspot-master/scripts/search_contacts.py \
--name "John" \
--json
Trigger: "update contact", "edit contact", "modify contact"
Required: Contact ID
python 00-system/skills/hubspot/hubspot-master/scripts/update_contact.py \
--id 12345 \
--phone "+1234567890" \
--json
Trigger: "list companies", "show companies"
python 00-system/skills/hubspot/hubspot-master/scripts/list_companies.py --json
Trigger: "create company", "add company", "new company"
python 00-system/skills/hubspot/hubspot-master/scripts/create_company.py \
--name "Acme Corp" \
--domain "acme.com" \
--industry "Technology" \
--json
Trigger: "search companies", "find company"
python 00-system/skills/hubspot/hubspot-master/scripts/search_companies.py \
--name "Acme" \
--json
Trigger: "list deals", "show deals", "show pipeline"
python 00-system/skills/hubspot/hubspot-master/scripts/list_deals.py --json
Trigger: "create deal", "add deal", "new deal", "new opportunity"
python 00-system/skills/hubspot/hubspot-master/scripts/create_deal.py \
--name "Enterprise Deal" \
--amount 50000 \
--stage "qualifiedtobuy" \
--json
Trigger: "update deal", "edit deal", "change deal stage"
python 00-system/skills/hubspot/hubspot-master/scripts/update_deal.py \
--id 12345 \
--stage "closedwon" \
--json
Trigger: "search deals", "find deal"
python 00-system/skills/hubspot/hubspot-master/scripts/search_deals.py \
--name "Enterprise" \
--min-amount 10000 \
--json
Trigger: "get associations", "linked records", "related contacts", "contacts on deal"
# Get contacts associated with a deal
python 00-system/skills/hubspot/hubspot-master/scripts/get_associations.py \
--object-type deals \
--object-id 12345 \
--to-type contacts \
--json
Trigger: Various engagement operations
List Emails:
python 00-system/skills/hubspot/hubspot-master/scripts/list_emails.py --json
Log Email:
python 00-system/skills/hubspot/hubspot-master/scripts/log_email.py \
--subject "Follow up" \
--body "Meeting follow-up email" \
--json
List Calls:
python 00-system/skills/hubspot/hubspot-master/scripts/list_calls.py --json
Log Call:
python 00-system/skills/hubspot/hubspot-master/scripts/log_call.py \
--title "Sales Call" \
--body "Discussed pricing" \
--duration 30 \
--json
List Notes:
python 00-system/skills/hubspot/hubspot-master/scripts/list_notes.py --json
Create Note:
python 00-system/skills/hubspot/hubspot-master/scripts/create_note.py \
--body "Important note about this contact" \
--json
List Meetings:
python 00-system/skills/hubspot/hubspot-master/scripts/list_meetings.py --json
Create Meeting:
python 00-system/skills/hubspot/hubspot-master/scripts/create_meeting.py \
--title "Product Demo" \
--body "Demo of new features" \
--start "2025-12-15T14:00:00Z" \
--end "2025-12-15T15:00:00Z" \
--json
When user mentions:
| Phrase | Route To | |--------|----------| | "list contacts", "show contacts" | Workflow 1 | | "create contact", "add contact" | Workflow 2 | | "search contacts", "find contact" | Workflow 3 | | "update contact", "edit contact" | Workflow 4 | | "list companies", "show companies" | Workflow 5 | | "create company", "add company" | Workflow 6 | | "search companies", "find company" | Workflow 7 | | "list deals", "show pipeline" | Workflow 8 | | "create deal", "new opportunity" | Workflow 9 | | "update deal", "change stage" | Workflow 10 | | "search deals", "find deal" | Workflow 11 | | "associations", "linked records" | Workflow 12 | | "emails", "calls", "notes", "meetings" | Workflow 13 |
Common Errors:
| Error | Solution | |-------|----------| | 401 Unauthorized | Token invalid - check HUBSPOT_ACCESS_TOKEN | | 403 Forbidden | Missing scope - add to Private App | | 404 Not Found | Record doesn't exist | | 409 Conflict | Duplicate record - search first | | 429 Rate Limited | Wait and retry |
On Error:
hubspot-master/references/error-handling.mdAfter listing records, cache for session:
# Store in conversation context
contacts_cache = [
{"name": "John Doe", "id": "12345", "email": "[email protected]"},
{"name": "Jane Smith", "id": "12346", "email": "[email protected]"}
]
When user says "update John Doe", match to cached contact ID.
User: "list my hubspot contacts"
AI:
Let me check your HubSpot configuration first...
✅ Configuration valid
Found 10 contacts:
1. John Doe
Email: [email protected]
ID: 12345
Company: Acme Corp
2. Jane Smith
Email: [email protected]
ID: 12346
Company: TechStart Inc
...
What would you like to do?
- "create contact" to add a new contact
- "search contacts by company" to filter
- "update John Doe" to modify a record
User: "create a new deal for Acme Corp worth $50,000"
AI:
Creating deal...
✅ Deal created!
ID: 98765
Name: Acme Corp - $50,000
Amount: $50,000
Stage: qualifiedtobuy
Would you like to associate this deal with a contact or company?
Version: 1.0 Created: 2025-12-13 Status: Production Ready
development
Load when user says "mental model", "think through this", "structured thinking", "help me decide", "analyze this problem", "first principles", "pre-mortem", "stakeholder mapping", "what framework should I use", or any specific model name. Provides 59 thinking frameworks for decision-making, problem decomposition, and strategic analysis.
development
Generate comprehensive philosophy and standards documents for any domain (UX design, landing pages, email outbound, API design, etc.). Load when user says "create philosophy doc", "generate standards for [domain]", "build best practices guide", or "create benchmarking document". Conducts deep research, synthesizes findings, and produces structured philosophy documents with principles, frameworks, anti-patterns, checklists, case studies, and metrics.
development
Validate Nexus-v3 system integrity and fix common issues automatically. Load when user mentions "validate system", "check system", or "fix problems". Runs comprehensive checks on folder structure, metadata files, and framework consistency with auto-repair capabilities.
development
Load when user says "validate docs", "check documentation consistency", "docs vs implementation", or "find documentation mismatches". Systematically compares implementation code against documentation to identify and fix inconsistencies.