En bref
Guide la création de composants de nœuds React Flow, avec des types TypeScript, des poignées (handles) et une intégration Zustand. On gagne à l’ouvrir pour construire des nœuds personnalisés sur un canevas React Flow, un éditeur de flux visuel, ou des composants d’interface fondés sur des nœuds. Cette skill appartient au catalogue officiel microsoft/skills (ensemble azure-sdk-typescript).
Ce que ça fait
- Crée un nœud React Flow typé, avec poignées
- Branche l’état du nœud sur Zustand
Pour qui, et un exemple
Les développeurs TypeScript qui construisent un éditeur de flux visuel ou des nœuds personnalisés React Flow, selon ce guide du catalogue Microsoft.
Exemple de demande : « Crée un nœud React Flow typé, avec ses poignées, et branche-le sur un store Zustand. »
À choisir pour des nœuds personnalisés sur un canevas React Flow, un éditeur de flux visuel, ou des composants d’interface fondés sur des nœuds, avec TypeScript, des poignées et Zustand. Exemple rédigé par iadujour.fr à partir du SKILL.md, non testé.
Installer
npx skills add microsoft/skills (sélection de la skill dans l’assistant, README).
npx skills add microsoft/skillsFonctionne avec
- GitHub Copilot
- Copilot CLI
Source : README : exemples de « Copilot CLI » et « GitHub Copilot in VS Code » ; l’installation `npx skills add` envoie les fichiers vers le répertoire de l’agent choisi, sans liste exhaustive.
Niveau : Intermédiaire
Suppose un projet de l’éditeur et la maîtrise du SDK ou de la CLI correspondante.
À savoir
Extrait du SKILL.md
La description d’origine, celle que l’agent lit pour décider de charger la skill (en anglais) :
Create React Flow node components with TypeScript types, handles, and Zustand integration. Use when building custom nodes for React Flow canvas, creating visual workflow editors, or implementing node-based UI components.
Citée depuis le SKILL.md au commit e1f9cce . Le dossier contient aussi 2 fichiers annexes (assets/).
Le SKILL.md compte 61 lignes et 5 sections principales :
- Quick Start
- Templates
- Node Component Pattern
- Type Definition Pattern
- Integration Steps
Licence : MIT
Vérifiée le 10 novembre 2026 sur : fichier LICENSE du dépôt . Licence déclarée dans le frontmatter : « MIT ». Titulaire : Copyright (c) Microsoft Corporation..
La licence autorise la reprise : le texte intégral du SKILL.md est reproduit ci-dessous, sans modification, avec sa mention de licence.
Texte intégral du SKILL.md
Reproduit sans modification depuis microsoft/skills (commit e1f9cce) , © Microsoft, sous licence MIT (fichier de licence d’origine ).
Afficher le SKILL.md original (61 lignes, en anglais)
---
name: react-flow-node-ts
description: Create React Flow node components with TypeScript types, handles, and Zustand integration. Use when building custom nodes for React Flow canvas, creating visual workflow editors, or implementing node-based UI components.
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
---
# React Flow Node
Create React Flow node components following established patterns with proper TypeScript types and store integration.
## Quick Start
Copy templates from [assets/](assets/) and replace placeholders:
- `{{NodeName}}` → PascalCase component name (e.g., `VideoNode`)
- `{{nodeType}}` → kebab-case type identifier (e.g., `video-node`)
- `{{NodeData}}` → Data interface name (e.g., `VideoNodeData`)
## Templates
- [assets/template.tsx](assets/template.tsx) - Node component
- [assets/types.template.ts](assets/types.template.ts) - TypeScript definitions
## Node Component Pattern
```tsx
export const MyNode = memo(function MyNode({
id,
data,
selected,
width,
height,
}: MyNodeProps) {
const updateNode = useAppStore((state) => state.updateNode);
const canvasMode = useAppStore((state) => state.canvasMode);
return (
<>
<NodeResizer isVisible={selected && canvasMode === 'editing'} />
<div className="node-container">
<Handle type="target" position={Position.Top} />
{/* Node content */}
<Handle type="source" position={Position.Bottom} />
</div>
</>
);
});
```
## Type Definition Pattern
```typescript
export interface MyNodeData extends Record<string, unknown> {
title: string;
description?: string;
}
export type MyNode = Node<MyNodeData, 'my-node'>;
```
## Integration Steps
1. Add type to `src/frontend/src/types/index.ts`
2. Create component in `src/frontend/src/components/nodes/`
3. Export from `src/frontend/src/components/nodes/index.ts`
4. Add defaults in `src/frontend/src/store/app-store.ts`
5. Register in canvas `nodeTypes`
6. Add to AddBlockMenu and ConnectMenu
Commentaires.
Un retour d’expérience, une question, une précision sur cette skill ? Les commentaires sont relus avant publication.
Commentaires publiés
Chargement des commentaires…
Laisser un commentaire
Charte de modération. Chaque commentaire est relu avant publication. Sont refusés : l’incitation à la haine, les propos injurieux ou discriminatoires, la publicité, le spam et les liens promotionnels, le hors-sujet et les données personnelles d’autrui.