mcpField
S
safe-repo

safe-repo

github.com/helderbertoセキュリティ1949 回インストール2 日前に更新
リポジトリ

safe-repo について

リポジトリのセキュリティ監査向けスキルで、追跡対象ファイル内の認証情報、企業固有情報、個人情報を調べます。履歴を含む全体スキャンと、変更ファイルに絞ったスキャンに対応します。

主な機能

  1. 01認証情報パターンのスキャン
  2. 02機密ファイル名の確認
  3. 03Git履歴の調査
  4. 04変更ファイルのみのスキャン
  5. 05Gitignoreルールの確認
  6. 06秘密値を伏せた検出レポート

活用シーン

  1. 01リリース前のリポジトリ監査
  2. 02コミット前の変更チェック
  3. 03履歴から削除済みの秘密情報を調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/helderberto/agent-skills --skill safe-repo

インストール後、Claude Code で/safe-repoを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
report-template.md
scripts/
scan-secrets.sh
scan-secrets.test.sh

詳細

安全なリポジトリチェック

コンテキスト

リポジトリ内の機密データをセキュリティ監査します。認証情報、API キー、会社固有の情報、個人を特定できる情報(PII)をチェックします。

モード

  • デフォルト(full-scan):Git で追跡されているすべてのファイルと履歴をスキャンします。定期監査や初回のリポジトリレビューに使用します。
  • --diff [<base>]:変更された内容のみをスキャンします。ブランチで <base> 以降に作成されたコミットに加え、ステージ済みおよび未ステージの変更が対象です。<base> を指定しない場合は、ステージ済みおよび未ステージの変更のみが対象です。コミット前、review から、または to-pr --safe から使用します。高速で、既存ファイルによる誤検出はありません。

ワークフロー

デフォルト(full-scan)
  1. bash ${CLAUDE_SKILL_DIR}/scripts/scan-secrets.sh を実行し、追跡対象のすべてのファイルで認証情報のパターンをスキャンします
  2. ファイル名から機密性の高い追跡対象ファイルを確認します:.env*(.env.example を除く)、*.pem、*.key、*_rsa*、*secret*、*credential*
  3. Git 履歴を調べ、削除されたシークレットを確認します:git log --all --full-history -- "*.env" "*.pem" "*.key" "*secret*" "*credential*"
  4. .gitignore に適切なパターンが設定されていることを確認します
  5. 検出結果を報告します(assets/report-template.md を参照)
--diff モード
  1. 変更ファイルを特定します:ベースが指定されている場合は git diff --name-only <base>...HEAD を実行し、さらに git diff --name-only HEAD と git diff --name-only --cached の結果を加えます
  2. ${CLAUDE_SKILL_DIR}/scripts/scan-secrets.sh 内の正規表現を使って、該当ファイルのみをスキャンします(正規表現を直接 grep します)。上記のファイル名チェックも行います
  3. 履歴の分析は省略します(進行中の変更には関係ありません)
  4. 変更ファイルのみを対象として検出結果を報告します

ルール

  • Git で追跡されているファイルのみをチェックします(git ls-files)。ローカル設定は無視します
  • 現在追跡されているファイルと Git 履歴の両方をチェックします
  • 誤検出を除外します:圧縮された JavaScript、node_modules、テスト用フィクスチャ、ドキュメント
  • .gitignore が機密情報のパターンを網羅していることを確認します
  • シークレットを含む追跡対象ファイルと、該当する過去のコミットを報告します
  • レポートに実際のシークレット値を出力しないでください

エラー処理

  • Git 履歴のスキャンに時間がかかる場合は、直近の 100 件のコミットに範囲を限定します:git log --oneline -100

コメント