review-duplication
google-gemini/gemini-cli
Utilisez cette compétence lors des revues de code pour analyser de manière proactive le code source afin de détecter les fonctionnalités redondantes, les « roues réinventées » ou les cas où les meilleures pratiques existantes du projet et les utilitaires partagés n'ont pas été réutilisés.
...Développer toutDuplication des avis
Présentation
Cette compétence propose un workflow structuré permettant d’analyser une base de code lors d’une revue de code afin d’identifier les logiques dupliquées, les utilitaires réinventés et les occasions manquées de réutiliser des modèles établis. En exécutant ce workflow, vous vous assurez que le nouveau code s’intègre parfaitement à l’architecture existante du projet.
Workflow : recherche des doublons
Lors de la révision du code, effectuez les étapes suivantes avant de finaliser votre révision :
1. Extraire la logique métier
Analysez le nouveau code afin d’identifier les algorithmes de base, les fonctions utilitaires, les structures de données génériques ou les composants d’interface utilisateur qui y sont introduits. Ne vous limitez pas à la logique métier spécifique pour cerner les mécanismes sous-jacents.
2. Émettre des hypothèses sur les emplacements existants et tracer les dépendances
Réfléchissez à l’emplacement où ce type de code serait placé s’il existait déjà dans le projet. Indiquez les chemins d’accès absolus à partir de la racine du dépôt pour lever toute ambiguïté.
- Utilitaires :
packages/core/src/utils/,packages/cli/src/utils/ - Composants d’interface utilisateur :
packages/cli/src/ui/components/,packages/cli/src/ui/ - Services :
packages/core/src/services/,packages/cli/src/services/ - Configuration :
packages/core/src/config/,packages/cli/src/config/ - Logique centrale : indiquez
packages/core/si la fonctionnalité ne semble pas spécifique à l’interface utilisateur React.
Rechercher les dépendances tierces : si la pull request introduit une nouvelle importation pour une bibliothèque d’utilitaires (par exemple, lodash.merge, date-fns), vérifiez comment et où le projet utilise actuellement cette bibliothèque. Il existe probablement déjà un wrapper ou un utilitaire partagé.
Vérification des fichiers de package : avant de signaler une implémentation personnalisée d’un algorithme complexe, vérifiez le fichier package.json pour voir si une bibliothèque standard (comme lodash ou uuid) fournissant cette fonctionnalité est déjà installée.
3. Analyser la base de code (délégation à des sous-agents)
Confiez le gros du travail d’analyse de la base de code à des sous-agents spécialisés. Ceux-ci sont optimisés pour effectuer des recherches approfondies et des mappages sémantiques sans alourdir l’historique de votre session.
Pour garantir un examen exhaustif, vous DEVEZ formuler des objectifs très précis pour les sous-agents, en leur fournissant les « indices » que vous avez découverts à l’étape 1.
- Codebase Investigator : utilisez
codebase_investigatorcomme chercheur principal. Lors de la délégation, formulez un objectif posant des questions d’investigation spécifiques sur la base de code, en incluant explicitement ces vecteurs de recherche :- Similitude structurelle : demandez si le code existant utilise les mêmes API sous-jacentes (par exemple : « Y a-t-il du code existant qui utilise
Intl.DateTimeFormatousetTimeoutà des fins similaires ? »). - Conventions de nommage : demandez s’il existe des symboles présentant des schémas de nommage similaires (par exemple : « Existe-t-il des symboles dont le nom suit un schéma tel que
*Format*ou*Debounce*? »). - Commentaires et documentation : demandez si des mots-clés issus des commentaires de la pull request ou du JSDoc existent pour décrire un comportement similaire ailleurs.
- Adéquation architecturale : demandez où ce type de logique est actuellement centralisé (par exemple : « Où se trouve la logique centralisée de formatage de la date ? »).
- Conseils de refactorisation : surtout, demandez au sous-agent d’expliquer comment le nouveau code pourrait être refactorisé pour utiliser toute logique existante qu’il identifie.
- Similitude structurelle : demandez si le code existant utilise les mêmes API sous-jacentes (par exemple : « Y a-t-il du code existant qui utilise
- Agent généraliste : utilisez l’agent
généralistepour les comparaisons détaillées nécessitant de nombreux itérations. Par exemple : « Examinez l’implémentation deMyNewComponentdans la PR et comparez-la sémantiquement à tous les composants du répertoirepackages/ui/src. Existe-t-il des composants existants qui pourraient être étendus ou utilisés à la place ? » - Conserver le chemin rapide pour les recherches simples : pour les vérifications extrêmement simples et sans ambiguïté (par exemple, «
Le fichier package.jsoninclut-illodash? »), effectuez une recherche directe pour gagner du temps. Privilégiez la délégation par défaut pour toute « enquête » ouverte.
4. Évaluer les bonnes pratiques
Vérifiez si le nouveau code respecte les conventions établies du projet.
- Gestion des erreurs : utilise-t-il les classes d’erreur ou les mécanismes de journalisation standard du projet ?
- Gestion de l’état : contourne-t-il les magasins ou contextes établis ?
- Style : les couleurs ou les espacements sont-ils codés en dur au lieu d’utiliser les variables de thème ? Si la pull request introduit un nouveau modèle, comparez-le aux normes documentées et vérifiez explicitement si un modèle existant du projet aurait dû être utilisé à la place.
5. Formuler des commentaires constructifs
Si vous constatez que la pull request fait double emploi avec une fonctionnalité existante ou ne respecte pas une bonne pratique :
- Fournissez un commentaire de révision clair.
- Identifiez la source : mentionnez explicitement le chemin d'accès absolu ou relatif au projet, ainsi que l'élément spécifique (fonction, composant, classe) qui devrait être réutilisé.
- Conseils de mise en œuvre : fournissez un bref extrait de code ou une explication claire montrant comment intégrer le code existant pour répondre aux exigences de la tâche.
- Expliquez l’intérêt : expliquez brièvement pourquoi la réutilisation du code existant est bénéfique (par exemple, maintenabilité, cohérence, gestion intégrée des cas limites).
Exemple de commentaire :
« Il semble que cette pull request introduise une nouvelle utilitaire
formatDate. Nous disposons déjà d’une fonctionformatDaterobuste et testée danssrc/utils/dateHelpers.ts.Vous pouvez remplacer votre implémentation en l’important comme suit :
import { formatDate } from '../utils/dateHelpers';// Puis utilisez-la ici : const displayDate = formatDate(userDate, 'MMM Jeu, AAAA');La réutilisation de cette fonction garantit que le formatage de la date reste cohérent avec le reste de l’application et gère correctement les conversions de fuseau horaire. »
Plus d'informations sur ce dépôt
effortgoogle-gemini/gemini-cliEstime l’effort de mise en œuvre nécessaire pour résoudre le ticket donné.7 juillet 2026106,2 kqualitygoogle-gemini/gemini-cliÉvalue si un ticket GitHub est du spam, vide, nécessite plus d’informations ou peut être traité.07/07/2026 106,2 k spec-generator google-gemini/gemini-cli Génère un fichier JSON « Workable Spec » structuré pour guider un développeur.07/07/2026 106,2 k antigravity-support google-gemini/gemini-cli À utiliser lorsque l’utilisateur pose des questions, demande de l’aide ou sollicite des instructions concernant l’installation, la configuration ou la migration vers Antigravity CLI. Cette compétence fournit les dernières informations, exigences et commandes issues de la documentation officielle d’Antigravity CLI.2026-06-09106.2kagent-tuigoogle-gemini/gemini-cliAgents principaux : n’utilisez PAS cette compétence directement. Si vous devez tester l’interface utilisateur du terminal (TUI), invoquez le sous-agent `tui_tester`. Pilotez les applications TUI par programmation à des fins de test, d’automatisation et d’inspection. À utiliser lorsque : vous automatisez des interactions CLI/TUI, effectuez des tests de régression sur des applications de terminal ou vérifiez le comportement interactif. À utiliser également lorsque : l’utilisateur demande « qu’est-ce qu’agent-tui », « que fait agent-tui », « démo agent-tui », « montre-moi agent-tui », « comment fonctionne agent-tui », ou souhaite le voir en action.18/05/2026 106,2 k tui-testergoogle-gemini/gemini-cli Conseils d’experts pour tester le comportement de l’interface CLI de Gemini et sa sortie visuelle à l’aide de l’automatisation du terminal. 18/05/2026 106,2 kReview Duplication
Overview
This skill provides a structured workflow for investigating a codebase during a code review to identify duplicated logic, reinvented utilities, and missed opportunities to reuse established patterns. By executing this workflow, you ensure that new code integrates seamlessly with the existing project architecture.
Workflow: Investigating for Duplication
When reviewing code, perform the following steps before finalizing your review:
1. Extract Core Logic
Analyze the new code to identify the core algorithms, utility functions, generic data structures, or UI components being introduced. Look beyond the specific business logic to see the underlying mechanics.
2. Hypothesize Existing Locations & Trace Dependencies
Think about where this type of code would live if it already existed in the project. Provide absolute paths from the repo root to disambiguate.
- Utilities:
packages/core/src/utils/,packages/cli/src/utils/ - UI Components:
packages/cli/src/ui/components/,packages/cli/src/ui/ - Services:
packages/core/src/services/,packages/cli/src/services/ - Configuration:
packages/core/src/config/,packages/cli/src/config/ - Core Logic: Call out
packages/core/if functionality does not appear React UI specific.
Trace Third-Party Dependencies: If the PR introduces a new import for a utility library (e.g., lodash.merge, date-fns), trace how and where the project currently uses that library. There is likely an existing wrapper or shared utility.
Check Package Files: Before flagging a custom implementation of a complex algorithm, check package.json to see if a standard library (like lodash or uuid) is already installed that provides this functionality.
3. Investigate the Codebase (Sub-Agent Delegation)
Delegate the heavy lifting of codebase investigation to specialized sub-agents. They are optimized to perform deep searches and semantic mapping without bloating your session history.
To ensure a comprehensive review, you MUST formulate highly specific objectives for the sub-agents, providing them with the "scents" you discovered in Step 1.
- Codebase Investigator: Use the
codebase_investigatoras your primary researcher. When delegating, formulate an objective that asks specific, investigative questions about the codebase, explicitly including these search vectors:- Structural Similarity: Ask if existing code uses the same underlying APIs (e.g., "Does any existing code use
Intl.DateTimeFormatorsetTimeoutfor similar purposes?"). - Naming Conventions: Ask if there are existing symbols with similar naming patterns (e.g., "Are there existing symbols with naming patterns like
*Format*or*Debounce*?"). - Comments & Documentation: Ask if keywords from the PR's comments or JSDoc exist in describing similar behavior elsewhere.
- Architectural Fit: Ask where this type of logic is currently centralized (e.g., "Where is centralized date formatting logic located?").
- Refactoring Guidance: Crucially, ask the sub-agent to explain how the new code could be refactored to use any existing logic it finds.
- Structural Similarity: Ask if existing code uses the same underlying APIs (e.g., "Does any existing code use
- Generalist Agent: Use the
generalistfor detailed, turn-intensive comparisons. For example: "Review the implementation ofMyNewComponentin the PR and compare it semantically against all components inpackages/ui/src. Are there any existing components that could be extended or used instead?" - Retain Fast Path for Simple Searches: For extremely simple, unambiguous checks (e.g., "Does
package.jsonincludelodash?"), perform a direct search to save time. Default to delegation for any open-ended "investigations."
4. Evaluate Best Practices
Check if the new code aligns with the project's established conventions.
- Error Handling: Does it use the project's standard error classes or logging mechanisms?
- State Management: Does it bypass established stores or contexts?
- Styling: Does it hardcode colors or spacing instead of using theme variables? If the PR introduces a new pattern, compare it against the documented standards and explicitly confirm if an existing project pattern should have been used instead.
5. Formulate Constructive Feedback
If you discover that the PR duplicates existing functionality or ignores a best practice:
- Provide a clear review comment.
- Identify the Source: Explicitly mention the absolute or project-relative file path and the specific symbol (function, component, class) that should be reused.
- Implementation Guidance: Provide a brief code snippet or a clear explanation showing how to integrate the existing code to fulfill the task's requirements.
- Explain the Value: Briefly explain why reusing the existing code is beneficial (e.g., maintainability, consistency, built-in edge case handling).
Example comment:
"It looks like this PR introduces a new
formatDateutility. We already have a robust, testedformatDatefunction insrc/utils/dateHelpers.ts.You can replace your implementation by importing it like this:
import { formatDate } from '../utils/dateHelpers';// Then use it here: const displayDate = formatDate(userDate, 'MMM Do, YYYY');Reusing this ensures that the date formatting remains consistent with the rest of the application and handles timezone conversions correctly."
More from this repository
effortgoogle-gemini/gemini-cliEstimates the implementation effort required to address the given issue.
2026-07-07106.2kqualitygoogle-gemini/gemini-cliEvaluates whether a GitHub issue is spam, empty, needs more information, or is OK to proceed.
2026-07-07106.2kspec-generatorgoogle-gemini/gemini-cliGenerates a structured Workable Spec JSON to guide a Developer Worker.
2026-07-07106.2kantigravity-supportgoogle-gemini/gemini-cliUse when the user asks questions, seeks help, or requests instructions related to installing, setting up, or migrating to Antigravity CLI. This skill provides the latest up to date details, requirements, and commands sourced from the official Antigravity CLI documentation.
2026-06-09106.2kagent-tuigoogle-gemini/gemini-cliMain Agents: Do NOT use this skill directly. If you need to test the TUI, invoke the `tui_tester` subagent. Drive terminal UI (TUI) applications programmatically for testing, automation, and inspection. Use when: automating CLI/TUI interactions, regression testing terminal apps, or verifying interactive behavior. Also use when: user asks "what is agent-tui", "what does agent-tui do", "demo agent-tui", "show me agent-tui", "how does agent-tui work", or wants to see it in action.
2026-05-18106.2ktui-testergoogle-gemini/gemini-cliExpert guidance for testing Gemini CLI behavior and visual output using terminal automation.
2026-05-18106.2kInstaller review-duplication
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/google-gemini/gemini-cli/tree/main/.gemini/skills/review-duplication # Copy the skill folder to .claude/skills/ or .codex/skills/
Copier





Maison
