[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-TomGranot-suppress-ghost-contacts-zh-CN":3,"guides-for-TomGranot-suppress-ghost-contacts":692,"similar-k170h3fppcmy5276sq6qv6x6w986n4bm-zh-CN":693},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":234,"isFallback":239,"parentExtension":240,"providers":295,"relations":299,"repo":300,"tags":690,"workflow":691},1778698144006.2258,"k170h3fppcmy5276sq6qv6x6w986n4bm",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"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",{"claudeCode":12},"TomGranot/hubspot-admin-skills","suppress-ghost-contacts","https://github.com/TomGranot/hubspot-admin-skills",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":216,"workflow":232},1778698655875.0266,"kn742re93hvwdhr7xwtpmdpbxh86ncqb","en",{"checks":20,"evaluatedAt":186,"extensionSummary":187,"features":188,"nonGoals":194,"promptVersionExtension":198,"promptVersionScoring":199,"purpose":200,"rationale":201,"score":202,"summary":203,"tags":204,"targetMarket":210,"tier":211,"useCases":212},[21,26,29,32,36,39,43,46,50,54,57,61,65,68,72,75,78,81,84,87,90,93,97,101,105,109,112,116,119,123,126,129,132,135,138,141,145,149,152,156,160,163,166,170,173,176,179,183],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly identifies the problem of 'ghost contacts' who receive marketing emails but never open them, directly impacting sender reputation and deliverability.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill offers a hybrid approach using API for discovery and manual UI for suppression, addressing a specific CRM administration task beyond basic prompting.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill covers the complete lifecycle of identifying, auditing, and suppressing ghost contacts, including necessary prerequisites and safety mechanisms.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill focuses solely on identifying and suppressing ghost contacts within HubSpot, adhering to a single responsibility.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the skill's functionality of identifying and suppressing ghost contacts through a hybrid API/UI approach.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Precise Purpose","The purpose clearly defines the problem (ghost contacts), the artifact (HubSpot contacts), the action (suppress), and the trigger conditions (delivered > 0, never opened/bounced).",{"category":40,"check":44,"severity":24,"summary":45},"Concise Frontmatter","The frontmatter is concise, self-contained, and effectively summarizes the core capability and its context within HubSpot CRM.",{"category":47,"check":48,"severity":24,"summary":49},"Documentation","Configuration & parameter reference","Prerequisites, including token scopes and Python version, are clearly documented. Key constraints like the null property for 'never opened' are explicitly stated with code examples.",{"category":33,"check":51,"severity":52,"summary":53},"Tool naming","not_applicable","This skill does not expose tools in the traditional sense; it's a script-driven process executed via Claude Code. Therefore, tool naming checks are not applicable.",{"category":33,"check":55,"severity":24,"summary":56},"Minimal I/O surface","The Python scripts focus on specific API interactions and file operations, requesting only necessary data and returning documented outputs.",{"category":58,"check":59,"severity":24,"summary":60},"License","License usability","The license is MIT, declared in the LICENSE file and frontmatter, allowing for permissive use.",{"category":62,"check":63,"severity":24,"summary":64},"Maintenance","Commit recency","The last commit was on March 26, 2026, well within the last 90 days.",{"category":62,"check":66,"severity":24,"summary":67},"Dependency Management","Dependencies (`requests`, `python-dotenv`) are managed via `uv` and declared in the script headers, indicating suitable measures for updates.",{"category":69,"check":70,"severity":24,"summary":71},"Security","Secret Management","The HubSpot access token is loaded from an environment variable (`.env` file) and is not hardcoded or exposed in logs.",{"category":69,"check":73,"severity":24,"summary":74},"Injection","The skill primarily interacts with the HubSpot API and processes data locally; it does not fetch or execute arbitrary third-party code.",{"category":69,"check":76,"severity":24,"summary":77},"Transitive Supply-Chain Grenades","The skill uses standard Python libraries and makes direct API calls; it does not fetch remote scripts or markdown for execution.",{"category":69,"check":79,"severity":24,"summary":80},"Sandbox Isolation","The Python scripts operate within the expected scope, interacting with the HubSpot API and writing local CSV files. No file system operations outside this scope are apparent.",{"category":69,"check":82,"severity":24,"summary":83},"Sandbox escape primitives","No detached-process spawns or retry loops around denied tool calls are present in the scripts.",{"category":69,"check":85,"severity":24,"summary":86},"Data Exfiltration","The skill only reads a HubSpot API token from environment variables and interacts with the HubSpot API. No confidential data is exfiltrated to unintended third parties.",{"category":69,"check":88,"severity":24,"summary":89},"Hidden Text Tricks","The bundled code and markdown content appear free of hidden-steering tricks or obfuscation.",{"category":69,"check":91,"severity":24,"summary":92},"Opaque code execution","The Python scripts are provided as plain, readable source code and do not use obfuscation techniques like base64 decoding or runtime fetching.",{"category":94,"check":95,"severity":24,"summary":96},"Portability","Structural Assumption","The script correctly uses relative paths for loading the `.env` file and writing the output CSV, and the HubSpot API interaction is platform-agnostic.",{"category":98,"check":99,"severity":24,"summary":100},"Trust","Issues Attention","There were 0 issues opened and 1 issue closed in the last 90 days, indicating good engagement.",{"category":102,"check":103,"severity":24,"summary":104},"Versioning","Release Management","A meaningful version ('1.0') is declared in the SKILL.md frontmatter.",{"category":106,"check":107,"severity":24,"summary":108},"Execution","Validation","The Python scripts handle API responses and file operations, with basic error checking (`raise_for_status`) and structured data handling.",{"category":69,"check":110,"severity":24,"summary":111},"Unguarded Destructive Operations","The skill's primary action is setting contact marketing status to non-marketing, which is a non-destructive operation guided by HubSpot UI steps and API list creation.",{"category":113,"check":114,"severity":24,"summary":115},"Code Execution","Error Handling","The Python scripts include error handling via `raise_for_status` for API calls and basic checks for file existence. They exit non-zero on critical errors.",{"category":113,"check":117,"severity":24,"summary":118},"Logging","The scripts provide informative print statements detailing their progress and findings, serving as an audit trail.",{"category":120,"check":121,"severity":52,"summary":122},"Compliance","GDPR","The skill operates on HubSpot CRM data, but does not inherently process personal data beyond standard contact identifiers and marketing status.",{"category":120,"check":124,"severity":24,"summary":125},"Target market","The skill interacts with the HubSpot API and is not regionally restricted; `targetMarket` is 'global'.",{"category":94,"check":127,"severity":24,"summary":128},"Runtime stability","The Python scripts rely on standard libraries and the HubSpot API, making them platform-agnostic as long as Python 3.10+ is available.",{"category":47,"check":130,"severity":24,"summary":131},"README","The README provides a comprehensive overview of the HubSpot Admin Skills collection, including installation, audit, planning, and skill execution.",{"category":33,"check":133,"severity":52,"summary":134},"Tool surface size","This is a single skill with associated scripts, not a collection of tools, making tool surface size checks not applicable.",{"category":40,"check":136,"severity":52,"summary":137},"Overlapping near-synonym tools","The skill does not expose multiple tools with overlapping functionality; it's a self-contained process.",{"category":47,"check":139,"severity":24,"summary":140},"Phantom features","All advertised features related to ghost contact suppression are implemented in the SKILL.md and associated scripts.",{"category":142,"check":143,"severity":24,"summary":144},"Install","Installation instruction","The README provides clear installation instructions via `uv` and a `.env` file setup for the HubSpot token.",{"category":146,"check":147,"severity":24,"summary":148},"Errors","Actionable error messages","API calls include `raise_for_status`, and print statements provide context on script progress and potential issues.",{"category":106,"check":150,"severity":24,"summary":151},"Pinned dependencies","Dependencies are declared with version specifiers in script headers (`requires-python`, `dependencies`), ensuring reproducible environments.",{"category":33,"check":153,"severity":154,"summary":155},"Dry-run preview","info","While the 'Before State' script provides a detailed audit and CSV export, there isn't a specific `--dry-run` flag for the suppression step itself, which is primarily a manual UI action.",{"category":157,"check":158,"severity":52,"summary":159},"Protocol","Idempotent retry & timeouts","The skill interacts with the HubSpot API but does not involve complex state-changing operations requiring custom idempotency logic or hard timeouts beyond standard HTTP request handling.",{"category":120,"check":161,"severity":24,"summary":162},"Telemetry opt-in","The script does not emit any telemetry.",{"category":47,"check":164,"severity":24,"summary":165},"Progressive Disclosure","The SKILL.md is concise, and complex scripts are provided in separate files, demonstrating progressive disclosure.",{"category":167,"check":168,"severity":52,"summary":169},"Context","Forked exploration","This skill is not primarily an exploration or audit skill; it's a direct execution process, so `context: fork` is not applicable.",{"category":22,"check":171,"severity":24,"summary":172},"Usage examples","The SKILL.md provides clear code examples for the 'Before State' and 'Execute' stages, demonstrating API calls and list creation.",{"category":22,"check":174,"severity":24,"summary":175},"Edge cases","The SKILL.md explicitly addresses critical edge cases like the 'never opened' property being null, the 10K API pagination limit, and overlap with other suppression processes.",{"category":113,"check":177,"severity":52,"summary":178},"Tool Fallback","This skill does not rely on external MCP servers or tools that would require fallbacks.",{"category":180,"check":181,"severity":24,"summary":182},"Safety","Halt on unexpected state","The 'Before State' script provides a comprehensive audit, and the 'After State' script compares results, allowing users to identify unexpected outcomes before manual suppression.",{"category":94,"check":184,"severity":52,"summary":185},"Cross-skill coupling","This skill operates independently on HubSpot data and does not rely on or interact with other specific skills in the collection.",1778698655541,"This skill identifies 'ghost contacts' in HubSpot CRM (those who have received marketing emails but never opened any) using API calls. It provides a detailed audit, creates HubSpot dynamic lists for suppression, and guides users through the manual UI suppression process, while also offering Python scripts for before and after state verification.",[189,190,191,192,193],"Identifies ghost contacts based on delivery and open/bounce status","Provides detailed audit report with delivery volume breakdown","Creates HubSpot dynamic lists for suppression","Offers Python scripts for before/after state verification","Highlights critical API nuances (e.g., null vs. zero properties)",[195,196,197],"Automatically suppressing contacts via API (HubSpot marketable status is read-only).","Deleting contacts from HubSpot.","Sending emails to identified ghost contacts.","3.0.0","4.4.0","Improve email deliverability and sender reputation by identifying and suppressing 'ghost contacts' who receive marketing emails but never engage.","All checks passed, with one info finding for lack of a dry-run flag on a primarily manual UI step. Documentation and code quality are excellent.",95,"A well-documented and robust skill for identifying and suppressing low-engagement contacts in HubSpot.",[205,206,207,208,209],"hubspot","crm","email-deliverability","contact-hygiene","data-quality","global","verified",[213,214,215],"Use when sender reputation and email deliverability are declining.","Use to clean up inactive contacts that negatively impact engagement metrics.","Use before a major re-engagement campaign to remove unengaged segments.",{"codeQuality":217,"collectedAt":219,"documentation":220,"maintenance":223,"security":229,"testCoverage":231},{"hasLockfile":218},false,1778698641841,{"descriptionLength":221,"readmeSize":222},213,10597,{"closedIssues90d":224,"forks":225,"hasChangelog":218,"manifestVersion":226,"openIssues90d":8,"pushedAt":227,"stars":228},1,4,"1.0",1774540543000,21,{"hasNpmPackage":218,"license":230,"smitheryVerified":218},"MIT",{"hasCi":218,"hasTests":218},{"updatedAt":233},1778698655875,{"basePath":235,"githubOwner":236,"githubRepo":237,"locale":18,"slug":13,"type":238},"skills/suppress-ghost-contacts","TomGranot","hubspot-admin-skills","skill",true,{"_creationTime":241,"_id":242,"community":243,"display":244,"identity":249,"parentExtension":252,"providers":282,"relations":291,"tags":292,"workflow":293},1778698144006.2188,"k17c3p8t0thc73pbc8egtz31y986mwr0",{"reviewCount":8},{"description":245,"installMethods":246,"name":248,"sourceUrl":14},"Complete HubSpot CRM administration toolkit — audit, clean, enrich, segment, automate, and maintain your database",{"claudeCode":247},"hubspot-admin","HubSpot Admin Skills",{"basePath":250,"githubOwner":236,"githubRepo":237,"locale":18,"slug":237,"type":251},"","plugin",{"_creationTime":253,"_id":254,"community":255,"display":256,"identity":259,"providers":261,"relations":276,"tags":278,"workflow":279},1778698144006.2185,"k17dn1yxv80dbqc9xbkwfp9t6186nkhk",{"reviewCount":8},{"description":257,"installMethods":258,"name":237,"sourceUrl":14},"30+ Claude Code skills for auditing, cleaning, enriching, and automating HubSpot CRM",{"claudeCode":12},{"basePath":250,"githubOwner":236,"githubRepo":237,"locale":18,"slug":237,"type":260},"marketplace",{"evaluate":262,"extract":271},{"promptVersionExtension":263,"promptVersionScoring":199,"score":264,"tags":265,"targetMarket":210,"tier":270},"3.1.0",79,[205,206,266,267,268,269],"automation","data-cleaning","auditing","administration","community",{"commitSha":272,"marketplace":273,"plugin":274},"HEAD",{"name":237,"pluginCount":224},{"mcpCount":8,"provider":275,"skillCount":8},"classify",{"repoId":277},"kd75kpec7arn6z2wz641vfaj8n86nab6",[269,268,266,206,267,205],{"evaluatedAt":280,"extractAt":281,"updatedAt":280},1778698158552,1778698144006,{"evaluate":283,"extract":288},{"promptVersionExtension":198,"promptVersionScoring":199,"score":284,"tags":285,"targetMarket":210,"tier":211},99,[205,206,269,209,266,286,268,287],"cleanup","marketing-automation",{"commitSha":272,"license":230,"plugin":289},{"mcpCount":8,"provider":275,"skillCount":290},32,{"parentExtensionId":254,"repoId":277},[269,268,266,286,206,209,205,287],{"evaluatedAt":294,"extractAt":281,"updatedAt":294},1778698168554,{"evaluate":296,"extract":298},{"promptVersionExtension":198,"promptVersionScoring":199,"score":202,"tags":297,"targetMarket":210,"tier":211},[205,206,207,208,209],{"commitSha":272},{"parentExtensionId":242,"repoId":277},{"_creationTime":301,"_id":277,"identity":302,"providers":303,"workflow":686},1778698139523.511,{"githubOwner":236,"githubRepo":237,"sourceUrl":14},{"classify":304,"discover":680,"github":683},{"commitSha":272,"extensions":305},[306,319,392,408,416,424,432,441,449,457,465,473,481,489,497,508,516,527,535,545,555,566,574,582,590,599,607,615,626,634,645,652,662,672],{"basePath":250,"description":257,"displayName":237,"installMethods":307,"rationale":308,"selectedPaths":309,"source":318,"sourceLanguage":18,"type":260},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[310,313,315],{"path":311,"priority":312},".claude-plugin/marketplace.json","mandatory",{"path":314,"priority":312},"README.md",{"path":316,"priority":317},"LICENSE","high","rule",{"basePath":250,"description":245,"displayName":247,"installMethods":320,"rationale":321,"selectedPaths":322,"source":318,"sourceLanguage":18,"type":251},{"claudeCode":247},"plugin manifest at .claude-plugin/plugin.json",[323,325,326,327,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390],{"path":324,"priority":312},".claude-plugin/plugin.json",{"path":314,"priority":312},{"path":316,"priority":317},{"path":328,"priority":329},"skills/assign-unowned-contacts/SKILL.md","medium",{"path":331,"priority":329},"skills/backfill-geo-data/SKILL.md",{"path":333,"priority":329},"skills/bounce-monitoring-workflow/SKILL.md",{"path":335,"priority":329},"skills/build-lead-scoring/SKILL.md",{"path":337,"priority":329},"skills/build-smart-lists/SKILL.md",{"path":339,"priority":329},"skills/cleanup-dashboards/SKILL.md",{"path":341,"priority":329},"skills/cleanup-deals/SKILL.md",{"path":343,"priority":329},"skills/cleanup-forms/SKILL.md",{"path":345,"priority":329},"skills/cleanup-lead-owners/SKILL.md",{"path":347,"priority":329},"skills/cleanup-lists/SKILL.md",{"path":349,"priority":329},"skills/cleanup-properties/SKILL.md",{"path":351,"priority":329},"skills/cleanup-workflows/SKILL.md",{"path":353,"priority":329},"skills/create-icp-tiers/SKILL.md",{"path":355,"priority":329},"skills/create-segment-lists/SKILL.md",{"path":357,"priority":329},"skills/delete-no-email-contacts/SKILL.md",{"path":359,"priority":329},"skills/engagement-suppression-workflow/SKILL.md",{"path":361,"priority":329},"skills/enrich-company-name/SKILL.md",{"path":363,"priority":329},"skills/enrich-industry/SKILL.md",{"path":365,"priority":329},"skills/fix-lifecycle-stages/SKILL.md",{"path":367,"priority":329},"skills/hubspot-audit/SKILL.md",{"path":369,"priority":329},"skills/hubspot-implementation-plan/SKILL.md",{"path":371,"priority":329},"skills/lifecycle-progression-workflow/SKILL.md",{"path":373,"priority":329},"skills/merge-duplicate-companies/SKILL.md",{"path":375,"priority":329},"skills/new-contact-hygiene-workflow/SKILL.md",{"path":377,"priority":329},"skills/quarterly-database-cleanup/SKILL.md",{"path":379,"priority":329},"skills/reassign-deactivated-owners/SKILL.md",{"path":381,"priority":329},"skills/review-bounced-contacts/SKILL.md",{"path":383,"priority":329},"skills/standardize-geo-values/SKILL.md",{"path":385,"priority":329},"skills/suppress-ghost-contacts/SKILL.md",{"path":387,"priority":329},"skills/suppress-global-unsubscribes/SKILL.md",{"path":389,"priority":329},"skills/suppress-hard-bounced/SKILL.md",{"path":391,"priority":329},"skills/weekly-cleanup-routine/SKILL.md",{"basePath":393,"description":394,"displayName":395,"installMethods":396,"rationale":397,"selectedPaths":398,"source":318,"sourceLanguage":18,"type":238},"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",[399,401,404,406],{"path":400,"priority":312},"SKILL.md",{"path":402,"priority":403},"scripts/after.py","low",{"path":405,"priority":403},"scripts/before.py",{"path":407,"priority":403},"scripts/execute.py",{"basePath":409,"description":410,"displayName":411,"installMethods":412,"rationale":413,"selectedPaths":414,"source":318,"sourceLanguage":18,"type":238},"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",[415],{"path":400,"priority":312},{"basePath":417,"description":418,"displayName":419,"installMethods":420,"rationale":421,"selectedPaths":422,"source":318,"sourceLanguage":18,"type":238},"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",[423],{"path":400,"priority":312},{"basePath":425,"description":426,"displayName":427,"installMethods":428,"rationale":429,"selectedPaths":430,"source":318,"sourceLanguage":18,"type":238},"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",[431],{"path":400,"priority":312},{"basePath":433,"description":434,"displayName":435,"installMethods":436,"rationale":437,"selectedPaths":438,"source":318,"sourceLanguage":18,"type":238},"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",[439,440],{"path":400,"priority":312},{"path":407,"priority":403},{"basePath":442,"description":443,"displayName":444,"installMethods":445,"rationale":446,"selectedPaths":447,"source":318,"sourceLanguage":18,"type":238},"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",[448],{"path":400,"priority":312},{"basePath":450,"description":451,"displayName":452,"installMethods":453,"rationale":454,"selectedPaths":455,"source":318,"sourceLanguage":18,"type":238},"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",[456],{"path":400,"priority":312},{"basePath":458,"description":459,"displayName":460,"installMethods":461,"rationale":462,"selectedPaths":463,"source":318,"sourceLanguage":18,"type":238},"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",[464],{"path":400,"priority":312},{"basePath":466,"description":467,"displayName":468,"installMethods":469,"rationale":470,"selectedPaths":471,"source":318,"sourceLanguage":18,"type":238},"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",[472],{"path":400,"priority":312},{"basePath":474,"description":475,"displayName":476,"installMethods":477,"rationale":478,"selectedPaths":479,"source":318,"sourceLanguage":18,"type":238},"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",[480],{"path":400,"priority":312},{"basePath":482,"description":483,"displayName":484,"installMethods":485,"rationale":486,"selectedPaths":487,"source":318,"sourceLanguage":18,"type":238},"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",[488],{"path":400,"priority":312},{"basePath":490,"description":491,"displayName":492,"installMethods":493,"rationale":494,"selectedPaths":495,"source":318,"sourceLanguage":18,"type":238},"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",[496],{"path":400,"priority":312},{"basePath":498,"description":499,"displayName":500,"installMethods":501,"rationale":502,"selectedPaths":503,"source":318,"sourceLanguage":18,"type":238},"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",[504,505,506,507],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"path":407,"priority":403},{"basePath":509,"description":510,"displayName":511,"installMethods":512,"rationale":513,"selectedPaths":514,"source":318,"sourceLanguage":18,"type":238},"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",[515],{"path":400,"priority":312},{"basePath":517,"description":518,"displayName":519,"installMethods":520,"rationale":521,"selectedPaths":522,"source":318,"sourceLanguage":18,"type":238},"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",[523,524,525,526],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"path":407,"priority":403},{"basePath":528,"description":529,"displayName":530,"installMethods":531,"rationale":532,"selectedPaths":533,"source":318,"sourceLanguage":18,"type":238},"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",[534],{"path":400,"priority":312},{"basePath":536,"description":537,"displayName":538,"installMethods":539,"rationale":540,"selectedPaths":541,"source":318,"sourceLanguage":18,"type":238},"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",[542,543,544],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"basePath":546,"description":547,"displayName":548,"installMethods":549,"rationale":550,"selectedPaths":551,"source":318,"sourceLanguage":18,"type":238},"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",[552,553,554],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"basePath":556,"description":557,"displayName":558,"installMethods":559,"rationale":560,"selectedPaths":561,"source":318,"sourceLanguage":18,"type":238},"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",[562,563,564,565],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"path":407,"priority":403},{"basePath":567,"description":568,"displayName":569,"installMethods":570,"rationale":571,"selectedPaths":572,"source":318,"sourceLanguage":18,"type":238},"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",[573],{"path":400,"priority":312},{"basePath":575,"description":576,"displayName":577,"installMethods":578,"rationale":579,"selectedPaths":580,"source":318,"sourceLanguage":18,"type":238},"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",[581],{"path":400,"priority":312},{"basePath":583,"description":584,"displayName":585,"installMethods":586,"rationale":587,"selectedPaths":588,"source":318,"sourceLanguage":18,"type":238},"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",[589],{"path":400,"priority":312},{"basePath":591,"description":592,"displayName":593,"installMethods":594,"rationale":595,"selectedPaths":596,"source":318,"sourceLanguage":18,"type":238},"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",[597,598],{"path":400,"priority":312},{"path":405,"priority":403},{"basePath":600,"description":601,"displayName":602,"installMethods":603,"rationale":604,"selectedPaths":605,"source":318,"sourceLanguage":18,"type":238},"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",[606],{"path":400,"priority":312},{"basePath":608,"description":609,"displayName":610,"installMethods":611,"rationale":612,"selectedPaths":613,"source":318,"sourceLanguage":18,"type":238},"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",[614],{"path":400,"priority":312},{"basePath":616,"description":617,"displayName":618,"installMethods":619,"rationale":620,"selectedPaths":621,"source":318,"sourceLanguage":18,"type":238},"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",[622,623,624,625],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"path":407,"priority":403},{"basePath":627,"description":628,"displayName":629,"installMethods":630,"rationale":631,"selectedPaths":632,"source":318,"sourceLanguage":18,"type":238},"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",[633],{"path":400,"priority":312},{"basePath":635,"description":636,"displayName":637,"installMethods":638,"rationale":639,"selectedPaths":640,"source":318,"sourceLanguage":18,"type":238},"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",[641,642,643,644],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"path":407,"priority":403},{"basePath":235,"description":10,"displayName":13,"installMethods":646,"rationale":647,"selectedPaths":648,"source":318,"sourceLanguage":18,"type":238},{"claudeCode":12},"SKILL.md frontmatter at skills/suppress-ghost-contacts/SKILL.md",[649,650,651],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"basePath":653,"description":654,"displayName":655,"installMethods":656,"rationale":657,"selectedPaths":658,"source":318,"sourceLanguage":18,"type":238},"skills/suppress-global-unsubscribes","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","suppress-global-unsubscribes",{"claudeCode":12},"SKILL.md frontmatter at skills/suppress-global-unsubscribes/SKILL.md",[659,660,661],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"basePath":663,"description":664,"displayName":665,"installMethods":666,"rationale":667,"selectedPaths":668,"source":318,"sourceLanguage":18,"type":238},"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",[669,670,671],{"path":400,"priority":312},{"path":402,"priority":403},{"path":405,"priority":403},{"basePath":673,"description":674,"displayName":675,"installMethods":676,"rationale":677,"selectedPaths":678,"source":318,"sourceLanguage":18,"type":238},"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",[679],{"path":400,"priority":312},{"sources":681},[682],"manual",{"closedIssues90d":224,"description":684,"forks":225,"license":230,"openIssues90d":8,"pushedAt":227,"readmeSize":222,"stars":228,"topics":685},"32 Claude Code skills for auditing, cleaning, enriching, and automating your HubSpot CRM",[],{"classifiedAt":687,"discoverAt":688,"extractAt":689,"githubAt":689,"updatedAt":687},1778698143787,1778698139523,1778698141911,[208,206,209,207,205],{"evaluatedAt":233,"extractAt":281,"updatedAt":233},[],[694,712,729,745,764,791],{"_creationTime":695,"_id":696,"community":697,"display":698,"identity":700,"providers":701,"relations":708,"tags":709,"workflow":710},1778698144006.224,"k17agbyx7wnnh9238dqj641dns86nf82",{"reviewCount":8},{"description":584,"installMethods":699,"name":585,"sourceUrl":14},{"claudeCode":12},{"basePath":583,"githubOwner":236,"githubRepo":237,"locale":18,"slug":585,"type":238},{"evaluate":702,"extract":707},{"promptVersionExtension":198,"promptVersionScoring":199,"score":703,"tags":704,"targetMarket":210,"tier":211},100,[266,705,206,706,205],"sales","workflows",{"commitSha":272},{"parentExtensionId":242,"repoId":277},[266,206,205,705,706],{"evaluatedAt":711,"extractAt":281,"updatedAt":711},1778698526315,{"_creationTime":713,"_id":714,"community":715,"display":716,"identity":718,"providers":719,"relations":725,"tags":726,"workflow":727},1778698144006.2202,"k172517ana4f5vj79mb22xzwsx86mksv",{"reviewCount":8},{"description":443,"installMethods":717,"name":444,"sourceUrl":14},{"claudeCode":12},{"basePath":442,"githubOwner":236,"githubRepo":237,"locale":18,"slug":444,"type":238},{"evaluate":720,"extract":724},{"promptVersionExtension":198,"promptVersionScoring":199,"score":703,"tags":721,"targetMarket":210,"tier":211},[205,206,722,723,286],"maintenance","reporting",{"commitSha":272},{"parentExtensionId":242,"repoId":277},[286,206,205,722,723],{"evaluatedAt":728,"extractAt":281,"updatedAt":728},1778698268281,{"_creationTime":730,"_id":731,"community":732,"display":733,"identity":735,"providers":736,"relations":741,"tags":742,"workflow":743},1778698144006.225,"k17bfemb4zmcjh67bsamr26c0x86mpbn",{"reviewCount":8},{"description":617,"installMethods":734,"name":618,"sourceUrl":14},{"claudeCode":12},{"basePath":616,"githubOwner":236,"githubRepo":237,"locale":18,"slug":618,"type":238},{"evaluate":737,"extract":740},{"promptVersionExtension":198,"promptVersionScoring":199,"score":284,"tags":738,"targetMarket":210,"tier":211},[205,206,266,739,269],"data-management",{"commitSha":272},{"parentExtensionId":242,"repoId":277},[269,266,206,739,205],{"evaluatedAt":744,"extractAt":281,"updatedAt":744},1778698590503,{"_creationTime":746,"_id":747,"community":748,"display":749,"identity":752,"providers":753,"relations":760,"tags":761,"workflow":762},1778698144006.2231,"k172hgm2mhketjz0tmptf85ms986nx8p",{"reviewCount":8},{"description":547,"installMethods":750,"name":751,"sourceUrl":14},{"claudeCode":12},"Enrich Contact Industry",{"basePath":546,"githubOwner":236,"githubRepo":237,"locale":18,"slug":548,"type":238},{"evaluate":754,"extract":759},{"promptVersionExtension":198,"promptVersionScoring":199,"score":284,"tags":755,"targetMarket":210,"tier":211},[205,206,756,266,757,758],"data-enrichment","contact-management","segmentation",{"commitSha":272,"license":230},{"parentExtensionId":242,"repoId":277},[266,757,206,756,205,758],{"evaluatedAt":763,"extractAt":281,"updatedAt":763},1778698467653,{"_creationTime":765,"_id":766,"community":767,"display":768,"identity":774,"providers":779,"relations":785,"tags":787,"workflow":788},1778688112811.7522,"k1717h1j71rgg4sw1hehtvdjm586nvrb",{"reviewCount":8},{"description":769,"installMethods":770,"name":772,"sourceUrl":773},"Audit and improve CRM data quality by identifying missing fields, inconsistent values, duplicate records, and stale data",{"claudeCode":771},"guia-matthieu/clawfu-skills","CRM Hygiene","https://github.com/guia-matthieu/clawfu-skills",{"basePath":775,"githubOwner":776,"githubRepo":777,"locale":18,"slug":778,"type":238},"skills/revops/crm-hygiene","guia-matthieu","clawfu-skills","crm-hygiene",{"evaluate":780,"extract":784},{"promptVersionExtension":198,"promptVersionScoring":199,"score":284,"tags":781,"targetMarket":210,"tier":211},[206,209,782,268,783],"revops","data-governance",{"commitSha":272,"license":230},{"repoId":786},"kd72qvzyvm658ya7pbyh5ey47h86md53",[268,206,783,209,782],{"evaluatedAt":789,"extractAt":790,"updatedAt":789},1778690432601,1778688112811,{"_creationTime":792,"_id":793,"community":794,"display":795,"identity":797,"providers":798,"relations":803,"tags":804,"workflow":805},1778698144006.2266,"k178ar72y21gtdvpcbmcmd227s86mq2d",{"reviewCount":8},{"description":674,"installMethods":796,"name":675,"sourceUrl":14},{"claudeCode":12},{"basePath":673,"githubOwner":236,"githubRepo":237,"locale":18,"slug":675,"type":238},{"evaluate":799,"extract":802},{"promptVersionExtension":198,"promptVersionScoring":199,"score":800,"tags":801,"targetMarket":210,"tier":211},98,[205,206,722,266,723],{"commitSha":272},{"parentExtensionId":242,"repoId":277},[266,206,205,722,723],{"evaluatedAt":806,"extractAt":281,"updatedAt":806},1778698703534]