Communitygithub.com

marnixGeerkens/rocketlauncher-claude-code

Directives de développement frontend pour applications React/TypeScript. Modèles modernes incluant Suspense, lazy loading, useSuspenseQuery, organisation des fichiers avec répertoire features, style MUI v7, TanStack Router, optimisation des performances et bonnes pratiques TypeScript. À utiliser lors de la création de composants, pages, fonctionnalités, récupération de données, stylisation, routage ou travail avec du code frontend.

Qu'est-ce que rocketlauncher-claude-code ?

Cette compétence fournit un guide complet et détaillé pour le développement frontend moderne avec React et TypeScript, en mettant l'accent sur les modèles basés sur Suspense, le chargement différé (lazy loading), une organisation rigoureuse des fichiers et l'optimisation des performances. Elle est conçue pour être utilisée comme référence par les développeurs et les agents d'IA lorsqu'ils créent de nouveaux composants, pages ou fonctionnalités, configurent le routage avec TanStack Router, stylisent avec MUI v7, ou récupèrent des données via TanStack Query. La compétence définit des checklists claires pour les nouveaux composants et fonctionnalités, des alias d'import standardisés (tels que `@/`, `~types`, `~components`, `~features`), et sept guides thématiques couvrant les modèles de composants, la récupération de données, l'organisation des fichiers, le stylisme, le routage, les états de chargement/erreur et l'optimisation des performances. Elle impose des principes stricts comme l'absence de retours anticipés avec des spinners de chargement (pour éviter les décalages de mise en page cumulatifs) et l'utilisation systématique de `useSuspenseQuery` pour la récupération de données. La compétence est conçue pour être lue progressivement : la section principale fournit des directives générales et des extraits de code, tandis que des ressources liées plus profondes sont disponibles pour des informations détaillées sur chaque sujet, permettant une gestion optimale du contexte pour les agents d'IA.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/marnixGeerkens/rocketlauncher-claude-code/tree/HEAD/components/skills/development/frontend-dev-guidelines

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Directives de Développement Frontend

Objectif

Guide complet pour le développement React moderne, mettant l'accent sur la récupération de données basée sur Suspense, le chargement différé, une organisation appropriée des fichiers et l'optimisation des performances.

Quand Utiliser Cette Compétence

  • Créer de nouveaux composants ou pages
  • Construire de nouvelles fonctionnalités
  • Récupérer des données avec TanStack Query
  • Configurer le routage avec TanStack Router
  • Styliser des composants avec MUI v7
  • Optimiser les performances
  • Organiser le code frontend
  • Bonnes pratiques TypeScript

Démarrage Rapide

Checklist pour Nouveau Composant

Vous créez un composant ? Suivez cette checklist :

  • Utiliser le modèle React.FC<Props> avec TypeScript
  • Chargement différé si composant lourd : React.lazy(() => import())
  • Envelopper dans <SuspenseLoader> pour les états de chargement
  • Utiliser useSuspenseQuery pour la récupération de données
  • Alias d'import : @/, ~types, ~components, ~features
  • Styles : En ligne si <100 lignes, fichier séparé si >100 lignes
  • Utiliser useCallback pour les gestionnaires d'événements passés aux enfants
  • Export par défaut en bas
  • Pas de retours anticipés avec des spinners de chargement
  • Utiliser useMuiSnackbar pour les notifications utilisateur

Checklist pour Nouvelle Fonctionnalité

Création d'une fonctionnalité ? Mettez en place cette structure :

  • Créer le répertoire features/{nom-fonctionnalite}/
  • Créer les sous-répertoires : api/, components/, hooks/, helpers/, types/
  • Créer le fichier de service API : api/{fonctionnalite}Api.ts
  • Configurer les types TypeScript dans types/
  • Créer la route dans routes/{nom-fonctionnalite}/index.tsx
  • Chargement différé des composants de la fonctionnalité
  • Utiliser les limites Suspense
  • Exporter l'API publique depuis le index.ts de la fonctionnalité

Référence Rapide des Alias d'Import

AliasRésout versExemple
@/src/import { apiClient } from '@/lib/apiClient'
~typessrc/typesimport type { User } from '~types/user'
~componentssrc/componentsimport { SuspenseLoader } from '~components/SuspenseLoader'
~featuressrc/featuresimport { authApi } from '~features/auth'

