safe-repo について
リポジトリのセキュリティ監査向けスキルで、追跡対象ファイル内の認証情報、企業固有情報、個人情報を調べます。履歴を含む全体スキャンと、変更ファイルに絞ったスキャンに対応します。
主な機能
- 01認証情報パターンのスキャン
- 02機密ファイル名の確認
- 03Git履歴の調査
- 04変更ファイルのみのスキャン
- 05Gitignoreルールの確認
- 06秘密値を伏せた検出レポート
活用シーン
- 01リリース前のリポジトリ監査
- 02コミット前の変更チェック
- 03履歴から削除済みの秘密情報を調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ helderberto/ agent-skills --skill safe-repoインストール後、Claude Code で/safe-repoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/report-template.mdscripts/scan-secrets.shscan-secrets.test.sh詳細
安全なリポジトリチェック
コンテキスト
リポジトリ内の機密データをセキュリティ監査します。認証情報、API キー、会社固有の情報、個人を特定できる情報(PII)をチェックします。
モード
- デフォルト(full-scan):Git で追跡されているすべてのファイルと履歴をスキャンします。定期監査や初回のリポジトリレビューに使用します。
--diff [<base>]:変更された内容のみをスキャンします。ブランチで<base>以降に作成されたコミットに加え、ステージ済みおよび未ステージの変更が対象です。<base>を指定しない場合は、ステージ済みおよび未ステージの変更のみが対象です。コミット前、reviewから、またはto-pr --safeから使用します。高速で、既存ファイルによる誤検出はありません。
ワークフロー
デフォルト(full-scan)
bash ${CLAUDE_SKILL_DIR}/scripts/scan-secrets.shを実行し、追跡対象のすべてのファイルで認証情報のパターンをスキャンします- ファイル名から機密性の高い追跡対象ファイルを確認します:
.env*(.env.exampleを除く)、*.pem、*.key、*_rsa*、*secret*、*credential* - Git 履歴を調べ、削除されたシークレットを確認します:
git log --all --full-history -- "*.env" "*.pem" "*.key" "*secret*" "*credential*" .gitignoreに適切なパターンが設定されていることを確認します- 検出結果を報告します(assets/report-template.md を参照)
--diff モード
- 変更ファイルを特定します:ベースが指定されている場合は
git diff --name-only <base>...HEADを実行し、さらにgit diff --name-only HEADとgit diff --name-only --cachedの結果を加えます ${CLAUDE_SKILL_DIR}/scripts/scan-secrets.sh内の正規表現を使って、該当ファイルのみをスキャンします(正規表現を直接 grep します)。上記のファイル名チェックも行います- 履歴の分析は省略します(進行中の変更には関係ありません)
- 変更ファイルのみを対象として検出結果を報告します
ルール
- Git で追跡されているファイルのみをチェックします(
git ls-files)。ローカル設定は無視します - 現在追跡されているファイルと Git 履歴の両方をチェックします
- 誤検出を除外します:圧縮された JavaScript、node_modules、テスト用フィクスチャ、ドキュメント
.gitignoreが機密情報のパターンを網羅していることを確認します- シークレットを含む追跡対象ファイルと、該当する過去のコミットを報告します
- レポートに実際のシークレット値を出力しないでください
エラー処理
- Git 履歴のスキャンに時間がかかる場合は、直近の 100 件のコミットに範囲を限定します:
git log --oneline -100
コメント
Markdown 対応