brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
clean-codebaseToten Code entfernen, ungenutzte Imports bereinigen, Lint-Warnungen beheben und Formatierung in einer Codebasis vereinheitlichen ohne Geschaeftslogik oder Architektur zu aendern. Anwenden wenn sich Lint-Warnungen waehrend schneller Entwicklung angehaeuft haben, ungenutzte Imports und Variablen Dateien ueberladen, tote Codepfade nie entfernt wurden, Formatie…
Independent GitHub snapshot · Automated classification · Original documentation governs
Diesen Skill verwenden wenn eine Codebasis Hygieneschulden angehaeuft hat:
NICHT verwenden fuer architektonisches Refactoring, Fehlerbehebungen oder Aenderungen der Geschaeftslogik. Dieser Skill konzentriert sich ausschliesslich auf Hygiene und automatisierte Bereinigung.
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
codebase_path | string | Ja | Absoluter Pfad zum Codebasis-Stammverzeichnis |
language | string | Ja | Primaersprache (js, python, r, rust usw.) |
cleanup_mode | enum | Nein | safe (Standard) oder aggressive |
run_tests | boolean | Nein | Testsuite nach Bereinigung ausfuehren (Standard: true) |
backup | boolean | Nein | Backup vor Loeschung erstellen (Standard: true) |
Den aktuellen Zustand messen um Verbesserungen spaeter zu quantifizieren.
# Count lint warnings by severity
lint_tool --format json > lint_before.json
# Count lines of code
cloc . --json > cloc_before.json
# List unused symbols (language-dependent)
# JavaScript/TypeScript: ts-prune or depcheck
# Python: vulture
# R: lintr unused function checks
Erwartet: Ausgangskennzahlen in lint_before.json und cloc_before.json gespeichert
Bei Fehler: Wenn das Lint-Werkzeug nicht gefunden wird, automatisierte Korrekturen ueberspringen und auf manuelle Pruefung konzentrieren
Sichere automatisierte Korrekturen anwenden (Abstande, Anfuehrungszeichen, Semikolons, nachfolgende Leerzeichen).
JavaScript/TypeScript:
eslint --fix .
prettier --write .
Python:
black .
isort .
ruff check --fix .
R:
Rscript -e "styler::style_dir('.')"
Rust:
cargo fmt
cargo clippy --fix --allow-dirty
Erwartet: Alle sicheren Lint-Warnungen behoben; Dateien konsistent formatiert
Bei Fehler: Wenn automatisierte Korrekturen Testfehler einfuehren, Aenderungen rueckgaengig machen und eskalieren
Statische Analyse verwenden um unreferenzierte Funktionen, ungenutzte Variablen und verwaiste Dateien zu finden.
JavaScript/TypeScript:
ts-prune | tee dead_code.txt
depcheck | tee unused_deps.txt
Python:
vulture . | tee dead_code.txt
R:
Rscript -e "lintr::lint_dir('.', linters = lintr::unused_function_linter())"
Allgemeiner Ansatz:
Erwartet: dead_code.txt listet ungenutzte Funktionen, Variablen und Dateien auf
Bei Fehler: Wenn das statische Analysewerkzeug nicht verfuegbar ist, manuell die juengste Commit-Historie auf verwaisten Code pruefen
Importbloecke bereinigen indem Referenzen auf nie verwendete Pakete entfernt werden.
JavaScript:
eslint --fix --rule 'no-unused-vars: error'
Python:
autoflake --remove-all-unused-imports --in-place --recursive .
R:
# Manual review: grep for library() calls, check if package used
grep -r "library(" . | cut -d: -f2 | sort | uniq
Erwartet: Alle ungenutzten Import-Anweisungen entfernt
Bei Fehler: Wenn das Entfernen von Imports den Build bricht, wurden sie indirekt verwendet — wiederherstellen und dokumentieren
Sicherer Modus (Standard):
Aggressiver Modus (opt-in):
Fuer jede Loeschkandidatin:
CLEANUP_LOG.md hinzufuegenErwartet: Toter Code entfernt; CLEANUP_LOG.md dokumentiert alle Loeschungen
Bei Fehler: Wenn unsicher ob Code wirklich tot ist, in ein archive/-Verzeichnis verschieben statt zu loeschen
Konsistente Formatierung ueber alle Dateien sicherstellen (auch wenn nicht von Lintern erfasst).
# Example: Fix line endings and trailing whitespace
find . -type f -name "*.js" -exec sed -i 's/\r$//' {} +
find . -type f -name "*.js" -exec sed -i 's/[[:space:]]*$//' {} +
Erwartet: Alle Dateien folgen konsistenten Formatierungskonventionen
Bei Fehler: Wenn sed Binaerdateien beschaedigt, ueberspringen und dokumentieren
Validieren dass die Bereinigung die Funktionalitaet nicht beeintraechtigt hat.
# Language-specific test command
npm test # JavaScript
pytest # Python
R CMD check # R
cargo test # Rust
Erwartet: Alle Tests bestehen (oder dieselben Fehler wie vor der Bereinigung)
Bei Fehler: Aenderungen inkrementell rueckgaengig machen um die brechende Aenderung zu identifizieren, dann eskalieren
Alle Aenderungen zur Pruefung dokumentieren.
# Codebasis-Bereinigungsbericht
**Datum**: JJJJ-MM-TT
**Modus**: safe | aggressive
**Sprache**: <Sprache>
## Kennzahlen
| Kennzahl | Vorher | Nachher | Aenderung |
|----------|--------|---------|-----------|
| Lint-Warnungen | X | Y | -Z |
| Codezeilen | A | B | -C |
| Ungenutzte Imports | D | 0 | -D |
| Tote Funktionen | E | F | -G |
## Angewandte Aenderungen
1. X Lint-Warnungen behoben (automatisiert)
2. Y ungenutzte Imports entfernt
3. Z Zeilen toten Code geloescht (siehe CLEANUP_LOG.md)
4. Formatierung ueber W Dateien vereinheitlicht
## Eskalierungen
- [Problembeschreibung die menschliche Pruefung erfordert]
- [Unsichere Loeschung nach archive/ verschoben]
## Validierung
- [x] Alle Tests bestehen
- [x] Backup erstellt: backup_JJJJMMTT/
- [x] CLEANUP_LOG.md aktualisiert
Erwartet: Bericht als CLEANUP_REPORT.md im Projektstammverzeichnis gespeichert
Bei Fehler: (Entfaellt — Bericht unabhaengig vom Ergebnis erstellen)
Nach der Bereinigung:
CLEANUP_LOG.md dokumentiert allen entfernten CodeCode entfernen der noch ueber Reflexion verwendet wird: Statische Analyse uebersieht dynamische Aufrufe (z.B. eval(), Metaprogrammierung). Immer Git-Historie pruefen.
Implizite Abhaengigkeiten brechen: Imports entfernen die von Abhaengigkeiten verwendet wurden. Nach jeder Import-Entfernung Tests ausfuehren.
Feature-Flags fuer aktive Features loeschen: Auch wenn im aktuellen Branch ungenutzt, koennen Feature-Flags in anderen Umgebungen aktiv sein. Deployment-Konfigurationen pruefen.
Ueberaggressive Formatierung: Werkzeuge wie black oder prettier koennen Code auf eine Weise umformatieren die unnoetige Diffs ausloest. Werkzeuge so konfigurieren dass sie zum Projektstil passen.
Testabdeckung ignorieren: Codebasen ohne Tests koennen nicht sicher bereinigt werden. Wenn die Abdeckung niedrig ist, zuerst fuer Testergaenzungen eskalieren.
Kein Backup erstellen: Immer ein backup_JJJJMMTT/-Verzeichnis erstellen bevor irgendetwas geloescht wird, auch bei Verwendung von Git.
Falsches R-Binary auf Hybrid-Systemen: Unter WSL oder Docker kann Rscript einen plattformuebergreifenden Wrapper statt nativem R aufloesen. Mit which Rscript && Rscript --version pruefen. Das native R-Binary bevorzugen (z.B. /usr/local/bin/Rscript unter Linux/WSL) fuer Zuverlaessigkeit. Fuer die R-Pfadkonfiguration siehe Setting Up Your Environment.
tidy-project-structure — Verzeichnislayout organisieren, READMEs aktualisierenrepair-broken-references — Tote Links und Imports reparierenescalate-issues — Komplexe Probleme an Spezialisten weiterleiten