Défini dans : vite.config.ts lignes 180-185


Aide-Mémoire des Imports Courants

// React & Chargement Différé
import React, { useState, useCallback, useMemo } from 'react';
const Heavy = React.lazy(() => import('./Heavy'));

// Composants MUI
import { Box, Paper, Typography, Button, Grid } from '@mui/material';
import type { SxProps, Theme } from '@mui/material';

// TanStack Query (Suspense)
import { useSuspenseQuery, useQueryClient } from '@tanstack/react-query';

// TanStack Router
import { createFileRoute } from '@tanstack/react-router';

// Composants du Projet
import { SuspenseLoader } from '~components/SuspenseLoader';

// Hooks
import { useAuth } from '@/hooks/useAuth';
import { useMuiSnackbar } from '@/hooks/useMuiSnackbar';

// Types
import type { Post } from '~types/post';

Guides Thématiques

🎨 Modèles de Composants

Les composants React modernes utilisent :

  • React.FC<Props> pour la sécurité des types
  • React.lazy() pour le fractionnement du code
  • SuspenseLoader pour les états de chargement
  • Modèle const nommé + export par défaut

Concepts Clés :

  • Chargement différé des composants lourds (DataGrid, graphiques, éditeurs)
  • Toujours envelopper les composants différés dans Suspense
  • Utiliser le composant SuspenseLoader (avec animation de fondu)
  • Structure du composant : Props → Hooks → Gestionnaires → Rendu → Export

📖 Guide Complet : resources/component-patterns.md


📊 Récupération de Données

