
ticket-resolution
SkillHubSpot 官方技能:让 agent 用 HubSpot Agent CLI 创建和分诊客服工单,按管道阶段推进、按优先级排队、批量改状态并记录解决结果。需 HubSpot 账号、安装并登录 Agent CLI(测试版),并同时安装同仓库的 bulk-operations 技能;会直接改线上 CRM 数据,建议先在沙箱账号试用。
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.
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:
# 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.
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):
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
# 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)
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>:
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 conversationsreads 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. Runhubspot conversations --helpfor the full surface.
相關資源

HubSpot Agent CLI Skills
SkillHubSpot 官方技能包,教 agent 用 hubspot 命令行处理 CRM:查客户与往来记录、筛选受众、清洗重复数据、推进商机、出销售报表、分派客服工单。需先安装 HubSpot Agent CLI(测试版)并登录 HubSpot 账号;批量改删前先预演,部分功能需付费版。
HubSpot/agent-cli-skills27
HubSpot Agent CLI
CLIHubSpot 官方为 AI agent 打造的命令行(beta):销售、市场和客服可让 AI 查找与批量更新联系人、公司、交易和工单,记录通话与会议,推进交易阶段,分派客服会话,并配有官方技能包。需要 HubSpot 账号并在浏览器登录;写操作直接改动线上数据,建议先用 --dry-run 试跑。
HubSpot/agent-cli7
Review and Reputation
Skill汇总 Google、Yelp、Facebook 等平台的顾客评价与投诉,按主题归纳并附原话,以店主口吻为每条评价起草回复,经确认后才发布;还能找出久未回购的老客并起草挽回消息。粘贴或导出评价即可使用,接入 CRM、收款或 Shopify 后更全面。Anthropic 官方 small-business 插件。
anthropics/knowledge-work-plugins29.9k
service-omni-channel-setup-coordinate
SkillSalesforce 官方技能,供 Service Cloud 管理员用命令行代替后台点选,搭好客服全渠道(Omni-Channel)路由:坐席与主管账号、队列、在线状态、权限和路由流程;可先只读预览,只写入沙箱、试用或开发者版组织。需要 Service Cloud 许可、sf 命令行和 jq,须整库安装以带上子技能。
forcedotcom/sf-skills1.1k
Salesforce Service Engagement
PluginSalesforce 官方插件:帮客服系统管理员配置 Service Cloud 的网页聊天、消息、WhatsApp 和 Email-to-Case 渠道,把 Agentforce 客服机器人接入渠道并设置转人工。需要 Salesforce 组织的管理权限,本机装好并登录 Salesforce CLI(sf),另需 Python。
forcedotcom/sf-skills1.1k
GTM Agents: Customer Success
Plugingtm-agents 合集里的客户成功插件:提供客户健康度监控、采用率提升计划、升级处理手册三个命令及对应子代理,另有风险评分框架、高管业务回顾(EBR)材料、客户反馈闭环等技能。纯提示词无需账号,需自备用量、工单、NPS 等客户数据。
gtmagents/gtm-agents420