mcpField
A
ai-elements-workflow

ai-elements-workflow

github.com/sstoboデザイン・UI24198 回インストール40 週間前に更新
リポジトリ

ai-elements-workflow について

ai-elements-workflow は、Vercel AI Elements と React Flow でインタラクティブなワークフロー可視化を構築するスキルです。React 開発者向けに、プロセス図やエディター用のノード、エッジ、キャンバス操作の組み立て方を説明します。

主な機能

  1. 01キャンバス型ワークフロー図
  2. 02カスタムノードとツールバー
  3. 03アニメーションおよび一時エッジ
  4. 04接続ハンドルの設定
  5. 05ズーム、表示調整、パネル

活用シーン

  1. 01ノード型ワークフローの構築
  2. 02プロセスフローの可視化
  3. 03図表エディターの作成
  4. 04AI アプリへのワークフロー表示の追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sstobo/convex-skills --skill ai-elements-workflow

インストール後、Claude Code で/ai-elements-workflowを入力して読み込まれたか確認します。

同梱ファイルreferences/components.md

詳細

AI Elements ワークフロー

このスキルでは、Vercel AI Elements と React Flow を使用してワークフローを可視化する方法を包括的に説明します。

使用する場面

  • インタラクティブなノードベースのワークフローインターフェースを構築する
  • プロセスフローを可視化する
  • カスタムノードとエッジを備えたダイアグラムエディターを実装する
  • AI アプリケーションにワークフローの可視化機能を追加する

セットアップ

1. Next.js プロジェクトを作成する
npx create-next-app@latest ai-workflow && cd ai-workflow

プロジェクトのセットアップ時に Tailwind を使用するよう選択してください。

2. AI Elements をインストールする
npx ai-elements@latest

未設定の場合は、shadcn/ui もセットアップされます。

3. React Flow をインストールする
npm i @xyflow/react
4. コンポーネントを追加する

必要に応じてワークフローコンポーネントをインストールします。

npx ai-elements@latest add canvas
npx ai-elements@latest add node
npx ai-elements@latest add edge
npx ai-elements@latest add connection
npx ai-elements@latest add controls
npx ai-elements@latest add panel
npx ai-elements@latest add toolbar

ワークフローの構築

コンポーネントをインポートする
'use client';
import { Canvas } from '@/components/ai-elements/canvas';
import { Connection } from '@/components/ai-elements/connection';
import { Controls } from '@/components/ai-elements/controls';
import { Edge } from '@/components/ai-elements/edge';
import {
  Node,
  NodeContent,
  NodeDescription,
  NodeFooter,
  NodeHeader,
  NodeTitle,
} from '@/components/ai-elements/node';
import { Panel } from '@/components/ai-elements/panel';
import { Toolbar } from '@/components/ai-elements/toolbar';
import { Button } from '@/components/ui/button';
ノード ID を定義する
const nodeIds = {
  start: 'start',
  process1: 'process1',
  decision: 'decision',
  output1: 'output1',
  output2: 'output2',
  complete: 'complete',
};
ノードを作成する
const nodes = [
  {
    id: nodeIds.start,
    type: 'workflow',
    position: { x: 0, y: 0 },
    data: {
      label: 'Start',
      description: 'Initialize workflow',
      handles: { target: false, source: true },
      content: 'Triggered by user action',
      footer: 'Status: Ready',
    },
  },
  // Add more nodes...
];
エッジを作成する

アクティブなパスには animated を、条件付きまたはエラーのパスには temporary を使用します。

const edges = [
  {
    id: 'edge1',
    source: nodeIds.start,
    target: nodeIds.process1,
    type: 'animated',
  },
  {
    id: 'edge2',
    source: nodeIds.decision,
    target: nodeIds.output2,
    type: 'temporary', // For error/conditional paths
  },
];
ノードタイプを定義する
const nodeTypes = {
  workflow: ({
    data,
  }: {
    data: {
      label: string;
      description: string;
      handles: { target: boolean; source: boolean };
      content: string;
      footer: string;
    };
  }) => (
    <Node handles={data.handles}>
      <NodeHeader>
        <NodeTitle>{data.label}</NodeTitle>
        <NodeDescription>{data.description}</NodeDescription>
      </NodeHeader>
      <NodeContent>
        <p className="text-sm">{data.content}</p>
      </NodeContent>
      <NodeFooter>
        <p className="text-muted-foreground text-xs">{data.footer}</p>
      </NodeFooter>
      <Toolbar>
        <Button size="sm" variant="ghost">Edit</Button>
        <Button size="sm" variant="ghost">Delete</Button>
      </Toolbar>
    </Node>
  ),
};
エッジタイプを定義する
const edgeTypes = {
  animated: Edge.Animated,
  temporary: Edge.Temporary,
};
キャンバスをレンダリングする
const App = () => (
  <Canvas
    edges={edges}
    edgeTypes={edgeTypes}
    fitView
    nodes={nodes}
    nodeTypes={nodeTypes}
    connectionLineComponent={Connection}
  >
    <Controls />
    <Panel position="top-left">
      <Button size="sm" variant="secondary">Export</Button>
    </Panel>
  </Canvas>
);

export default App;

主な機能

機能説明
カスタムノードコンポーネントNodeHeader、NodeTitle、NodeDescription、NodeContent、NodeFooter を使用して構造化されたレイアウトを作成します
ノードツールバーToolbar コンポーネントを使用して、ノードにコンテキストに応じたアクションを追加します
ハンドルの設定handles: { target: boolean, source: boolean } で接続を制御します
エッジタイプアクティブなフローには Edge.Animated、条件付きパスには Edge.Temporary を使用します
接続線新しい接続をドラッグしているときに、スタイル付きのベジェ曲線を表示します
コントロールズームイン/アウトと表示範囲の調整ボタン
パネルキャンバス上の任意の場所にカスタム UI を配置します

コンポーネントリファレンス

各コンポーネントの props と API の詳細については、references/components.md を参照してください。

コメント