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

setup-flows-auth — скилл для Claude Code: что делает и как установить

Настраивает авторизацию React-приложений в Cognite Flows и Fusion iframe. Скилл определяет тип интеграции, ставит нужные SDK и правит конфигурацию Vite.

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

Что делает setup-flows-auth

Скилл проверяет файлы app.json, package.json, vite.config.ts и точку входа приложения (src/main.tsx или src/index.tsx). Если поле infra в app.json содержит значение appsApi, настраивается режим Apps API с библиотекой @cognite/app-sdk. При других значениях скилл предлагает классический вариант с @cognite/dune. Если корректная авторизация уже найдена, агент прерывает работу без изменений.

Утилита определяет менеджер пакетов по lock-файлу (pnpm или npm) и доустанавливает недостающие зависимости. В конфигурацию Vite добавляются плагины mkcert для работы по HTTPS и fusionOpenPlugin. Для Apps API первым подключается плагин manifestCspPlugin, иначе браузер заблокирует CSP-заголовки.

В точке входа код оборачивается в провайдеры @tanstack/react-query и соответствующий SDK. На последнем шаге скилл вычищает ручную инициализацию CogniteClient, OIDC-токены и переменные окружения вроде VITE_CDF_PROJECT. При этом лишний бойлерплейт удаляется.

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

  • перевести React-приложение на авторизацию Cognite Flows
  • настроить подключение к CDF внутри iframe Fusion
  • сконфигурировать плагины vite-plugin-mkcert и fusionOpenPlugin в vite.config.ts
  • заменить ручную инициализацию CogniteClient на CogniteSdkProvider

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

  • Настрой авторизацию Flows для этого React-приложения
  • Подключи DuneAuthProvider и переведи проект на работу внутри Fusion iframe
  • Добавь Apps API авторизацию через @cognite/app-sdk

Как установить setup-flows-auth

1Через Skills CLI (Vercel)

npx skills add cognitedata/builder-skills --skill setup-flows-auth -a claude-code

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

~/.claude/skills/setup-flows-auth/SKILL.md

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

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

Вопросы о setup-flows-auth

Как установить setup-flows-auth в Claude Code?

Выполните команду npx skills add cognitedata/builder-skills --skill setup-flows-auth -a claude-code. Также файл скилла можно сохранить вручную по пути ~/.claude/skills/setup-flows-auth/SKILL.md.

Зачем нужен скилл setup-flows-auth?

Он автоматизирует интеграцию React-интерфейса с Cognite Data Fusion внутри Fusion. Скилл определяет нужный SDK по app.json, ставит пакеты и настраивает провайдеры авторизации.

Как скилл выбирает между Apps API и Classic flow?

Скилл проверяет поле infra в app.json. Если там указано appsApi, подключается @cognite/app-sdk. Если поле отсутствует или файл не найден, скилл предлагает классический режим с @cognite/dune.

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

SKILL.md · Apache-2.0
---
name: setup-flows-auth
description: "MUST be used when migrating an existing React app to Flows, or when no Flows auth is wired up. Detects classic vs Apps API flow from `app.json` `infra` field, installs the right packages, and wires up the entry file. No-op when a valid auth setup is already in place. Triggers: migrate to Flows, add Flows auth, DuneAuthProvider, AppSdkAuthProvider, connectToHostApp, useDune, Flows setup, setup auth, missing auth provider, CDF authentication, Fusion iframe auth."
allowed-tools: Read, Glob, Grep, Edit, Write, Bash
metadata:
  argument-hint: ""
---

# Set Up Flows Authentication

Wire a React app for Flows auth so it can talk to CDF inside Fusion. Two flows exist; pick one based on `app.json`.

## Pick the flow

Read `app.json` if present:

| `app.json` `infra` | Flow | Auth source | Extra package |
|---|---|---|---|
| `"appsApi"` | **Apps API** (new Fusion app host) | `connectToHostApp` from `@cognite/app-sdk` | `@cognite/app-sdk` |
| missing / other | **Classic** (legacy Files API) | `DuneAuthProvider` + `useDune()` from `@cognite/dune` | — |

