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

customware-support-widget — скилл для Claude Code

Ставит виджет поддержки Customware в клиентский React Router SPA: скрипт в root.tsx, элемент <customware-chat> в нужном маршруте или лейауте.

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

Что делает customware-support-widget

Скилл ведёт агента по подключению стороннего браузерного кастомного элемента <customware-chat> в шаблоне Customware на React Router в режиме client-only. Скрипт https://app.customware.ai/support-widget/customware-chat.js грузится один раз из root.tsx или равнозначного корневого файла, а сам элемент рендерится только там, где поддержка действительно нужна — во флоутинговом лончере или встроенной панели.

Два режима: chat-bubble для плавающей кнопки с диалогом и full для сайдбара, рейла или сплит-панели. Оба требуют org-id и project-id. Если хотя бы один идентификатор неизвестен, задача должна упасть с явной причиной: подставлять заглушки или задавать уточняющие вопросы скилл запрещает. Посетительские данные передаются только через meta — email и name, ничего больше. Размеры задаются обёрткой, styleOptions или style-options; нативный DOM-атрибут style как конфигурация не годится.

Внутри виджета живут Shadow DOM, рантайм чата, вызовы сервисов, бейджи инструментов и работа со страницей: заполнить форму, выбрать опцию, нажать кнопку, заменить значение. Свои обработчики кликов и заполнения вокруг элемента добавлять не нужно, как и лезть в Shadow DOM или перекрашивать внутренности в React. В full режиме обёртка должна иметь конкретную высоту, а прокрутка остаётся за виджетом. В chat-bubble следите, чтобы контейнер не обрезал элемент и имел подходящий z-index.

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

  • подключить чат поддержки в клиентский React Router SPA
  • поставить плавающий лончер поддержки в оболочку приложения
  • встроить чат как панель в отдельную область лейаута
  • дать агенту поддержки заполнить форму за пользователя
  • поправить размещение или стили уже стоящего виджета

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

  • Добавь виджет поддержки Customware в root.tsx и отрендери его в лейауте приложения
  • Поставь <customware-chat> в режиме chat-bubble с org-id и project-id
  • Переведи виджет в режим full в правой панели и задай высоту обёртки

Как установить customware-support-widget

1Через Skills CLI (Vercel)

npx skills add customware-ai/skills --skill customware-support-widget -a claude-code

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

~/.claude/skills/customware-support-widget/SKILL.md

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

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

Вопросы о customware-support-widget

Как установить customware-support-widget в Claude Code?

Выполните npx skills add customware-ai/skills --skill customware-support-widget -a claude-code. После этого файл скилла лежит в ~/.claude/skills/customware-support-widget/SKILL.md.

Что делает customware-support-widget?

Проводит агента по шагам подключения чата поддержки Customware в шаблоне на React Router: загрузка скрипта, типизация JSX, рендер элемента в нужном маршруте, режимы chat-bubble и full, необязательные meta и styleOptions.

Что нужно, чтобы скилл сработал?

Идентификаторы orgId и projectId. Без них задача завершается с причиной о нехватке id — заглушки не подставляются. Если id приходят асинхронно, компонент оборачивают в условие orgId && projectId.

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

SKILL.md · MIT
---
name: customware-support-widget
description: Use this skill when adding, placing, configuring, or fixing the Customware support chat widget in the Customware React Router client-only SPA template. It covers root.tsx/root document script loading, route/layout placement, required org/project ids, bubble versus full mode, optional metadata and style options, page-operation support, and constraints for MITB-style code generation.
---

# Customware Support Widget

Use this skill when the Customware React Router client-only SPA template needs a Customware support chat entry point.

The widget is a third-party browser custom element. In this template, load the widget script in `root.tsx` or the equivalent React Router root file/component where the HTML document structure is defined, and render `<customware-chat>` only in the route or layout where support should appear. The widget owns its Shadow DOM UI, chat runtime, service calls, tool badges, speech input, and page-operation behavior.

For all React code examples, script loading patterns, JSX typing, bubble/full mode examples, metadata, and style options, read [references/component-usage.md](references/component-usage.md).

## What It Offers

- A support chat UI as `<customware-chat>`.
- `chat-bubble` mode for a floating launcher/dialog.
- `full` mode for a sidebar, rail, drawer, or split-pane chat region.
- Optional visitor metadata through the `meta` DOM property.
- Optional sizing/customization through `styleOptions` or `style-options`.
- Tool-backed support behavior: read domain/context, list tasks, create tasks, and operate the visible page.
- Page operation for user requests like filling forms, selecting options, clicking buttons, replacing values, or submitting visible UI.

## When To Use

- Add support chat to the Customware React Router client-only SPA template.
- Place a floating support launcher in an app shell.
- Place support chat as a full embedded panel in a layout region.
- Allow the support agent to help with visible app UI, such as filling a form on behalf of the user.
- Update an existing support widget placement or styling.

For the exact React implementation patterns, use [references/component-usage.md](references/component-usage.md).

## When Not To Use

- Do not use this skill for server-side rendering work. The target template is client-only React Router SPA mode.
- Do not use this skill to build a custom chat UI.
- Do not use this skill to iframe the widget.
- Do not use this skill to call support chat endpoints directly.
- Do not use this skill for non-template React apps or non-React apps unless explicitly asked.
- Do not use this skill if `orgId` or `projectId` cannot be determined. Fail the task with a clear reason that the required Customware org/project id is missing.

## Non-Negotiables