MODÈLE PRINCIPAL : useSuspenseQuery

  • Utiliser avec les limites Suspense
  • Stratégie cache-first (vérifier le cache grille avant l'API)
  • Remplace les vérifications isLoading
  • Type-safe avec les génériques

Couche de Service API :

  • Créer features/{feature}/api/{feature}Api.ts
  • Utiliser l'instance axios apiClient
  • Méthodes centralisées par fonctionnalité
  • Format de route : /form/route (PAS /api/form/route)

📖 Guide Complet : resources/data-fetching.md


📁 Organisation des Fichiers

features/ vs components/ :

  • features/ : Spécifique au domaine (posts, comments, auth)
  • components/ : Vraiment réutilisables (SuspenseLoader, CustomAppBar)

Sous-répertoires des Fonctionnalités :

features/
  ma-fonctionnalite/
    api/          # Couche de service API
    components/   # Composants de la fonctionnalité
    hooks/        # Hooks personnalisés
    helpers/      # Fonctions utilitaires
    types/        # Types TypeScript

📖 Guide Complet : resources/file-organization.md


🎨 Stylisation

En ligne vs Séparé :

  • <100 lignes : En ligne const styles: Record<string, SxProps<Theme>>
  • 100 lignes : Fichier .styles.ts séparé

Méthode Principale :

  • Utiliser la prop sx pour les composants MUI
  • Type-safe avec SxProps<Theme>
  • Accès au thème : (theme) => theme.palette.primary.main

Grille MUI v7 :

<Grid size={{ xs: 12, md: 6 }}>  // ✅ Syntaxe v7
<Grid xs={12} md={6}>             // ❌ Ancienne syntaxe

📖 Guide Complet : resources/styling-guide.md


🛣️ Routage

TanStack Router - Basé sur les Dossiers :

  • Répertoire : routes/ma-route/index.tsx
  • Chargement différé des composants
  • Utiliser createFileRoute
  • Données de fil d'Ariane dans le loader

Exemple :

import { createFileRoute } from '@tanstack/react-router';
import { lazy } from 'react';

const MaPage = lazy(() => import('@/features/ma-fonctionnalite/components/MaPage'));

export const Route = createFileRoute('/ma-route/')({
    component: MaPage,
    loader: () => ({ crumb: 'Ma Route' }),
});

📖 Guide Complet : resources/routing-guide.md


⏳ États de Chargement et d'Erreur

RÈGLE CRITIQUE : Pas de Retours Anticipés

// ❌ JAMAIS - Provoque un décalage de mise en page
if (isLoading) {
    return <LoadingSpinner />;
}

// ✅ TOUJOURS - Mise en page cohérente
<SuspenseLoader>
    <Contenu />
</SuspenseLoader>

Pourquoi : Empêche le décalage cumulatif de mise en page (CLS), meilleure expérience utilisateur

Gestion des Erreurs :

  • Utiliser useMuiSnackbar pour les retours utilisateur
  • JAMAIS react-toastify
  • Callbacks onError de TanStack Query

📖 Guide Complet : resources/loading-and-error-states.md


⚡ Performance

Modèles d'Optimisation :

  • useMemo : Calculs coûteux (filtre, tri, map)
  • useCallback : Gestionnaires d'événements passés aux enfants
  • React.memo : Composants coûteux
  • Recherche avec debounce (300-500ms)
  • Prévention des fuites mémoire (nettoyage dans useEffect)

📖 Guide Complet : resources/performance.md


📘 TypeScript

Normes :

  • Mode strict, pas de type any
  • Types de retour explicites sur les fonctions
  • Imports de type : import type { User } from '~types/user'
  • Interfaces de props des composants avec JSDoc

📖 Guide Complet : resources/typescript-standards.md


🔧 Modèles Courants

Sujets Couverts :

  • React Hook Form avec validation Zod
  • Contrats d'encapsulation DataGrid
  • Normes des composants Dialog
  • Hook useAuth pour l'utilisateur courant
  • Modèles de mutation avec invalidation de cache

📖 Guide Complet : resources/common-patterns.md


📚 Exemples Complets

Exemples fonctionnels complets :

  • Composant moderne avec tous les modèles
  • Structure de fonctionnalité complète
  • Couche de service API
  • Route avec chargement différé
  • Suspense + useSuspenseQuery
  • Formulaire avec validation

📖 Guide Complet : resources/complete-examples.md


Guide de Navigation

Besoin de...Lisez cette ressource
Créer un composantcomponent-patterns.md
Récupérer des donnéesdata-fetching.md
Organiser les fichiers/dossiersfile-organization.md
Styliser les composantsstyling-guide.md
Configurer le routagerouting-guide.md
Gérer le chargement/erreursloading-and-error-states.md
Optimiser les performancesperformance.md
Types TypeScripttypescript-standards.md
Formulaires/Auth/DataGridcommon-patterns.md
Voir des exemples completscomplete-examples.md

Principes Fondamentaux

  1. Charger Différé Tout ce qui est Lourd : Routes, DataGrid, graphiques, éditeurs
  2. Suspense pour le Chargement : Utiliser SuspenseLoader, pas de retours anticipés
  3. useSuspenseQuery : Modèle principal de récupération de données pour le nouveau code
  4. Les Fonctionnalités sont Organisées : Sous-répertoires api/, components/, hooks/, helpers/
  5. Styles Basés sur la Taille : <100 en ligne, >100 séparé
  6. Alias d'Import : Utiliser @/, ~types, ~components, ~features
  7. Pas de Retours Anticipés : Empêche le décalage de mise en page
  8. useMuiSnackbar : Pour toutes les notifications utilisateur

Référence Rapide : Structure des Fichiers

src/
  features/
    ma-fonctionnalite/
      api/
        maFonctionnaliteApi.ts       # Service API
      components/
        MaFonctionnalite.tsx         # Composant principal
        SousComposant.tsx            # Composants liés
      hooks/
        useMaFonctionnalite.ts       # Hooks personnalisés
        useSuspenseMaFonctionnalite.ts  # Hooks Suspense
      helpers/
        maFonctionnaliteHelpers.ts   # Utilitaires
      types/
        index.ts              # Types TypeScript
      index.ts                # Exports publics

  components/
    SuspenseLoader/
      SuspenseLoader.tsx      # Chargeur réutilisable
    CustomAppBar/
      CustomAppBar.tsx        # Barre d'appli réutilisable

  routes/
    ma-route/
      index.tsx               # Composant de route
      creer/
        index.tsx             # Route imbriquée

Modèle de Composant Moderne (Copie Rapide)

import React, { useState, useCallback } from 'react';
import { Box, Paper } from '@mui/material';
import { useSuspenseQuery } from '@tanstack/react-query';
import { featureApi } from '../api/featureApi';
import type { FeatureData } from '~types/fonctionnalite';

interface MonComposantProps {
    id: number;
    surAction?: () => void;
}

export const MonComposant: React.FC<MonComposantProps> = ({ id, surAction }) => {
    const [etat, setEtat] = useState<string>('');

    const { data } = useSuspenseQuery({
        queryKey: ['feature', id],
        queryFn: () => featureApi.getFeature(id),
    });

    const gererAction = useCallback(() => {
        setEtat('mis à jour');
        surAction?.();
    }, [surAction]);

    return (
        <Box sx={{ p: 2 }}>
            <Paper sx={{ p: 3 }}>
                {/* Contenu */}
            </Paper>
        </Box>
    );
};

export default MonComposant;

Pour des exemples complets, voir resources/complete-examples.md


Compétences Connexes

  • error-tracking : Suivi des erreurs avec Sentry (s'applique aussi au frontend)
  • backend-dev-guidelines : Modèles d'API backend que le frontend consomme

Statut de la Compétence : Structure modulaire avec chargement progressif pour une gestion optimale du contexte

Individual skills in this repo

This repo contains 13 individual skills — each has its own dedicated page.

marnixGeerkens/rocketlauncher-claude-code

When the user wants to optimize, improve, or increase conversions on any marketing page — including homepage, landing pages, pricing pages, feature pages, or blog posts. Also use when the user says "CRO," "conversion rate optimization," "this page isn't converting," "improve conversions," or "why isn't this page working." For signup/registration flows, see signup-flow-cro. For post-signup activation, see onboarding-cro. For forms outside of signup, see form-cro. For popups/modals, see popup-cro.

marnixGeerkens/rocketlauncher-claude-code

Balance visual design with ATS compatibility for creative roles. Use when the user is in design, art, writing, marketing creative, or any visual/creative field and needs a resume that looks distinctive but still parses.

marnixGeerkens/rocketlauncher-claude-code

Transform resume bullets into detailed portfolio case studies with context, action, and outcome. Use when the user mentions portfolio, case study, project write-up, or expanding a resume bullet into a longer narrative.

marnixGeerkens/rocketlauncher-claude-code

Expert in building portfolios that actually land jobs and clients - not just showing work, but creating memorable experiences. Covers developer portfolios, designer portfolios, creative portfolios, and portfolios that convert visitors into opportunities. Use when: portfolio, personal website, showcase work, developer portfolio, designer portfolio.

marnixGeerkens/rocketlauncher-claude-code

Tailwind CSS v4 principles. CSS-first configuration, container queries, modern patterns, design token architecture.

marnixGeerkens/rocketlauncher-claude-code

Frontend development patterns for React, Next.js, state management, performance optimization, and UI best practices.

marnixGeerkens/rocketlauncher-claude-code

Next.js App Router principles. Server Components, data fetching, routing patterns.

marnixGeerkens/rocketlauncher-claude-code

Expert integration of Supabase Auth with Next.js App Router Use when: supabase auth next, authentication next.js, login supabase, auth middleware, protected route.

marnixGeerkens/rocketlauncher-claude-code

Comprehensive frontend development skill for building modern, performant web applications using ReactJS, NextJS, TypeScript, Tailwind CSS. Includes component scaffolding, performance optimization, bundle analysis, and UI best practices. Use when developing frontend features, optimizing performance, implementing UI/UX designs, managing state, or reviewing frontend code.

marnixGeerkens/rocketlauncher-claude-code

Create API handoff documentation for frontend developers. Use when backend work is complete and needs to be documented for frontend integration, or user says 'create handoff', 'document API', 'frontend handoff', or 'API documentation'.

marnixGeerkens/rocketlauncher-claude-code

Document frontend data needs for backend developers. Use when frontend needs to communicate API requirements to backend, or user says 'backend requirements', 'what data do I need', 'API requirements', or is describing data needs for a UI.

marnixGeerkens/rocketlauncher-claude-code

Comprehensive Python library for astronomy and astrophysics. This skill should be used when working with astronomical data including celestial coordinates, physical units, FITS files, cosmological calculations, time systems, tables, world coordinate systems (WCS), and astronomical data analysis. Use when tasks involve coordinate transformations, unit conversions, FITS file manipulation, cosmological distance calculations, time scale conversions, or astronomical data processing.

marnixGeerkens/rocketlauncher-claude-code

Comprehensive patterns for Next.js 14+ App Router architecture, Server Components, and modern full-stack React development.

Skills associés