cleanup-forms — скилл для Claude Code: что делает и как установить
Находит и удаляет неиспользуемые, тестовые и устаревшие формы в HubSpot через Forms API. Помогает навести порядок в панели маркетинга и отчётах.
npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a claude-codeЧто делает cleanup-forms
Скилл пошагово проводит аудит форм в HubSpot. Сначала он запрашивает параметры очистки: удалять сразу или помечать префиксом [DEPRECATED], а также список неприкосновенных форм. Затем через Marketing Forms API v3 выгружается реестр всех форм с датами создания, числом заполнений и временем последней активности.
Перед удалением скрипт проверяет триггеры воронок, вставки на боевых страницах и всплывающие CTA. В список кандидатов попадают формы без заполнений старше 30 дней, неактивные формы полугодовой давности и черновики со словами test, temp или draft. Учтите: удалить форму из HubSpot можно безвозвратно. Если стереть форму с заполнениями, история останется у контактов, но саму структуру придётся собирать заново.
Для работы требуются Python 3.10+, утилита uv и ключ HUBSPOT_ACCESS_TOKEN в файле .env со скоупом forms. На некоторых тарифах HubSpot API возвращает ошибку 403, поэтому аудит придётся завершать вручную через интерфейс Marketing > Forms.
Какие задачи решает
- найти тестовые формы со словами test, draft и temp
- выявить формы без единого заполнения старше 30 дней
- проверить привязку устаревших форм к активным воронкам и страницам
- удалить заброшенные формы через Marketing Forms API v3
Примеры запросов агенту
- Просканируй формы в HubSpot и покажи те, где нет заполнений больше 30 дней
- Найди устаревшие формы HubSpot и пометь их префиксом [DEPRECATED]
- Проверь тестовые формы со словом temp в HubSpot перед удалением
Как установить cleanup-forms
1Через Skills CLI (Vercel)
npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a claude-code2Вручную: положить файлы
~/.claude/skills/cleanup-forms/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/cleanup-forms/
1Через Skills CLI (Vercel)
npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a codex2Вручную: положить файлы
.agents/skills/cleanup-forms/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a cursor2Вручную: положить файлы
.cursor/skills/cleanup-forms/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install TomGranot/hubspot-admin-skills cleanup-forms2Вручную: положить файлы
.github/skills/cleanup-forms/SKILL.md1Через Skills CLI (Vercel)
npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a gemini-cli2Командой платформы
gemini skills install https://github.com/TomGranot/hubspot-admin-skills --path skills/cleanup-formsВручную: положить файлы
.devin/skills/cleanup-forms/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о cleanup-forms
Как установить cleanup-forms в Claude Code?
Выполните команду npx skills add TomGranot/hubspot-admin-skills --skill cleanup-forms -a claude-code. Файл навыка сохранится по пути ~/.claude/skills/cleanup-forms/SKILL.md.
Что нужно настроить перед запуском аудита?
Потребуются Python 3.10+, менеджер uv и переменная HUBSPOT_ACCESS_TOKEN в файле .env с разрешением forms.
Можно ли восстановить удалённую форму в HubSpot?
Нет, HubSpot не восстанавливает удалённые формы. Данные о прошлых отправках сохранятся в карточках контактов, но настройки самой формы перед удалением стоит экспортировать.
Исходный текст
SKILL.md · MIT
---
name: cleanup-forms
description: "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."
license: MIT
metadata:
author: tomgranot
version: "1.1"
category: ongoing-maintenance
---
# Cleanup Forms
Audit HubSpot forms to remove unused and test forms. Stale forms clutter the forms dashboard and can cause confusion when building workflows or reports.
## Prerequisites
- A HubSpot service key (`HUBSPOT_ACCESS_TOKEN` in `.env`; an existing legacy private app token also works) with `forms` scope
- Python 3.10+ with [`uv`](https://github.com/astral-sh/uv)
- Note: The Forms API may return 403 on some plan tiers. If so, perform the audit manually in the HubSpot UI under Marketing > Forms.
## Step-by-Step Instructions
### Stage 1: Plan
Confirm with the user before starting:
1. How aggressive to be: delete outright, or prefix with "[DEPRECATED]" first and delete next quarter?
2. Any forms that must never be touched (compliance, legal, active campaigns)?
### Stage 2: Before
Inventory all forms via the Marketing Forms API (v3):
```python
import os, requests
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.environ["HUBSPOT_ACCESS_TOKEN"]
BASE = "https://api.hubapi.com"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
forms, after = [], None
while True:
params = {"limit": 100}
if after:
params["after"] = after
resp = requests.get(f"{BASE}/marketing/v3/forms", headers=HEADERS, params=params)
resp.raise_for_status()
data = resp.json()
forms.extend(data.get("results", []))
after = data.get("paging", {}).get("next", {}).get("after")
if not after:
break
```
For each form, record: form ID, name, type, submission count, created date, last submission date.
### Stage 3: Execute
Flag forms matching any of these criteria:
1. **Zero submissions** and created more than 30 days ago
2. **No recent submissions** (last submission 6+ months ago) and not embedded on an active page
3. **Test forms** (names containing "test", "temp", "draft", "copy of")
4. **Deprecated forms** replaced by newer versions
Before deleting, check:
- Is the form referenced in any workflow enrollment trigger?
- Is the form embedded on any live landing page or website page?
- Is the form used in any pop-up or slide-in CTA?
Present the candidate list to the user and wait for explicit confirmation, then delete confirmed unused forms via the API (`DELETE /marketing/v3/forms/{formId}`) or UI.
### Stage 4: After
1. Re-run the inventory and confirm the deleted forms are gone.
2. Document what was deleted in a cleanup log.
3. If a form with submissions is deleted, the submission data is retained on the contact records — but the form definition is gone.
## Rollback
- Deleted forms cannot be restored in HubSpot.
- Before deleting a form with any submissions, export the form definition (field names, settings) so it can be recreated.
- Contact records retain their form submission history regardless of form deletion.
## Tips
- Establish a naming convention: `[TEAM] - Purpose - Version` (e.g., `[Marketing] - Webinar Registration - v2`).
- Prefix deprecated forms with "[DEPRECATED]" instead of deleting immediately — delete after one quarter of no usage.
© tomgranot · MIT · TomGranot/hubspot-admin-skills