Repo Scan

by affaan-mef648e01899bNo license275K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 3 days ago

固定されレビュー可能なコミットから外部の repo-scan スキルをインストールするブートストラップ用ポインター。クロススタックのソースコード資産監査を実行する前に repo-scan のインストールが必要な場合に使用する。この ECC ポインター自体は監査を実行しない。

Instructions onlyDevOps & Cloud
AI-generated overview

Bootstrap pointer that installs the external repo-scan skill from a pinned commit; it does not perform the audit itself.

What it does
This skill is a pointer document that installs an external cross-stack source code audit skill from a pinned Git commit into the agent's skills directory. It provides a shell installation procedure with staging, locking, backup and rollback, plus a confirmation prompt before replacing an existing installation. It also documents the external skill's capabilities, such as file classification, embedded library detection, four-tier verdicts and HTML reports, but states that the pointer itself does not run the scan.
When to use it
Use it when the repo-scan skill is not yet installed and a cross-stack source code asset audit is needed. It is meant for taking over large legacy codebases, preparing large refactors, auditing undeclared third-party dependencies, or preparing architecture decision records for monorepo reorganization.
Requirements
Requires Git and network access to clone the pinned repository, a POSIX shell with tar, mktemp and mv, and a writable skills directory under CLAUDE_CONFIG_DIR or ~/.claude. It ships no scripts; the installation commands are embedded in the document, and the user must type install to confirm.

repo-scan

どのエコシステムにも独自の依存関係マネージャーがあるが、C++、Android、iOS、Web をまたいで「どのコードが本当に自分のもので、どれがサードパーティで、どれが余分な負担か」を教えてくれるツールはない。

適用場面

  • 大規模なレガシーコードベースを引き継ぎ、全体的な構造を把握する必要がある場合
  • 大規模なリファクタリング前——コアコード、重複コード、廃止コードを特定する
  • パッケージマネージャーで宣言せずにソースに直接埋め込まれたサードパーティの依存関係を監査する
  • モノレポの再編成に向けたアーキテクチャ決定記録を準備する

インストール

