[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-TomGranot-suppress-global-unsubscribes-zh-CN":3,"guides-for-TomGranot-suppress-global-unsubscribes":712,"similar-k17em3067vz762chyjsjhccw0186m0aw-zh-CN":713},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":253,"isFallback":258,"parentExtension":259,"providers":315,"relations":319,"repo":320,"tags":710,"workflow":711},1778698144006.226,"k17em3067vz762chyjsjhccw0186m0aw",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"Identify and suppress globally unsubscribed contacts to ensure legal compliance and reduce billing. Hybrid approach: API for discovery and audit, manual UI for suppression (hs_marketable_status is read-only).\n",{"claudeCode":12},"TomGranot/hubspot-admin-skills","suppress-global-unsubscribes","https://github.com/TomGranot/hubspot-admin-skills",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":235,"workflow":251},1778698672465.6482,"kn7br0ze8gsnvyqbw4pkrhyyps86mc5s","en",{"checks":20,"evaluatedAt":194,"extensionSummary":195,"features":196,"nonGoals":202,"practices":207,"prerequisites":210,"promptVersionExtension":215,"promptVersionScoring":216,"purpose":217,"rationale":218,"score":219,"summary":220,"tags":221,"targetMarket":228,"tier":229,"useCases":230},[21,26,29,32,36,39,43,47,50,53,57,62,66,70,73,76,79,82,85,88,92,96,100,104,108,111,114,117,121,124,127,130,134,137,140,144,148,152,155,159,162,165,168,171,175,178,181,184,187,191],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly identifies the problem of globally unsubscribed contacts being billed as marketing contacts, leading to legal compliance issues and wasted spend.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill provides a structured, scripted approach to identifying and addressing a specific, critical HubSpot administration issue that goes beyond basic API usage by providing a guided workflow and audit trail.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill covers the complete lifecycle from planning and auditing to execution (via API and UI instructions) and verification, with clear safety mechanisms and error handling.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill focuses solely on identifying and suppressing globally unsubscribed contacts within HubSpot, a well-defined database hygiene task.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the skill's purpose, highlighting the hybrid API/UI approach and the read-only nature of hs_marketable_status.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The script uses specific HubSpot API endpoints for searching and listing contacts, rather than a generic execution tool.",{"category":44,"check":45,"severity":24,"summary":46},"Documentation","Configuration & parameter reference","Prerequisites, including the HubSpot token, scopes, Python version, and .env file, are clearly documented.",{"category":33,"check":48,"severity":24,"summary":49},"Tool naming","The Python script and its functions are clearly named and descriptive of their operations.",{"category":33,"check":51,"severity":24,"summary":52},"Minimal I/O surface","The script's API calls are focused on specific contact properties and actions, and its output (CSV audit log) is relevant to the task.",{"category":54,"check":55,"severity":24,"summary":56},"License","License usability","The project is licensed under the permissive MIT license, clearly stated in the LICENSE file and SKILL.md frontmatter.",{"category":58,"check":59,"severity":60,"summary":61},"Maintenance","Commit recency","critical","The last commit was over 3 months ago (2026-03-26), indicating the skill may be unmaintained and potentially out of sync with HubSpot API changes.",{"category":58,"check":63,"severity":64,"summary":65},"Dependency Management","warning","Dependencies are listed in script comments but not pinned via a lockfile, increasing the risk of unexpected behavior due to dependency updates.",{"category":67,"check":68,"severity":24,"summary":69},"Security","Secret Management","The HubSpot access token is loaded from an environment variable via a .env file, and the script does not echo resolved secret values.",{"category":67,"check":71,"severity":24,"summary":72},"Injection","The script interacts with the HubSpot API using structured requests and does not execute arbitrary code or commands from external data.",{"category":67,"check":74,"severity":24,"summary":75},"Transitive Supply-Chain Grenades","The skill only uses standard Python libraries and makes documented API calls; it does not fetch or execute remote code.",{"category":67,"check":77,"severity":24,"summary":78},"Sandbox Isolation","The script interacts with the HubSpot API and writes to a local CSV file; it does not modify files outside its designated scope.",{"category":67,"check":80,"severity":24,"summary":81},"Sandbox escape primitives","No detached processes or retry loops around denied calls are present in the script.",{"category":67,"check":83,"severity":24,"summary":84},"Data Exfiltration","The script only reads necessary contact properties and writes an audit log locally; it does not submit confidential data to third parties.",{"category":67,"check":86,"severity":24,"summary":87},"Hidden Text Tricks","The bundled script and SKILL.md file do not contain any hidden text tricks or obfuscation methods.",{"category":89,"check":90,"severity":24,"summary":91},"Hooks","Opaque code execution","The Python script is plain, readable source code and does not use obfuscation techniques like base64 decoding or eval.",{"category":93,"check":94,"severity":24,"summary":95},"Portability","Structural Assumption","The script assumes a standard Python environment and uses relative paths for output, making it portable.",{"category":97,"check":98,"severity":24,"summary":99},"Trust","Issues Attention","In the last 90 days, 0 issues were opened and 1 was closed, indicating active maintenance or a lack of recent issues.",{"category":101,"check":102,"severity":24,"summary":103},"Versioning","Release Management","A version number '1.0' is present in the SKILL.md frontmatter.",{"category":105,"check":106,"severity":24,"summary":107},"Code Execution","Validation","The script uses the HubSpot API with explicit property filters and does not appear to directly interpolate user input into sensitive operations.",{"category":67,"check":109,"severity":24,"summary":110},"Unguarded Destructive Operations","The script only reads data and creates a HubSpot list; it does not perform destructive operations.",{"category":105,"check":112,"severity":24,"summary":113},"Error Handling","The script includes error handling for API requests and provides informative print statements for different stages.",{"category":105,"check":115,"severity":24,"summary":116},"Logging","The script provides clear, structured output for each stage of its execution, serving as an audit trail.",{"category":118,"check":119,"severity":24,"summary":120},"Compliance","GDPR","The skill handles contact data but only to identify unsubscribed users for suppression; it does not submit personal data to third parties.",{"category":118,"check":122,"severity":24,"summary":123},"Target market","The skill operates on HubSpot data, which is global, and the code does not contain any regional logic.",{"category":93,"check":125,"severity":24,"summary":126},"Runtime stability","The script requires Python 3.10+ and standard libraries, which are common and do not assume a specific OS or shell.",{"category":44,"check":128,"severity":24,"summary":129},"README","The README is comprehensive, detailing installation, usage, the skills offered, and community contribution guidelines.",{"category":33,"check":131,"severity":132,"summary":133},"Tool surface size","not_applicable","This is a single-script skill, not a multi-tool extension.",{"category":40,"check":135,"severity":132,"summary":136},"Overlapping near-synonym tools","The skill consists of a single script, not multiple tools with overlapping functionality.",{"category":44,"check":138,"severity":24,"summary":139},"Phantom features","All documented features and script functionalities align with the actual implementation.",{"category":141,"check":142,"severity":24,"summary":143},"Install","Installation instruction","The README provides clear, copy-pasteable installation instructions for both marketplace and direct cloning, including authentication setup.",{"category":145,"check":146,"severity":24,"summary":147},"Errors","Actionable error messages","The script provides specific error messages for API call failures and clearly indicates the next steps for the user.",{"category":149,"check":150,"severity":64,"summary":151},"Execution","Pinned dependencies","Dependencies are listed in comments but not pinned with a lockfile, which could lead to versioning conflicts or instability.",{"category":33,"check":153,"severity":132,"summary":154},"Dry-run preview","The skill's primary actions involve reading data and creating a HubSpot list; direct destructive actions requiring a dry-run are not present.",{"category":156,"check":157,"severity":24,"summary":158},"Protocol","Idempotent retry & timeouts","The script includes basic API error handling and a delay between paginated requests, but explicit timeouts per call are not specified.",{"category":118,"check":160,"severity":24,"summary":161},"Telemetry opt-in","The script does not emit any telemetry; all actions are local or direct API calls to HubSpot.",{"category":40,"check":163,"severity":24,"summary":164},"Precise Purpose","The description clearly states the skill identifies and suppresses globally unsubscribed contacts, mentions the hybrid API/UI approach, and specifies the target artifact (contacts) and user intent (legal compliance, billing reduction).",{"category":40,"check":166,"severity":24,"summary":167},"Concise Frontmatter","The frontmatter is concise, clearly states the skill's core function and approach, and includes relevant metadata.",{"category":44,"check":169,"severity":24,"summary":170},"Concise Body","The SKILL.md body is well-structured, uses progressive disclosure for code, and stays within a reasonable length.",{"category":172,"check":173,"severity":24,"summary":174},"Context","Progressive Disclosure","The skill body includes inline Python scripts for the 'Before State' and 'After State' phases, which is appropriate for their length and scope.",{"category":172,"check":176,"severity":132,"summary":177},"Forked exploration","This skill is a focused execution script, not an exploration or deep-dive tool.",{"category":22,"check":179,"severity":24,"summary":180},"Usage examples","The SKILL.md provides concrete Python code snippets for the 'Before State' and 'After State' phases, demonstrating the expected inputs and outputs.",{"category":22,"check":182,"severity":24,"summary":183},"Edge cases","The skill addresses the critical edge case of HubSpot API pagination limits and explicitly mentions the read-only nature of `hs_marketable_status`.",{"category":105,"check":185,"severity":132,"summary":186},"Tool Fallback","This skill is a standalone Python script and does not rely on external MCP servers or tools with fallbacks.",{"category":188,"check":189,"severity":24,"summary":190},"Safety","Halt on unexpected state","The script includes checks for API call success and provides clear output, halting gracefully on errors.",{"category":93,"check":192,"severity":24,"summary":193},"Cross-skill coupling","The skill is self-contained and does not rely on other skills being loaded in the same session.",1778698672230,"This skill identifies and suppresses globally unsubscribed contacts in HubSpot CRM using a Python script that queries the HubSpot API for audit and creates a dynamic list for suppression. It addresses legal compliance and billing reduction needs.",[197,198,199,200,201],"Identifies globally unsubscribed contacts via HubSpot API","Audits contacts by lifecycle stage and marketing status","Creates a dynamic HubSpot active list for suppression","Provides Python scripts for before and after state verification","Includes clear instructions for manual UI suppression step",[203,204,205,206],"Re-subscribing contacts without explicit consent","Deleting contacts from HubSpot","Directly suppressing contacts via the API (due to HubSpot's limitations)","Handling subscription-type-specific opt-outs",[208,118,209],"Database hygiene","Automation",[211,212,213,214],"A HubSpot private app access token with `crm.objects.contacts.read` and `crm.lists.read`/`crm.lists.write` scopes","Python 3.10+ with `uv`","A `.env` file containing `HUBSPOT_ACCESS_TOKEN`","Super Admin or Marketing Hub Admin permissions for manual UI suppression","3.0.0","4.4.0","To ensure legal compliance and reduce billing by identifying and suppressing contacts who have globally unsubscribed from marketing communications in HubSpot.","The skill is well-documented and functional but lacks a lockfile for dependency management and has not been updated in over 3 months, leading to a critical finding for commit recency.",75,"A well-documented HubSpot CRM skill for managing unsubscribed contacts, with minor maintenance concerns.",[222,223,224,225,226,227],"hubspot","crm","compliance","data-hygiene","automation","python","global","flagged",[231,232,233,234],"Reducing marketing spend by removing non-marketable contacts","Ensuring compliance with CAN-SPAM, GDPR, and CASL regulations","Auditing the current state of unsubscribed contacts","Automating the identification of contacts to suppress",{"codeQuality":236,"collectedAt":238,"documentation":239,"maintenance":242,"security":248,"testCoverage":250},{"hasLockfile":237},false,1778698656618,{"descriptionLength":240,"readmeSize":241},209,10597,{"closedIssues90d":243,"forks":244,"hasChangelog":237,"manifestVersion":245,"openIssues90d":8,"pushedAt":246,"stars":247},1,4,"1.0",1774540543000,21,{"hasNpmPackage":237,"license":249,"smitheryVerified":237},"MIT",{"hasCi":237,"hasTests":237},{"updatedAt":252},1778698672465,{"basePath":254,"githubOwner":255,"githubRepo":256,"locale":18,"slug":13,"type":257},"skills/suppress-global-unsubscribes","TomGranot","hubspot-admin-skills","skill",true,{"_creationTime":260,"_id":261,"community":262,"display":263,"identity":268,"parentExtension":271,"providers":300,"relations":311,"tags":312,"workflow":313},1778698144006.2188,"k17c3p8t0thc73pbc8egtz31y986mwr0",{"reviewCount":8},{"description":264,"installMethods":265,"name":267,"sourceUrl":14},"Complete HubSpot CRM administration toolkit — audit, clean, enrich, segment, automate, and maintain your database",{"claudeCode":266},"hubspot-admin","HubSpot Admin Skills",{"basePath":269,"githubOwner":255,"githubRepo":256,"locale":18,"slug":256,"type":270},"","plugin",{"_creationTime":272,"_id":273,"community":274,"display":275,"identity":278,"providers":280,"relations":294,"tags":296,"workflow":297},1778698144006.2185,"k17dn1yxv80dbqc9xbkwfp9t6186nkhk",{"reviewCount":8},{"description":276,"installMethods":277,"name":256,"sourceUrl":14},"30+ Claude Code skills for auditing, cleaning, enriching, and automating HubSpot CRM",{"claudeCode":12},{"basePath":269,"githubOwner":255,"githubRepo":256,"locale":18,"slug":256,"type":279},"marketplace",{"evaluate":281,"extract":289},{"promptVersionExtension":282,"promptVersionScoring":216,"score":283,"tags":284,"targetMarket":228,"tier":288},"3.1.0",79,[222,223,226,285,286,287],"data-cleaning","auditing","administration","community",{"commitSha":290,"marketplace":291,"plugin":292},"HEAD",{"name":256,"pluginCount":243},{"mcpCount":8,"provider":293,"skillCount":8},"classify",{"repoId":295},"kd75kpec7arn6z2wz641vfaj8n86nab6",[287,286,226,223,285,222],{"evaluatedAt":298,"extractAt":299,"updatedAt":298},1778698158552,1778698144006,{"evaluate":301,"extract":308},{"promptVersionExtension":215,"promptVersionScoring":216,"score":302,"tags":303,"targetMarket":228,"tier":307},99,[222,223,287,304,226,305,286,306],"data-quality","cleanup","marketing-automation","verified",{"commitSha":290,"license":249,"plugin":309},{"mcpCount":8,"provider":293,"skillCount":310},32,{"parentExtensionId":273,"repoId":295},[287,286,226,305,223,304,222,306],{"evaluatedAt":314,"extractAt":299,"updatedAt":314},1778698168554,{"evaluate":316,"extract":318},{"promptVersionExtension":215,"promptVersionScoring":216,"score":219,"tags":317,"targetMarket":228,"tier":229},[222,223,224,225,226,227],{"commitSha":290,"license":249},{"parentExtensionId":261,"repoId":295},{"_creationTime":321,"_id":295,"identity":322,"providers":323,"workflow":706},1778698139523.511,{"githubOwner":255,"githubRepo":256,"sourceUrl":14},{"classify":324,"discover":700,"github":703},{"commitSha":290,"extensions":325},[326,339,412,428,436,444,452,461,469,477,485,493,501,509,517,528,536,547,555,565,575,586,594,602,610,619,627,635,646,654,665,675,682,692],{"basePath":269,"description":276,"displayName":256,"installMethods":327,"rationale":328,"selectedPaths":329,"source":338,"sourceLanguage":18,"type":279},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[330,333,335],{"path":331,"priority":332},".claude-plugin/marketplace.json","mandatory",{"path":334,"priority":332},"README.md",{"path":336,"priority":337},"LICENSE","high","rule",{"basePath":269,"description":264,"displayName":266,"installMethods":340,"rationale":341,"selectedPaths":342,"source":338,"sourceLanguage":18,"type":270},{"claudeCode":266},"plugin manifest at .claude-plugin/plugin.json",[343,345,346,347,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410],{"path":344,"priority":332},".claude-plugin/plugin.json",{"path":334,"priority":332},{"path":336,"priority":337},{"path":348,"priority":349},"skills/assign-unowned-contacts/SKILL.md","medium",{"path":351,"priority":349},"skills/backfill-geo-data/SKILL.md",{"path":353,"priority":349},"skills/bounce-monitoring-workflow/SKILL.md",{"path":355,"priority":349},"skills/build-lead-scoring/SKILL.md",{"path":357,"priority":349},"skills/build-smart-lists/SKILL.md",{"path":359,"priority":349},"skills/cleanup-dashboards/SKILL.md",{"path":361,"priority":349},"skills/cleanup-deals/SKILL.md",{"path":363,"priority":349},"skills/cleanup-forms/SKILL.md",{"path":365,"priority":349},"skills/cleanup-lead-owners/SKILL.md",{"path":367,"priority":349},"skills/cleanup-lists/SKILL.md",{"path":369,"priority":349},"skills/cleanup-properties/SKILL.md",{"path":371,"priority":349},"skills/cleanup-workflows/SKILL.md",{"path":373,"priority":349},"skills/create-icp-tiers/SKILL.md",{"path":375,"priority":349},"skills/create-segment-lists/SKILL.md",{"path":377,"priority":349},"skills/delete-no-email-contacts/SKILL.md",{"path":379,"priority":349},"skills/engagement-suppression-workflow/SKILL.md",{"path":381,"priority":349},"skills/enrich-company-name/SKILL.md",{"path":383,"priority":349},"skills/enrich-industry/SKILL.md",{"path":385,"priority":349},"skills/fix-lifecycle-stages/SKILL.md",{"path":387,"priority":349},"skills/hubspot-audit/SKILL.md",{"path":389,"priority":349},"skills/hubspot-implementation-plan/SKILL.md",{"path":391,"priority":349},"skills/lifecycle-progression-workflow/SKILL.md",{"path":393,"priority":349},"skills/merge-duplicate-companies/SKILL.md",{"path":395,"priority":349},"skills/new-contact-hygiene-workflow/SKILL.md",{"path":397,"priority":349},"skills/quarterly-database-cleanup/SKILL.md",{"path":399,"priority":349},"skills/reassign-deactivated-owners/SKILL.md",{"path":401,"priority":349},"skills/review-bounced-contacts/SKILL.md",{"path":403,"priority":349},"skills/standardize-geo-values/SKILL.md",{"path":405,"priority":349},"skills/suppress-ghost-contacts/SKILL.md",{"path":407,"priority":349},"skills/suppress-global-unsubscribes/SKILL.md",{"path":409,"priority":349},"skills/suppress-hard-bounced/SKILL.md",{"path":411,"priority":349},"skills/weekly-cleanup-routine/SKILL.md",{"basePath":413,"description":414,"displayName":415,"installMethods":416,"rationale":417,"selectedPaths":418,"source":338,"sourceLanguage":18,"type":257},"skills/assign-unowned-contacts","Assign an owner to marketing contacts that have no owner. Ensures every marketable contact has accountability for follow-up, proper lead routing, and accurate owner-based reporting.","assign-unowned-contacts",{"claudeCode":12},"SKILL.md frontmatter at skills/assign-unowned-contacts/SKILL.md",[419,421,424,426],{"path":420,"priority":332},"SKILL.md",{"path":422,"priority":423},"scripts/after.py","low",{"path":425,"priority":423},"scripts/before.py",{"path":427,"priority":423},"scripts/execute.py",{"basePath":429,"description":430,"displayName":431,"installMethods":432,"rationale":433,"selectedPaths":434,"source":338,"sourceLanguage":18,"type":257},"skills/backfill-geo-data","Enrich missing geographic data (country, state, city) on contacts and companies using HubSpot workflows, external data providers, or IP-based geolocation.","backfill-geo-data",{"claudeCode":12},"SKILL.md frontmatter at skills/backfill-geo-data/SKILL.md",[435],{"path":420,"priority":332},{"basePath":437,"description":438,"displayName":439,"installMethods":440,"rationale":441,"selectedPaths":442,"source":338,"sourceLanguage":18,"type":257},"skills/bounce-monitoring-workflow","Build a workflow to protect sender reputation through automated bounce monitoring. Auto-suppresses contacts above a configurable bounce threshold, alerts on hard bounces, and flags high-bounce contacts for weekly manual review.","bounce-monitoring-workflow",{"claudeCode":12},"SKILL.md frontmatter at skills/bounce-monitoring-workflow/SKILL.md",[443],{"path":420,"priority":332},{"basePath":445,"description":446,"displayName":447,"installMethods":448,"rationale":449,"selectedPaths":450,"source":338,"sourceLanguage":18,"type":257},"skills/build-lead-scoring","Create a comprehensive lead scoring model with separate Fit and Engagement scores using HubSpot's new Lead Scoring tool. Replaces the deprecated HubSpot Score property.","build-lead-scoring",{"claudeCode":12},"SKILL.md frontmatter at skills/build-lead-scoring/SKILL.md",[451],{"path":420,"priority":332},{"basePath":453,"description":454,"displayName":455,"installMethods":456,"rationale":457,"selectedPaths":458,"source":338,"sourceLanguage":18,"type":257},"skills/build-smart-lists","Create foundational segmented lists for marketing and sales operations. Includes a master sendable list, ICP-based lists, persona lists, engagement lists, and behavioral lists. All active (dynamic) lists.","build-smart-lists",{"claudeCode":12},"SKILL.md frontmatter at skills/build-smart-lists/SKILL.md",[459,460],{"path":420,"priority":332},{"path":427,"priority":423},{"basePath":462,"description":463,"displayName":464,"installMethods":465,"rationale":466,"selectedPaths":467,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-dashboards","Audit and consolidate HubSpot reporting dashboards. Identifies unused, duplicate, or outdated dashboards. Must be performed manually — no dashboard API is available.","cleanup-dashboards",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-dashboards/SKILL.md",[468],{"path":420,"priority":332},{"basePath":470,"description":471,"displayName":472,"installMethods":473,"rationale":474,"selectedPaths":475,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-deals","Standardize deal pipelines, remove test deals, and address deals with missing amounts or close dates. Coordinates with Salesforce sync if applicable.","cleanup-deals",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-deals/SKILL.md",[476],{"path":420,"priority":332},{"basePath":478,"description":479,"displayName":480,"installMethods":481,"rationale":482,"selectedPaths":483,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-forms","Audit and remove unused, test, or deprecated forms from HubSpot. Identifies forms with zero submissions, forms not embedded on any page, and test forms left over from development.","cleanup-forms",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-forms/SKILL.md",[484],{"path":420,"priority":332},{"basePath":486,"description":487,"displayName":488,"installMethods":489,"rationale":490,"selectedPaths":491,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-lead-owners","Remove non-employee users from HubSpot and reassign their orphaned contacts, companies, and deals. Pairs with the assign-unowned-contacts skill for comprehensive ownership cleanup.","cleanup-lead-owners",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-lead-owners/SKILL.md",[492],{"path":420,"priority":332},{"basePath":494,"description":495,"displayName":496,"installMethods":497,"rationale":498,"selectedPaths":499,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-lists","Audit and remove unused, empty, or duplicate list definitions from HubSpot. Identifies lists with zero members, lists not used by any workflow or email, and overlapping list criteria.","cleanup-lists",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-lists/SKILL.md",[500],{"path":420,"priority":332},{"basePath":502,"description":503,"displayName":504,"installMethods":505,"rationale":506,"selectedPaths":507,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-properties","Archive or delete unused custom properties across all HubSpot object types (contacts, companies, deals). Identifies Salesforce sync properties, test/temp properties, and obsolete form fields.","cleanup-properties",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-properties/SKILL.md",[508],{"path":420,"priority":332},{"basePath":510,"description":511,"displayName":512,"installMethods":513,"rationale":514,"selectedPaths":515,"source":338,"sourceLanguage":18,"type":257},"skills/cleanup-workflows","Audit and remove inactive, test, or deprecated workflows from HubSpot. Identifies workflows that have never enrolled contacts, workflows turned off for 90+ days, and test workflows.","cleanup-workflows",{"claudeCode":12},"SKILL.md frontmatter at skills/cleanup-workflows/SKILL.md",[516],{"path":420,"priority":332},{"basePath":518,"description":519,"displayName":520,"installMethods":521,"rationale":522,"selectedPaths":523,"source":338,"sourceLanguage":18,"type":257},"skills/create-icp-tiers","Classify companies into Ideal Customer Profile (ICP) tiers based on firmographic data (industry + employee count). Creates a custom property via API and 4 classification workflows in HubSpot UI.","create-icp-tiers",{"claudeCode":12},"SKILL.md frontmatter at skills/create-icp-tiers/SKILL.md",[524,525,526,527],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"path":427,"priority":423},{"basePath":529,"description":530,"displayName":531,"installMethods":532,"rationale":533,"selectedPaths":534,"source":338,"sourceLanguage":18,"type":257},"skills/create-segment-lists","Create business segment lists in HubSpot for customers, partners, competitors, employees, ICP tiers, and industries. Enables segment-based targeting, suppression, and analytics.","create-segment-lists",{"claudeCode":12},"SKILL.md frontmatter at skills/create-segment-lists/SKILL.md",[535],{"path":420,"priority":332},{"basePath":537,"description":538,"displayName":539,"installMethods":540,"rationale":541,"selectedPaths":542,"source":338,"sourceLanguage":18,"type":257},"skills/delete-no-email-contacts","Delete contacts with no email address from a HubSpot CRM instance. These contacts cannot receive any communication and inflate billing. Fully automated via the HubSpot CRM Search and Batch Archive APIs.\n","delete-no-email-contacts",{"claudeCode":12},"SKILL.md frontmatter at skills/delete-no-email-contacts/SKILL.md",[543,544,545,546],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"path":427,"priority":423},{"basePath":548,"description":549,"displayName":550,"installMethods":551,"rationale":552,"selectedPaths":553,"source":338,"sourceLanguage":18,"type":257},"skills/engagement-suppression-workflow","Build a two-tier sunset workflow that re-engages dormant contacts before suppressing them. Tier 1 triggers a re-engagement campaign after a configurable inactivity window. Tier 2 suppresses contacts that fail to re-engage within a configurable re-engagement window.","engagement-suppression-workflow",{"claudeCode":12},"SKILL.md frontmatter at skills/engagement-suppression-workflow/SKILL.md",[554],{"path":420,"priority":332},{"basePath":556,"description":557,"displayName":558,"installMethods":559,"rationale":560,"selectedPaths":561,"source":338,"sourceLanguage":18,"type":257},"skills/enrich-company-name","Populate missing contact company name fields from associated company records using a HubSpot workflow with optional API backfill. Ensures contacts inherit their company name for segmentation, personalization, and ICP classification.","enrich-company-name",{"claudeCode":12},"SKILL.md frontmatter at skills/enrich-company-name/SKILL.md",[562,563,564],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"basePath":566,"description":567,"displayName":568,"installMethods":569,"rationale":570,"selectedPaths":571,"source":338,"sourceLanguage":18,"type":257},"skills/enrich-industry","Backfill contact-level industry from associated company records using a HubSpot workflow. Enables industry-based segmentation for targeted campaigns aligned with ICP verticals.","enrich-industry",{"claudeCode":12},"SKILL.md frontmatter at skills/enrich-industry/SKILL.md",[572,573,574],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"basePath":576,"description":577,"displayName":578,"installMethods":579,"rationale":580,"selectedPaths":581,"source":338,"sourceLanguage":18,"type":257},"skills/fix-lifecycle-stages","Ensure all contacts and companies have appropriate lifecycle stages. Backfills missing stages via API, fixes records stuck at disallowed stages, and creates prevention workflows to stop future gaps.","fix-lifecycle-stages",{"claudeCode":12},"SKILL.md frontmatter at skills/fix-lifecycle-stages/SKILL.md",[582,583,584,585],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"path":427,"priority":423},{"basePath":587,"description":588,"displayName":589,"installMethods":590,"rationale":591,"selectedPaths":592,"source":338,"sourceLanguage":18,"type":257},"skills/hubspot-audit","Run a comprehensive HubSpot CRM database audit. Analyzes contacts, companies, deals, engagement, data quality, and deliverability. Use when starting a CRM cleanup, onboarding a new client, or performing quarterly health checks.","hubspot-audit",{"claudeCode":12},"SKILL.md frontmatter at skills/hubspot-audit/SKILL.md",[593],{"path":420,"priority":332},{"basePath":595,"description":596,"displayName":597,"installMethods":598,"rationale":599,"selectedPaths":600,"source":338,"sourceLanguage":18,"type":257},"skills/hubspot-implementation-plan","Generate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Use after running /hubspot-audit.","hubspot-implementation-plan",{"claudeCode":12},"SKILL.md frontmatter at skills/hubspot-implementation-plan/SKILL.md",[601],{"path":420,"priority":332},{"basePath":603,"description":604,"displayName":605,"installMethods":606,"rationale":607,"selectedPaths":608,"source":338,"sourceLanguage":18,"type":257},"skills/lifecycle-progression-workflow","Build workflows to automate contact progression through the sales funnel: Lead to MQL to SQL to Opportunity to Customer. Each transition is triggered by a specific event (score threshold, meeting booked, deal created, deal won).","lifecycle-progression-workflow",{"claudeCode":12},"SKILL.md frontmatter at skills/lifecycle-progression-workflow/SKILL.md",[609],{"path":420,"priority":332},{"basePath":611,"description":612,"displayName":613,"installMethods":614,"rationale":615,"selectedPaths":616,"source":338,"sourceLanguage":18,"type":257},"skills/merge-duplicate-companies","Identify duplicate company records by domain and name, export audit CSVs for review, and guide merging. API for discovery, third-party tools or manual UI for merging (HubSpot has no bulk merge API).\n","merge-duplicate-companies",{"claudeCode":12},"SKILL.md frontmatter at skills/merge-duplicate-companies/SKILL.md",[617,618],{"path":420,"priority":332},{"path":425,"priority":423},{"basePath":620,"description":621,"displayName":622,"installMethods":623,"rationale":624,"selectedPaths":625,"source":338,"sourceLanguage":18,"type":257},"skills/new-contact-hygiene-workflow","Build a HubSpot workflow that auto-enriches and stages new contacts upon creation. Sets lifecycle stage, copies company name and industry from associated company, and branches on completeness. Must be built manually in the HubSpot UI due to API limitations.","new-contact-hygiene-workflow",{"claudeCode":12},"SKILL.md frontmatter at skills/new-contact-hygiene-workflow/SKILL.md",[626],{"path":420,"priority":332},{"basePath":628,"description":629,"displayName":630,"installMethods":631,"rationale":632,"selectedPaths":633,"source":338,"sourceLanguage":18,"type":257},"skills/quarterly-database-cleanup","Run a comprehensive quarterly CRM audit covering list health, bounce monitoring, data quality, scoring calibration, engagement metrics, and property cleanup. Produces a health report with quarter-over-quarter trend comparison.","quarterly-database-cleanup",{"claudeCode":12},"SKILL.md frontmatter at skills/quarterly-database-cleanup/SKILL.md",[634],{"path":420,"priority":332},{"basePath":636,"description":637,"displayName":638,"installMethods":639,"rationale":640,"selectedPaths":641,"source":338,"sourceLanguage":18,"type":257},"skills/reassign-deactivated-owners","Reassign contacts and companies from deactivated team members to active owners. Fully automated via the HubSpot Owners API and Batch Update API. Includes territory analysis for informed reassignment decisions.\n","reassign-deactivated-owners",{"claudeCode":12},"SKILL.md frontmatter at skills/reassign-deactivated-owners/SKILL.md",[642,643,644,645],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"path":427,"priority":423},{"basePath":647,"description":648,"displayName":649,"installMethods":650,"rationale":651,"selectedPaths":652,"source":338,"sourceLanguage":18,"type":257},"skills/review-bounced-contacts","Weekly manual review of contacts with 3+ bounce events. Decide whether to delete or attempt recovery for each flagged contact. Prevents over-suppression while removing truly bad data.","review-bounced-contacts",{"claudeCode":12},"SKILL.md frontmatter at skills/review-bounced-contacts/SKILL.md",[653],{"path":420,"priority":332},{"basePath":655,"description":656,"displayName":657,"installMethods":658,"rationale":659,"selectedPaths":660,"source":338,"sourceLanguage":18,"type":257},"skills/standardize-geo-values","Convert inconsistent country and state/region formats to standardized values across contacts and companies. Ensures geographic segmentation works reliably.","standardize-geo-values",{"claudeCode":12},"SKILL.md frontmatter at skills/standardize-geo-values/SKILL.md",[661,662,663,664],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"path":427,"priority":423},{"basePath":666,"description":667,"displayName":668,"installMethods":669,"rationale":670,"selectedPaths":671,"source":338,"sourceLanguage":18,"type":257},"skills/suppress-ghost-contacts","Identify and suppress ghost contacts who received marketing emails but never opened any. These contacts destroy sender reputation and deliverability. Hybrid approach: API for discovery, manual UI for suppression.\n","suppress-ghost-contacts",{"claudeCode":12},"SKILL.md frontmatter at skills/suppress-ghost-contacts/SKILL.md",[672,673,674],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"basePath":254,"description":10,"displayName":13,"installMethods":676,"rationale":677,"selectedPaths":678,"source":338,"sourceLanguage":18,"type":257},{"claudeCode":12},"SKILL.md frontmatter at skills/suppress-global-unsubscribes/SKILL.md",[679,680,681],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"basePath":683,"description":684,"displayName":685,"installMethods":686,"rationale":687,"selectedPaths":688,"source":338,"sourceLanguage":18,"type":257},"skills/suppress-hard-bounced","Identify and suppress hard-bounced contacts to protect email sender reputation. Hybrid approach: API for discovery and audit, manual UI for suppression (hs_marketable_status is read-only via API).\n","suppress-hard-bounced",{"claudeCode":12},"SKILL.md frontmatter at skills/suppress-hard-bounced/SKILL.md",[689,690,691],{"path":420,"priority":332},{"path":422,"priority":423},{"path":425,"priority":423},{"basePath":693,"description":694,"displayName":695,"installMethods":696,"rationale":697,"selectedPaths":698,"source":338,"sourceLanguage":18,"type":257},"skills/weekly-cleanup-routine","A lightweight 5-minute weekly health check covering bounce monitoring, new contact quality, workflow health, list growth trends, and data quality sampling. Quick early warning system, not a comprehensive audit.","weekly-cleanup-routine",{"claudeCode":12},"SKILL.md frontmatter at skills/weekly-cleanup-routine/SKILL.md",[699],{"path":420,"priority":332},{"sources":701},[702],"manual",{"closedIssues90d":243,"description":704,"forks":244,"license":249,"openIssues90d":8,"pushedAt":246,"readmeSize":241,"stars":247,"topics":705},"32 Claude Code skills for auditing, cleaning, enriching, and automating your HubSpot CRM",[],{"classifiedAt":707,"discoverAt":708,"extractAt":709,"githubAt":709,"updatedAt":707},1778698143787,1778698139523,1778698141911,[226,224,223,225,222,227],{"evaluatedAt":252,"extractAt":299,"updatedAt":252},[],[714,732,749,764,790,807],{"_creationTime":715,"_id":716,"community":717,"display":718,"identity":720,"providers":721,"relations":728,"tags":729,"workflow":730},1778698144006.224,"k17agbyx7wnnh9238dqj641dns86nf82",{"reviewCount":8},{"description":604,"installMethods":719,"name":605,"sourceUrl":14},{"claudeCode":12},{"basePath":603,"githubOwner":255,"githubRepo":256,"locale":18,"slug":605,"type":257},{"evaluate":722,"extract":727},{"promptVersionExtension":215,"promptVersionScoring":216,"score":723,"tags":724,"targetMarket":228,"tier":307},100,[226,725,223,726,222],"sales","workflows",{"commitSha":290},{"parentExtensionId":261,"repoId":295},[226,223,222,725,726],{"evaluatedAt":731,"extractAt":299,"updatedAt":731},1778698526315,{"_creationTime":733,"_id":734,"community":735,"display":736,"identity":738,"providers":739,"relations":745,"tags":746,"workflow":747},1778698144006.2253,"k175q9vhdtjhmdnj5sfg0js0y186m41d",{"reviewCount":8},{"description":648,"installMethods":737,"name":649,"sourceUrl":14},{"claudeCode":12},{"basePath":647,"githubOwner":255,"githubRepo":256,"locale":18,"slug":649,"type":257},{"evaluate":740,"extract":744},{"promptVersionExtension":215,"promptVersionScoring":216,"score":741,"tags":742,"targetMarket":228,"tier":307},98,[222,223,225,743,226],"contact-management",{"commitSha":290},{"parentExtensionId":261,"repoId":295},[226,743,223,225,222],{"evaluatedAt":748,"extractAt":299,"updatedAt":748},1778698625452,{"_creationTime":750,"_id":751,"community":752,"display":753,"identity":755,"providers":756,"relations":760,"tags":761,"workflow":762},1778698144006.2224,"k174p9a47572wf9wcfggbjyrm586m3rq",{"reviewCount":8},{"description":538,"installMethods":754,"name":539,"sourceUrl":14},{"claudeCode":12},{"basePath":537,"githubOwner":255,"githubRepo":256,"locale":18,"slug":539,"type":257},{"evaluate":757,"extract":759},{"promptVersionExtension":215,"promptVersionScoring":216,"score":741,"tags":758,"targetMarket":228,"tier":307},[222,223,225,226,227],{"commitSha":290},{"parentExtensionId":261,"repoId":295},[226,223,225,222,227],{"evaluatedAt":763,"extractAt":299,"updatedAt":763},1778698421190,{"_creationTime":765,"_id":766,"community":767,"display":768,"identity":774,"providers":777,"relations":784,"tags":786,"workflow":787},1778696923757.7725,"k17c4m9c7dd4039yczkzej1wrs86n3pk",{"reviewCount":8},{"description":769,"installMethods":770,"name":772,"sourceUrl":773},"Master skill for legal teams using Claude. Loads the right reference for the user's question (privilege configuration, MCP hardening, verification, long documents, practice-area patterns, skill authoring) and routes to specialized starter skills (NDA triage, version diff, meeting brief, citation verification, status synthesis). Auto-invokes when the user mentions legal work, contracts, redlines, NDAs, privilege, attorney-client, court filings, depositions, regulatory compliance, or asks how to set up Claude for a law firm or in-house legal team.",{"claudeCode":771},"sboghossian/master-claude-for-legal","Master Claude for Legal","https://github.com/sboghossian/master-claude-for-legal",{"basePath":269,"githubOwner":775,"githubRepo":776,"locale":18,"slug":776,"type":257},"sboghossian","master-claude-for-legal",{"evaluate":778,"extract":783},{"promptVersionExtension":215,"promptVersionScoring":216,"score":723,"tags":779,"targetMarket":228,"tier":307},[780,781,226,224,782],"legal","llm-ops","documentation",{"commitSha":290,"license":249},{"repoId":785},"kd72fmh49vwat89ksfnb322tbh86nazp",[226,224,782,780,781],{"evaluatedAt":788,"extractAt":789,"updatedAt":788},1778696937293,1778696923757,{"_creationTime":791,"_id":792,"community":793,"display":794,"identity":796,"providers":797,"relations":803,"tags":804,"workflow":805},1778698144006.2202,"k172517ana4f5vj79mb22xzwsx86mksv",{"reviewCount":8},{"description":463,"installMethods":795,"name":464,"sourceUrl":14},{"claudeCode":12},{"basePath":462,"githubOwner":255,"githubRepo":256,"locale":18,"slug":464,"type":257},{"evaluate":798,"extract":802},{"promptVersionExtension":215,"promptVersionScoring":216,"score":723,"tags":799,"targetMarket":228,"tier":307},[222,223,800,801,305],"maintenance","reporting",{"commitSha":290},{"parentExtensionId":261,"repoId":295},[305,223,222,800,801],{"evaluatedAt":806,"extractAt":299,"updatedAt":806},1778698268281,{"_creationTime":808,"_id":809,"community":810,"display":811,"identity":813,"providers":814,"relations":819,"tags":820,"workflow":821},1778698144006.225,"k17bfemb4zmcjh67bsamr26c0x86mpbn",{"reviewCount":8},{"description":637,"installMethods":812,"name":638,"sourceUrl":14},{"claudeCode":12},{"basePath":636,"githubOwner":255,"githubRepo":256,"locale":18,"slug":638,"type":257},{"evaluate":815,"extract":818},{"promptVersionExtension":215,"promptVersionScoring":216,"score":302,"tags":816,"targetMarket":228,"tier":307},[222,223,226,817,287],"data-management",{"commitSha":290},{"parentExtensionId":261,"repoId":295},[287,226,223,817,222],{"evaluatedAt":822,"extractAt":299,"updatedAt":822},1778698590503]