MCP HubMCP Hub
Retour aux compétences

repair-broken-references

pjt222
Mis à jour 2 days ago
4 vues
17
2
17
Voir sur GitHub
Documentationwordai

À propos

Cette compétence détecte et corrige automatiquement les références cassées dans les bases de code, y compris les liens morts, les importations obsolètes et les fichiers orphelins. Elle est conçue pour les tâches de maintenance lorsque les liens de documentation échouent, que les importations référencent des modules manquants ou que les renvois deviennent périmés. Utilisez-la pour garantir que toutes les références du projet restent valides sans chasse manuelle.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/repair-broken-references

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation

修斷之引

用時

項目之諸引已陳乃用此技:

  • 文檔含斷之內鏈
  • 外 URL 返 404 誤
  • import 陳述引已移或已刪之模
  • 文間之交引脫同
  • 文存而無處引之

勿用於重構模之依或重設信構。本技修現引,非重構之。

project_path項目根之絕路
check_external驗外 URL(默:是,緩)
fix_modeauto(修明顯)、report(獨書)、interactive(問)
orphan_threshold距末改之日,標為孤(默:180)

第一步:掃斷之內鏈

尋諸 markdown 鏈指不存之文。

# Find all markdown files
find . -name "*.md" -type f > markdown_files.txt

# Extract all markdown links: [text](path)
grep -oP '\[.*?\]\(\K[^)]+' *.md | sort | uniq > all_links.txt