bash
# Clone first so the pinned commit can be reviewed before installationset -euo pipefail
REPO_SCAN_COMMIT=2742664ebcad1450c208eda0ae45d3c17fad5dd8REPO_SCAN_INSTALL_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/repo-scan"REPO_SCAN_INSTALL_PARENT="$(dirname "$REPO_SCAN_INSTALL_DIR")"mkdir -p "$REPO_SCAN_INSTALL_PARENT"REPO_SCAN_TMP="$(mktemp -d "$REPO_SCAN_INSTALL_PARENT/.repo-scan-install.XXXXXX")"REPO_SCAN_TOKEN="${REPO_SCAN_TMP##*.}"REPO_SCAN_STAGE="$REPO_SCAN_TMP/stage-$REPO_SCAN_TOKEN"REPO_SCAN_BACKUP="$REPO_SCAN_TMP/backup-$REPO_SCAN_TOKEN"REPO_SCAN_LOCK="$REPO_SCAN_INSTALL_PARENT/.repo-scan-install.lock"REPO_SCAN_KEEP_TMP=0REPO_SCAN_LOCK_HELD=0REPO_SCAN_MV_HAS_NO_TARGET=0cleanup_repo_scan_install() {  if [ "$REPO_SCAN_KEEP_TMP" -eq 0 ]; then    rm -rf -- "$REPO_SCAN_TMP"  fi  if [ "$REPO_SCAN_LOCK_HELD" -eq 1 ] && ! rmdir -- "$REPO_SCAN_LOCK"; then    printf 'Could not release installation lock at %s\n' "$REPO_SCAN_LOCK" >&2  fi}trap cleanup_repo_scan_install EXITmkdir "$REPO_SCAN_TMP/mv-probe-source"if mv -T -- "$REPO_SCAN_TMP/mv-probe-source" \  "$REPO_SCAN_TMP/mv-probe-destination" 2>/dev/null; then  REPO_SCAN_MV_HAS_NO_TARGET=1  rmdir "$REPO_SCAN_TMP/mv-probe-destination"else  rmdir "$REPO_SCAN_TMP/mv-probe-source"fimove_repo_scan_dir() {  REPO_SCAN_MOVE_SOURCE=$1  REPO_SCAN_MOVE_DESTINATION=$2  REPO_SCAN_MOVE_NAME=${REPO_SCAN_MOVE_SOURCE##*/}  if [ -e "$REPO_SCAN_MOVE_DESTINATION" ] || [ -L "$REPO_SCAN_MOVE_DESTINATION" ]; then    return 1  fi  if [ "$REPO_SCAN_MV_HAS_NO_TARGET" -eq 1 ]; then    mv -T -- "$REPO_SCAN_MOVE_SOURCE" "$REPO_SCAN_MOVE_DESTINATION"    return  fi  if ! mv -- "$REPO_SCAN_MOVE_SOURCE" "$REPO_SCAN_MOVE_DESTINATION"; then    return 1  fi  if [ -e "$REPO_SCAN_MOVE_DESTINATION/$REPO_SCAN_MOVE_NAME" ] || \    [ -L "$REPO_SCAN_MOVE_DESTINATION/$REPO_SCAN_MOVE_NAME" ]; then    if ! mv -- "$REPO_SCAN_MOVE_DESTINATION/$REPO_SCAN_MOVE_NAME" \      "$REPO_SCAN_MOVE_SOURCE"; then      REPO_SCAN_KEEP_TMP=1      printf 'Move conflict recovery failed; staged data remains at %s\n' \        "$REPO_SCAN_MOVE_DESTINATION/$REPO_SCAN_MOVE_NAME" >&2    fi    return 1  fi}
git clone --filter=blob:none --no-checkout \  https://github.com/haibindev/repo-scan.git "$REPO_SCAN_TMP/source"git -C "$REPO_SCAN_TMP/source" checkout --detach "$REPO_SCAN_COMMIT"mkdir -p "$REPO_SCAN_STAGE"git -C "$REPO_SCAN_TMP/source" archive "$REPO_SCAN_COMMIT" | \  tar -xf - -C "$REPO_SCAN_STAGE"
# Review "$REPO_SCAN_TMP/source" before approving installation.printf 'Type install to replace %s after reviewing the pinned source: ' \  "$REPO_SCAN_INSTALL_DIR" >&2read -r REPO_SCAN_CONFIRMif [ "$REPO_SCAN_CONFIRM" != install ]; then  printf 'Installation cancelled.\n' >&2  exit 1fiif ! mkdir -- "$REPO_SCAN_LOCK" 2>/dev/null; then  printf 'Another repo-scan installation holds the lock at %s\n' \    "$REPO_SCAN_LOCK" >&2  exit 1fiREPO_SCAN_LOCK_HELD=1
if [ -e "$REPO_SCAN_INSTALL_DIR" ] || [ -L "$REPO_SCAN_INSTALL_DIR" ]; then  move_repo_scan_dir "$REPO_SCAN_INSTALL_DIR" "$REPO_SCAN_BACKUP"fiif ! move_repo_scan_dir "$REPO_SCAN_STAGE" "$REPO_SCAN_INSTALL_DIR"; then  if [ -e "$REPO_SCAN_BACKUP" ] || [ -L "$REPO_SCAN_BACKUP" ]; then    if [ -e "$REPO_SCAN_INSTALL_DIR" ] || [ -L "$REPO_SCAN_INSTALL_DIR" ]; then      REPO_SCAN_KEEP_TMP=1      printf 'Replacement failed and target was recreated; previous installation preserved at %s\n' \        "$REPO_SCAN_BACKUP" >&2    elif ! move_repo_scan_dir "$REPO_SCAN_BACKUP" "$REPO_SCAN_INSTALL_DIR"; then      REPO_SCAN_KEEP_TMP=1      printf 'Replacement and rollback failed; previous installation preserved at %s\n' \        "$REPO_SCAN_BACKUP" >&2    fi  fi  exit 1fi

エージェントスキルをインストールする前に、ソースコードをレビューしてください。

インストール後、エージェントハーネスを再読み込みしてから、repo-scan を再度呼び出してください。この ECC ポインターは外部スキルをインストールするだけで、スキャン自体は実行しません。

コア機能

機能説明
クロススタックスキャンC/C++、Java/Android、iOS(OC/Swift)、Web(TS/JS/Vue)を一度にスキャン
ファイル分類各ファイルをプロジェクトコード、サードパーティコード、またはビルドアーティファクトとしてマーク
ライブラリ検出50以上の既知ライブラリ(FFmpeg、Boost、OpenSSL…)を識別しバージョン番号を抽出
4段階の判定コア資産 / 抽出・統合 / 再構築 / 廃止
HTMLレポート階層的なドリルダウンナビゲーションに対応したインタラクティブなダークテーマページ
モノレポサポート階層的スキャンによるサマリー + サブプロジェクトレポート

分析の深さレベル

レベル読み取りファイル数適用場面
fastモジュールあたり1〜2個大規模ディレクトリの素早い棚卸し
standardモジュールあたり2〜5個デフォルト監査、完全な依存関係 + アーキテクチャチェック
deepモジュールあたり5〜10個スレッド安全性、メモリ管理、API一貫性チェックを追加
full全ファイル統合前の包括的レビュー

動作原理

  1. リポジトリの表面を分類:ファイルを列挙し、各ファイルをプロジェクトコード、埋め込みサードパーティコード、ビルドアーティファクトとしてマークする。
  2. 埋め込みライブラリを検出:ディレクトリ名、ヘッダーファイル、ライセンスファイル、バージョンマーカーを検査して、バンドルされた依存関係とその可能性のあるバージョンを識別する。
  3. 各モジュールをスコアリング:ファイルをモジュールまたはサブシステムにグループ化し、所有権、重複度、保守コストに基づいて4つの判定のいずれかを割り当てる。
  4. 構造的リスクを強調:冗長なアーティファクト、重複したラッパー、古いベンダーコード、および抽出・再構築・廃止すべきモジュールを指摘する。
  5. レポートを生成:簡潔なサマリーとインタラクティブなHTML出力を返し、モジュールごとのドリルダウンにより監査結果を非同期でレビューできる。

例

50,000ファイルのC++モノレポで:

  • FFmpeg 2.x(2015年版)がまだ使用されていることを発見
  • 同じSDKラッパーが3回重複していることを発見
  • 636 MBのコミット済みDebug/ipch/objビルドアーティファクトを識別
  • 分類結果:3 MBのプロジェクトコード vs 596 MBのサードパーティコード

ベストプラクティス

  • 初回監査は standard の深さから始める
  • 100以上のモジュールを含むモノレポには fast で素早く棚卸しする
  • リファクタリングが必要とフラグ立てされたモジュールに対して段階的に deep を実行する
  • クロスモジュール分析の結果をレビューして、サブプロジェクト間の重複コードを検出する

リンク

Source and attribution

Source:affaan-m/eccindocs/ja-JP/skills/repo-scanat commitef648e0

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal