К основному содержанию
скилл CX Codex

ticket-resolution — скилл для Claude Code: тикеты HubSpot

Скилл ведёт тикеты HubSpot из терминала: создаёт, сортирует по приоритету, двигает по стадиям и закрывает с записью решения.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add HubSpot/agent-cli-skills --skill ticket-resolution -a claude-code
Открыть на GitHub

Что делает ticket-resolution

Скилл работает через CLI hubspot и объект tickets. Первым делом он читает bulk-operations/SKILL.md — там JSONL-конвейер, пакетное чтение, пагинация и схема --dry-run/--digest/--confirm с восстановлением через hubspot history.

Стадии воронки у каждого портала свои, поэтому скилл требует заново находить их в каждой сессии: hubspot pipelines list --type tickets, затем pipelines stages. Значения hs_ticket_priority, hs_ticket_category и hs_resolution — это перечисления, настраиваемые в портале, и их тоже надо читать через properties options-list. Опираться на дефолты HubSpot нельзя: в другом портале те же поля называются иначе.

Создание тикета требует только subject; без hs_pipeline и hs_pipeline_stage он упадёт в первую стадию воронки по умолчанию. Дальше — ассоциации с контактами и компаниями, поиск открытых и неназначенных тикетов, массовый перевод по стадиям и закрытие. Закрытие необратимо, поэтому сначала прогоняйте --dry-run, а потом повторяйте с --digest и --confirm <ticket_id>: подтверждение нужно при любом числе строк, не только выше сотни.

Какие задачи решает

  • создать тикет из обращения и привязать его к контакту и компании
  • выбрать открытые тикеты с высоким приоритетом
  • найти неназначенные тикеты и раздать их владельцам
  • перевести пачку тикетов в следующую стадию одним запросом
  • закрыть тикет с корректным значением решения

Примеры запросов агенту

  • Создай тикет HubSpot по обращению из support_requests.jsonl и привяжи его к контакту
  • Покажи открытые тикеты с приоритетом HIGH и без владельца
  • Переведи все тикеты категории BILLING_ISSUE из стадии New в Waiting on contact, сначала dry-run

Как установить ticket-resolution

1Через Skills CLI (Vercel)

npx skills add HubSpot/agent-cli-skills --skill ticket-resolution -a claude-code

2Вручную: положить файлы

~/.claude/skills/ticket-resolution/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/ticket-resolution/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о ticket-resolution

Как установить ticket-resolution в Claude?

Выполните npx skills add HubSpot/agent-cli-skills --skill ticket-resolution -a claude-code. После этого файл скилла лежит в ~/.claude/skills/ticket-resolution/SKILL.md.

Что делает ticket-resolution?

Ведёт тикеты HubSpot через CLI: создаёт их, ищет по стадии и приоритету, массово двигает по воронке и закрывает с записью решения.

Почему скилл каждый раз заново ищет стадии воронки?

ID стадий различаются в каждом портале, и значения перечислений вроде hs_resolution тоже настраиваются на месте. Поэтому скилл читает их через pipelines stages и properties options-list, а не полагается на значения по умолчанию.

Исходный текст

SKILL.md · Apache-2.0
---
name: ticket-resolution
description: Create, triage, advance, and close HubSpot support tickets — pipeline discovery, contact/company association, priority queues, bulk stage moves, resolution close-out.
triggers:
  - "create ticket"
  - "support ticket"
  - "triage tickets"
  - "open tickets"
  - "resolve ticket"
  - "close ticket"
  - "advance ticket"
  - "ticket pipeline"
  - "unassigned tickets"
  - "reassign ticket"
---

Read `bulk-operations/SKILL.md` first — JSONL piping, batch read, pagination, dry-run/digest/confirm, and `hubspot history` recovery live there. `hubspot <command> --help` is authoritative. Tickets use the `tickets` object type (plural, e.g. `tickets:45123`).

## 1. Discover pipeline + stages (portal-specific, run every session)

Stage IDs differ in every portal — never hard-code them.

```bash
hubspot pipelines list --type tickets --format table
hubspot pipelines stages --type tickets --pipeline <pipeline_id> --format table
```

The stage table prints each stage's `ID` and `Label` ("New", "Waiting on contact", "Closed", etc.). `pipelines list`/`get` also return each pipeline's full `stages` array in `jsonl`/`json`, so one call is enough to map a `hs_pipeline_stage` value to its label.

## 2. Verify enum option values for THIS portal

`hs_ticket_priority`, `hs_ticket_category`, and `hs_resolution` are all `enumeration` properties — option values are portal-configurable. List the allowed options directly with `properties options-list` (the old `objects update … --property hs_resolution=__probe__` probe no longer works — updates are digest-gated now). `properties get` returns the same `options` array inline if you want values and labels together:

```bash
# List the allowed option values for each enum
hubspot properties options-list --type tickets hs_ticket_priority | jq -r '.value'
hubspot properties options-list --type tickets hs_ticket_category | jq -r '.value'
hubspot properties options-list --type tickets hs_resolution      | jq -r '.value'
# each row: {"value":"ISSUE_FIXED","label":"Issue fixed","displayOrder":0,"hidden":false}

# Fallback — read values already in use on live records:
hubspot objects list --type tickets --limit 10 \
  --properties hs_ticket_priority,hs_ticket_category,hs_resolution
```

Do NOT assume HubSpot defaults — read the portal.

## 3. Create a ticket and associate it

`subject` is the only practically-required property. Skipping `hs_pipeline`/`hs_pipeline_stage` lands the ticket in the default pipeline's first stage.

```bash
hubspot objects create --type tickets \
  --property subject="Login error on mobile app" \
  --property content="User reports 401 since v3.2 release." \
  --property hs_pipeline=<pipeline_id> \
  --property hs_pipeline_stage=<new_stage_id> \
  --property hs_ticket_priority=<value_from_step_2> \
  --property hs_ticket_category=<value_from_step_2>
# Capture the "id" from the output JSON.

hubspot associations create --from tickets:<ticket_id> --to contacts:<contact_id>
hubspot associations create --from tickets:<ticket_id> --to companies:<company_id>
```

Bulk intake from a JSONL queue (see `bulk-operations/resources/json-patterns.md` for reshape patterns):

```bash
cat support_requests.jsonl \
| jq -c '{properties:{subject:.subject, content:.description,
    hs_pipeline:"<pipeline_id>", hs_pipeline_stage:"<new_stage_id>",
    hs_ticket_priority:"<priority>", hs_ticket_category:"<category>"}}' \
| hubspot objects create --type tickets
```

## 4. Triage queries

```bash
# Open tickets by priority
hubspot objects search --type tickets \
  --filter "hs_pipeline_stage=<open_stage_id> AND hs_ticket_priority=HIGH" \
  --properties subject,hubspot_owner_id,createdate

# Unassigned
hubspot objects search --type tickets \
  --filter "!hubspot_owner_id AND hs_pipeline_stage=<open_stage_id>" \
  --properties subject,hs_ticket_priority,createdate
```

Filter by owner with `hubspot_owner_id=<id>` (find IDs via `hubspot owners list --format table`).

## 5. Advance tickets through stages (bulk update from search)

```bash
hubspot objects search --type tickets \
  --filter "hs_ticket_category=BILLING_ISSUE AND hs_pipeline_stage=<new_stage_id>" \
| jq -c '{id, properties:{hs_pipeline_stage:"<waiting_stage_id>"}}' \
| hubspot objects update --type tickets --dry-run
```

`objects update` is irreversible, so re-pipe the same search with the `--digest`/`--confirm` lifted from the preview line — required at every row count, not just >100 (confirm = the row count for a batch). See the `--digest`/`--confirm` flow in `bulk-operations/SKILL.md` ("Safe destructive workflow"). Reassign in bulk works identically with `{hubspot_owner_id:"<new>"}`.

## 6. Log a resolution note

Activity creation lives in `sales-execution/SKILL.md` (notes/calls/meetings/tasks). After creating the note there, link it: `hubspot associations create --from notes:<note_id> --to tickets:<ticket_id>`.

## 7. Close the ticket

