review-duplication
google-gemini/gemini-cli
Setzen Sie diese Fähigkeit bei Code-Reviews ein, um die Codebasis proaktiv auf doppelte Funktionen, die Neuerfindung bereits Vorhandener oder die Nichtnutzung bestehender bewährter Projektpraktiken und gemeinsamer Hilfsfunktionen zu überprüfen.
...Alle erweiternÜberprüfung auf Duplikate
Übersicht
Diese Funktion bietet einen strukturierten Workflow zur Untersuchung einer Codebasis während einer Codeüberprüfung, um doppelte Logik, neu entwickelte Hilfsfunktionen und verpasste Möglichkeiten zur Wiederverwendung etablierter Muster zu identifizieren. Durch die Ausführung dieses Workflows stellen Sie sicher, dass sich neuer Code nahtlos in die bestehende Projektarchitektur einfügt.
Workflow: Überprüfung auf Duplikate
Führen Sie bei der Codeüberprüfung die folgenden Schritte durch, bevor Sie Ihre Überprüfung abschließen:
1. Kernlogik extrahieren
Analysieren Sie den neuen Code, um die Kernalgorithmen, Hilfsfunktionen, generischen Datenstrukturen oder UI-Komponenten zu identifizieren, die eingeführt werden. Schauen Sie über die spezifische Geschäftslogik hinaus, um die zugrunde liegenden Mechanismen zu erkennen.
2. Hypothesen zu bestehenden Standorten aufstellen und Abhängigkeiten nachverfolgen
Überlegen Sie, wo diese Art von Code angesiedelt wäre, wenn er bereits im Projekt vorhanden wäre. Geben Sie zur eindeutigen Zuordnung absolute Pfade vom Repo-Stammverzeichnis an.
- Hilfsfunktionen:
packages/core/src/utils/,packages/cli/src/utils/ - UI-Komponenten:
packages/cli/src/ui/components/,packages/cli/src/ui/ - Dienste:
packages/core/src/services/,packages/cli/src/services/ - Konfiguration:
packages/core/src/config/,packages/cli/src/config/ - Kernlogik: Geben Sie
„packages/core/“an, wenn die Funktionalität nicht spezifisch für die React-Benutzeroberfläche zu sein scheint.
Abhängigkeiten von Drittanbietern nachverfolgen: Wenn der PR einen neuen Import für eine Hilfsbibliothek einführt (z. B. `lodash.merge`, `date-fns`), verfolgen Sie nach, wie und wo das Projekt diese Bibliothek derzeit verwendet. Wahrscheinlich gibt es bereits einen Wrapper oder eine gemeinsam genutzte Hilfsfunktion.
Paketdateien prüfen: Bevor Sie eine benutzerdefinierte Implementierung eines komplexen Algorithmus vorschlagen, prüfen Sie in „package.json“, ob bereits eine Standardbibliothek (wie „lodash“ oder „uuid“) installiert ist, die diese Funktionalität bereitstellt.
3. Untersuchung der Codebasis (Delegierung an Unteragenten)
Delegieren Sie die aufwendige Untersuchung der Codebasis an spezialisierte Unteragenten. Diese sind darauf optimiert, tiefgehende Suchen und semantische Zuordnungen durchzuführen, ohne Ihren Sitzungsverlauf zu überladen.
Um eine umfassende Überprüfung zu gewährleisten, MÜSSEN Sie hochspezifische Ziele für die Unteragenten formulieren und ihnen die „Hinweise“ zur Verfügung stellen, die Sie in Schritt 1 entdeckt haben.
- Codebase Investigator: Setzen Sie den
„codebase_investigator“als Ihren primären Ermittler ein. Formulieren Sie bei der Delegierung ein Ziel, das spezifische, ermittlungsorientierte Fragen zur Codebasis stellt und dabei ausdrücklich folgende Suchvektoren einbezieht:- Strukturelle Ähnlichkeit: Fragen Sie, ob bestehender Code dieselben zugrunde liegenden APIs verwendet (z. B. „Verwendet bestehender Code
Intl.DateTimeFormatodersetTimeoutfür ähnliche Zwecke?“). - Namenskonventionen: Fragen Sie, ob es bereits Symbole mit ähnlichen Namensmustern gibt (z. B. „Gibt es bereits Symbole mit Namensmustern wie
*Format*oder*Debounce*?“). - Kommentare und Dokumentation: Fragen Sie, ob Schlüsselwörter aus den Kommentaren des Pull-Requests oder aus JSDocs an anderer Stelle zur Beschreibung ähnlicher Verhaltensweisen vorkommen.
- Architektonische Passung: Fragen Sie, wo diese Art von Logik derzeit zentralisiert ist (z. B. „Wo befindet sich die zentralisierte Logik zur Datumsformatierung?“).
- Anleitung zur Refaktorisierung: Bitten Sie den Sub-Agenten vor allem darum, zu erläutern, wie der neue Code refaktorisiert werden könnte, um bereits vorhandene Logik zu nutzen, die er findet.
- Strukturelle Ähnlichkeit: Fragen Sie, ob bestehender Code dieselben zugrunde liegenden APIs verwendet (z. B. „Verwendet bestehender Code
- Generalist-Agent: Setze den
Generalistenfür detaillierte, rundenintensive Vergleiche ein. Zum Beispiel: „Überprüfe die Implementierung von*MyNewComponent*im PR und vergleiche sie semantisch mit allen Komponenten in*packages/ui/src*. Gibt es bereits vorhandene Komponenten, die erweitert oder stattdessen verwendet werden könnten?“ - Schnellweg für einfache Suchen beibehalten: Bei extrem einfachen, eindeutigen Prüfungen (z. B. „Enthält
package.jsonlodash?“) führe eine direkte Suche durch, um Zeit zu sparen. Bei offenen „Untersuchungen“ standardmäßig an den Sub-Agenten delegieren.
4. Best Practices bewerten
Prüfen Sie, ob der neue Code mit den etablierten Konventionen des Projekts übereinstimmt.
- Fehlerbehandlung: Werden die Standard-Fehlerklassen oder Protokollierungsmechanismen des Projekts verwendet?
- Zustandsverwaltung: Umgeht der Code etablierte Stores oder Kontexte?
- Styling: Werden Farben oder Abstände fest codiert, anstatt Themenvariablen zu verwenden? Wenn der PR ein neues Muster einführt, vergleichen Sie es mit den dokumentierten Standards und stellen Sie ausdrücklich fest, ob stattdessen ein bestehendes Projektmuster hätte verwendet werden sollen.
5. Formulieren Sie konstruktives Feedback
Wenn Sie feststellen, dass der PR bereits vorhandene Funktionalität dupliziert oder eine bewährte Vorgehensweise ignoriert:
- Geben Sie einen klaren Review-Kommentar ab.
- Geben Sie die Quelle an: Nennen Sie ausdrücklich den absoluten oder projektbezogenen Dateipfad sowie das spezifische Symbol (Funktion, Komponente, Klasse), das wiederverwendet werden sollte.
- Implementierungshinweis: Fügen Sie einen kurzen Codeausschnitt oder eine klare Erklärung bei, die zeigt, wie der vorhandene Code integriert werden kann, um die Anforderungen der Aufgabe zu erfüllen.
- Erläutern Sie den Nutzen: Erläutern Sie kurz, warum die Wiederverwendung des bestehenden Codes vorteilhaft ist (z. B. Wartbarkeit, Konsistenz, integrierte Behandlung von Randfällen).
Beispielkommentar:
„Es sieht so aus, als würde dieser PR ein neues
`formatDate`-Dienstprogramm einführen. Wir haben bereits eine robuste, getestete`formatDate`-Funktion in `src/utils/dateHelpers.ts`.Du kannst deine Implementierung ersetzen, indem du sie wie folgt importierst:
import { formatDate } from '../utils/dateHelpers';// Verwende sie dann hier: const displayDate = formatDate(userDate, 'MMM Do, YYYY');Durch die Wiederverwendung wird sichergestellt, dass die Datumsformatierung mit dem Rest der Anwendung konsistent bleibt und Zeitzonenumrechnungen korrekt verarbeitet werden.“
Mehr aus diesem Repository
Aufwand google-gemini/gemini-cli Schätzt den Implementierungsaufwand, der zur Behebung des angegebenen Problems erforderlich ist. 07.07.2026 106,2 k Qualität google-gemini/gemini-cli Bewertet, ob ein GitHub-Issue Spam ist, leer ist, weitere Informationen benötigt oder ob die Bearbeitung fortgesetzt werden kann.07.07.2026 106,2 k spec-generator google-gemini/gemini-cli Erzeugt eine strukturierte „Workable Spec“-JSON-Datei als Leitfaden für einen Developer Worker.07.07.2026 106,2 k antigravity-support google-gemini/gemini-cli Wird verwendet, wenn der Nutzer Fragen stellt, Hilfe sucht oder Anweisungen zur Installation, Einrichtung oder Migration zur Antigravity-CLI anfordert. Diese Funktion liefert die aktuellsten Details, Anforderungen und Befehle aus der offiziellen Antigravity-CLI-Dokumentation.2026-06-09106.2kagent-tuigoogle-gemini/gemini-cliHauptagenten: Verwenden Sie diese Funktion NICHT direkt. Wenn Sie die TUI testen müssen, rufen Sie den Unteragenten `tui_tester` auf. Steuern Sie Terminal-UI-Anwendungen (TUI) programmgesteuert für Tests, Automatisierung und Überprüfung. Verwenden Sie diesen Skill, wenn Sie: CLI-/TUI-Interaktionen automatisieren, Regressionstests für Terminal-Apps durchführen oder das interaktive Verhalten überprüfen möchten. Verwenden Sie dies außerdem, wenn: der Benutzer fragt „Was ist agent-tui?“, „Was macht agent-tui?“, „Demo agent-tui“, „Zeig mir agent-tui“, „Wie funktioniert agent-tui?“ oder wenn er es in Aktion sehen möchte.18.05.2026 106,2 ktui-testergoogle-gemini/gemini-cli Fachkundige Anleitung zum Testen des Verhaltens der Gemini-CLI und der visuellen Ausgabe mithilfe von Terminal-Automatisierung.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.2kreview-duplication installieren
Laden Sie die Skill-Dateien herunter und entpacken Sie sie in Ihr Verzeichnis „.claude/skills/“.
ZIP herunterladenKlonen Sie das Repository und kopieren Sie die Skill-Dateien in Ihr Projekt.
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/
Kopieren





Heim
