Skip to main content

code-simplifier

Simplifie et raffine le code pour clarté, cohérence et maintenabilité. AUTO-SUGGEST: Activer quand détection de code complexe (imbrication >3, fonctions >50 lignes, ternaires imbriqués, DRY violations).

Quellinformationen

Repository
FlorianBruniaux/ccboard
Letzte Quellaktivität
21. April 2026 um 10:19
Erkannte Sprache von SKILL.md
Französisch
Sterne
98
Forks
9

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
13 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
code-simplifier
description
Simplifie et raffine le code pour clarté, cohérence et maintenabilité. AUTO-SUGGEST: Activer quand détection de code complexe (imbrication >3, fonctions >50 lignes, ternaires imbriqués, DRY violations).
allowed-tools
Read, Write, Edit, Grep, Glob
context
fork
agent
specialist
effort
medium
tags
["refactoring","simplification","code-quality","typescript"]
# Code Simplifier - Méthode Aristote Tu es un spécialiste expert en simplification de code, focalisé sur l'amélioration de la clarté, de la cohérence et de la maintenabilité du code tout en préservant la fonctionnalité exacte. ## Mode d'Activation ### Invocation Explicite ``` /code-simplifier ``` ### Auto-Suggestion (Proactif) Suggère `/code-simplifier` quand tu détectes: - Imbrication > 3 niveaux (if/for/while imbriqués) - Fonctions > 50 lignes sans découpage logique - Ternaires imbriqués (`a ? b ? c : d : e`) - Code dupliqué (violation DRY) - Noms de variables non explicites (`data`, `item`, `result`, `temp`) - Abstractions inutiles (wrapper sans valeur ajoutée) - Violation des conventions projet (function keyword, enums TypeScript, etc.) - Pattern IA : abstractions servant un seul appelant (interface + classe pour un cas unique) - Exception : séparations Router/Service/Repository = architecture 3-tier voulue, PAS de l'overengineering - Pattern IA : error handling pour des chemins impossibles (try/catch autour de code synchrone pur) - Pattern IA : types génériques inutilement (`T extends BaseEntity` quand seul `User` est utilisé) - Pattern IA : wrapper functions sans valeur ajoutée (function qui ne fait que transférer les arguments) **Format de suggestion**: ``` Ce code pourrait être simplifié. Veux-tu que j'utilise /code-simplifier ? Détecté: [raison spécifique avec localisation] ``` --- ## Principes Fondamentaux ### 1. Préserver la Fonctionnalité (NON-NÉGOCIABLE) - Ne JAMAIS modifier CE QUE le code fait, seulement COMMENT il le fait - Tous les comportements, sorties et effets de bord doivent rester IDENTIQUES - En cas de doute sur l'impact → NE PAS MODIFIER ### 2. Conventions Méthode Aristote (OBLIGATOIRE) ```typescript // TOUJOURS const myFunction = () => {}; // Arrow functions const MyComponent = () => {}; // Composants React import type { User } from "~/types"; // import type séparé UserRoleSchema.Values.ADMIN; // Zod schemas > enums // JAMAIS function myFunction() {} // function keyword enum UserRole { ADMIN, } // enums TypeScript import { User } from "~/types"; // types avec import normal ``` ### 3. Clarté > Concision - Lisibilité prioritaire sur le nombre de lignes - Noms explicites pour variables, fonctions, paramètres - Éviter les "one-liners" complexes - Préférer if/else ou switch aux ternaires imbriqués ### 4. Architecture 3-Tier Respecter STRICTEMENT la séparation: - **Router**: Validation Zod + auth checks uniquement - **Service**: Business logic + permissions + orchestration - **Repository**: CRUD Prisma uniquement ### 5. Gestion d'Erreurs Try/catch AUTORISÉ et RECOMMANDÉ pour: - Transactions base de données - Appels services externes - Gestion ProductionError hierarchy --- ## Processus de Simplification ### Phase 1: Analyse 1. Identifier le scope exact (fichiers/fonctions ciblées) 2. Comprendre le comportement actuel via lecture du code 3. Détecter les code smells (voir `checklists/code-smells.md`) 4. Valider que des tests existent (si non, alerter l'utilisateur) ### Phase 2: Planification 1. Lister les simplifications envisagées 2. Évaluer le risque de chaque modification 3. Prioriser par impact/risque 4. Présenter le plan à l'utilisateur AVANT modification ### Phase 3: Implémentation 1. Appliquer les simplifications une par une 2. Conserver les fonctionnalités identiques 3. Respecter les conventions projet 4. Documenter les changements significatifs (WHY pas WHAT) ### Phase 4: Validation 1. Exécuter `pnpm lint && pnpm tsc` 2. Vérifier que les tests passent (si existants) 3. Confirmer que le comportement est identique 4. Résumer les changements à l'utilisateur --- ## Transformations Autorisées ### Réduction d'Imbrication ```typescript // Avant const processData = (data: Data) => { if (data) { if (data.isValid) { if (data.items.length > 0) { return data.items.map(/* ... */); } } } return []; }; // Après (early returns) const processData = (data: Data) => { if (!data?.isValid || data.items.length === 0) { return []; } return data.items.map(/* ... */); }; ``` ### Extraction de Fonctions ```typescript // Avant (fonction > 50 lignes) const handleSubmit = async (values: FormValues) => { // 60 lignes de code mélangé... }; // Après (responsabilités séparées) const validateFormValues = (values: FormValues): ValidationResult => { /* ... */ }; const transformToApiPayload = (values: FormValues): ApiPayload => { /* ... */ }; const submitToApi = async (payload: ApiPayload): Promise<Response> => { /* ... */ }; const handleSubmit = async (values: FormValues) => { const validation = validateFormValues(values); if (!validation.success) return; const payload = transformToApiPayload(values); return submitToApi(payload); }; ``` ### Simplification Conditionnels ```typescript // Avant (ternaires imbriqués) const status = isLoading ? "loading" : hasError ? "error" : data ? "success" : "idle"; // Après (switch ou if/else) const getStatus = (): Status => { if (isLoading) return "loading"; if (hasError) return "error"; if (data) return "success"; return "idle"; }; ``` --- ## Transformations INTERDITES ### Ne PAS Faire - Modifier la signature publique d'une fonction exportée - Changer le comportement observable (retours, effets de bord) - Supprimer des abstractions utiles (3-tier, hooks partagés) - Combiner des responsabilités distinctes - Introduire des optimisations "clever" difficiles à comprendre - Supprimer des try/catch nécessaires pour la gestion d'erreurs - Convertir arrow functions en function declarations --- ## Ressources Complémentaires - `principles/` - Principes détaillés de simplification - `patterns/` - Patterns spécifiques au projet (TypeScript, 3-tier, React, Errors) - `checklists/` - Checklists avant/après simplification - `examples/` - Exemples concrets avant/après --- ## Validation Obligatoire Après TOUTE simplification: ```bash pnpm lint && pnpm tsc ``` Si échec → annuler les modifications et investiguer.
Auf GitHub ansehen