# For each link:
while read link; do
  # Skip external URLs (http/https)
  if [[ "$link" =~ ^https?:// ]]; then
    continue
  fi

  # Resolve relative path
  target=$(realpath -m "$link")

  # Check if target exists
  if [ ! -e "$target" ]; then
    echo "BROKEN: $link (referenced in $file)" >> broken_internal.txt
  fi
done < all_links.txt

得:broken_internal.txt 列諸斷之內引

敗則:若 realpath 不可得,手察各鏈

第二步:察外 URL

驗外鏈仍可訪(HTTP 200 之應)。

# Extract external URLs
grep -ohP 'https?://[^\s\)]+' *.md | sort | uniq > external_urls.txt

# Check each URL (rate-limit to avoid bans)
while read url; do
  status=$(curl -o /dev/null -s -w "%{http_code}" "$url")

  if [ "$status" -ge 400 ]; then
    echo "DEAD ($status): $url" >> dead_urls.txt
  fi

  sleep 0.5  # Rate limit
done < external_urls.txt

得:dead_urls.txt 列返 4xx/5xx 誤之 URL

敗則:若 curl 不可得或被阻,用線之鏈察器或略

:某 URL 或因察機之拒返 403 然於覽器中行之。需手審。

第三步:尋斷之 import

察諸 import/require 之陳述引存之模。

JavaScript/TypeScript

# Find all import statements
grep -rh "^import.*from ['\"]" . | sed -E "s/.*from ['\"]([^'\"]+)['\"].*/\1/" > imports.txt

# For each import:
while read import; do
  # Skip node_modules and external packages
  if [[ "$import" =~ ^[./] ]]; then
    # Resolve to file path
    target="${import}.js"  # Try .js, .ts, .jsx, .tsx

    if [ ! -e "$target" ]; then
      echo "BROKEN IMPORT: $import" >> broken_imports.txt
    fi
  fi
done < imports.txt

Python

# Find all import statements
grep -rh "^from .* import\|^import " . --include="*.py" | \
  sed -E "s/from ([^ ]+) import.*/\1/" | \
  sed -E "s/import ([^ ]+)/\1/" > imports.txt

# For each local import (starts with .)
# Check if module file exists

R

# Find library() and source() calls
grep -rh "library(\\|source(" . --include="*.R" | \
  sed -E 's/.*library\("([^"]+)"\).*/\1/' > packages.txt

# For source() calls, check if file exists
# For library() calls, check if package installed
Rscript -e "installed.packages()[,'Package']" > installed_packages.txt

得:broken_imports.txt 列諸引已刪/已移之模

敗則:若語特之具不可得,手審近之重構之提交

第四步:尋孤文

識文存而無處引之。

# Find all code files
find . -type f \( -name "*.js" -o -name "*.py" -o -name "*.R" \) > all_files.txt

# For each file:
while read file; do
  basename=$(basename "$file")

  # Search for references (import, require, source, href, link)
  refs=$(grep -r "$basename" . --exclude-dir=node_modules --exclude-dir=.git | wc -l)

  # If only 1 reference (itself):
  if [ "$refs" -le 1 ]; then
    # Check last modified date
    last_mod=$(git log -1 --format="%ci" "$file")

    # If modified more than orphan_threshold days ago
    # Flag as potential orphan
    echo "ORPHAN: $file (last modified: $last_mod)" >> orphans.txt
  fi
done < all_files.txt

得:orphans.txt 列無處引之文

敗則:若 git log 敗,用文系之 mtime 代之

:某文(如 CLI 入點、頂層之文)合而無引,非孤也。需手審。

第五步:修內鏈

以三策之一修斷之內引:

策一:尋已移之文

# For each broken link, search for file by name
while read broken_link; do
  filename=$(basename "$broken_link")

  # Search for file in project
  found=$(find . -name "$filename" | head -1)

  if [ -n "$found" ]; then
    # Update link to new path
    old_path="$broken_link"
    new_path="$found"

    # Use Edit tool to replace in all markdown files
    echo "FIX: $old_path -> $new_path"
  fi
done < broken_internal.txt

策二:立轉之短

# If file was deleted intentionally, create redirect stub
echo "# Moved" > "$broken_link"
echo "This content moved to [new location](new_path.md)" >> "$broken_link"

策三:除死之鏈

# If content no longer exists, remove link (keep text)
# Replace [text](broken_link) with text (plain)

得:諸斷內鏈或修、或轉、或除

敗則:若自動之修破境,升以行手審

第六步:修斷之 import

更 import 陳述以引移後之正路。

JavaScript 例

// Before (broken)
import { helper } from './utils/helper';

// After (fixed — file moved to lib/)
import { helper } from './lib/helper';

各斷之 import:

  1. 定移之模(似第五步)
  2. 於諸引之文中更 import 路
  3. 行 linter/類察以驗修

得:諸 import 解正;無 module-not-found 之誤

敗則:若模真已刪,升以定其能否仍需

第七步:書孤文

於標為孤之文,定處:

  1. :合而無引(入點、文、樣)
  2. :舊碼不需而存其史
  3. :死碼無值
# Orphaned Files Review

| File | Last Modified | Recommendation | Reason |
|------|---------------|----------------|--------|
| scripts/old_deploy.sh | 2024-01-05 | Archive | Replaced by CI/CD |
| src/legacy_api.js | 2023-06-12 | Delete | API v1 fully deprecated |
| bin/cli.py | 2025-12-01 | Keep | CLI entry point (unreferenced by design) |

得:孤審文檔已立;自動之決標待人承

敗則:(無——雖無清處仍書之)

第八步:生修報

摘諸斷引與所施修。

# Reference Repair Report

**Date**: YYYY-MM-DD
**Project**: <project_name>
**Fix Mode**: auto | report | interactive

## Broken Internal Links

- Total: X
- Fixed: Y
- Redirected: Z
- Escalated: W

Details:
- [file.md](file.md) line 45: Fixed broken link to moved doc
- [another.md](another.md) line 12: Created redirect stub

## Dead External URLs

- Total: X
- Fixed (wayback machine): Y
- Removed: Z

Details:
- https://example.com/old-page (404) → Removed
- https://api.old.com/docs (gone) → Replaced with new docs

## Broken Imports

- Total: X
- Fixed: Y
- Escalated: Z

Details:
- src/main.js line 3: Updated import path after refactor

## Orphaned Files

- Total: X
- Kept: Y
- Archived: Z
- Escalated for review: W

See ORPHAN_REVIEW.md for full analysis.

## Validation

- [x] All tests pass after fixes
- [x] Linter reports no module-not-found errors
- [x] Dead links documented in report

得:報存於 REFERENCE_REPAIR_REPORT.md

敗則:(無——雖然亦書之)

修後:

  • 文檔無斷之內鏈
  • 死之外 URL 已書(非皆可修)
  • 諸 import 解正
  • 孤文已審且已決
  • import 修後試過
  • linter 報無未解之引
  • git 史已存(諸移用 git mv

  1. 自動 URL 修破境:以 web.archive.org 之 URL 代死鏈或非著者所欲。某鏈宜除
  2. 過烈刪孤:入點、CLI 之文、樣常合而無引。勿無審而刪
  3. import 路之假:假諸相對 import 用同基路。異模系(CommonJS、ES6、TypeScript)異路
  4. 外 URL 之假陽:某站阻 curl/察機而於覽器中行之。必手驗死 URL
  5. 環引之陷:文 A 引 B,B 引 A。更一破他。需同時修
  6. 忽片識:修 [link](#section) 須察 #section 錨存乎,非獨察文存
  7. 混系之 R 二進制誤:於 WSL 或 Docker,Rscript 或解至跨台之裹而非原 R。以 which Rscript && Rscript --version 察。為信宜用原 R 二進制(如 Linux/WSL 之 /usr/local/bin/Rscript)。R 路之設見 Setting Up Your Environment

Dépôt GitHub

pjt222/agent-almanac
Chemin: i18n/wenyan/skills/repair-broken-references
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Compétences associées

railway-docs

Documentation

Cette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.

Voir la compétence

n8n-code-python

Documentation

Cette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.

Voir la compétence

archon

Documentation

La compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.

Voir la compétence

n8n-code-javascript

Documentation

Cette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.

Voir la compétence