brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
crmOperate HubSpot CRM from a terminal or agent: list and search contact records, view deal pipeline stages, and — with explicit confirmation — move deals between stages, backed by a bundled crm-cli script that is read-only by default and gates every stage change behind a --dry-run/--yes confirmation. Use when an agent needs to answer questions about contacts …
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this skill to read and, with explicit confirmation, update HubSpot CRM data through the HubSpot CRM v3 API: contact records, contact search, deal pipeline views, and deal stage changes. This is a tool skill for one CRM vendor (HubSpot). Building HubSpot apps or workflows is application development; this skill owns the everyday agent workflow: answering "who is this contact?", "what is in the pipeline?", and applying a confirmed stage change.
crm-cli script makes reads without writing anything.--dry-run preview and --yes confirmation through crm-cli. Stage moves are reversible but leave audit history — confirm before acting.limit; never page past what the task needs. crm-cli --limit caps every listing and search.pipelines list), not a stage label.scripts/crm-cli is an agent-first, stdlib-only CLI over the HubSpot CRM v3 API. It covers the full issue scope: records, search, and pipeline views.
crm/scripts/crm-cli --help # no token or network needed
crm/scripts/crm-cli --json --limit 20 contacts list
crm/scripts/crm-cli --json contacts get --id 51
crm/scripts/crm-cli --json contacts search --query "ada"
crm/scripts/crm-cli --json --limit 20 deals list
crm/scripts/crm-cli --json deals list --pipeline default --stage appointmentscheduled
crm/scripts/crm-cli --json pipelines list
crm/scripts/crm-cli deals update-stage --id 901 --stage closedwon --dry-run # preview
crm/scripts/crm-cli deals update-stage --id 901 --stage closedwon --yes # confirmed
Exit codes: 0 success, 1 API error or failed check, 2 usage error. Stage changes are guarded: without --dry-run or --yes the script refuses with exit 1 and never calls the API. Reads are bounded by --limit (default 20, max 100).
contacts search/contacts list or deals list.contacts get for one record, deals list for the pipeline view (optionally filtered by pipeline and stage), pipelines list to resolve stage labels to IDs.--dry-run and confirmed with --yes.deals list --stage <target>) and confirm the stage moved./objects/contacts): list (GET) or retrieve one (GET by ID); the CLI summarizes first/last name, email, company, and created date. Search (POST /objects/contacts/search) finds contacts by query text, bounded by --limit./objects/deals): list deals with amount, pipeline, and stage, optionally filtered to one pipeline or stage. pipelines list (/pipelines/deals) returns the pipelines with their stage IDs and labels — use the stage ID when filtering or updating.PATCH /objects/deals/{id}): a guarded mutation that sets the dealstage property. Preview the target stage with --dry-run, confirm with --yes, and verify with a follow-up read. Only stage moves are in scope; other deal property edits are application work.pat_...) scope per object and read/write. Reads need crm.objects.contacts.read and crm.objects.deals.read; stage updates need crm.objects.deals.write.properties map keyed by property names (e.g. dealstage, dealname, amount). Property values are strings; the CLI summarizes the fields this skill uses.HUBSPOT_TOKEN, never in code, chat, or commits. Rotate a leaked token in the private app settings.| Load when | Reference |
|---|---|
| Sources, scope tables, refresh procedure | references/00-source-index.md |
| Endpoints, pagination, object model, stage updates, errors | references/01-hubspot-crm-operations.md |
scripts/crm-cli: bounded, stdlib-only CLI (contacts list/get/search, deals list/update-stage, pipelines list; --json; --limit; mutations gated by --dry-run/--yes).tests/test_crm_cli.py: 13 deterministic tests against a stub HubSpot API, including the mutation gate and the read-only contract.references/: dated source index + HubSpot CRM operations reference.evals/evals.json: six output-quality evaluation cases for agent runs.| Claim | Minimum evidence |
|---|---|
| A contact exists | crm-cli contacts search --query ... --json or contacts get returns the record |
| A pipeline view is accurate | crm-cli deals list --json returns deals with stage IDs and the filter applied |
| A stage label maps to an ID | crm-cli pipelines list --json returns the pipeline stage map |
| A stage change landed | crm-cli deals update-stage --yes exits 0 and a follow-up deals list --stage shows the deal |
| A mutation is safe to run | crm-cli deals update-stage --dry-run prints the exact deal + target stage |
--dry-run preview, and --yes confirmation — pipeline changes feed revenue reporting and audit history.--limit; never dump full records, tokens, or raw payloads into chat.