- Always render the real custom element: `<customware-chat>`.
- Always pass both `org-id` and `project-id`.
- If either id is unavailable, fail the task with a clear missing-id reason instead of rendering placeholders or asking follow-up questions.
- Load `https://app.customware.ai/support-widget/customware-chat.js` once from `root.tsx` or the template's equivalent React Router root document shell unless an existing app-level loader already does this.
- Do not pass task ids, domain ids, user ids, API tokens, session tokens, auth cookies, or secrets into the component.
- Use `meta` only for optional visitor identity: `email` and/or `name`.
- Use wrapper CSS, `styleOptions`, or `style-options` for sizing. Do not use the native DOM `style` property as widget configuration.
- Tool calls are compact status badges, not buttons.
- Page operation is handled inside the widget. Do not add custom click/fill/page-control handlers around it.
- Do not hardcode page-operation prompts or values into the host app. The user must type the request into the widget.

## Implementation Workflow

1. Read [references/component-usage.md](references/component-usage.md).
2. Confirm the React app has `orgId` and `projectId`.
3. Choose the mode:
   - `chat-bubble` for a floating support launcher/dialog.
   - `full` for an embedded rail, drawer, split pane, or fixed chat region.
4. Add the script tag in `root.tsx` or the React Router root file/component that defines the HTML document `<head>`, unless it already exists.
5. Add JSX custom element typings in a `.d.ts` file when the template does not already know `<customware-chat>`.
6. Render `<customware-chat>` with `org-id` and `project-id` in the specific route or layout that needs support.
7. Set optional `meta` and `styleOptions` through a typed React ref when needed.
8. For full mode, ensure the wrapper/component has a concrete height and internal scrolling belongs to the widget.
9. For bubble mode, ensure the wrapper is not clipped and has an appropriate `z-index`.
10. Validate the resulting React code syntactically and with `npm run check` when available.

Use [references/component-usage.md](references/component-usage.md) for complete code examples for each mode.

## MITB Agent Constraints

- Do not assume access to Playwright, screenshots, browser DevTools, or visual testing.
- Do not claim that the widget was visually tested.
- Do not write user-facing status reports inside the generated app.
- Validate by code inspection, TypeScript/compile checks, and ensuring the generated React Router/Vite code follows the examples in [references/component-usage.md](references/component-usage.md).
- If runtime ids are unavailable during generation, fail the task with a clear missing-id reason. If ids are expected to load asynchronously at runtime, gate the component behind `orgId && projectId` so it never renders with placeholders.

## Do Not Do

- Do not create an iframe integration.
- Do not rebuild or restyle the widget internals in React.
- Do not reach into Shadow DOM or depend on internal class names.
- Do not expose tool calls as clickable UI controls.
- Do not call the support chat API or page-operation API directly from the host app.
- Do not add fallback embed modes.
- Do not store secrets, access tokens, private payloads, or auth/session data in widget attributes.
- Do not pass arbitrary user/profile objects into `meta`; pass only optional `email` and `name`.
- Do not set a fixed height only on an imagined internal message list. Size the whole full-mode host region.
- Do not place bubble mode inside clipped or transformed containers unless that behavior is intentional.

© customware-ai · MIT · customware-ai/skills

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

Всё по теме «Фронтенд и UI» →
experience-ui-bundle-agentforce-client-generate forcedotcom Встраивает клиент Agentforce Conversation в React и Angular UI Bundle: находит нужный пакет, проверяет agentId и подключает компонент на страницу. CX Codex +1 5 000установок clerk-react-router-patterns clerk Помогает настроить Clerk с React Router v7/v8: загрузчики, защищённые маршруты, SSR и выбор организации. Нужен при добавлении авторизации в роутер. CX Codex +1 15 500установок react-router-v7 existential-birds Скилл с практиками React Router v7: подсказывает, когда брать loader, Form или fetcher, и как настраивать вложенные маршруты. CX Codex +1 572установок isolet-widget-isolation reason-machines Скилл помогает упаковать компонент в самодостаточный виджет с shadow DOM и собственными стилями, чтобы встроить его на любую страницу. CX Codex +1 474установок sentry-react-router-framework-sdk getsentry Помогает настроить мониторинг ошибок и трейсинг в проектах на React Router v7 в режиме Framework mode. Пригодится при подключении пакета @sentry/react-router. CX Codex +1 1 800установок route-based patterns.dev Подсказывает агенту, как разбить SPA по маршрутам и грузить только тот код, который нужен на текущей странице. Пригодится, когда маршрутов много, а стартовая загрузка тормозит. CX Codex +1 1 400установок

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

domain-context Фиксирует терминологию, связи сущностей и бизнес-правила проекта в файле .tasks/domain.md. Помогает ассистенту не терять контекст между сессиями. CX Codex +1 2 500установок task-workflow Превращает задачу в пошаговый протокол с артефактами, гейтами и запретом останавливаться раньше седьмой фазы. CX Codex +1 1 900установок crm-builder Скилл превращает описание бизнеса в DOMAIN.md в рабочий прототип CRM: контакты, компании, сделки и канбан-воронка. CX Codex +1 1 400установок customware-ai Скилл помогает добавлять AI-чат, генерацию текста, инструменты и структурированный JSON в приложения на React Router и Hono. CX Codex +1 639установок playwright-in-sandbox Скилл для проверки интерфейса в браузере через Playwright и написания устойчивых E2E-тестов. Пригодится, когда после правок UI нужны скриншоты, а не только состояние DOM. CX Codex +1 508установок playwright-interactive-sandbox Скилл организует итеративную проверку веб-интерфейса через постоянный Node.js-скрипт с Playwright. Он нужен для функционального и визуального QA. CX Codex +1 400установок

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

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