mcpField
S
swain-security-check

swain-security-check

github.com/cristoslcセキュリティ275 回インストール25 週間前に更新
リポジトリ

swain-security-check について

swain-security-checkは、プロジェクトリポジトリ向けのセキュリティスキャン統合ツールです。利用可能なスキャナーを検出して内蔵チェックとともに実行し、結果を深刻度別に整理してJSONとMarkdownで出力します。

主な機能

  1. 01利用可能な外部スキャナーの検出
  2. 02シークレットと依存関係の脆弱性スキャン
  3. 03静的解析とコンテキストファイル検査
  4. 04リポジトリの衛生状態チェック
  5. 05深刻度別に検出結果を統一
  6. 06JSONとMarkdownのレポート生成

活用シーン

  1. 01状態変更操作の前にリポジトリをスキャン
  2. 02エージェント用コンテキストファイルの注入パターン検査
  3. 03シークレットや追跡対象の.envファイルの検出
  4. 04依存関係とリポジトリ衛生上の問題の確認

インストール

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

$npx skills add https://github.com/cristoslc/swain --skill swain-security-check

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

同梱ファイル

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

references/
external-hook-api.md
scripts/
context_file_scanner.py
doctor_security_check.py
external_hooks.py
scanner_availability.py
security_briefing.py
security_check.py
security_gate.py
security-scan.sh
threat_surface.py

詳細

セキュリティチェック

状態を変更する操作を行う前に、アクティブなセッションがあるか確認してください:

REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
bash "$REPO_ROOT/.agents/bin/swain-session-check.sh" 2>/dev/null

JSON 出力の "status" が "active" 以外の場合は、オペレーターに「アクティブなセッションがありません。/swain-init で開始しますか?」と伝えてください。オペレーターがその案内を閉じた場合は続行してください。

統合セキュリティスキャンオーケストレーターです。スキャナーの利用可能状況を確認し、利用可能なすべてのスキャナーをプロジェクトに対して実行し、検出結果を重大度別に分類したレポートに統一して、JSON 形式と Markdown 形式の両方で結果を提示します。

呼び出された場合

セキュリティチェックのスクリプトを実行します:

REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
SEC_SCRIPT="$REPO_ROOT/.agents/bin/security_check.py"
[ -n "$SEC_SCRIPT" ] && python3 "$SEC_SCRIPT" . || echo "security_check.py not found"

JSON 出力の場合:

REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
SEC_SCRIPT="$REPO_ROOT/.agents/bin/security_check.py"
[ -n "$SEC_SCRIPT" ] && python3 "$SEC_SCRIPT" --json . || echo "security_check.py not found"

オーケストレーションの流れ

  1. 利用可能状況の確認 — インストール済みの外部スキャナーを検出します(SPEC-059 に準拠)
  2. スキャナーの実行 — 利用可能な各スキャナーをプロジェクトに対して実行します:
    • gitleaks(シークレット)— gitleaks detect --source . --report-format json
    • osv-scanner または trivy(依存関係の脆弱性)— ロックファイルとマニフェストをスキャンします
    • semgrep(静的解析)— semgrep --config p/ai-best-practices
    • コンテキストファイルスキャナー(組み込み、常に実行)— すべてのエージェントコンテキストファイルをスキャンし、インジェクションパターンを検出します(SPEC-058、カテゴリ A-J)
    • リポジトリの衛生状態(組み込み、常に実行)— .gitignore の完全性と、追跡対象の .env ファイルを確認します
  3. 統一 — すべての検出結果を統一形式(スキャナー、ファイル、行、重大度、説明、修正方法)に対応付けます
  4. レポート — 重大度別(critical/high/medium/low)に分類した出力と概要行を生成します

エラーへの対処

外部スキャナーが見つからない場合は警告を出してスキップします。ツールが見つからないことが原因でスキャンが失敗することはありません。組み込みのスキャナー(コンテキストファイルスキャナーとリポジトリの衛生状態)は常に実行されるため、スキャンでは必ず結果が生成されます。

スキップした各スキャナーについて、レポートにインストール方法のヒントが含まれます。

終了コード

コード意味
0検出結果なし
1検出結果あり
2エラー(例:無効なパス)

レポート形式

重大度レベル
  • Critical — ソース内のシークレット、追跡対象の .env ファイル、命令の上書きパターン
  • High — 役割の乗っ取り、権限昇格、エンコーディングによる難読化
  • Medium — .gitignore パターンの不足、依存関係の脆弱性
  • Low — 情報提供のみの検出結果
検出結果ごとのフィールド
フィールド説明
scanner検出結果を生成したスキャナー
file_path検出されたファイル
line行番号(該当しない場合は 0)
severitycritical、high、medium、low のいずれか
description検出内容
remediation修正方法
概要行

例:1 critical, 2 high, 0 medium, 0 low findings (3 total) across 4 scanners

統合ポイント

  • swain-doctor(SPEC-061)— セッション開始時に軽量なコンテキストファイルスキャンを実行します
  • swain-do(SPEC-063)— セキュリティ上重要なタスクの実行前に、セキュリティに関する説明を行います
  • swain-init — プロジェクトのオンボーディング時に gitleaks の pre-commit フックを設定します
  • 外部セキュリティスキル(SPEC-065)— サードパーティ製セキュリティスキル向けのフックインターフェース

外部セキュリティスキルのフックインターフェース

フックの登録契約、イベントスキーマ、統合パターンについては、references/external-hook-api.md を参照してください。

依存関係

  • SPEC-058:コンテキストファイルのインジェクションスキャナー(context_file_scanner.py)
  • SPEC-059:スキャナー利用可能状況の検出(scanner_availability.py)
  • SPEC-065:外部セキュリティスキルのフックインターフェース(external_hooks.py)

コメント