Synthèse automatique
Ce skill évalue si une modification de code existant préserve ou dégrade la qualité de conception, en jugeant chaque changement comme « conçu dès le départ » ou « rajouté par-dessus ».
Points forts
- Fournit un test en trois questions concret pour confronter un diff à ce qu'aurait été une conception faite dès le départ avec cette exigence
- Traite la dette technique comme une accumulation de petits raccourcis et propose de la réduire à chaque modification plutôt que lors de refontes périodiques
- Inclut un audit de répétition avec deux stratégies (extraire et appeler, ou restructurer pour exécuter une seule fois) et le cas où il ne faut pas extraire
- Rappelle le « chemin médian » : chercher le meilleur nettoyage réalisable dans le périmètre du diff plutôt que la refonte idéale hors budget
Limites
- Le skill se limite à la lecture et à la recherche (Read, Grep) : il ne modifie ni n'exécute le code, la refactorisation reste à faire par l'utilisateur
- Le jugement repose entièrement sur l'interprétation du modèle, sans métriques ni tests pour objectiver la qualité de conception
- Le contenu fourni s'arrête au début d'une section sur les commentaires, donc les consignes sur la documentation du code ne sont pas exploitables
À utiliser lorsqu'on relit un diff, une PR ou des fichiers récemment modifiés et qu'on veut savoir si le changement s'intègre à la conception ou s'y ajoute comme un patch.
À ne pas utiliser pour un scan général des mauvaises odeurs de conception (préférer red-flags) ni pour évaluer le niveau global d'investissement dans la conception (préférer strategic-mindset).
Analyse de sécurité
SûrThis is a purely analytical review lens. Its declared tools (Read, Grep) match its purpose of inspecting code, and the body contains no executable commands, no network calls, no file mutations, and no attempts to exfiltrate data or override safety behavior. The only dynamic element is $ARGUMENTS, used to scope which file/PR to read, which is benign.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Use code-evolution on the diff of this PR and tell me, for each change, whether it looks designed-in or bolted-on: https://github.com/acme/billing/pull/482I just added a discount rule to src/billing/invoice.ts. Run code-evolution on that file and tell me if I patched it on or designed it in, and what the minimum restructuring would be.Use code-evolution on src/reporting/ after my latest changes and run the repetition audit: is the same logic now duplicated, and should it be extracted or restructured to run once?name: code-evolution description: "Evaluates whether changes to existing code maintain or degrade design quality. Use when reviewing diffs, PRs, or recently modified files to judge whether each change looks designed-in or bolted-on. Not for scanning design smells (use red-flags) or assessing overall design investment (use strategic-mindset)." argument-hint: "[file, module, or PR]" allowed-tools: Read, Grep
Code Evolution Review Lens
When invoked with $ARGUMENTS, focus the analysis on the specified file, module, or pull request. Read the target code first, then apply the checks below.
Evaluate whether code modifications maintain or degrade design quality.
When to Apply
- Reviewing a PR that modifies existing code
- After adding a feature to an existing system
- When code has accumulated patches and feels degraded
- When deciding whether to refactor during a feature change
Core Principles
Technical Debt
Technical debt doesn't come from catastrophic decisions. It comes from hundreds of small, reasonable shortcuts that compound silently until the codebase starts fighting back. Calling it "debt" at all is generous because the financial kind gets repaid.
During Modifications
- Debt in the area being modified → fix it now (context is fresh, fix is cheapest)
- Debt elsewhere affecting the modification → document it, fix if feasible
- Never add to the pile. Each modification should reduce debt, not increase it
Refactoring
Refactoring is not a special event. It is the normal expression of strategic programming applied to existing code. Continuous small improvements, not periodic large refactors.
The "Designed This Way" Standard
"Ideally, when you have finished with each change, the system will have the structure it would have had if you had designed it from the start with that change in mind." — John Ousterhout, A Philosophy of Software Design
The design of a mature system is determined more by changes made during its evolution than by any initial conception. Every modifier either continues toward the original trajectory or bends away.
Three-Question Test
- If someone were designing this system from scratch knowing this requirement, what would it look like?
- Does the modified code match that ideal, or is the change visibly patched on?
- If not, what's the minimum restructuring to close the gap?
The Middle Path
When the ideal refactoring would require touching far more of the codebase than the current task budget allows, the question isn't "can I afford the full redesign?" It's "what's the best I can do within this change's scope?" That question often surfaces an approach nearly as clean as the ideal, achievable within the current diff, that the smallest-change mindset would never find because it anchors on the current code.
The "Smallest Possible Change" Trap
There is no neutral gear. Every change either improves the design or degrades it.
Each minimal change typically introduces a special case, a dependency, or a conditional that doesn't belong. Once, negligible. Across hundreds of modifications over years, this is how well-designed systems become legacy nightmares.
Repetition Audit
After a modification, ask yourself:
- Does the same logic now exist in multiple places?
- Was similar code duplicated instead of abstracted?
- Would a similar change require edits in multiple locations?
Repeated code is a red flag that the right abstraction hasn't been found yet.
Two Strategies
- Extract and call: Works best when the method forms a deep abstraction. If the snippet is two lines but requires five parameters, extraction may add more complexity than it removes.
- Restructure so the code runs once: Sometimes better because it eliminates duplication entirely.
When not to extract: Code that looks identical can represent two independent decisions that happen to be expressed the same way. Merging them creates artificial coupling.
Comment Maintenance
Stale comments are worse than missing comments because they actively mislead. Once readers discover comments can't be trusted, they stop reading them entirely.
Five maintenance rules:
-
Keep comments near the code they describe: proximity is a maintenance mechanism
-
Put comments in code, not commit logs: developers navigate code spatially, not chronologically
-
Document each decision exactly once: duplicated documentation drifts invisibly
-
Check the diffs before committing: verify documentation still matches behavior
-
Prefer higher-level comments: abstract comments that describe what and why survive code changes better than detailed how comments. As Ousterhout writes, "the farther a comment is from the code it describes, the more abstract it should be"
Review Process
- Apply the "designed this way" test: Does the modification look native or bolted-on?
- Check for incremental complexity: Did the change add special cases, dependencies, parameters, or flags?
- Run repetition audit: Did the change introduce or perpetuate duplication?
- Verify comment maintenance: Are all affected comments updated?
- Assess debt trajectory: Is the modification reducing or increasing technical debt?
- Recommend: Specific improvements to make the change feel designed-in
Red flag signals for code evolution are cataloged in red-flags (Repetition, Tactical Momentum).
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/code-evolution-review-mrzxuppg/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/code-evolution-review-mrzxuppg' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/code-evolution-review-mrzxuppg/download' --output '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md.part' && mv '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md.part' '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md' && test -s '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/code-evolution' && cp -R '.skill-downloads/code-evolution-review-mrzxuppg' '.claude/skills/code-evolution'Cursor
test -f '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md' && test -s '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/code-evolution' && cp -R '.skill-downloads/code-evolution-review-mrzxuppg' '.cursor/skills/code-evolution'Codex
test -f '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md' && test -s '.skill-downloads/code-evolution-review-mrzxuppg/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/code-evolution' && cp -R '.skill-downloads/code-evolution-review-mrzxuppg' '.agents/skills/code-evolution'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/code-evolution-review-mrzxuppg'openskills read 'code-evolution-review-mrzxuppg'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/code-evolution-review-mrzxuppg/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.