[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-TomGranot-reassign-deactivated-owners-en":3,"guides-for-TomGranot-reassign-deactivated-owners":697,"similar-k17bfemb4zmcjh67bsamr26c0x86mpbn-en":698},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":242,"isFallback":226,"parentExtension":247,"providers":300,"relations":304,"repo":305,"tags":695,"workflow":696},1778698144006.225,"k17bfemb4zmcjh67bsamr26c0x86mpbn",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"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",{"claudeCode":12},"TomGranot/hubspot-admin-skills","reassign-deactivated-owners","https://github.com/TomGranot/hubspot-admin-skills",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":224,"workflow":240},1778698590503.6802,"kn7ae7f8yhy1vfsx7s64aef86x86m097","en",{"checks":20,"evaluatedAt":192,"extensionSummary":193,"features":194,"nonGoals":201,"promptVersionExtension":206,"promptVersionScoring":207,"purpose":208,"rationale":209,"score":210,"summary":211,"tags":212,"targetMarket":218,"tier":219,"useCases":220},[21,26,29,32,36,39,43,47,50,53,57,61,64,68,71,74,77,80,83,86,90,94,98,102,106,109,113,116,121,124,127,130,133,136,139,143,147,150,153,157,160,163,166,169,173,176,179,182,185,189],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly identifies the problem of orphaned contacts from deactivated team members and the need for automated reassignment.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill offers significant value beyond a thin API wrapper by providing a structured, automated workflow for a complex administrative task, including territory analysis and multi-stage execution.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill provides a complete workflow including planning, before/after state analysis, execution scripts, and safety mechanisms, ready for production use.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill has a clear, single responsibility: reassigning contacts and companies from deactivated owners in HubSpot.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The description accurately reflects the skill's capabilities, including automation via specific HubSpot APIs and territory analysis.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The skill uses focused API calls (e.g., fetching owners, searching contacts, batch updating) rather than a single generalist execution tool.",{"category":44,"check":45,"severity":24,"summary":46},"Documentation","Configuration & parameter reference","Prerequisites are clearly listed, including the necessary HubSpot token scopes, Python version, and the need for a .env file with the token. The script itself requires user input for TARGET_OWNER_ID.",{"category":33,"check":48,"severity":24,"summary":49},"Tool naming","The skill is named and described clearly, and the internal script names are descriptive of their function.",{"category":33,"check":51,"severity":24,"summary":52},"Minimal I/O surface","The scripts interact with the HubSpot API using specific parameters and return structured data or counts, without excessive diagnostic dumps.",{"category":54,"check":55,"severity":24,"summary":56},"License","License usability","The license is MIT, declared in the LICENSE file and frontmatter, which is a permissive open-source license.",{"category":58,"check":59,"severity":24,"summary":60},"Maintenance","Commit recency","The latest commit was on March 26, 2026, which is within the last 3 months.",{"category":58,"check":62,"severity":24,"summary":63},"Dependency Management","The script has clearly defined dependencies ('requests', 'python-dotenv') listed in the script header and package setup instructions.",{"category":65,"check":66,"severity":24,"summary":67},"Security","Secret Management","The HubSpot token is loaded from a .env file, not hardcoded, and the script does not echo resolved secret values.",{"category":65,"check":69,"severity":24,"summary":70},"Injection","The scripts interact with the HubSpot API using defined parameters and do not fetch or execute external code.",{"category":65,"check":72,"severity":24,"summary":73},"Transitive Supply-Chain Grenades","The script only uses vendored dependencies and interacts with the HubSpot API; no remote code execution or dynamic content fetching is performed.",{"category":65,"check":75,"severity":24,"summary":76},"Sandbox Isolation","The script operates by making API calls to HubSpot and does not modify any files outside its designated data directory.",{"category":65,"check":78,"severity":24,"summary":79},"Sandbox escape primitives","No detached processes or retry loops around denied tool calls are present in the script.",{"category":65,"check":81,"severity":24,"summary":82},"Data Exfiltration","The script only interacts with the HubSpot API for its intended purpose and does not submit confidential data to any third party.",{"category":65,"check":84,"severity":24,"summary":85},"Hidden Text Tricks","The bundled script content is clean, readable Python code without hidden steering tricks.",{"category":87,"check":88,"severity":24,"summary":89},"Hooks","Opaque code execution","The script is plain Python code and does not contain obfuscated payloads or runtime code fetching.",{"category":91,"check":92,"severity":24,"summary":93},"Portability","Structural Assumption","The script assumes a standard Python environment with specific libraries and relies on an external .env file for configuration, which is well-documented.",{"category":95,"check":96,"severity":24,"summary":97},"Trust","Issues Attention","With 0 open and 1 closed issue in the last 90 days, the closure rate is high and the activity level is low, indicating good engagement.",{"category":99,"check":100,"severity":24,"summary":101},"Versioning","Release Management","The skill has a manifest version ('1.0') and uses git commit history for versioning, providing a clear indication of releases.",{"category":103,"check":104,"severity":24,"summary":105},"Execution","Validation","The script validates the target owner ID and includes a safety threshold, and the HubSpot API interactions are structured.",{"category":65,"check":107,"severity":24,"summary":108},"Unguarded Destructive Operations","The script requires explicit user confirmation ('REASSIGN') before proceeding with the batch update operation.",{"category":110,"check":111,"severity":24,"summary":112},"Code Execution","Error Handling","The script includes error handling for API calls, checks for target owner existence, and stops processing an owner if batch updates fail, reporting success/failure counts.",{"category":110,"check":114,"severity":24,"summary":115},"Logging","The script logs progress, counts of processed items, and saves an execution log to a CSV file for auditing.",{"category":117,"check":118,"severity":119,"summary":120},"Compliance","GDPR","not_applicable","The skill operates on HubSpot CRM data, but does not specifically handle personal data in a way that requires extra sanitization beyond standard API practices.",{"category":117,"check":122,"severity":24,"summary":123},"Target market","The skill interacts with the HubSpot API, which is globally accessible, and has no regional logic, thus targeting a global market.",{"category":91,"check":125,"severity":24,"summary":126},"Runtime stability","The script requires Python 3.10+ and standard libraries, making it portable across systems with a compatible Python environment.",{"category":44,"check":128,"severity":24,"summary":129},"README","The README provides a comprehensive overview, installation instructions, usage examples, and skill references.",{"category":33,"check":131,"severity":119,"summary":132},"Tool surface size","This is a single-purpose script, not a collection of tools.",{"category":40,"check":134,"severity":119,"summary":135},"Overlapping near-synonym tools","This is a single script, not a collection of tools with overlapping names.",{"category":44,"check":137,"severity":24,"summary":138},"Phantom features","All advertised features, such as the 4-stage execution pattern and API automation, are implemented in the provided scripts and documentation.",{"category":140,"check":141,"severity":24,"summary":142},"Install","Installation instruction","The README provides clear installation instructions using `uv` and includes a sample .env file setup.",{"category":144,"check":145,"severity":24,"summary":146},"Errors","Actionable error messages","Errors like missing target owner ID or API request failures provide specific messages and suggest remediation steps.",{"category":103,"check":148,"severity":24,"summary":149},"Pinned dependencies","Dependencies are listed with version specifiers (e.g., '>=3.10') and package setup instructions guide users to install them.",{"category":33,"check":151,"severity":24,"summary":152},"Dry-run preview","The script requires explicit user confirmation ('REASSIGN') after displaying the total number of contacts to be processed, acting as a dry-run preview.",{"category":154,"check":155,"severity":24,"summary":156},"Protocol","Idempotent retry & timeouts","The script uses HubSpot's batch update API, which is generally idempotent, and includes delays to respect API rate limits. It handles API errors by logging and stopping processing for a specific owner.",{"category":117,"check":158,"severity":24,"summary":159},"Telemetry opt-in","The script does not emit any telemetry; it is a local execution script.",{"category":40,"check":161,"severity":24,"summary":162},"Precise Purpose","The skill's purpose (reassigning contacts from deactivated owners) and its use case (managing orphaned contacts due to employee departures) are clearly defined.",{"category":40,"check":164,"severity":24,"summary":165},"Concise Frontmatter","The frontmatter is concise and clearly states the skill's name, description, and license.",{"category":44,"check":167,"severity":24,"summary":168},"Concise Body","The SKILL.md is well-structured with clear sections and the code examples are relevant and not excessively long.",{"category":170,"check":171,"severity":24,"summary":172},"Context","Progressive Disclosure","Detailed explanations and code examples are within the SKILL.md or associated scripts, making the main document concise.",{"category":170,"check":174,"severity":119,"summary":175},"Forked exploration","This skill is not an exploration-heavy skill that would benefit from forked context.",{"category":22,"check":177,"severity":24,"summary":178},"Usage examples","The SKILL.md and associated scripts provide clear examples of API calls, execution patterns, and prerequisites.",{"category":22,"check":180,"severity":24,"summary":181},"Edge cases","The documentation and scripts address edge cases like owners with >10K contacts, missing target owners, and the need for `archived=true`.",{"category":110,"check":183,"severity":119,"summary":184},"Tool Fallback","This skill does not rely on external MCP servers and uses direct API calls.",{"category":186,"check":187,"severity":24,"summary":188},"Safety","Halt on unexpected state","The script includes checks for the target owner's existence and requires explicit user confirmation before executing the reassignment.",{"category":91,"check":190,"severity":24,"summary":191},"Cross-skill coupling","This skill is self-contained and does not implicitly rely on other skills.",1778698589199,"This skill automates the reassignment of contacts and companies from deactivated HubSpot users to active owners. It provides Python scripts for fetching deactivated owners, counting their associated records, and batch-updating ownership via the HubSpot API. It includes territory analysis, safety checks, and comprehensive logging.",[195,196,197,198,199,200],"Automated reassignment of contacts and companies","Utilizes HubSpot Owners API and Batch Update API","Identifies deactivated/archived owners","Includes territory analysis for informed decisions","Provides before/after state verification scripts","Logs reassignment process and outcomes",[202,203,204,205],"Automatically deciding reassignment strategy; requires user input.","Reassigning contacts from currently active owners.","Managing HubSpot workflows or sequences that might reference deactivated users by name.","Handling the creation of new HubSpot users or reactivation of deactivated ones.","3.0.0","4.4.0","Reassign contacts and companies from deactivated team members to active owners to ensure continuity of management and prevent orphaned records.","The skill is exceptionally well-documented and robust, with clear scripts, comprehensive error handling, and strong safety mechanisms. The only minor point is the 'unassigned contacts' check in the 'after' state script, which is not directly tied to the core reassignment logic but is a good additional check.",99,"A high-quality, well-documented skill for automated HubSpot contact reassignment from deactivated users.",[213,214,215,216,217],"hubspot","crm","automation","data-management","administration","global","verified",[221,222,223],"When a team member leaves the organization and their HubSpot records need reassignment.","To ensure active sales and marketing efforts continue on contacts previously owned by departed employees.","To maintain data hygiene and prevent orphaned records in HubSpot CRM.",{"codeQuality":225,"collectedAt":227,"documentation":228,"maintenance":231,"security":237,"testCoverage":239},{"hasLockfile":226},false,1778698573901,{"descriptionLength":229,"readmeSize":230},210,10597,{"closedIssues90d":232,"forks":233,"hasChangelog":226,"manifestVersion":234,"openIssues90d":8,"pushedAt":235,"stars":236},1,4,"1.0",1774540543000,21,{"hasNpmPackage":226,"license":238,"smitheryVerified":226},"MIT",{"hasCi":226,"hasTests":226},{"updatedAt":241},1778698590503,{"basePath":243,"githubOwner":244,"githubRepo":245,"locale":18,"slug":13,"type":246},"skills/reassign-deactivated-owners","TomGranot","hubspot-admin-skills","skill",{"_creationTime":248,"_id":249,"community":250,"display":251,"identity":256,"parentExtension":259,"providers":287,"relations":296,"tags":297,"workflow":298},1778698144006.2188,"k17c3p8t0thc73pbc8egtz31y986mwr0",{"reviewCount":8},{"description":252,"installMethods":253,"name":255,"sourceUrl":14},"Complete HubSpot CRM administration toolkit — audit, clean, enrich, segment, automate, and maintain your database",{"claudeCode":254},"hubspot-admin","HubSpot Admin Skills",{"basePath":257,"githubOwner":244,"githubRepo":245,"locale":18,"slug":245,"type":258},"","plugin",{"_creationTime":260,"_id":261,"community":262,"display":263,"identity":266,"providers":268,"relations":281,"tags":283,"workflow":284},1778698144006.2185,"k17dn1yxv80dbqc9xbkwfp9t6186nkhk",{"reviewCount":8},{"description":264,"installMethods":265,"name":245,"sourceUrl":14},"30+ Claude Code skills for auditing, cleaning, enriching, and automating HubSpot CRM",{"claudeCode":12},{"basePath":257,"githubOwner":244,"githubRepo":245,"locale":18,"slug":245,"type":267},"marketplace",{"evaluate":269,"extract":276},{"promptVersionExtension":270,"promptVersionScoring":207,"score":271,"tags":272,"targetMarket":218,"tier":275},"3.1.0",79,[213,214,215,273,274,217],"data-cleaning","auditing","community",{"commitSha":277,"marketplace":278,"plugin":279},"HEAD",{"name":245,"pluginCount":232},{"mcpCount":8,"provider":280,"skillCount":8},"classify",{"repoId":282},"kd75kpec7arn6z2wz641vfaj8n86nab6",[217,274,215,214,273,213],{"evaluatedAt":285,"extractAt":286,"updatedAt":285},1778698158552,1778698144006,{"evaluate":288,"extract":293},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":289,"targetMarket":218,"tier":219},[213,214,217,290,215,291,274,292],"data-quality","cleanup","marketing-automation",{"commitSha":277,"license":238,"plugin":294},{"mcpCount":8,"provider":280,"skillCount":295},32,{"parentExtensionId":261,"repoId":282},[217,274,215,291,214,290,213,292],{"evaluatedAt":299,"extractAt":286,"updatedAt":299},1778698168554,{"evaluate":301,"extract":303},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":302,"targetMarket":218,"tier":219},[213,214,215,216,217],{"commitSha":277},{"parentExtensionId":249,"repoId":282},{"_creationTime":306,"_id":282,"identity":307,"providers":308,"workflow":691},1778698139523.511,{"githubOwner":244,"githubRepo":245,"sourceUrl":14},{"classify":309,"discover":685,"github":688},{"commitSha":277,"extensions":310},[311,324,397,413,421,429,437,446,454,462,470,478,486,494,502,513,521,532,540,550,560,571,579,587,595,604,612,620,628,636,647,657,667,677],{"basePath":257,"description":264,"displayName":245,"installMethods":312,"rationale":313,"selectedPaths":314,"source":323,"sourceLanguage":18,"type":267},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[315,318,320],{"path":316,"priority":317},".claude-plugin/marketplace.json","mandatory",{"path":319,"priority":317},"README.md",{"path":321,"priority":322},"LICENSE","high","rule",{"basePath":257,"description":252,"displayName":254,"installMethods":325,"rationale":326,"selectedPaths":327,"source":323,"sourceLanguage":18,"type":258},{"claudeCode":254},"plugin manifest at .claude-plugin/plugin.json",[328,330,331,332,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395],{"path":329,"priority":317},".claude-plugin/plugin.json",{"path":319,"priority":317},{"path":321,"priority":322},{"path":333,"priority":334},"skills/assign-unowned-contacts/SKILL.md","medium",{"path":336,"priority":334},"skills/backfill-geo-data/SKILL.md",{"path":338,"priority":334},"skills/bounce-monitoring-workflow/SKILL.md",{"path":340,"priority":334},"skills/build-lead-scoring/SKILL.md",{"path":342,"priority":334},"skills/build-smart-lists/SKILL.md",{"path":344,"priority":334},"skills/cleanup-dashboards/SKILL.md",{"path":346,"priority":334},"skills/cleanup-deals/SKILL.md",{"path":348,"priority":334},"skills/cleanup-forms/SKILL.md",{"path":350,"priority":334},"skills/cleanup-lead-owners/SKILL.md",{"path":352,"priority":334},"skills/cleanup-lists/SKILL.md",{"path":354,"priority":334},"skills/cleanup-properties/SKILL.md",{"path":356,"priority":334},"skills/cleanup-workflows/SKILL.md",{"path":358,"priority":334},"skills/create-icp-tiers/SKILL.md",{"path":360,"priority":334},"skills/create-segment-lists/SKILL.md",{"path":362,"priority":334},"skills/delete-no-email-contacts/SKILL.md",{"path":364,"priority":334},"skills/engagement-suppression-workflow/SKILL.md",{"path":366,"priority":334},"skills/enrich-company-name/SKILL.md",{"path":368,"priority":334},"skills/enrich-industry/SKILL.md",{"path":370,"priority":334},"skills/fix-lifecycle-stages/SKILL.md",{"path":372,"priority":334},"skills/hubspot-audit/SKILL.md",{"path":374,"priority":334},"skills/hubspot-implementation-plan/SKILL.md",{"path":376,"priority":334},"skills/lifecycle-progression-workflow/SKILL.md",{"path":378,"priority":334},"skills/merge-duplicate-companies/SKILL.md",{"path":380,"priority":334},"skills/new-contact-hygiene-workflow/SKILL.md",{"path":382,"priority":334},"skills/quarterly-database-cleanup/SKILL.md",{"path":384,"priority":334},"skills/reassign-deactivated-owners/SKILL.md",{"path":386,"priority":334},"skills/review-bounced-contacts/SKILL.md",{"path":388,"priority":334},"skills/standardize-geo-values/SKILL.md",{"path":390,"priority":334},"skills/suppress-ghost-contacts/SKILL.md",{"path":392,"priority":334},"skills/suppress-global-unsubscribes/SKILL.md",{"path":394,"priority":334},"skills/suppress-hard-bounced/SKILL.md",{"path":396,"priority":334},"skills/weekly-cleanup-routine/SKILL.md",{"basePath":398,"description":399,"displayName":400,"installMethods":401,"rationale":402,"selectedPaths":403,"source":323,"sourceLanguage":18,"type":246},"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",[404,406,409,411],{"path":405,"priority":317},"SKILL.md",{"path":407,"priority":408},"scripts/after.py","low",{"path":410,"priority":408},"scripts/before.py",{"path":412,"priority":408},"scripts/execute.py",{"basePath":414,"description":415,"displayName":416,"installMethods":417,"rationale":418,"selectedPaths":419,"source":323,"sourceLanguage":18,"type":246},"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",[420],{"path":405,"priority":317},{"basePath":422,"description":423,"displayName":424,"installMethods":425,"rationale":426,"selectedPaths":427,"source":323,"sourceLanguage":18,"type":246},"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",[428],{"path":405,"priority":317},{"basePath":430,"description":431,"displayName":432,"installMethods":433,"rationale":434,"selectedPaths":435,"source":323,"sourceLanguage":18,"type":246},"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",[436],{"path":405,"priority":317},{"basePath":438,"description":439,"displayName":440,"installMethods":441,"rationale":442,"selectedPaths":443,"source":323,"sourceLanguage":18,"type":246},"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",[444,445],{"path":405,"priority":317},{"path":412,"priority":408},{"basePath":447,"description":448,"displayName":449,"installMethods":450,"rationale":451,"selectedPaths":452,"source":323,"sourceLanguage":18,"type":246},"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",[453],{"path":405,"priority":317},{"basePath":455,"description":456,"displayName":457,"installMethods":458,"rationale":459,"selectedPaths":460,"source":323,"sourceLanguage":18,"type":246},"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",[461],{"path":405,"priority":317},{"basePath":463,"description":464,"displayName":465,"installMethods":466,"rationale":467,"selectedPaths":468,"source":323,"sourceLanguage":18,"type":246},"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",[469],{"path":405,"priority":317},{"basePath":471,"description":472,"displayName":473,"installMethods":474,"rationale":475,"selectedPaths":476,"source":323,"sourceLanguage":18,"type":246},"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",[477],{"path":405,"priority":317},{"basePath":479,"description":480,"displayName":481,"installMethods":482,"rationale":483,"selectedPaths":484,"source":323,"sourceLanguage":18,"type":246},"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",[485],{"path":405,"priority":317},{"basePath":487,"description":488,"displayName":489,"installMethods":490,"rationale":491,"selectedPaths":492,"source":323,"sourceLanguage":18,"type":246},"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",[493],{"path":405,"priority":317},{"basePath":495,"description":496,"displayName":497,"installMethods":498,"rationale":499,"selectedPaths":500,"source":323,"sourceLanguage":18,"type":246},"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",[501],{"path":405,"priority":317},{"basePath":503,"description":504,"displayName":505,"installMethods":506,"rationale":507,"selectedPaths":508,"source":323,"sourceLanguage":18,"type":246},"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",[509,510,511,512],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"path":412,"priority":408},{"basePath":514,"description":515,"displayName":516,"installMethods":517,"rationale":518,"selectedPaths":519,"source":323,"sourceLanguage":18,"type":246},"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",[520],{"path":405,"priority":317},{"basePath":522,"description":523,"displayName":524,"installMethods":525,"rationale":526,"selectedPaths":527,"source":323,"sourceLanguage":18,"type":246},"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",[528,529,530,531],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"path":412,"priority":408},{"basePath":533,"description":534,"displayName":535,"installMethods":536,"rationale":537,"selectedPaths":538,"source":323,"sourceLanguage":18,"type":246},"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",[539],{"path":405,"priority":317},{"basePath":541,"description":542,"displayName":543,"installMethods":544,"rationale":545,"selectedPaths":546,"source":323,"sourceLanguage":18,"type":246},"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",[547,548,549],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"basePath":551,"description":552,"displayName":553,"installMethods":554,"rationale":555,"selectedPaths":556,"source":323,"sourceLanguage":18,"type":246},"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",[557,558,559],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"basePath":561,"description":562,"displayName":563,"installMethods":564,"rationale":565,"selectedPaths":566,"source":323,"sourceLanguage":18,"type":246},"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",[567,568,569,570],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"path":412,"priority":408},{"basePath":572,"description":573,"displayName":574,"installMethods":575,"rationale":576,"selectedPaths":577,"source":323,"sourceLanguage":18,"type":246},"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",[578],{"path":405,"priority":317},{"basePath":580,"description":581,"displayName":582,"installMethods":583,"rationale":584,"selectedPaths":585,"source":323,"sourceLanguage":18,"type":246},"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",[586],{"path":405,"priority":317},{"basePath":588,"description":589,"displayName":590,"installMethods":591,"rationale":592,"selectedPaths":593,"source":323,"sourceLanguage":18,"type":246},"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",[594],{"path":405,"priority":317},{"basePath":596,"description":597,"displayName":598,"installMethods":599,"rationale":600,"selectedPaths":601,"source":323,"sourceLanguage":18,"type":246},"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",[602,603],{"path":405,"priority":317},{"path":410,"priority":408},{"basePath":605,"description":606,"displayName":607,"installMethods":608,"rationale":609,"selectedPaths":610,"source":323,"sourceLanguage":18,"type":246},"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",[611],{"path":405,"priority":317},{"basePath":613,"description":614,"displayName":615,"installMethods":616,"rationale":617,"selectedPaths":618,"source":323,"sourceLanguage":18,"type":246},"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",[619],{"path":405,"priority":317},{"basePath":243,"description":10,"displayName":13,"installMethods":621,"rationale":622,"selectedPaths":623,"source":323,"sourceLanguage":18,"type":246},{"claudeCode":12},"SKILL.md frontmatter at skills/reassign-deactivated-owners/SKILL.md",[624,625,626,627],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"path":412,"priority":408},{"basePath":629,"description":630,"displayName":631,"installMethods":632,"rationale":633,"selectedPaths":634,"source":323,"sourceLanguage":18,"type":246},"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",[635],{"path":405,"priority":317},{"basePath":637,"description":638,"displayName":639,"installMethods":640,"rationale":641,"selectedPaths":642,"source":323,"sourceLanguage":18,"type":246},"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",[643,644,645,646],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"path":412,"priority":408},{"basePath":648,"description":649,"displayName":650,"installMethods":651,"rationale":652,"selectedPaths":653,"source":323,"sourceLanguage":18,"type":246},"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",[654,655,656],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"basePath":658,"description":659,"displayName":660,"installMethods":661,"rationale":662,"selectedPaths":663,"source":323,"sourceLanguage":18,"type":246},"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",[664,665,666],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"basePath":668,"description":669,"displayName":670,"installMethods":671,"rationale":672,"selectedPaths":673,"source":323,"sourceLanguage":18,"type":246},"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",[674,675,676],{"path":405,"priority":317},{"path":407,"priority":408},{"path":410,"priority":408},{"basePath":678,"description":679,"displayName":680,"installMethods":681,"rationale":682,"selectedPaths":683,"source":323,"sourceLanguage":18,"type":246},"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",[684],{"path":405,"priority":317},{"sources":686},[687],"manual",{"closedIssues90d":232,"description":689,"forks":233,"license":238,"openIssues90d":8,"pushedAt":235,"readmeSize":230,"stars":236,"topics":690},"32 Claude Code skills for auditing, cleaning, enriching, and automating your HubSpot CRM",[],{"classifiedAt":692,"discoverAt":693,"extractAt":694,"githubAt":694,"updatedAt":692},1778698143787,1778698139523,1778698141911,[217,215,214,216,213],{"evaluatedAt":241,"extractAt":286,"updatedAt":241},[],[699,717,734,753,769,785],{"_creationTime":700,"_id":701,"community":702,"display":703,"identity":705,"providers":706,"relations":713,"tags":714,"workflow":715},1778698144006.224,"k17agbyx7wnnh9238dqj641dns86nf82",{"reviewCount":8},{"description":589,"installMethods":704,"name":590,"sourceUrl":14},{"claudeCode":12},{"basePath":588,"githubOwner":244,"githubRepo":245,"locale":18,"slug":590,"type":246},{"evaluate":707,"extract":712},{"promptVersionExtension":206,"promptVersionScoring":207,"score":708,"tags":709,"targetMarket":218,"tier":219},100,[215,710,214,711,213],"sales","workflows",{"commitSha":277},{"parentExtensionId":249,"repoId":282},[215,214,213,710,711],{"evaluatedAt":716,"extractAt":286,"updatedAt":716},1778698526315,{"_creationTime":718,"_id":719,"community":720,"display":721,"identity":723,"providers":724,"relations":730,"tags":731,"workflow":732},1778698144006.2202,"k172517ana4f5vj79mb22xzwsx86mksv",{"reviewCount":8},{"description":448,"installMethods":722,"name":449,"sourceUrl":14},{"claudeCode":12},{"basePath":447,"githubOwner":244,"githubRepo":245,"locale":18,"slug":449,"type":246},{"evaluate":725,"extract":729},{"promptVersionExtension":206,"promptVersionScoring":207,"score":708,"tags":726,"targetMarket":218,"tier":219},[213,214,727,728,291],"maintenance","reporting",{"commitSha":277},{"parentExtensionId":249,"repoId":282},[291,214,213,727,728],{"evaluatedAt":733,"extractAt":286,"updatedAt":733},1778698268281,{"_creationTime":735,"_id":736,"community":737,"display":738,"identity":741,"providers":742,"relations":749,"tags":750,"workflow":751},1778698144006.2231,"k172hgm2mhketjz0tmptf85ms986nx8p",{"reviewCount":8},{"description":552,"installMethods":739,"name":740,"sourceUrl":14},{"claudeCode":12},"Enrich Contact Industry",{"basePath":551,"githubOwner":244,"githubRepo":245,"locale":18,"slug":553,"type":246},{"evaluate":743,"extract":748},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":744,"targetMarket":218,"tier":219},[213,214,745,215,746,747],"data-enrichment","contact-management","segmentation",{"commitSha":277,"license":238},{"parentExtensionId":249,"repoId":282},[215,746,214,745,213,747],{"evaluatedAt":752,"extractAt":286,"updatedAt":752},1778698467653,{"_creationTime":754,"_id":755,"community":756,"display":757,"identity":759,"providers":760,"relations":765,"tags":766,"workflow":767},1778698144006.2266,"k178ar72y21gtdvpcbmcmd227s86mq2d",{"reviewCount":8},{"description":679,"installMethods":758,"name":680,"sourceUrl":14},{"claudeCode":12},{"basePath":678,"githubOwner":244,"githubRepo":245,"locale":18,"slug":680,"type":246},{"evaluate":761,"extract":764},{"promptVersionExtension":206,"promptVersionScoring":207,"score":762,"tags":763,"targetMarket":218,"tier":219},98,[213,214,727,215,728],{"commitSha":277},{"parentExtensionId":249,"repoId":282},[215,214,213,727,728],{"evaluatedAt":768,"extractAt":286,"updatedAt":768},1778698703534,{"_creationTime":770,"_id":771,"community":772,"display":773,"identity":775,"providers":776,"relations":781,"tags":782,"workflow":783},1778698144006.2253,"k175q9vhdtjhmdnj5sfg0js0y186m41d",{"reviewCount":8},{"description":630,"installMethods":774,"name":631,"sourceUrl":14},{"claudeCode":12},{"basePath":629,"githubOwner":244,"githubRepo":245,"locale":18,"slug":631,"type":246},{"evaluate":777,"extract":780},{"promptVersionExtension":206,"promptVersionScoring":207,"score":762,"tags":778,"targetMarket":218,"tier":219},[213,214,779,746,215],"data-hygiene",{"commitSha":277},{"parentExtensionId":249,"repoId":282},[215,746,214,779,213],{"evaluatedAt":784,"extractAt":286,"updatedAt":784},1778698625452,{"_creationTime":786,"_id":787,"community":788,"display":789,"identity":791,"providers":792,"relations":797,"tags":798,"workflow":799},1778698144006.2224,"k174p9a47572wf9wcfggbjyrm586m3rq",{"reviewCount":8},{"description":523,"installMethods":790,"name":524,"sourceUrl":14},{"claudeCode":12},{"basePath":522,"githubOwner":244,"githubRepo":245,"locale":18,"slug":524,"type":246},{"evaluate":793,"extract":796},{"promptVersionExtension":206,"promptVersionScoring":207,"score":762,"tags":794,"targetMarket":218,"tier":219},[213,214,779,215,795],"python",{"commitSha":277},{"parentExtensionId":249,"repoId":282},[215,214,779,213,795],{"evaluatedAt":800,"extractAt":286,"updatedAt":800},1778698421190]