repair-broken-references
정보
이 스킬은 코드베이스 내에서 끊어진 참조를 자동으로 감지하고 수정합니다. 여기에는 죽은 링크, 오래된 임포트, 고아 파일 등이 포함됩니다. 이 스킬은 모든 프로젝트 참조가 문서와 소스 파일 전반에 걸쳐 유효하고 동기화된 상태를 유지하도록 보장합니다. 유지보수 작업 중 404 오류, 누락된 모듈, 동기화되지 않은 상호 참조를 마주했을 때 사용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/repair-broken-referencesClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
Defekte Referenzen reparieren
Wann verwenden
Diesen Skill verwenden wenn Projektreferenzen veraltet sind:
- Dokumentation enthaelt defekte interne Links
- Externe URLs geben 404-Fehler zurueck
- Import-Anweisungen verweisen auf verschobene oder geloeschte Module
- Querverweise zwischen Dateien sind nicht synchron
- Dateien existieren die nirgends referenziert werden
NICHT verwenden fuer Refactoring von Modulabhaengigkeiten oder Neugestaltung der Informationsarchitektur. Dieser Skill repariert bestehende Referenzen, strukturiert sie nicht um.
Eingaben
| 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) |
Vorgehensweise
Schritt 1: Defekte interne Links scannen
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
Schritt 2: Externe URLs 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.
Schritt 3: Defekte Imports finden
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
Schritt 4: Verwaiste Dateien finden
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.
Schritt 5: Interne Links reparieren
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
Schritt 6: Defekte Imports reparieren
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:
- Verschobenes Modul finden (aehnlich wie Schritt 5)
- Importpfad in allen referenzierenden Dateien aktualisieren
- Linter/Typechecker zur Verifizierung der Korrektur ausfuehren
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
Schritt 7: Verwaiste Dateien dokumentieren
Fuer als verwaist markierte Dateien Verwendungszweck bestimmen:
- Behalten: Legitimerweise unreferenziert (Einstiegspunkte, Skripte, Vorlagen)
- Archivieren: Alter Code nicht mehr benoetigt aber Historie bewahren
- Loeschen: Toter Code ohne Wert
# 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)
Schritt 8: Reparaturbericht erstellen
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)
Validierung
Nach Reparaturen:
- Keine defekten internen Links in Dokumentation
- Tote externe URLs dokumentiert (nicht alle reparierbar)
- Alle Imports loesen korrekt auf
- Verwaiste Dateien geprueft und zugeordnet
- Tests bestehen nach Import-Korrekturen
- Linter meldet keine unaufgeloesten Referenzen
- Git-Historie erhalten (verwendet
git mvfuer Verschiebungen)
Haeufige Stolperfallen
-
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. -
Falsches R-Binary auf Hybrid-Systemen: Unter WSL oder Docker kann
Rscripteinen plattformuebergreifenden Wrapper statt nativem R aufloesen. Mitwhich Rscript && Rscript --versionpruefen. Das native R-Binary bevorzugen (z.B./usr/local/bin/Rscriptunter Linux/WSL) fuer Zuverlaessigkeit. Fuer die R-Pfadkonfiguration siehe Setting Up Your Environment.
Verwandte Skills
- clean-codebase — Toten Code entfernen nach Bestaetigung verwaister Dateien
- tidy-project-structure — Dateien reorganisieren (kann defekte Referenzen erzeugen)
- escalate-issues — Komplexe Referenzprobleme an Spezialisten weiterleiten
- compliance/documentation-audit — Umfassende Dokumentationspruefung
- web-dev/link-checker — Erweiterte externe URL-Validierung
GitHub 저장소
연관 스킬
llamaguard
기타LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.
cost-optimization
기타이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.
quantizing-models-bitsandbytes
기타이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.
dispatching-parallel-agents
기타이 Claude Skill은 3개 이상의 독립적인 문제를 동시에 조사하고 해결하기 위해 다중 에이전트를 배치합니다. 공유 상태나 의존성 없이 해결 가능한 무관련 장애 시나리오에 맞게 설계되었습니다. 핵심 기능은 병렬 문제 해결로, 각 독립 문제 영역마다 하나의 에이전트를 할당하여 효율성을 극대화합니다.