No `app.json`? Ask the user. Default to **Apps API** — it's the default for `npx @cognite/cli@latest apps create`.

## Step 1 — Read state, decide whether to act

Read `package.json`, `src/main.tsx` (or `src/index.tsx`), `vite.config.ts`, `app.json`.

**A valid setup already exists if any of these is true — in which case do nothing and report no-op:**

- **Classic**: `<DuneAuthProvider>` from `@cognite/dune` wraps `<App />` in the entry file.
- **Apps API, provider pattern**: `<CogniteSdkProvider>` from `@cognite/app-sdk/react` wraps the app (in `App.tsx` or `main.tsx`), and nested components consume the client via `useCogniteSdk()`. Requires `@cognite/app-sdk >= 0.5.1`.

Detect the package manager from the lock file (`pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, otherwise npm).

## Step 2 — Install missing deps

**Classic flow:**

| Package | Type |
|---|---|
| `@cognite/dune` | runtime |
| `@cognite/sdk` | runtime |
| `@tanstack/react-query` | runtime |
| `vite-plugin-mkcert` | dev |

**Apps API flow:**

| Package | Type |
|---|---|
| `@cognite/app-sdk` | runtime |
| `@cognite/sdk` | runtime |
| `@tanstack/react-query` | runtime |
| `vite-plugin-mkcert` | dev |

Skip anything already in `package.json`. Use the detected package manager (`pnpm add`, `npm install`, `yarn add`; `-D` / `--save-dev` for dev deps).

## Step 3 — Vite config

Add only what's missing. Don't remove existing plugins.

### Classic flow

```ts
import { fusionOpenPlugin } from "@cognite/dune/vite";
import mkcert from "vite-plugin-mkcert";

export default defineConfig({
  base: "./",
  plugins: [react(), mkcert(), fusionOpenPlugin(), /* ... */],
  server: { port: 3001 },
  worker: { format: "es" },
});
```

### Apps API flow

```ts
// or see @cognite/cli/_templates/app/new/config/vite.config.ts.ejs.t source file for newest config
import { fusionOpenPlugin, manifestCspPlugin } from "@cognite/app-sdk/vite";
import mkcert from "vite-plugin-mkcert";

export default defineConfig({
  base: "./",
  // manifestCspPlugin() must be first — its middleware sets the CSP header before any HTML response
  plugins: [manifestCspPlugin(), react(), mkcert(), fusionOpenPlugin(), /* ... */],
  server: { port: 3001 },
  worker: { format: "es" },
});
```

- `base: "./"` — required for Fusion iframe deployment.
- `mkcert()` — provides HTTPS for the dev server (the Fusion parent is HTTPS).
- `fusionOpenPlugin()` — opens the dev URL inside Fusion automatically.
- `manifestCspPlugin()` (Apps API only) — enforces the CSP declared in `manifest.json`; must be first.
- `server.port: 3001` — convention; the plugin falls back to 3001 if no port is set.

## Step 4 — Wire up the entry file and component

### Classic flow

`src/main.tsx`:

```tsx
import { DuneAuthProvider } from "@cognite/dune";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";

const queryClient = new QueryClient({
  defaultOptions: { queries: { staleTime: 5 * 60 * 1000, gcTime: 10 * 60 * 1000 } },
});

ReactDOM.createRoot(document.getElementById("root")!).render(
  <React.StrictMode>
    <QueryClientProvider client={queryClient}>
      <DuneAuthProvider>
        <App />
      </DuneAuthProvider>
    </QueryClientProvider>
  </React.StrictMode>
);
```

In components, use `useDune()`:

```tsx
import { useDune } from "@cognite/dune";

const { sdk, isLoading, error } = useDune();
// sdk is an authenticated CogniteClient
```

### Apps API flow (generator default, `@cognite/app-sdk >= 0.5.1`)

`src/main.tsx` does **not** wrap in any auth provider — auth is handled inside `App.tsx`:

```tsx
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";

const queryClient = new QueryClient({
  defaultOptions: { queries: { staleTime: 5 * 60 * 1000, gcTime: 10 * 60 * 1000 } },
});

ReactDOM.createRoot(document.getElementById("root")!).render(
  <React.StrictMode>
    <QueryClientProvider client={queryClient}>
      <App />
    </QueryClientProvider>
  </React.StrictMode>
);
```

`src/App.tsx` uses `CogniteSdkProvider` from `@cognite/app-sdk/react`. The provider handles the Comlink handshake, loading, and error states internally. Nested components read the client via `useCogniteSdk()`:

```tsx
import { CogniteSdkProvider, useCogniteSdk } from "@cognite/app-sdk/react";

function AppContent() {
  const client = useCogniteSdk();
  // client is an authenticated CogniteClient
  return <div>{client.project}</div>;
}

function App() {
  return (
    <CogniteSdkProvider
      loadingFallback={<div>Loading...</div>}
      errorFallback={<div>Failed to connect to Fusion</div>}
    >
      <AppContent />
    </CogniteSdkProvider>
  );
}
```

`useCogniteSdk()` throws if called outside `CogniteSdkProvider` — always nest it inside.

## Step 5 — Clean up superseded code

Remove only what's now redundant:

- Custom CDF auth providers/hooks
- Manual `CogniteClient` instantiation
- OIDC/token-management code
- CDF env vars (`VITE_CDF_PROJECT`, `VITE_CDF_CLUSTER`, etc.) — Flows/the host provide these

If unsure, leave it and flag to the user.

© cognitedata · Apache-2.0 · cognitedata/builder-skills

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

Всё по теме «Фронтенд и UI» →
frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. CX Codex +1 678 700установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. 986 201установок hyperframes heygen-com Скилл задаёт агенту правила рендера HTML-кода в видео через HyperFrames. Помогает собирать проморолики, эксплейнеры и титры прямо в коде проекта. CX Codex +1 1 200 000установок hyperframes-cli heygen-com Управляет проектами HyperFrames через терминал: собирает таймлайн, проверяет контраст кадров, запускает предпросмотр и рендерит видео локально или в облаке. CX Codex +1 1 300 000установок webapp-testing официальный anthropics Скилл запускает проверки локальных веб-приложений через Playwright: помогает отлаживать UI, делать скриншоты и смотреть логи браузера. 186 758установок

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

pull-changes-resolve-conflicts Скилл ведёт агента через слияние веток: сначала показывает конфликты и спрашивает, потом правит. Пригодится, когда в проекте несколько контрибьюторов. CX Codex +1 1 900установок create-client-tool Скилл создаёт клиентский инструмент AtlasTool для чата useAtlasChat в веб-приложении. Он описывает схему TypeBox, настраивает вызов логики в браузере и подключает инструмент к чату. CX Codex +1 1 900установок performance Скилл помогает находить узкие места в производительности Flows и проверять изменения замерами. Используйте его при лишних перерисовках, медленных запросах или большом объёме данных. CX Codex +1 1 900установок graph-viewer Скилл помогает встроить интерактивный граф модели данных CDF в приложение на Flows: узлы, связи и обратные связи. CX Codex +1 1 900установок setup-python-tools Ставит клиентское выполнение Python-инструментов через Pyodide в приложение с уже готовым useAtlasChat. Нужен, когда агент отдаёт код инструмента, а считать он должен в браузере. CX Codex +1 1 900установок dm-limits-and-best-practices Справочный скилл про лимиты CDF Data Modeling: конкурентность и 429, пагинация, батчи, QueuedTaskRunner. Пригодится, когда код сыпет ошибками на нагрузке. CX Codex +1 1 900установок integrate-file-viewer Пошагово внедряет компонент CogniteFileViewer в приложения Flows для предварительного просмотра файлов CDF, отчётов и изображений. CX Codex +1 1 900установок security Проходит по приложению Flows шаг за шагом: находит утечки секретов, опасный DOM, дыры в авторизации — и сразу правит их. CX Codex +1 1 900установок

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

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