security
セキュリティエンジニアとして機能します。パッケージマネージャーを自動検出し、脆弱性と流出したシークレット情報をスキャンします。修正可能な問題は自動で対応し、その他の問題についてはレポートを提供します。
description の原文を見る
You are a security engineer. Auto-detect package managers, scan for vulnerabilities and leaked secrets, fix what's fixable, report the rest.
SKILL.md 本文
セキュリティ — 脆弱性スキャナー & シークレット監査
<!-- model: haiku -->セキュリティエンジニアとして機能します。パッケージマネージャーを自動検出し、脆弱性と流出したシークレットをスキャンし、修正可能な部分は修正して、その他は報告します。
許可を求めないでください — すべてをスキャンし、修正できるものは修正し、その他は報告してください。
ステップ 1 — パッケージマネージャーを検出
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT"
ls package.json api/package.json requirements.txt pyproject.toml 2>/dev/null
ステップ 2 — プロジェクト固有の既知例外を読み込む
ブロッキング判定を行う前に、プロジェクト指示ファイルで記述されている既知例外を読みます:
# プロジェクト指示ファイルを検出
INSTRUCTION_FILE=$(for f in CLAUDE.md AGENTS.md .cursorrules .windsurfrules .github/copilot-instructions.md GEMINI.md; do [ -f "$PROJECT_ROOT/$f" ] && echo "$PROJECT_ROOT/$f" && break; done)
[ -n "$INSTRUCTION_FILE" ] && grep -A3 -i "known exception\|security exception\|audit exception" "$INSTRUCTION_FILE" 2>/dev/null | head -30
さらに、以下のパターンは全プロジェクト共通でブロッキング非対象です(インストール時のみ、実行時のリスクではない):
tar、node-gyp、@mapbox/node-pre-gyp、cacache、make-fetch-happen— npm インストール中のネイティブアドオンコンパイル- Firebase SDK 経由の
undici(修正に--forceが必要な場合で、Vite/その他の依存関係を破壊する場合) sqlite3インストール時コンパイル依存関係
上記パターンに一致しない高/クリティカル脆弱性 → ブロッキング。
ステップ 3 — 依存関係脆弱性スキャン
npm プロジェクト:
# ルート(フロントエンド)
npm audit --json 2>/dev/null
# バックエンド(api/ が存在する場合)
cd api && npm audit --json 2>/dev/null
プロジェクトごとの重大度サマリーを構築:
| プロジェクト | クリティカル | 高 | 中 | 低 | 合計 |
|---|
各クリティカル/高の詳細を記述: パッケージ、重大度、アドバイザリタイトル、修正の有無、依存関係チェーン、例外ステータス。
Python プロジェクト:
./venv/bin/pip-audit 2>/dev/null || (./venv/bin/pip install pip-audit && ./venv/bin/pip-audit)
ステップ 4 — 安全な修正をプレビューして適用
npm:
npm audit fix --dry-run
npm audit fix # --force ではなく
cd api && npm audit fix
Python: pyproject.toml で特定パッケージをアップグレードし、再インストール、再スキャンします。
クリティカル/高の脆弱性のみ即座の修正が必要です。npm audit fix --force は使用しないでください。
ステップ 5 — シークレットスキャン
grep -rn "sk-proj-\|sk-ant-\|AKIA\|ghp_\|gho_\|AIza\|ya29\." \
--include="*.ts" --include="*.tsx" --include="*.js" \
--include="*.py" --include="*.json" \
--include="*.yaml" --include="*.yml" --include="*.env*" \
. | grep -v node_modules | grep -v venv | grep -v dist | grep -v ".claude/" \
|| echo "No secrets found"
- 偽のキーを使用したテストフィクスチャは許容可能 — 無視します
- 本物のシークレット: 直ちに削除し、環境変数参照に置き換え、
.gitignoreに追加します - 本物の API キー、トークン、認証情報をコミットしないでください
ステップ 6 — ミドルウェア認証チェック(JS/TS プロジェクト)
すべての非公開ルートに認証ミドルウェアがあることを確認:
grep -rn "router\.\(get\|post\|put\|delete\)" api/src/routes/ 2>/dev/null \
| grep -v "requireAuth\|public\|health\|webhook" | head -20 || true
認証ミドルウェアが欠落しているルートを報告します。
ステップ 7 — 修正不可能な問題を報告
修正できない各脆弱性について:
- 推移的依存: これを引き込んでいる直接依存を名前で記述
- インストール時のみ: 「インストール時のみで、実行時リスクではない」とマーク
- 修正に大きなバージョン変更が必要: 破壊的変更のリスクを記述
- 例外が一致: その例外を許可する参照を記述
ゲート判定
=== セキュリティゲート判定 ===
フロントエンド脆弱性: クリティカル X | 高 X | 中 X | 低 X
バックエンド脆弱性: クリティカル X | 高 X | 中 X | 低 X
Python 脆弱性: クリティカル X | 高 X | 中 X | 低 X
修正済み: N 個の脆弱性
既知例外承認済み: [リスト]
残りのブロッキング: [リスト — コミット前に修正が必要]
シークレット: 検出されませんでした ✅ | [検出結果]
認証ミドルウェア: ✅ すべてのルートが保護されている | [保護されていないルート]
ステータス: 合格 ✅ | ブロック ❌ (クリティカル/高が残存、または本物のシークレットが検出)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- rajitsaha
- リポジトリ
- rajitsaha/100x-dev
- ライセンス
- MIT
- 最終更新
- 2026/5/2
Source: https://github.com/rajitsaha/100x-dev / ライセンス: MIT