# Skills portail - integration utile sans surcouche

## Intention

Le portail dispose deja d'un socle UX et metier solide.  
L'objectif n'est donc pas d'injecter artificiellement une nouvelle couche de "skills", mais de :

- capitaliser sur les briques deja presentes ;
- renforcer les zones qui apportent un vrai gain utilisateur ;
- eviter les dependances ou abstractions inutiles ;
- garder un portail fluide, lisible et robuste.

En pratique, un "skill" correspond ici a un **bloc de capacite reutilisable** :

- regle de layout ;
- logique UX ;
- moteur de donnees ;
- comportement mobile ;
- outil d'efficacite admin ;
- aide a l'autonomie association.

## Principe de pilotage

Avant d'ajouter un nouveau skill, verifier :

1. si le portail a deja une brique equivalente ;
2. si cette brique peut etre etendue proprement ;
3. si le gain UX ou metier est concret ;
4. si l'ajout ne degrade pas la performance ou la lisibilite.

## Lecture par priorite

### Priorite 1 - Skills structurels

Ces skills sont deja largement presents et doivent rester la base unique.

#### Responsive Engine

Etat :

- deja present

Points d'appui :

- [client/src/hooks/useMobile.tsx](/Users/selecta/Documents/portail-associations/client/src/hooks/useMobile.tsx)
- [client/src/components/DashboardLayout.tsx](/Users/selecta/Documents/portail-associations/client/src/components/DashboardLayout.tsx)
- [client/src/index.css](/Users/selecta/Documents/portail-associations/client/src/index.css)

Role :

- detection mobile / tablette / desktop ;
- adaptation sidebar / densite / structure ;
- reduction des regressions multi-appareils.

#### UI Kit Global

Etat :

- deja present

Points d'appui :

- [client/src/components/ui](/Users/selecta/Documents/portail-associations/client/src/components/ui)
- [client/src/components/portal/PortalSurface.tsx](/Users/selecta/Documents/portail-associations/client/src/components/portal/PortalSurface.tsx)

Role :

- boutons, badges, cartes, dialogues, tables, panneaux ;
- langage visuel commun entre public, association et admin.

#### Layout Manager

Etat :

- deja present

Points d'appui :

- [client/src/components/DashboardLayout.tsx](/Users/selecta/Documents/portail-associations/client/src/components/DashboardLayout.tsx)
- [client/src/components/portal/PortalSurface.tsx](/Users/selecta/Documents/portail-associations/client/src/components/portal/PortalSurface.tsx)

Role :

- structure stable ;
- alignements ;
- marges ;
- paddings ;
- hierarchie des surfaces.

#### Typography System

Etat :

- deja present et relie au module Apparence

Points d'appui :

- [shared/appearance.ts](/Users/selecta/Documents/portail-associations/shared/appearance.ts)
- [client/src/lib/appearance.ts](/Users/selecta/Documents/portail-associations/client/src/lib/appearance.ts)
- [client/src/index.css](/Users/selecta/Documents/portail-associations/client/src/index.css)

Role :

- famille de police ;
- echelle des titres ;
- lisibilite globale ;
- personnalisation sans casser la coherence.

### Priorite 2 - Skills UX

#### Smooth Navigation

Etat :

- partiellement present, renforce dans ce tour

Points d'appui :

- [client/src/components/DashboardLayout.tsx](/Users/selecta/Documents/portail-associations/client/src/components/DashboardLayout.tsx)
- [client/src/pages/Home.tsx](/Users/selecta/Documents/portail-associations/client/src/pages/Home.tsx)
- [client/src/lib/routePrefetch.ts](/Users/selecta/Documents/portail-associations/client/src/lib/routePrefetch.ts)

Role :

- navigation plus immediate ;
- prechargement des vues clefs au survol, au focus et au toucher ;
- reduction de la sensation d'attente entre clic et affichage.

#### Panel Interaction

Etat :

- deja present

Points d'appui :

- composants `Dialog`, `Sheet`, `DropdownMenu`, `Sidebar`
- regroupements d'actions secondaires deja poses sur plusieurs vues

Role :

- ouverture/fermeture propre ;
- actions secondaires discretes ;
- meilleure densite operationnelle.

#### List Enhancer

Etat :

- present par endroits, a propager selon besoin

Points d'appui :

- filtres et vues admin ;
- densite compacte / detaillee ;
- recherche sur annuaire et bordereau.

Role :

- tri ;
- recherche ;
- pagination ;
- lecture dense mais lisible.

#### Action Visibility

Etat :

- deja present sur les zones prioritaires

Role :

