Projektdateien in konventionelle Verzeichnisse organisieren, veraltete READMEs aktualisieren, Konfigurationsdrift bereinigen und veraltete Elemente archivieren ohne Code-Logik zu aendern. Anwenden wenn Dateien ohne klare Organisation verstreut sind, READMEs veraltet sind oder defekte Beispiele enthalten, Konfigurationsdateien sich ueber Dev/Staging/Prod vermehrt haben, veraltete Dateien im Projektstamm verbleiben oder Namenskonventionen ueber Verzeichnisse hinweg inkonsistent sind.
Scanned 5/29/2026
Install via CLI
openskills install pjt222/agent-almanac---
name: tidy-project-structure
locale: de
source_locale: en
source_commit: 902f69ec
translator: claude
translation_date: "2026-03-17"
description: >
Projektdateien in konventionelle Verzeichnisse organisieren, veraltete READMEs
aktualisieren, Konfigurationsdrift bereinigen und veraltete Elemente archivieren
ohne Code-Logik zu aendern. Anwenden wenn Dateien ohne klare Organisation
verstreut sind, READMEs veraltet sind oder defekte Beispiele enthalten,
Konfigurationsdateien sich ueber Dev/Staging/Prod vermehrt haben, veraltete
Dateien im Projektstamm verbleiben oder Namenskonventionen ueber Verzeichnisse
hinweg inkonsistent sind.
license: MIT
allowed-tools: Read Write Edit Bash Grep Glob
metadata:
author: Philipp Thoss
version: "1.0"
domain: maintenance
complexity: intermediate
language: multi
tags: maintenance, organization, structure, readme, config
---
# Projektstruktur aufraumen
## Wann verwenden
Diesen Skill verwenden wenn die Projektorganisation von Konventionen abgewichen ist:
- Dateien ohne klare Organisation ueber Verzeichnisse verstreut
- READMEs veraltet oder mit defekten Beispielen
- Konfigurationsdateien haben sich vermehrt (Dev-, Staging-, Prod-Drift)
- Veraltete Dateien verbleiben im Projektstamm
- Namenskonventionen inkonsistent ueber Verzeichnisse hinweg
**NICHT verwenden** fuer Code-Refactoring oder Abhaengigkeits-Umstrukturierung. Dieser Skill konzentriert sich auf Dateiorganisation und Dokumentationshygiene.
## Eingaben
| Parameter | Typ | Erforderlich | Beschreibung |
|-----------|-----|--------------|-------------|
| `project_path` | string | Ja | Absoluter Pfad zum Projektstamm |
| `conventions` | string | Nein | Pfad zum Stilhandbuch (z.B. `docs/conventions.md`) |
| `archive_mode` | enum | Nein | `move` (Standard) oder `delete` fuer veraltete Dateien |
| `readme_update` | boolean | Nein | Veraltete READMEs aktualisieren (Standard: true) |
## Vorgehensweise
### Schritt 1: Verzeichnisstruktur pruefen
Aktuelle Struktur mit Projektkonventionen oder sprachspezifischen Best Practices vergleichen.
**Gaengige Konventionen nach Sprache**:
**JavaScript/TypeScript**:
```
src/ # Quellcode
tests/ # Testdateien
dist/ # Build-Ausgabe (gitignored)
docs/ # Dokumentation
.github/ # CI/CD-Workflows
```
**Python**:
```
package_name/ # Paketcode
tests/ # Testsuite
docs/ # Sphinx-Dokumentation
scripts/ # Hilfsskripte
```
**R**:
```
R/ # R-Quellcode
tests/testthat/ # Testsuite
man/ # Dokumentation (generiert)
vignettes/ # Ausfuehrliche Anleitungen
inst/ # Installierte Dateien
data/ # Paketdaten
```
**Rust**:
```
src/ # Quellcode
tests/ # Integrationstests
benches/ # Benchmarks
examples/ # Verwendungsbeispiele
```
**Erwartet:** Liste der gegen Konventionen verstossenden Dateien/Verzeichnisse in `structure_audit.txt` gespeichert
**Bei Fehler:** Wenn keine Konventionen dokumentiert sind, sprachspezifische Standards verwenden
### Schritt 2: Fehlplatzierte Dateien verschieben
Dateien in ihre konventionellen Verzeichnisse umlagern.
**Haeufige Verschiebungen**:
1. Testdateien ausserhalb von `tests/` nach `tests/` verschieben
2. Dokumentation ausserhalb von `docs/` nach `docs/` verschieben
3. Build-Artefakte in `src/` loeschen (sollten gitignored sein)
4. Konfigurationsdateien im Stammverzeichnis nach `config/` oder `.config/` verschieben
Fuer jede Verschiebung:
```bash
# Pruefen ob Datei irgendwo referenziert wird
grep -r "filename" .
# Wenn keine Referenzen oder nur relative Pfadreferenzen:
mkdir -p target_directory/
git mv source/file target_directory/file
# Alle Imports/Requires aktualisieren
# (sprachspezifisch — siehe repair-broken-references Skill)
```
**Erwartet:** Alle Dateien an konventionellen Positionen; Git-Historie ueber `git mv` erhalten
**Bei Fehler:** Wenn Verschieben Imports bricht, Importpfade aktualisieren oder eskalieren
### Schritt 3: README-Aktualitaet pruefen
Veraltete Informationen in allen README-Dateien identifizieren.
**Veralterungsindikatoren**:
1. Letzte Aenderung vor >6 Monaten
2. Referenzen auf alte Versionsnummern
3. Defekte Links oder Code-Beispiele
4. Fehlende Abschnitte (Installation, Verwendung, Mitwirkung)
5. Kein Lizenz-Badge oder defekte Badge-Links
```bash
# Alle READMEs finden
find . -name "README.md" -o -name "readme.md"
# Fuer jede README:
# - Letztes Aenderungsdatum pruefen
git log -1 --format="%ci" README.md
# - Auf defekte Links pruefen
markdown-link-check README.md
# - Beispielcode auf Funktionsfaehigkeit pruefen (erstes Beispiel testen)
```
**Erwartet:** Liste veralteter READMEs in `readme_freshness.txt` mit konkreten Problemen
**Bei Fehler:** Wenn markdown-link-check nicht verfuegbar, externe Links manuell pruefen
### Schritt 4: Veraltete READMEs aktualisieren
Defekte Links reparieren, Beispiele aktualisieren, fehlende Abschnitte ergaenzen.
**Standard-Korrekturen**:
1. Defekte Badge-URLs ersetzen
2. Versionsnummern in Installationsanweisungen aktualisieren
3. Defekten Beispielcode reparieren (zur Verifizierung ausfuehren)
4. Fehlende Abschnitte ergaenzen (Vorlage aus Projektkonventionen verwenden)
5. Copyright-Jahr aktualisieren
**README-Vorlagenstruktur**:
```markdown
# Projektname
Kurzbeschreibung (1-2 Saetze).
## Installation
```bash
# Sprachspezifischer Installationsbefehl
```
## Verwendung
```language
# Grundlegendes Beispiel
```
## Dokumentation
Link zur vollstaendigen Dokumentation.
## Mitwirkung
Link zu CONTRIBUTING.md oder eingebettete Richtlinien.
## Lizenz
LIZENZ-Badge und Link.
```
**Erwartet:** Alle READMEs aktualisiert; Beispiele auf Funktionsfaehigkeit verifiziert
**Bei Fehler:** Wenn Beispielcode nicht verifizierbar, mit Warnkommentar markieren
### Schritt 5: Konfigurationsdateien ueberpruefen
Konfigurationsdrift identifizieren und doppelte Einstellungen konsolidieren.
**Haeufige Konfigurationsprobleme**:
1. Mehrere `.env`-Dateien (`.env`, `.env.local`, `.env.dev`, `.env.prod`)
2. Doppelte Einstellungen ueber Konfigurationsdateien hinweg
3. Hartcodierte Geheimnisse (sollten Umgebungsvariablen verwenden)
4. Veraltete API-Endpunkte oder Feature-Flags
```bash
# Alle Konfigurationsdateien finden
find . -name "*.config.*" -o -name ".env*" -o -name "*.yml" -o -name "*.yaml"
# Fuer jede Konfiguration:
# - Auf doppelte Schluessel pruefen
# - Nach hartcodierten Geheimnissen suchen (API-Schluessel, Token, Passwoerter)
grep -E "(api[_-]?key|token|password|secret)" config_file
# - Dev- vs Prod-Einstellungen vergleichen
diff .env.dev .env.prod
```
**Erwartet:** Konfigurationsdrift in `config_review.txt` dokumentiert; Geheimnisse zur Eskalation markiert
**Bei Fehler:** Wenn Diff grosse Abweichungen zeigt, an devops-engineer eskalieren
### Schritt 6: Veraltete Dateien archivieren
Nicht mehr benoetigte Dateien verschieben oder loeschen.
**Kandidaten fuer Archivierung**:
- Auskommentierte Konfigurationsdateien (z.B. `nginx.conf.old`)
- Altskripte die seit >1 Jahr nicht ausgefuehrt wurden
- Sicherungsdateien (z.B. `file.bak`, `file~`)
- Versehentlich committete Build-Artefakte
**Archivierungsprozess**:
```bash
# Archivverzeichnis erstellen (wenn archive_mode=move)
mkdir -p archive/YYYY-MM-DD/
# Fuer jede veraltete Datei:
# 1. Pruefen ob nirgends referenziert
grep -r "filename" .
# 2. Git-Historie auf letzte Aenderung pruefen
git log -1 --format="%ci" filename
# 3. Wenn seit >1 Jahr nicht geaendert und keine Referenzen:
if [ "$archive_mode" = "move" ]; then
git mv filename archive/YYYY-MM-DD/
else
git rm filename
fi
# 4. In ARCHIVE_LOG.md dokumentieren
echo "- filename (Grund, letzte Aenderung: DATUM)" >> ARCHIVE_LOG.md
```
**Erwartet:** Veraltete Dateien archiviert; `ARCHIVE_LOG.md` aktualisiert
**Bei Fehler:** Wenn unsicher ob Datei veraltet ist, belassen und im Bericht dokumentieren
### Schritt 7: Namenskonventionen ueberpruefen
Auf inkonsistente Dateibenennung im Projekt pruefen.
**Gaengige Konventionen**:
- **kebab-case**: `my-file.js` (ueblich in JS/Web-Projekten)
- **snake_case**: `my_file.py` (Python-Standard)
- **PascalCase**: `MyComponent.tsx` (React-Komponenten)
- **camelCase**: `myUtility.js` (JavaScript-Funktionen)
```bash
# Dateien finden die gegen Konventionen verstossen
# Beispiel: Python-Projekt mit erwarteter snake_case
find . -name "*.py" | grep -v "__pycache__" | grep -E "[A-Z-]"
# Fuer jeden Verstoss entweder:
# 1. Umbenennen um Konventionen einzuhalten
# 2. Ausnahme dokumentieren (z.B. Django settings.py Konvention)
```
**Erwartet:** Alle Dateien folgen Namenskonventionen oder Ausnahmen dokumentiert
**Bei Fehler:** Wenn Umbenennung Imports bricht, Referenzen aktualisieren oder eskalieren
### Schritt 8: Bereinigungsbericht erstellen
Alle strukturellen Aenderungen dokumentieren.
```markdown
# Projektstruktur-Bereinigungsbericht
**Datum**: JJJJ-MM-TT
**Projekt**: <projektname>
## Verzeichnisaenderungen
- X Dateien in konventionelle Verzeichnisse verschoben
- Y neue Verzeichnisse erstellt
- Z veraltete Dateien archiviert
## README-Aktualisierungen
- W veraltete READMEs aktualisiert
- X defekte Links repariert
- Y Code-Beispiele verifiziert
## Konfigurationsbereinigung
- X doppelte Einstellungen konsolidiert
- Y hartcodierte Geheimnisse zur Entfernung markiert
- Z Konfigurationsdrift-Probleme dokumentiert
## Archivierte Dateien
Siehe ARCHIVE_LOG.md fuer vollstaendige Liste (Z Dateien).
## Namenskonventionskorrekturen
- X Dateien entsprechend Konventionen umbenannt
- Y Ausnahmen dokumentiert
## Eskalierungen
- [Konfigurationsdrift erfordert DevOps-Pruefung]
- [Hartcodierte Geheimnisse erfordern Sicherheitsaudit]
```
**Erwartet:** Bericht in `TIDYING_REPORT.md` gespeichert
**Bei Fehler:** (Entfaellt — Bericht unabhaengig generieren)
## Validierung
Nach der Bereinigung:
- [ ] Alle Dateien in konventionellen Verzeichnissen
- [ ] Keine defekten Links in READMEs
- [ ] README-Beispiele auf Funktionsfaehigkeit verifiziert
- [ ] Konfigurationsdateien auf Geheimnisse geprueft
- [ ] Veraltete Dateien mit Dokumentation archiviert
- [ ] Namenskonventionen konsistent
- [ ] Git-Historie erhalten (verwendet `git mv`, nicht `mv`)
- [ ] Tests bestehen nach Verschiebungen weiterhin
## Haeufige Stolperfallen
1. **Relative Imports brechen**: Verschieben von Dateien bricht relative Importpfade. Alle Referenzen aktualisieren oder absolute Imports verwenden.
2. **Git-Historie verlieren**: Verwendung von `mv` statt `git mv` verliert Dateihistorie. Immer Git-Befehle fuer Verschiebungen verwenden.
3. **Ueberorganisation**: Zu viele verschachtelte Verzeichnisse erschweren die Navigation. Flach halten bis Komplexitaet Struktur erfordert.
4. **Loeschen statt Archivieren**: Direktes Loeschen verliert Wiederherstellungsmoeglichkeit. Immer zuerst archivieren wenn nicht sicher.
5. **Sprachkonventionen ignorieren**: Persoenliche Vorlieben ueber Sprachstandards stellen. Etablierte Konventionen befolgen.
6. **Dokumentation nicht aktualisieren**: Dateien verschieben ohne README-Pfade anzupassen hinterlaesst defekte Dokumentation.
## Verwandte Skills
- [clean-codebase](../clean-codebase/SKILL.md) — Toten Code entfernen, Lint-Warnungen beheben
- [repair-broken-references](../repair-broken-references/SKILL.md) — Links und Imports nach Verschiebungen reparieren
- [escalate-issues](../escalate-issues/SKILL.md) — Komplexe Konfigurationsprobleme an Spezialisten weiterleiten
- [devops/config-management](../../devops/config-management/SKILL.md) — Erweiterte Konfigurationskonsolidierung
- [compliance/documentation-audit](../../compliance/documentation-audit/SKILL.md) — Umfassende Dokumentationspruefung
No comments yet. Be the first to comment!