[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-TomGranot-assign-unowned-contacts-zh-CN":3,"guides-for-TomGranot-assign-unowned-contacts":721,"similar-k170dshnkmnbk6jsm5mhyq2pz586m231-zh-CN":722},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":262,"isFallback":268,"parentExtension":269,"providers":324,"relations":328,"repo":329,"tags":719,"workflow":720},1778698144006.219,"k170dshnkmnbk6jsm5mhyq2pz586m231",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"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.",{"claudeCode":12},"TomGranot/hubspot-admin-skills","Assign Unowned Contacts","https://github.com/TomGranot/hubspot-admin-skills",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":244,"workflow":260},1778698185401.496,"kn7ef2c24ake486r03hn61d64d86mf96","en",{"checks":20,"evaluatedAt":202,"extensionSummary":203,"features":204,"nonGoals":209,"practices":213,"prerequisites":216,"promptVersionExtension":220,"promptVersionScoring":221,"purpose":222,"rationale":223,"score":224,"summary":225,"tags":226,"targetMarket":232,"tier":233,"useCases":234,"workflow":238},[21,26,29,32,36,39,44,49,52,55,59,63,66,70,73,76,79,82,85,88,92,96,101,105,109,112,116,119,123,127,130,133,137,140,143,146,149,152,155,159,161,163,165,167,170,173,176,179,183,186,189,192,195,199],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly states the problem of unowned marketing contacts and the impact on reporting, routing, and accountability.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill addresses a specific HubSpot CRM administration pain point by automating the assignment of unowned contacts, which is beyond standard LLM capabilities.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill provides a complete lifecycle for assigning owners, including planning, execution via UI or API, and verification steps.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill focuses solely on assigning owners to unowned marketing contacts within HubSpot CRM.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The provided description accurately reflects the skill's function of assigning owners to unowned marketing contacts.",{"category":40,"check":41,"severity":42,"summary":43},"Invocation","Scoped tools","not_applicable","This is a skill, not a tool-based extension, and does not expose individual tools.",{"category":45,"check":46,"severity":47,"summary":48},"Documentation","Configuration & parameter reference","warning","The script relies on an environment variable `HUBSPOT_TARGET_OWNER_ID` which is not explicitly documented in the SKILL.md for user configuration.",{"category":33,"check":50,"severity":42,"summary":51},"Tool naming","This is a skill and does not expose specific tools with names.",{"category":33,"check":53,"severity":42,"summary":54},"Minimal I/O surface","This is a skill and does not expose specific tools with parameters or response shapes.",{"category":56,"check":57,"severity":24,"summary":58},"License","License usability","The license is MIT, a permissive open-source license, and is clearly stated in the SKILL.md frontmatter and LICENSE file.",{"category":60,"check":61,"severity":47,"summary":62},"Maintenance","Commit recency","The last commit was 2026-03-26, over 3 months ago, suggesting potential lack of recent maintenance.",{"category":60,"check":64,"severity":24,"summary":65},"Dependency Management","The script uses pip dependencies with version pins specified in the script headers, and has a lock file implicitly through its structure.",{"category":67,"check":68,"severity":24,"summary":69},"Security","Secret Management","Secrets are loaded via environment variables (`HUBSPOT_ACCESS_TOKEN`) and not hardcoded; no secrets are echoed to stdout.",{"category":67,"check":71,"severity":24,"summary":72},"Injection","The script interacts with the HubSpot API using structured requests and does not appear to execute arbitrary code or load untrusted external data as instructions.",{"category":67,"check":74,"severity":24,"summary":75},"Transitive Supply-Chain Grenades","The script relies on committed dependencies and does not fetch external code or data at runtime.",{"category":67,"check":77,"severity":24,"summary":78},"Sandbox Isolation","The script operates within the expected API interaction boundaries and does not attempt to modify files outside its scope.",{"category":67,"check":80,"severity":24,"summary":81},"Sandbox escape primitives","No detached-process spawns or deny-retry loops were detected in the provided script.",{"category":67,"check":83,"severity":24,"summary":84},"Data Exfiltration","The script interacts with the HubSpot API for contact management and does not exfiltrate confidential data to unauthorized third parties.",{"category":67,"check":86,"severity":24,"summary":87},"Hidden Text Tricks","The bundled content is free of hidden-steering tricks and uses clean ASCII/Unicode.",{"category":89,"check":90,"severity":24,"summary":91},"Hooks","Opaque code execution","The Python script is plain, readable source code and not obfuscated or dynamically executed.",{"category":93,"check":94,"severity":24,"summary":95},"Portability","Structural Assumption","The script correctly uses relative paths for environment files and audit logs, avoiding assumptions about user project structure.",{"category":97,"check":98,"severity":99,"summary":100},"Trust","Issues Attention","info","0 issues opened and 1 closed in the last 90 days, indicating low recent activity.",{"category":102,"check":103,"severity":24,"summary":104},"Versioning","Release Management","The skill has a `version: \"1.0\"` in the frontmatter.",{"category":106,"check":107,"severity":24,"summary":108},"Execution","Pinned dependencies","Dependencies are specified with version constraints in the script headers, and lock files are implied by the structured nature of Python package management.",{"category":33,"check":110,"severity":99,"summary":111},"Dry-run preview","The skill includes before and after scripts for verification but lacks a specific dry-run flag for the main execution.",{"category":113,"check":114,"severity":47,"summary":115},"Protocol","Idempotent retry & timeouts","The script implements retries for API calls but lacks a hard per-call timeout and does not ensure idempotency for HubSpot API operations.",{"category":67,"check":117,"severity":47,"summary":118},"Unguarded Destructive Operations","While the script performs bulk updates, there is no explicit confirmation prompt before execution, and the safety threshold might be too high.",{"category":120,"check":121,"severity":24,"summary":122},"Errors","Actionable error messages","The script includes error handling for API responses, rate limiting, and checks for the target owner ID, providing informative messages.",{"category":124,"check":125,"severity":24,"summary":126},"Code Execution","Validation","Input validation is performed for the target owner ID, and API responses are checked for status codes.",{"category":124,"check":128,"severity":24,"summary":129},"Error Handling","The scripts handle API errors, rate limiting, and missing configuration, exiting with informative messages.",{"category":124,"check":131,"severity":24,"summary":132},"Logging","The script generates CSV audit trails for before and after states, providing a record of actions taken.",{"category":134,"check":135,"severity":42,"summary":136},"Compliance","GDPR","The skill operates on contact owner assignments and does not directly handle or submit personal data beyond what is necessary for CRM management.",{"category":134,"check":138,"severity":24,"summary":139},"Target market","The skill operates on HubSpot CRM data, which is globally applicable, and has no regional restrictions.",{"category":93,"check":141,"severity":24,"summary":142},"Runtime stability","The script is written in Python 3.10+ and uses standard libraries and `requests`, making it portable across POSIX-compliant systems.",{"category":45,"check":144,"severity":24,"summary":145},"README","The README provides a clear overview of the HubSpot Admin Skills, including installation and usage instructions.",{"category":33,"check":147,"severity":42,"summary":148},"Tool surface size","This is a single skill, not an extension with multiple tools or commands.",{"category":40,"check":150,"severity":42,"summary":151},"Overlapping near-synonym tools","This is a single skill and does not expose multiple tools with overlapping functionality.",{"category":45,"check":153,"severity":24,"summary":154},"Phantom features","All advertised features related to assigning unowned contacts are implemented in the SKILL.md and associated scripts.",{"category":156,"check":157,"severity":47,"summary":158},"Install","Installation instruction","The README provides installation instructions for the plugin marketplace but lacks specific copy-paste invocation examples for this individual skill. The `SKILL.md` mentions prerequisites and scripts but not a direct execution command.",{"category":120,"check":121,"severity":24,"summary":160},"Error messages for API calls, missing configuration, and safety checks are informative and suggest next steps or documentation.",{"category":106,"check":107,"severity":24,"summary":162},"Dependencies are pinned in the script headers (`requires-python`, `dependencies`).",{"category":33,"check":110,"severity":99,"summary":164},"The skill includes before and after verification scripts but lacks a dedicated dry-run flag for the main execution.",{"category":113,"check":114,"severity":47,"summary":166},"The script implements retries for API calls but lacks a hard per-call timeout and does not guarantee idempotency for HubSpot API operations.",{"category":67,"check":168,"severity":24,"summary":169},"Telemetery opt-in","The skill does not appear to emit any telemetry by default.",{"category":40,"check":171,"severity":24,"summary":172},"Precise Purpose","The description clearly defines the artifact (marketing contacts without owners) and the user intent (assign an owner for accountability and reporting).",{"category":40,"check":174,"severity":24,"summary":175},"Concise Frontmatter","The frontmatter is concise and accurately summarizes the skill's core capability.",{"category":45,"check":177,"severity":24,"summary":178},"Concise Body","The SKILL.md is well-structured and under 500 lines, deferring script details to separate files.",{"category":180,"check":181,"severity":24,"summary":182},"Context","Progressive Disclosure","The SKILL.md outlines the plan and delegates script execution details to separate files (`before.py`, `execute.py`, `after.py`).",{"category":180,"check":184,"severity":42,"summary":185},"Forked exploration","The skill performs a direct data manipulation task and does not involve deep exploration or code review that would warrant `context: fork`.",{"category":22,"check":187,"severity":47,"summary":188},"Usage examples","While the SKILL.md provides Python scripts for execution and notes UI steps, it lacks concrete, copy-pasteable end-to-end examples for directly invoking the skill or its scripts with specific inputs and outputs.",{"category":22,"check":190,"severity":24,"summary":191},"Edge cases","The skill documents edge cases such as HubSpot's bulk edit limits, the need for owner approval, and potential issues with new contacts arriving during the process.",{"category":124,"check":193,"severity":42,"summary":194},"Tool Fallback","This skill does not rely on external tools like an MCP server; it uses the HubSpot API directly.",{"category":196,"check":197,"severity":24,"summary":198},"Safety","Halt on unexpected state","The `execute.py` script includes a safety threshold to abort if too many contacts are found, and the `before.py` and `after.py` scripts provide verification steps.",{"category":93,"check":200,"severity":42,"summary":201},"Cross-skill coupling","This skill is self-contained and does not rely on or cross-reference other skills.",1778698185218,"This skill automates the assignment of HubSpot marketing contacts that currently lack an owner. It provides scripts for auditing, executing assignments via API, and verifying the results, ensuring all marketable contacts have assigned accountability.",[205,206,207,208],"Identifies marketing contacts without an owner.","Supports bulk assignment via API.","Provides before and after state verification.","Includes Python scripts for execution.",[210,211,212],"Implementing territory-based routing rules automatically (requires user input).","Assigning owners to non-marketing contacts.","Performing HubSpot CRM audit beyond contact owner assignment.",[214,215],"Data Hygiene","CRM Administration",[217,218,219],"HubSpot CRM access with owner assignment permissions.","Approval from team leads for assignment strategy.","Python 3.10+ with requests and python-dotenv.","3.0.0","4.4.0","Automate the assignment of unowned marketing contacts in HubSpot CRM to ensure proper lead routing and reporting.","The skill is well-documented and functional, but the warning for commit recency and the lack of concrete invocation examples in the README/SKILL.md prevent a higher score.",75,"A robust skill for automating contact owner assignments in HubSpot CRM.",[227,228,229,230,231],"hubspot","crm","data-management","automation","contact-enrichment","global","community",[235,236,237],"When marketing contacts lack assigned owners and need accountability.","To ensure all marketable contacts appear in owner-based reports.","To prepare for implementing territory-based or round-robin lead routing.",[239,240,241,242,243],"Gather requirements (owner, assignment strategy).","Identify unowned marketing contacts (using script/UI).","Decide on assignment strategy (catch-all, territory, round-robin).","Execute bulk assignment (UI or API).","Verify all marketing contacts have owners.",{"codeQuality":245,"collectedAt":247,"documentation":248,"maintenance":251,"security":257,"testCoverage":259},{"hasLockfile":246},false,1778698168879,{"descriptionLength":249,"readmeSize":250},181,10597,{"closedIssues90d":252,"forks":253,"hasChangelog":246,"manifestVersion":254,"openIssues90d":8,"pushedAt":255,"stars":256},1,4,"1.0",1774540543000,21,{"hasNpmPackage":246,"license":258,"smitheryVerified":246},"MIT",{"hasCi":246,"hasTests":246},{"updatedAt":261},1778698185401,{"basePath":263,"githubOwner":264,"githubRepo":265,"locale":18,"slug":266,"type":267},"skills/assign-unowned-contacts","TomGranot","hubspot-admin-skills","assign-unowned-contacts","skill",true,{"_creationTime":270,"_id":271,"community":272,"display":273,"identity":278,"parentExtension":281,"providers":309,"relations":320,"tags":321,"workflow":322},1778698144006.2188,"k17c3p8t0thc73pbc8egtz31y986mwr0",{"reviewCount":8},{"description":274,"installMethods":275,"name":277,"sourceUrl":14},"Complete HubSpot CRM administration toolkit — audit, clean, enrich, segment, automate, and maintain your database",{"claudeCode":276},"hubspot-admin","HubSpot Admin Skills",{"basePath":279,"githubOwner":264,"githubRepo":265,"locale":18,"slug":265,"type":280},"","plugin",{"_creationTime":282,"_id":283,"community":284,"display":285,"identity":288,"providers":290,"relations":303,"tags":305,"workflow":306},1778698144006.2185,"k17dn1yxv80dbqc9xbkwfp9t6186nkhk",{"reviewCount":8},{"description":286,"installMethods":287,"name":265,"sourceUrl":14},"30+ Claude Code skills for auditing, cleaning, enriching, and automating HubSpot CRM",{"claudeCode":12},{"basePath":279,"githubOwner":264,"githubRepo":265,"locale":18,"slug":265,"type":289},"marketplace",{"evaluate":291,"extract":298},{"promptVersionExtension":292,"promptVersionScoring":221,"score":293,"tags":294,"targetMarket":232,"tier":233},"3.1.0",79,[227,228,230,295,296,297],"data-cleaning","auditing","administration",{"commitSha":299,"marketplace":300,"plugin":301},"HEAD",{"name":265,"pluginCount":252},{"mcpCount":8,"provider":302,"skillCount":8},"classify",{"repoId":304},"kd75kpec7arn6z2wz641vfaj8n86nab6",[297,296,230,228,295,227],{"evaluatedAt":307,"extractAt":308,"updatedAt":307},1778698158552,1778698144006,{"evaluate":310,"extract":317},{"promptVersionExtension":220,"promptVersionScoring":221,"score":311,"tags":312,"targetMarket":232,"tier":316},99,[227,228,297,313,230,314,296,315],"data-quality","cleanup","marketing-automation","verified",{"commitSha":299,"license":258,"plugin":318},{"mcpCount":8,"provider":302,"skillCount":319},32,{"parentExtensionId":283,"repoId":304},[297,296,230,314,228,313,227,315],{"evaluatedAt":323,"extractAt":308,"updatedAt":323},1778698168554,{"evaluate":325,"extract":327},{"promptVersionExtension":220,"promptVersionScoring":221,"score":224,"tags":326,"targetMarket":232,"tier":233},[227,228,229,230,231],{"commitSha":299,"license":258},{"parentExtensionId":271,"repoId":304},{"_creationTime":330,"_id":304,"identity":331,"providers":332,"workflow":715},1778698139523.511,{"githubOwner":264,"githubRepo":265,"sourceUrl":14},{"classify":333,"discover":709,"github":712},{"commitSha":299,"extensions":334},[335,348,421,434,442,450,458,467,475,483,491,499,507,515,523,534,542,553,561,571,581,592,600,608,616,625,633,641,652,660,671,681,691,701],{"basePath":279,"description":286,"displayName":265,"installMethods":336,"rationale":337,"selectedPaths":338,"source":347,"sourceLanguage":18,"type":289},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[339,342,344],{"path":340,"priority":341},".claude-plugin/marketplace.json","mandatory",{"path":343,"priority":341},"README.md",{"path":345,"priority":346},"LICENSE","high","rule",{"basePath":279,"description":274,"displayName":276,"installMethods":349,"rationale":350,"selectedPaths":351,"source":347,"sourceLanguage":18,"type":280},{"claudeCode":276},"plugin manifest at .claude-plugin/plugin.json",[352,354,355,356,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419],{"path":353,"priority":341},".claude-plugin/plugin.json",{"path":343,"priority":341},{"path":345,"priority":346},{"path":357,"priority":358},"skills/assign-unowned-contacts/SKILL.md","medium",{"path":360,"priority":358},"skills/backfill-geo-data/SKILL.md",{"path":362,"priority":358},"skills/bounce-monitoring-workflow/SKILL.md",{"path":364,"priority":358},"skills/build-lead-scoring/SKILL.md",{"path":366,"priority":358},"skills/build-smart-lists/SKILL.md",{"path":368,"priority":358},"skills/cleanup-dashboards/SKILL.md",{"path":370,"priority":358},"skills/cleanup-deals/SKILL.md",{"path":372,"priority":358},"skills/cleanup-forms/SKILL.md",{"path":374,"priority":358},"skills/cleanup-lead-owners/SKILL.md",{"path":376,"priority":358},"skills/cleanup-lists/SKILL.md",{"path":378,"priority":358},"skills/cleanup-properties/SKILL.md",{"path":380,"priority":358},"skills/cleanup-workflows/SKILL.md",{"path":382,"priority":358},"skills/create-icp-tiers/SKILL.md",{"path":384,"priority":358},"skills/create-segment-lists/SKILL.md",{"path":386,"priority":358},"skills/delete-no-email-contacts/SKILL.md",{"path":388,"priority":358},"skills/engagement-suppression-workflow/SKILL.md",{"path":390,"priority":358},"skills/enrich-company-name/SKILL.md",{"path":392,"priority":358},"skills/enrich-industry/SKILL.md",{"path":394,"priority":358},"skills/fix-lifecycle-stages/SKILL.md",{"path":396,"priority":358},"skills/hubspot-audit/SKILL.md",{"path":398,"priority":358},"skills/hubspot-implementation-plan/SKILL.md",{"path":400,"priority":358},"skills/lifecycle-progression-workflow/SKILL.md",{"path":402,"priority":358},"skills/merge-duplicate-companies/SKILL.md",{"path":404,"priority":358},"skills/new-contact-hygiene-workflow/SKILL.md",{"path":406,"priority":358},"skills/quarterly-database-cleanup/SKILL.md",{"path":408,"priority":358},"skills/reassign-deactivated-owners/SKILL.md",{"path":410,"priority":358},"skills/review-bounced-contacts/SKILL.md",{"path":412,"priority":358},"skills/standardize-geo-values/SKILL.md",{"path":414,"priority":358},"skills/suppress-ghost-contacts/SKILL.md",{"path":416,"priority":358},"skills/suppress-global-unsubscribes/SKILL.md",{"path":418,"priority":358},"skills/suppress-hard-bounced/SKILL.md",{"path":420,"priority":358},"skills/weekly-cleanup-routine/SKILL.md",{"basePath":263,"description":10,"displayName":266,"installMethods":422,"rationale":423,"selectedPaths":424,"source":347,"sourceLanguage":18,"type":267},{"claudeCode":12},"SKILL.md frontmatter at skills/assign-unowned-contacts/SKILL.md",[425,427,430,432],{"path":426,"priority":341},"SKILL.md",{"path":428,"priority":429},"scripts/after.py","low",{"path":431,"priority":429},"scripts/before.py",{"path":433,"priority":429},"scripts/execute.py",{"basePath":435,"description":436,"displayName":437,"installMethods":438,"rationale":439,"selectedPaths":440,"source":347,"sourceLanguage":18,"type":267},"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",[441],{"path":426,"priority":341},{"basePath":443,"description":444,"displayName":445,"installMethods":446,"rationale":447,"selectedPaths":448,"source":347,"sourceLanguage":18,"type":267},"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",[449],{"path":426,"priority":341},{"basePath":451,"description":452,"displayName":453,"installMethods":454,"rationale":455,"selectedPaths":456,"source":347,"sourceLanguage":18,"type":267},"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",[457],{"path":426,"priority":341},{"basePath":459,"description":460,"displayName":461,"installMethods":462,"rationale":463,"selectedPaths":464,"source":347,"sourceLanguage":18,"type":267},"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",[465,466],{"path":426,"priority":341},{"path":433,"priority":429},{"basePath":468,"description":469,"displayName":470,"installMethods":471,"rationale":472,"selectedPaths":473,"source":347,"sourceLanguage":18,"type":267},"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",[474],{"path":426,"priority":341},{"basePath":476,"description":477,"displayName":478,"installMethods":479,"rationale":480,"selectedPaths":481,"source":347,"sourceLanguage":18,"type":267},"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",[482],{"path":426,"priority":341},{"basePath":484,"description":485,"displayName":486,"installMethods":487,"rationale":488,"selectedPaths":489,"source":347,"sourceLanguage":18,"type":267},"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",[490],{"path":426,"priority":341},{"basePath":492,"description":493,"displayName":494,"installMethods":495,"rationale":496,"selectedPaths":497,"source":347,"sourceLanguage":18,"type":267},"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",[498],{"path":426,"priority":341},{"basePath":500,"description":501,"displayName":502,"installMethods":503,"rationale":504,"selectedPaths":505,"source":347,"sourceLanguage":18,"type":267},"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",[506],{"path":426,"priority":341},{"basePath":508,"description":509,"displayName":510,"installMethods":511,"rationale":512,"selectedPaths":513,"source":347,"sourceLanguage":18,"type":267},"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",[514],{"path":426,"priority":341},{"basePath":516,"description":517,"displayName":518,"installMethods":519,"rationale":520,"selectedPaths":521,"source":347,"sourceLanguage":18,"type":267},"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",[522],{"path":426,"priority":341},{"basePath":524,"description":525,"displayName":526,"installMethods":527,"rationale":528,"selectedPaths":529,"source":347,"sourceLanguage":18,"type":267},"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",[530,531,532,533],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"path":433,"priority":429},{"basePath":535,"description":536,"displayName":537,"installMethods":538,"rationale":539,"selectedPaths":540,"source":347,"sourceLanguage":18,"type":267},"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",[541],{"path":426,"priority":341},{"basePath":543,"description":544,"displayName":545,"installMethods":546,"rationale":547,"selectedPaths":548,"source":347,"sourceLanguage":18,"type":267},"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",[549,550,551,552],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"path":433,"priority":429},{"basePath":554,"description":555,"displayName":556,"installMethods":557,"rationale":558,"selectedPaths":559,"source":347,"sourceLanguage":18,"type":267},"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",[560],{"path":426,"priority":341},{"basePath":562,"description":563,"displayName":564,"installMethods":565,"rationale":566,"selectedPaths":567,"source":347,"sourceLanguage":18,"type":267},"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",[568,569,570],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"basePath":572,"description":573,"displayName":574,"installMethods":575,"rationale":576,"selectedPaths":577,"source":347,"sourceLanguage":18,"type":267},"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",[578,579,580],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"basePath":582,"description":583,"displayName":584,"installMethods":585,"rationale":586,"selectedPaths":587,"source":347,"sourceLanguage":18,"type":267},"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",[588,589,590,591],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"path":433,"priority":429},{"basePath":593,"description":594,"displayName":595,"installMethods":596,"rationale":597,"selectedPaths":598,"source":347,"sourceLanguage":18,"type":267},"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",[599],{"path":426,"priority":341},{"basePath":601,"description":602,"displayName":603,"installMethods":604,"rationale":605,"selectedPaths":606,"source":347,"sourceLanguage":18,"type":267},"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",[607],{"path":426,"priority":341},{"basePath":609,"description":610,"displayName":611,"installMethods":612,"rationale":613,"selectedPaths":614,"source":347,"sourceLanguage":18,"type":267},"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",[615],{"path":426,"priority":341},{"basePath":617,"description":618,"displayName":619,"installMethods":620,"rationale":621,"selectedPaths":622,"source":347,"sourceLanguage":18,"type":267},"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",[623,624],{"path":426,"priority":341},{"path":431,"priority":429},{"basePath":626,"description":627,"displayName":628,"installMethods":629,"rationale":630,"selectedPaths":631,"source":347,"sourceLanguage":18,"type":267},"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",[632],{"path":426,"priority":341},{"basePath":634,"description":635,"displayName":636,"installMethods":637,"rationale":638,"selectedPaths":639,"source":347,"sourceLanguage":18,"type":267},"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",[640],{"path":426,"priority":341},{"basePath":642,"description":643,"displayName":644,"installMethods":645,"rationale":646,"selectedPaths":647,"source":347,"sourceLanguage":18,"type":267},"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",[648,649,650,651],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"path":433,"priority":429},{"basePath":653,"description":654,"displayName":655,"installMethods":656,"rationale":657,"selectedPaths":658,"source":347,"sourceLanguage":18,"type":267},"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",[659],{"path":426,"priority":341},{"basePath":661,"description":662,"displayName":663,"installMethods":664,"rationale":665,"selectedPaths":666,"source":347,"sourceLanguage":18,"type":267},"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",[667,668,669,670],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"path":433,"priority":429},{"basePath":672,"description":673,"displayName":674,"installMethods":675,"rationale":676,"selectedPaths":677,"source":347,"sourceLanguage":18,"type":267},"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",[678,679,680],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"basePath":682,"description":683,"displayName":684,"installMethods":685,"rationale":686,"selectedPaths":687,"source":347,"sourceLanguage":18,"type":267},"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",[688,689,690],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"basePath":692,"description":693,"displayName":694,"installMethods":695,"rationale":696,"selectedPaths":697,"source":347,"sourceLanguage":18,"type":267},"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",[698,699,700],{"path":426,"priority":341},{"path":428,"priority":429},{"path":431,"priority":429},{"basePath":702,"description":703,"displayName":704,"installMethods":705,"rationale":706,"selectedPaths":707,"source":347,"sourceLanguage":18,"type":267},"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",[708],{"path":426,"priority":341},{"sources":710},[711],"manual",{"closedIssues90d":252,"description":713,"forks":253,"license":258,"openIssues90d":8,"pushedAt":255,"readmeSize":250,"stars":256,"topics":714},"32 Claude Code skills for auditing, cleaning, enriching, and automating your HubSpot CRM",[],{"classifiedAt":716,"discoverAt":717,"extractAt":718,"githubAt":718,"updatedAt":716},1778698143787,1778698139523,1778698141911,[230,231,228,229,227],{"evaluatedAt":261,"extractAt":308,"updatedAt":261},[],[723,741,756,773,792,808],{"_creationTime":724,"_id":725,"community":726,"display":727,"identity":729,"providers":730,"relations":737,"tags":738,"workflow":739},1778698144006.224,"k17agbyx7wnnh9238dqj641dns86nf82",{"reviewCount":8},{"description":610,"installMethods":728,"name":611,"sourceUrl":14},{"claudeCode":12},{"basePath":609,"githubOwner":264,"githubRepo":265,"locale":18,"slug":611,"type":267},{"evaluate":731,"extract":736},{"promptVersionExtension":220,"promptVersionScoring":221,"score":732,"tags":733,"targetMarket":232,"tier":316},100,[230,734,228,735,227],"sales","workflows",{"commitSha":299},{"parentExtensionId":271,"repoId":304},[230,228,227,734,735],{"evaluatedAt":740,"extractAt":308,"updatedAt":740},1778698526315,{"_creationTime":742,"_id":743,"community":744,"display":745,"identity":747,"providers":748,"relations":752,"tags":753,"workflow":754},1778698144006.225,"k17bfemb4zmcjh67bsamr26c0x86mpbn",{"reviewCount":8},{"description":643,"installMethods":746,"name":644,"sourceUrl":14},{"claudeCode":12},{"basePath":642,"githubOwner":264,"githubRepo":265,"locale":18,"slug":644,"type":267},{"evaluate":749,"extract":751},{"promptVersionExtension":220,"promptVersionScoring":221,"score":311,"tags":750,"targetMarket":232,"tier":316},[227,228,230,229,297],{"commitSha":299},{"parentExtensionId":271,"repoId":304},[297,230,228,229,227],{"evaluatedAt":755,"extractAt":308,"updatedAt":755},1778698590503,{"_creationTime":757,"_id":758,"community":759,"display":760,"identity":762,"providers":763,"relations":769,"tags":770,"workflow":771},1778698144006.2202,"k172517ana4f5vj79mb22xzwsx86mksv",{"reviewCount":8},{"description":469,"installMethods":761,"name":470,"sourceUrl":14},{"claudeCode":12},{"basePath":468,"githubOwner":264,"githubRepo":265,"locale":18,"slug":470,"type":267},{"evaluate":764,"extract":768},{"promptVersionExtension":220,"promptVersionScoring":221,"score":732,"tags":765,"targetMarket":232,"tier":316},[227,228,766,767,314],"maintenance","reporting",{"commitSha":299},{"parentExtensionId":271,"repoId":304},[314,228,227,766,767],{"evaluatedAt":772,"extractAt":308,"updatedAt":772},1778698268281,{"_creationTime":774,"_id":775,"community":776,"display":777,"identity":780,"providers":781,"relations":788,"tags":789,"workflow":790},1778698144006.2231,"k172hgm2mhketjz0tmptf85ms986nx8p",{"reviewCount":8},{"description":573,"installMethods":778,"name":779,"sourceUrl":14},{"claudeCode":12},"Enrich Contact Industry",{"basePath":572,"githubOwner":264,"githubRepo":265,"locale":18,"slug":574,"type":267},{"evaluate":782,"extract":787},{"promptVersionExtension":220,"promptVersionScoring":221,"score":311,"tags":783,"targetMarket":232,"tier":316},[227,228,784,230,785,786],"data-enrichment","contact-management","segmentation",{"commitSha":299,"license":258},{"parentExtensionId":271,"repoId":304},[230,785,228,784,227,786],{"evaluatedAt":791,"extractAt":308,"updatedAt":791},1778698467653,{"_creationTime":793,"_id":794,"community":795,"display":796,"identity":798,"providers":799,"relations":804,"tags":805,"workflow":806},1778698144006.2266,"k178ar72y21gtdvpcbmcmd227s86mq2d",{"reviewCount":8},{"description":703,"installMethods":797,"name":704,"sourceUrl":14},{"claudeCode":12},{"basePath":702,"githubOwner":264,"githubRepo":265,"locale":18,"slug":704,"type":267},{"evaluate":800,"extract":803},{"promptVersionExtension":220,"promptVersionScoring":221,"score":801,"tags":802,"targetMarket":232,"tier":316},98,[227,228,766,230,767],{"commitSha":299},{"parentExtensionId":271,"repoId":304},[230,228,227,766,767],{"evaluatedAt":807,"extractAt":308,"updatedAt":807},1778698703534,{"_creationTime":809,"_id":810,"community":811,"display":812,"identity":814,"providers":815,"relations":820,"tags":821,"workflow":822},1778698144006.2253,"k175q9vhdtjhmdnj5sfg0js0y186m41d",{"reviewCount":8},{"description":654,"installMethods":813,"name":655,"sourceUrl":14},{"claudeCode":12},{"basePath":653,"githubOwner":264,"githubRepo":265,"locale":18,"slug":655,"type":267},{"evaluate":816,"extract":819},{"promptVersionExtension":220,"promptVersionScoring":221,"score":801,"tags":817,"targetMarket":232,"tier":316},[227,228,818,785,230],"data-hygiene",{"commitSha":299},{"parentExtensionId":271,"repoId":304},[230,785,228,818,227],{"evaluatedAt":823,"extractAt":308,"updatedAt":823},1778698625452]