- mettre en avant valider / ignorer / appliquer / ouvrir ;
- reduire le bruit visuel ;
- garder une action principale claire.

### Priorite 3 - Skills Data

#### Matching Engine

Etat :

- deja present

Points d'appui :

- [server/associationDirectoryMatcher.ts](/Users/selecta/Documents/portail-associations/server/associationDirectoryMatcher.ts)
- [server/routers.ts](/Users/selecta/Documents/portail-associations/server/routers.ts)

Role :

- detection des correspondances ;
- rapprochement portail / bordereau ;
- reduction des doublons.

#### Fusion Engine

Etat :

- present en logique de validation, a etendre si besoin

Role :

- fusion propre ;
- arbitrage humain ;
- tracabilite.

#### Data Validation

Etat :

- deja largement present

Points d'appui :

- normalisations dans `server/associationDirectory.ts`
- validations schema Zod dans `server/routers.ts`
- helpers partages `shared/*`

#### API Connector (RNA / SIRENE / HelloAsso)

Etat :

- present et renforce

Points d'appui :

- [server/associationReferenceSync.ts](/Users/selecta/Documents/portail-associations/server/associationReferenceSync.ts)
- [docs/compliance/association-directory-official-enrichment.md](/Users/selecta/Documents/portail-associations/docs/compliance/association-directory-official-enrichment.md)

Role :

- enrichissement controle ;
- aucune creation automatique ;
- validation admin obligatoire.

### Priorite 4 - Skills Mobile

#### Mobile Scroll

Etat :

- renforce

Points d'appui :

- [client/src/index.css](/Users/selecta/Documents/portail-associations/client/src/index.css)
- [client/src/lib/appearance.ts](/Users/selecta/Documents/portail-associations/client/src/lib/appearance.ts)

Role :

- limiter les couches couteuses pendant le scroll ;
- garder les fonds immersifs sans penaliser la fluidite.

#### Lazy Loading

Etat :

- deja present sur les routes et certaines cartes

Points d'appui :

- `lazy(...)` dans [client/src/App.tsx](/Users/selecta/Documents/portail-associations/client/src/App.tsx)

#### Prefetch Engine

Etat :

- ajoute dans ce tour

Points d'appui :

- [client/src/lib/routePrefetch.ts](/Users/selecta/Documents/portail-associations/client/src/lib/routePrefetch.ts)

Role :

- precharger les vues les plus frequentes ;
- accelerer la navigation percue ;
- ne rien casser dans le routeur existant.

#### Touch Gestures

Etat :

- a traiter seulement si un vrai besoin apparait

Decision UX :

- ne pas ajouter de gestuelle complexe par defaut ;
- privilegier une ergonomie simple avant les gestures.

### Priorite 5 - Skills Admin

#### Admin Dashboard

Etat :

- deja present

#### Correspondence Manager

Etat :

- deja present et enrichi

Role :

- correspondances a valider ;
- propositions officielles ;
- workflow de decision humain.

#### Notification Engine

Etat :

- deja present

Role :

- alertes ;
- badges ;
- suivi des dossiers prioritaires.

### Priorite 6 - Skills Association

#### Association Portal

Etat :

- deja present et fortement harmonise

#### Reservation Flow

Etat :

- deja present

#### Document Center

Etat :

- deja present

## Ce qui a ete ajoute dans ce tour

### 1. Prefetch discret des routes clefs

Ajout du fichier :

- [client/src/lib/routePrefetch.ts](/Users/selecta/Documents/portail-associations/client/src/lib/routePrefetch.ts)

Et branchement sur :

- la sidebar dashboard/admin ;
- la navigation et les CTA principaux de l'accueil.

Impact attendu :

- navigation plus fluide ;
- sensation de site plus reactif ;
- zero changement de logique metier.

### 2. Clarification strategique

On ne traite pas les skills comme des plugins externes a injecter partout.

On les traite comme :

- des capacites internes ;
- deja presentes ou utiles ;
- propageres seulement quand elles ont un vrai impact.

## Recommandation UX

Le bon ordre reste :

1. structurel ;
2. UX ;
3. data ;
4. mobile ;
5. admin ;
6. association.

Mais dans le code, cela doit se traduire par :

- extension des briques existantes ;
- pas de sur-abstraction ;
- pas de moteur supplementaire si la base actuelle couvre deja le besoin.

## Regle de prudence

Un skill n'est utile que s'il rend le portail :

- plus stable ;
- plus fluide ;
- plus lisible ;
- plus simple a administrer ;
- plus confortable pour l'association.

Sinon, c'est du superflu.
