Community画像github.com

existential-birds/react-flow

React Flow (@xyflow/react) を使用したワークフロー可視化スキル。カスタムノードやエッジを使ったグラフ可視化、ワークフローノードの作成、エッジラベルの実装、ビューポートの制御に活用します。

react-flow とは?

このスキルは、React ベースのワークフロー可視化ライブラリ `@xyflow/react`(旧 React Flow)を活用し、カスタムノードとエッジによる高度なグラフ可視化を実現します。開発者は、このスキルを使うことで、複雑なワークフロー図や状態遷移図を簡単に構築できます。React コンポーネントとしてノードやエッジをカスタマイズ可能で、`Handle`、`NodeProps`、`EdgeProps` などの型安全な API を使用して、ドラッグ&ドロップ、ズーム、パンなどのインタラクティブな操作を実装できます。また、`useReactFlow` フックを使ってビューポート制御や `fitView` による自動フィッティングが可能で、開発者体験を大幅に向上させます。このスキルは、Claude Code、Coder、Cursor などの AI エージェントと組み合わせて、ワークフローエディタや図表作成アプリケーションを効率的に開発するのに最適です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/existential-birds/beagle/tree/main/skills/react-flow

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

react-flow は何をしますか?

React Flow (@xyflow/react) を使用したワークフロー可視化スキル。カスタムノードとエッジを使ったグラフ可視化、ワークフローノードの作成、エッジラベルの実装、ビューポートの制御に活用します。トリガー: ReactFlow, @xyflow/react, Handle, NodeProps, EdgeProps, useReactFlow, fitView。

概要

このスキルは、@xyflow/react ライブラリを用いて、インタラクティブなグラフ可視化やワークフローダイアグラムを構築するためのガイドラインを提供します。カスタムノード、エッジ、ラベルなどを柔軟に定義し、ビューポートの制御やイベントハンドリングを実装できます。

主な機能

  • カスタムノード: Handle コンポーネントを使用して入出力ポートを定義し、任意の React コンポーネントをノードとしてレンダリング。
  • カスタムエッジ: エッジのスタイルやラベル、アニメーションをカスタマイズ。EdgeProps を使用して型安全に実装。
  • ビューポート制御: useReactFlow フックを使い、fitView や zoomTo でビューポートをプログラム的に制御。
  • イベント処理: ノードのドラッグ、エッジの接続、クリックなどのイベントを処理。

基本的な使い方

import React, { useCallback } from 'react';
import {
  ReactFlow,
  Background,
  Controls,
  MiniMap,
  useNodesState,
  useEdgesState,
  addEdge,
} from '@xyflow/react';
import '@xyflow/react/dist/style.css';

const initialNodes = [
  { id: '1', position: { x: 0, y: 0 }, data: { label: 'Node 1' } },
  { id: '2', position: { x: 0, y: 100 }, data: { label: 'Node 2' } },
];

const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];

function Flow() {
  const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
  const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);

  const onConnect = useCallback(
    (params) => setEdges((eds) => addEdge(params, eds)),
    [setEdges],
  );

  return (
    <ReactFlow
      nodes={nodes}
      edges={edges}
      onNodesChange={onNodesChange}
      onEdgesChange={onEdgesChange}
      onConnect={onConnect}
      fitView
    >
      <Background />
      <Controls />
      <MiniMap />
    </ReactFlow>
  );
}

export default Flow;

カスタムノードの例

import { Handle, Position, NodeProps } from '@xyflow/react';

type CustomNodeData = {
  label: string;
};

function CustomNode({ data }: NodeProps<CustomNodeData>) {
  return (
    <div style={{ padding: 10, border: '1px solid #777', borderRadius: 5, background: '#fff' }}>
      <Handle type="target" position={Position.Top} />
      <div>{data.label}</div>
      <Handle type="source" position={Position.Bottom} />
    </div>
  );
}

参考リンク

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル