revops
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
hubspot-connect
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 ...
Full skill instructions
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
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
Strategic planning and optimization for email capture offers and gated content.
Directory submissions: the foundation layer of distribution that passes backlinks and discovery surface area into your marketing pages.
Sequence and choreograph multi-step animations with precise timing control and nested timelines.
Structured framework for planning product launches, feature announcements, and go-to-market strategies.
Upload files to Google Drive with automatic MIME type detection and metadata.
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.
firecrawl lead gen
firecrawl lead research
firecrawl demo walkthrough
Team leadership persona with standup coordination, meeting prep, task delegation, and team communication.
Identify large Google Drive files consuming storage quota.
Revolutionize Video Creation with AI-Generated Avatars and Voices
Social media on autopilot
Design custom logos instantly with AI.
Text-heavy marketing and design images
Boost Your SEO with Content and SEO Silos
Revolutionize Your Marketing with AI-Powered MarketingBlocks!
10X faster & free AI content creation for 100+ use cases
Tribescaler | Make Your Tweets Go Viral