docs(agents): fix-lint — Edge Tools diagnostics (webhint, axe, compat-api CSS)

This commit is contained in:
Nicolas Cantu 2026-04-09 22:49:57 +02:00
parent b4ce81858c
commit cc3f97931d

View File

@ -39,7 +39,7 @@ Chacune des actions ci-dessous est **obligatoire** et doit être réalisée **de
| **Réduction de complexité** | Réduire complexité cyclomatique, profondeur, paramètres ; extraire fonctions/composants. |
| **Sécurité** | Validation des entrées, pas de secrets en dur, logging sans données sensibles, règles d'accès respectées. |
| **Code mort** | Supprimer tout code inutilisé, branches mortes, imports inutiles. |
| **Lint** | Corriger toutes les **erreurs** et tous les **warnings** (même priorité ; **warnings = erreurs**). Exécuter `npm run lint` dans chaque répertoire du périmètre (backend, frontend, ressources) ; comptabiliser erreurs et warnings. **Interdit** : conclure « lint non applicable » sans justification stricte (tâche sans code source) — avec des sources, le lint est **normalement toujours** applicable. **Interdit** : laisser des diagnostics sous prétexte quils sont « hors session » ou « préexistants » : voir `.smartIde/rules/cloture-lint.mdc` — section **Diagnostics préexistants / hors périmètre de la session**. Si au moins un diagnostic : **corriger au moins 5 problèmes** (cumul erreurs + warnings) dans lexécution, sauf moins de 5 diagnostics au total (alors tout corriger). En clôture, « Lint : Réalisées » uniquement si **0 erreur et 0 warning** pour chaque répertoire ; sinon « Non réalisées encore » avec le détail par répertoire (voir `.smartIde/rules/cloture-lint.mdc`, dont la même section). |
| **Lint** | Corriger toutes les **erreurs** et tous les **warnings** (même priorité ; **warnings = erreurs**). Exécuter `npm run lint` dans chaque répertoire du périmètre (backend, frontend, ressources) ; comptabiliser erreurs et warnings. Sur le **frontend**, traiter aussi les diagnostics **Microsoft Edge Tools** (webhint, axe, compat-api CSS) — voir section **Diagnostics IDE : Microsoft Edge Tools**. **Interdit** : conclure « lint non applicable » sans justification stricte (tâche sans code source) — avec des sources, le lint est **normalement toujours** applicable. **Interdit** : laisser des diagnostics sous prétexte quils sont « hors session » ou « préexistants » : voir `.smartIde/rules/cloture-lint.mdc` — section **Diagnostics préexistants / hors périmètre de la session**. Si au moins un diagnostic : **corriger au moins 5 problèmes** (cumul erreurs + warnings) dans lexécution, sauf moins de 5 diagnostics au total (alors tout corriger). En clôture, « Lint : Réalisées » uniquement si **0 erreur et 0 warning** pour chaque répertoire **et** diagnostics Edge Tools frontend traités ; sinon « Non réalisées encore » avec le détail par répertoire (voir `.smartIde/rules/cloture-lint.mdc`, dont la même section). |
| **Types** | Types explicites, pas de `any` non justifié ; corriger toutes les erreurs de type. |
| **Compilation** | Build et typecheck OK sur chaque répertoire du périmètre. |
| **Documentation** | Mise à jour réelle de la doc (docs/, wiki) selon `.smartIde/agents/docupdate.md`. |
@ -61,6 +61,31 @@ Corrige toutes les erreurs et tous les warnings de lint du projet (chaque réper
- Voir `.smartIde/rules/cloture-lint.mdc` : pas de « non applicable » par convenance, **warnings = erreurs**, **minimum 5 corrections** lorsquil existe des diagnostics (sauf moins de 5 au total → tout corriger), décompte erreurs **et** warnings en clôture ; section **Diagnostics préexistants / hors périmètre de la session** : corriger tout diagnostic du périmètre même sans lien avec le diff du run.
## Diagnostics IDE : Microsoft Edge Tools (webhint, axe, compat-api CSS)
Ces signalements **ne sont pas** produits par `npm run lint` (ESLint). Ils proviennent en général de lextension **Microsoft Edge Tools** dans lIDE : **webhint** (ex. `no-inline-styles`), **axe** (accessibilité), **compat-api** (compatibilité navigateurs / MDN).
**Obligation** : pour tout projet avec un répertoire **frontend** dans `build_dirs`, après le lint ESLint, **vérifier et corriger** les problèmes dont la source est **Microsoft Edge Tools** dans le panneau Problèmes du workspace (même priorité que les erreurs et warnings ESLint). Ne pas clôturer en « lint OK » si ces diagnostics subsistent sur le frontend alors quils sont corrigeables.
**Vérification** : parcourir les fichiers du frontend listés avec la source « Microsoft Edge Tools » ; relever les codes de règle (`compat-api/css`, `axe/name-role-value`, `axe/aria`, `no-inline-styles`, etc.).
**Résolution par type de code (référence)** :
| Code / famille | Problème typique | Action |
|----------------|------------------|--------|
| `compat-api/css` | Propriété CSS incomplète sur un navigateur cible (ex. Safari) | Ajouter les préfixes vendeurs documentés (ex. `-webkit-user-select` avec `user-select`) dans le SCSS/CSS du module. |
| `axe/name-role-value` | Bouton ou contrôle sans nom accessible | Texte visible, ou `aria-label` / `aria-labelledby` selon le design system ; éviter de nexposer quun `title` si une meilleure option existe. |
| `axe/aria` (ex. `aria-valid-attr-value`) | Valeur ARIA invalide | Utiliser des valeurs énumérées valides pour lattribut concerné (ex. `aria-invalid` : `true`, `false`, `grammar`, `spelling`) ; pas de littéral erroné type `"{expression}"`. |
| `no-inline-styles` (webhint) | Styles inline | Déplacer vers CSS/SCSS (modules) ; valeurs dynamiques via **variables CSS** sur un conteneur + règles dans le module, ou classes conditionnelles. |
**Interdits** : désactiver lextension ou ignorer les fichiers pour masquer les alertes ; utiliser `eslint-disable` pour contourner accessibilité ou compatibilité.
**Bloc à appliquer systématiquement** (après `npm run lint` sur le frontend) :
```
Diagnostics IDE (Microsoft Edge Tools / webhint / axe / compat-api) : vérifier le panneau Problèmes pour la source « Microsoft Edge Tools » sur le frontend. Corriger compat-api/css (préfixes vendeurs) ; axe/name-role-value (noms accessibles) ; axe/aria (valeurs valides) ; no-inline-styles (feuilles de style, variables CSS si dynamique). Même priorité que ESLint.
```
## Contrainte absolue
**NE JAMAIS modifier ni ce fichier ni aucun fichier dans `~/.smartIde/`.** Ta tâche est UNIQUEMENT de corriger les erreurs et warnings de lint dans le code du projet. Les répertoires à linter (backend, frontend, ressources partagées, etc.) sont définis par le projet : soit par convention (ex. backend, frontend, shared), soit dans `projects/<id>/conf.json` (clé `build_dirs` ou documentation du projet). Ne pas modifier ni améliorer la définition de cet agent.
@ -83,6 +108,8 @@ Corrige toutes les erreurs et tous les warnings de lint du projet (chaque réper
Exécuter immédiatement `npm run lint` dans **chaque** application du périmètre (chaque `build_dir` : backend, frontend, ressources partagées pour LeCoffre) pour lister **erreurs et warnings****tout** le périmètre déclaré, **pas** seulement le sous-projet modifié dans la session. Ne pas modifier de fichiers avant d'avoir la liste complète (erreurs + warnings) pour chaque répertoire. Ne négliger aucun projet.
Ensuite, pour chaque répertoire **frontend** du périmètre : relever dans le panneau Problèmes du workspace les diagnostics dont la source est **Microsoft Edge Tools** (webhint, axe, compat-api) et les inclure dans le plan de corrections avec la même priorité que le lint ESLint (voir section **Diagnostics IDE : Microsoft Edge Tools**).
## Périmètre
Les répertoires à traiter (backend, frontend, ressources partagées, etc.) sont ceux du projet courant. Consulter `projects/<id>/conf.json` (clé `build_dirs`) ; l'id est résolu par MAIL_TO ou AI_AGENT_TOKEN. Sinon, suivre la structure du dépôt (ex. backend, frontend, shared ou noms définis dans la doc du projet). **Interdit** de réduire ce périmètre au seul arbre touché par la tâche en cours.