Run a HubSpot hygiene pass using the crm-maintenance skill cleanup workflow. Act immediately — the user typed /crm-cleanup, so skip the intent-detection step.
Parse arguments:
--scope (default: all) — deals for deal audit only, contacts for contact dedup only, all for both
Step 1 — Scan for stale deals
If scope includes deals:
- Pull all open deals from HubSpot.
- Flag deals with no activity (email, call, meeting, note) in the last 14 days.
- For each stale deal: show deal name, stage, last activity date, associated contacts, and amount.
- Propose actions per deal: update next-step, change stage, add a note, or close-lost.
Present the full stale-deals list before making any changes.
Step 2 — Scan for duplicate contacts
If scope includes contacts:
- Search HubSpot contacts for likely duplicates (same email, similar names, same company + similar name).
- For each duplicate set: show both records side-by-side — name, email, company, deals, last activity.
- Propose which record to keep and which fields to merge.
Present all duplicate sets before merging anything.
Step 3 — Scan for missing required fields
- Check all open deals for missing fields: close date, amount, deal stage, associated contact, next-step/notes.
- Check contacts associated with open deals for missing fields: email, company, phone.
- Present a table of records with missing fields and what's missing.
Step 4 — Apply approved fixes
- Walk through each finding from Steps 1-3.
- Apply only the changes the owner explicitly approves.
- Report each change as it's made with a HubSpot link.
Connector failures
If HubSpot is unreachable, stop — this command requires HubSpot as the data source. Tell the owner: "HubSpot isn't connected. Connect it in Cowork settings, then rerun /crm-cleanup."
Approval gates
- Never delete records. Not contacts, not deals, not activities. If the user asks, say the skill cannot and direct them to HubSpot.
- Never change deal stage or close a deal without explicit approval. Even if evidence is strong. Flag and defer.
- Never auto-merge duplicate contacts. Show side-by-side and wait for approval per pair.
- Side-by-side diffs for all changes. Show current value and proposed value; wait for approval per item.
Output
End with a summary: X deals updated, Y contacts merged, Z fields filled. Include links to the affected records.
1---
2name: crm-cleanup
3description: Scans HubSpot for stale deals, duplicate contacts, and missing fields, then fixes what the owner approves. Accepts optional scope argument for deals, contacts, or all.
4allowed-tools: Read, WebFetch, Bash
5---
6
7Run a HubSpot hygiene pass using the `crm-maintenance` skill cleanup workflow. Act immediately — the user typed /crm-cleanup, so skip the intent-detection step.
8
9Parse arguments:
10- `--scope` (default: `all`) — `deals` for deal audit only, `contacts` for contact dedup only, `all` for both
11
12## Step 1 — Scan for stale deals
13
14If scope includes deals:
15
161. Pull all open deals from HubSpot.
172. Flag deals with no activity (email, call, meeting, note) in the last 14 days.
183. For each stale deal: show deal name, stage, last activity date, associated contacts, and amount.
194. Propose actions per deal: update next-step, change stage, add a note, or close-lost.
20
21Present the full stale-deals list before making any changes.
22
23## Step 2 — Scan for duplicate contacts
24
25If scope includes contacts:
26
271. Search HubSpot contacts for likely duplicates (same email, similar names, same company + similar name).
282. For each duplicate set: show both records side-by-side — name, email, company, deals, last activity.
293. Propose which record to keep and which fields to merge.
30
31Present all duplicate sets before merging anything.
32
33## Step 3 — Scan for missing required fields
34
351. Check all open deals for missing fields: close date, amount, deal stage, associated contact, next-step/notes.
362. Check contacts associated with open deals for missing fields: email, company, phone.
373. Present a table of records with missing fields and what's missing.
38
39## Step 4 — Apply approved fixes
40
411. Walk through each finding from Steps 1-3.
422. Apply only the changes the owner explicitly approves.
433. Report each change as it's made with a HubSpot link.
44
45## Connector failures
46
47If HubSpot is unreachable, stop — this command requires HubSpot as the data source. Tell the owner: "HubSpot isn't connected. Connect it in Cowork settings, then rerun /crm-cleanup."
48
49## Approval gates
50
51- **Never delete records.** Not contacts, not deals, not activities. If the user asks, say the skill cannot and direct them to HubSpot.
52- **Never change deal stage or close a deal without explicit approval.** Even if evidence is strong. Flag and defer.
53- **Never auto-merge duplicate contacts.** Show side-by-side and wait for approval per pair.
54- **Side-by-side diffs for all changes.** Show current value and proposed value; wait for approval per item.
55
56## Output
57
58End with a summary: X deals updated, Y contacts merged, Z fields filled. Include links to the affected records.