`hs_resolution` is an enumeration — pass an allowed option value from Step 2, not free text. HubSpot then computes `hs_is_closed=true`, `closed_date`, and `time_to_close`.

`objects update` is irreversible — dry-run first, then re-run with the digest and `--confirm <ticket_id>`:

```bash
hubspot objects update --type tickets <ticket_id> \
  --property hs_pipeline_stage=<closed_stage_id> \
  --property hs_resolution=<allowed_resolution_value> --dry-run
hubspot objects update --type tickets <ticket_id> \
  --property hs_pipeline_stage=<closed_stage_id> \
  --property hs_resolution=<allowed_resolution_value> --digest <hash> --confirm <ticket_id>
```

## Known limitations

- Enum options: list them with `hubspot properties options-list --type tickets <property>` (fallback: read live records).
- Chat/inbox: `hubspot conversations` reads inboxes, channels, threads, and messages — e.g. `hubspot conversations threads list --inbox-id <id> --associated-ticket-id <ticket_id>` pulls the chat thread behind a ticket. Run `hubspot conversations --help` for the full surface.

© HubSpot · Apache-2.0 · HubSpot/agent-cli-skills

Похожие скиллы

Все скиллы по теме «Автоматизация и no-code: n8n, Zapier, Make» →
ticket-deflector официальный anthropics Разбирает обращения клиентов, сверяет платежи в Stripe, PayPal или Square и готовит черновик ответа в авторском тоне. CX Codex +1 1 600установок cargo-connection getcargo Управляет интеграциями и коннекторами в Cargo CLI, находит действия и разрешает параметры connectorUuid для нод воркфлоу. CX Codex +1 10 300установок Zendesk Automation Claude Office Skills Скилл распределяет обращения по отделам и отслеживает SLA в Zendesk. Пригодится командам поддержки, чтобы ускорить обработку тикетов. CX Codex +1 4 500установок canva-creator официальный anthropics Берёт готовый бриф контента и пошагово разворачивает кампанию: строит календарь публикаций, создаёт макеты в Canva для соцсетей, пишет тексты и отправляет посты в HubSpot. CX Codex +1 1 900установок linear-tickets stablyai Скилл ведёт задачи Linear через CLI Orca: берёт тикет, двигает его по статусам, закрывает ссылкой на PR и комментарием. CX Codex +1 4 600установок inngest-flow-control inngest Скилл по flow control в Inngest: concurrency, throttling, rate limiting, debounce, priority, singleton и батчинг событий. Пригодится, когда внешние API отвечают 429. CX Codex +1 1 600установок

Из того же набора11

workflow-automation Скилл учит агента управлять автоматизациями HubSpot через агентский CLI hubspot. Помогает создавать, читать, обновлять и удалять сценарии v4 flows API прямо из терминала. CX Codex +1 1 800установок crm-data-quality Скилл для работы с записями HubSpot: находит незаполненные поля, приводит значения к одному виду, сливает дубликаты и проверяет свойства. CX Codex +1 1 800установок bulk-operations Скилл задаёт базовые приёмы работы с CLI hubspot: пакетное чтение, пагинация, JSONL-конвейеры и безопасные массовые записи. CX Codex +1 1 800установок quote-to-cash Скилл для работы с HubSpot через CLI: создаёт товары, собирает сметы со строками и связями, читает счета и подписки. CX Codex +1 1 700установок customer-retention Находит клиентов без контакта и с риском оттока через фильтры CRM HubSpot, затем создаёт задачи на дозвон пачкой. CX Codex +1 1 700установок team-ownership Разбирает, кому принадлежат контакты, сделки и тикеты в HubSpot, и переносит владение при уходе сотрудника. CX Codex +1 1 700установок communication-history Скилл вытаскивает из HubSpot звонки, письма, заметки, встречи и задачи по контакту, сделке или компании и собирает справку перед звонком. CX Codex +1 1 700установок custom-object-management Скилл для работы со схемами кастомных объектов HubSpot CRM: посмотреть, создать, обновить метаданные или удалить тип объекта через CLI. CX Codex +1 1 700установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой