i18n/de/skills/repair-broken-references/SKILL.md
Defekte interne Links, tote externe URLs, veraltete Imports, fehlende Querverweise und verwaiste Dateien finden und reparieren. Stellt sicher dass alle Projektreferenzen gueltig und aktuell bleiben. Anwenden wenn Dokumentation defekte interne Links enthaelt, externe URLs 404-Fehler zurueckgeben, Import-Anweisungen auf verschobene oder geloeschte Module verweisen, Querverweise zwischen Dateien nicht synchron sind oder Dateien existieren die nirgends im Projekt referenziert werden.
npx skillsauth add pjt222/agent-almanac repair-broken-referencesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Diesen Skill verwenden wenn Projektreferenzen veraltet sind:
NICHT verwenden fuer Refactoring von Modulabhaengigkeiten oder Neugestaltung der Informationsarchitektur. Dieser Skill repariert bestehende Referenzen, strukturiert sie nicht um.
| Parameter | Typ | Erforderlich | Beschreibung |
|-----------|-----|--------------|-------------|
| project_path | string | Ja | Absoluter Pfad zum Projektstamm |
| check_external | boolean | Nein | Externe URLs verifizieren (Standard: true, langsam) |
| fix_mode | enum | Nein | auto (offensichtliche beheben), report (nur dokumentieren), interactive (nachfragen) |
| orphan_threshold | integer | Nein | Tage seit letzter Aenderung um als verwaist zu markieren (Standard: 180) |
Alle Markdown-Links finden die auf nicht existierende Dateien zeigen.
# Alle Markdown-Dateien finden
find . -name "*.md" -type f > markdown_files.txt
# Alle Markdown-Links extrahieren: [Text](Pfad)
grep -oP '\[.*?\]\(\K[^)]+' *.md | sort | uniq > all_links.txt
# Fuer jeden Link:
while read link; do
# Externe URLs ueberspringen (http/https)
if [[ "$link" =~ ^https?:// ]]; then
continue
fi
# Relativen Pfad aufloesen
target=$(realpath -m "$link")
# Pruefen ob Ziel existiert
if [ ! -e "$target" ]; then
echo "DEFEKT: $link (referenziert in $file)" >> broken_internal.txt
fi
done < all_links.txt
Erwartet: broken_internal.txt listet alle defekten internen Referenzen auf
Bei Fehler: Wenn realpath nicht verfuegbar, jeden Link manuell pruefen
Verifizieren dass externe Links noch erreichbar sind (HTTP 200 Antwort).
# Externe URLs extrahieren
grep -ohP 'https?://[^\s\)]+' *.md | sort | uniq > external_urls.txt
# Jede URL pruefen (Ratelimit um Sperren zu vermeiden)
while read url; do
status=$(curl -o /dev/null -s -w "%{http_code}" "$url")
if [ "$status" -ge 400 ]; then
echo "TOT ($status): $url" >> dead_urls.txt
fi
sleep 0.5 # Ratelimit
done < external_urls.txt
Erwartet: dead_urls.txt listet URLs die 4xx/5xx-Fehler zurueckgeben
Bei Fehler: Wenn curl nicht verfuegbar oder blockiert, Online-Link-Checker verwenden oder ueberspringen
Hinweis: Einige URLs koennen 403 zurueckgeben wegen Bot-Erkennung, funktionieren aber im Browser. Manuelle Pruefung erforderlich.
Pruefen dass alle Import-/Require-Anweisungen auf existierende Module verweisen.
JavaScript/TypeScript:
# Alle Import-Anweisungen finden
grep -rh "^import.*from ['\"]" . | sed -E "s/.*from ['\"]([^'\"]+)['\"].*/\1/" > imports.txt
# Fuer jeden Import:
while read import; do
# node_modules und externe Pakete ueberspringen
if [[ "$import" =~ ^[./] ]]; then
# Zu Dateipfad aufloesen
target="${import}.js" # .js, .ts, .jsx, .tsx versuchen
if [ ! -e "$target" ]; then
echo "DEFEKTER IMPORT: $import" >> broken_imports.txt
fi
fi
done < imports.txt
Python:
# Alle Import-Anweisungen finden
grep -rh "^from .* import\|^import " . --include="*.py" | \
sed -E "s/from ([^ ]+) import.*/\1/" | \
sed -E "s/import ([^ ]+)/\1/" > imports.txt
# Fuer jeden lokalen Import (beginnt mit .)
# Pruefen ob Moduldatei existiert
R:
# library()- und source()-Aufrufe finden
grep -rh "library(\\|source(" . --include="*.R" | \
sed -E 's/.*library\("([^"]+)"\).*/\1/' > packages.txt
# Fuer source()-Aufrufe pruefen ob Datei existiert
# Fuer library()-Aufrufe pruefen ob Paket installiert
Rscript -e "installed.packages()[,'Package']" > installed_packages.txt
Erwartet: broken_imports.txt listet alle Referenzen auf geloeschte/verschobene Module
Bei Fehler: Wenn sprachspezifisches Werkzeug nicht verfuegbar, kuerzliche Refactoring-Commits manuell pruefen
Dateien identifizieren die existieren aber nirgends referenziert werden.
# Alle Codedateien finden
find . -type f \( -name "*.js" -o -name "*.py" -o -name "*.R" \) > all_files.txt
# Fuer jede Datei:
while read file; do
basename=$(basename "$file")
# Nach Referenzen suchen (Import, Require, Source, href, Link)
refs=$(grep -r "$basename" . --exclude-dir=node_modules --exclude-dir=.git | wc -l)
# Wenn nur 1 Referenz (sich selbst):
if [ "$refs" -le 1 ]; then
# Letztes Aenderungsdatum pruefen
last_mod=$(git log -1 --format="%ci" "$file")
# Wenn laenger als orphan_threshold Tage nicht geaendert
# Als potenziell verwaist markieren
echo "VERWAIST: $file (letzte Aenderung: $last_mod)" >> orphans.txt
fi
done < all_files.txt
Erwartet: orphans.txt listet Dateien die anderweitig nicht referenziert werden
Bei Fehler: Wenn git log fehlschlaegt, stattdessen Dateisystem-mtime verwenden
Hinweis: Einige Dateien (z.B. CLI-Einstiegspunkte, Top-Level-Skripte) sind legitimerweise unreferenziert aber keine Waisen. Erfordert manuelle Pruefung.
Defekte interne Referenzen mit einer von drei Strategien reparieren:
Strategie 1: Verschobene Dateien finden
# Fuer jeden defekten Link nach Datei nach Name suchen
while read broken_link; do
filename=$(basename "$broken_link")
# Im Projekt nach Datei suchen
found=$(find . -name "$filename" | head -1)
if [ -n "$found" ]; then
# Link auf neuen Pfad aktualisieren
old_path="$broken_link"
new_path="$found"
# Edit-Tool zum Ersetzen in allen Markdown-Dateien verwenden
echo "KORREKTUR: $old_path -> $new_path"
fi
done < broken_internal.txt
Strategie 2: Weiterleitungs-Stub erstellen
# Wenn Datei absichtlich geloescht wurde, Weiterleitungs-Stub erstellen
echo "# Verschoben" > "$broken_link"
echo "Dieser Inhalt wurde nach [neuer Ort](new_path.md) verschoben" >> "$broken_link"
Strategie 3: Toten Link entfernen
# Wenn Inhalt nicht mehr existiert, Link entfernen (Text beibehalten)
# [Text](defekter_link) durch Text (Klartext) ersetzen
Erwartet: Alle defekten internen Links entweder repariert, weitergeleitet oder entfernt
Bei Fehler: Wenn automatische Korrektur den Kontext bricht, zur manuellen Pruefung eskalieren
Import-Anweisungen aktualisieren um nach Verschiebungen auf korrekte Pfade zu verweisen.
JavaScript-Beispiel:
// Vorher (defekt)
import { helper } from './utils/helper';
// Nachher (repariert — Datei nach lib/ verschoben)
import { helper } from './lib/helper';
Fuer jeden defekten Import:
Erwartet: Alle Imports loesen korrekt auf; keine Modul-nicht-gefunden-Fehler
Bei Fehler: Wenn Modul tatsaechlich geloescht wurde, eskalieren um festzustellen ob Funktionalitaet noch benoetigt wird
Fuer als verwaist markierte Dateien Verwendungszweck bestimmen:
# Pruefung verwaister Dateien
| Datei | Letzte Aenderung | Empfehlung | Grund |
|-------|------------------|------------|-------|
| scripts/old_deploy.sh | 2024-01-05 | Archivieren | Durch CI/CD ersetzt |
| src/legacy_api.js | 2023-06-12 | Loeschen | API v1 vollstaendig abgekuendigt |
| bin/cli.py | 2025-12-01 | Behalten | CLI-Einstiegspunkt (absichtlich unreferenziert) |
Erwartet: Dokument zur Pruefung verwaister Dateien erstellt; automatische Entscheidungen zur menschlichen Genehmigung markiert
Bei Fehler: (Entfaellt — auch ohne klare Empfehlung dokumentieren)
Alle defekten Referenzen und angewandten Korrekturen zusammenfassen.
# Referenz-Reparaturbericht
**Datum**: JJJJ-MM-TT
**Projekt**: <projektname>
**Korrekturmodus**: auto | report | interactive
## Defekte interne Links
- Gesamt: X
- Repariert: Y
- Weitergeleitet: Z
- Eskaliert: W
Details:
- [datei.md](datei.md) Zeile 45: Defekten Link zu verschobenem Dokument repariert
- [andere.md](andere.md) Zeile 12: Weiterleitungs-Stub erstellt
## Tote externe URLs
- Gesamt: X
- Repariert (Wayback Machine): Y
- Entfernt: Z
Details:
- https://example.com/old-page (404) → Entfernt
- https://api.old.com/docs (verschwunden) → Durch neue Dokumentation ersetzt
## Defekte Imports
- Gesamt: X
- Repariert: Y
- Eskaliert: Z
Details:
- src/main.js Zeile 3: Importpfad nach Refactoring aktualisiert
## Verwaiste Dateien
- Gesamt: X
- Behalten: Y
- Archiviert: Z
- Zur Pruefung eskaliert: W
Siehe ORPHAN_REVIEW.md fuer vollstaendige Analyse.
## Validierung
- [x] Alle Tests bestehen nach Korrekturen
- [x] Linter meldet keine Modul-nicht-gefunden-Fehler
- [x] Tote Links im Bericht dokumentiert
Erwartet: Bericht in REFERENCE_REPAIR_REPORT.md gespeichert
Bei Fehler: (Entfaellt — Bericht unabhaengig generieren)
Nach Reparaturen:
git mv fuer Verschiebungen)Automatische URL-Korrekturen brechen Kontext: Tote Links durch web.archive.org-URLs zu ersetzen entspricht moeglicherweise nicht der Absicht des Autors. Manche Links werden besser entfernt.
Ueberagressive Waisen-Loeschung: Einstiegspunkte, CLI-Skripte und Vorlagen sind oft absichtlich unreferenziert. Nicht ohne Pruefung loeschen.
Import-Pfad-Annahmen: Annahme dass alle relativen Imports denselben Basispfad verwenden. Verschiedene Modulsysteme (CommonJS, ES6, TypeScript) behandeln Pfade unterschiedlich.
Externe URL Falsch-Positive: Einige Websites blockieren curl/Bots funktionieren aber einwandfrei im Browser. Tote URLs immer manuell verifizieren.
Zirkulaere Referenz-Fallen: Datei A importiert B, B importiert A. Aktualisierung einer bricht die andere. Erfordert gleichzeitige Korrektur.
Fragment-Bezeichner ignorieren: Reparatur von [Link](#abschnitt) erfordert Pruefung ob der #abschnitt-Anker existiert, nicht nur ob die Datei existiert.
testing
Launch all available agents in parallel waves for open-ended hypothesis generation on problems where the correct domain is unknown. Use when facing a cross-domain problem with no clear starting point, when single-agent approaches have stalled, or when diverse perspectives are more valuable than deep expertise. Produces a ranked hypothesis set with convergence analysis and adversarial refinement.
tools
Write integration tests for a Node.js CLI application using the built-in node:test module. Covers the exec helper pattern, output assertions, filesystem state verification, cleanup hooks, JSON output parsing, error case testing, and state restoration after destructive tests. Use when adding tests to an existing CLI, testing a new command, verifying adapter behavior across frameworks, or setting up CI for a CLI tool.
development
Screen a proposed trademark for conflicts and distinctiveness before filing. Covers trademark database searches (TMview, WIPO Global Brand Database, USPTO TESS), distinctiveness analysis using the Abercrombie spectrum, likelihood of confusion assessment using DuPont factors and EUIPO relative grounds, common law rights evaluation, and goods/services overlap analysis. Produces a conflict report with a risk matrix. Use before adopting a new brand name, logo, or slogan — distinct from patent prior art search, which uses different databases, legal frameworks, and analysis methods.
tools
Scaffold a new CLI command using Commander.js with options, action handler, three output modes (human-readable, quiet, JSON), and optional ceremony variant. Covers command naming, option design, shared context patterns, error handling, and integration testing. Use when adding a command to an existing Commander.js CLI, designing a new CLI tool from scratch, or standardizing command structure across a multi-command CLI.