本文へ移動
cccskills
無料GitHub で公開

sec-full-scan

リリース前の全ファイル静的解析スキル。プロジェクト構造を自動検出し、ソースモジュールごとのサブエージェントと依存関係スキャンを並列実行してコードベース全体の脆弱性を検出する。手動呼び出し専用: /sec-full-scan

インストール方法を見る

含まれるファイル(43)

  • SKILL.md12.1 KB
  • LICENSE.txt1.0 KB
  • NOTICE.md695 B
  • tests/expected.json3.1 KB
  • tests/fixtures/attacker-safe/safe-cors.ts1.0 KB
  • tests/fixtures/attacker-safe/safe-redirect.ts1010 B
  • tests/fixtures/attacker/01-mass-assignment.ts1.3 KB
  • tests/fixtures/attacker/02-second-order-injection.ts1.6 KB
  • tests/fixtures/attacker/03a-middleware.ts1.2 KB
  • tests/fixtures/attacker/03b-analytics-route.ts1.6 KB
  • tests/fixtures/attacker/04-open-redirect.ts1.5 KB
  • tests/fixtures/attacker/05-cors-credentials.ts1.7 KB
  • tests/fixtures/deep-chain/analyticsService.ts770 B
  • tests/fixtures/deep-chain/jwtHelper.ts278 B
  • tests/fixtures/deep-chain/permissionService.ts331 B
  • tests/fixtures/deep-chain/route.ts382 B
  • tests/fixtures/deep-chain/tokenService.ts409 B
  • tests/fixtures/deep-chain/types.ts329 B
  • tests/fixtures/framework-bypass/api-route.ts585 B
  • tests/fixtures/framework-bypass/middleware.ts698 B
  • tests/fixtures/framework-bypass/next.config.ts234 B
  • tests/fixtures/hard-safe/non-user-exec.ts958 B
  • tests/fixtures/hard-safe/sanitized-html.tsx664 B
  • tests/fixtures/hard-vuln/authz-bypass.ts1.2 KB
  • tests/fixtures/hard-vuln/fake-escape.ts867 B
  • tests/fixtures/hard-vuln/indirect-xss.tsx1.0 KB
  • tests/fixtures/hard-vuln/pii-logging.ts1.1 KB
  • tests/fixtures/hard-vuln/ssrf.ts808 B
  • tests/fixtures/infra-combo/feedback.tsx410 B
  • tests/fixtures/infra-combo/next.config.ts790 B
  • tests/fixtures/no-comment-safe/report-safe.ts579 B
  • tests/fixtures/no-comment-safe/user-settings-safe.ts916 B
  • tests/fixtures/no-comment-vuln/auth-callback.ts1.1 KB
  • tests/fixtures/no-comment-vuln/report.ts696 B
  • tests/fixtures/no-comment-vuln/tag-search.ts732 B
  • tests/fixtures/no-comment-vuln/user-settings.ts611 B
  • tests/fixtures/no-comment-vuln/webhook.ts782 B
  • tests/fixtures/safe/env-auth.ts662 B
  • tests/fixtures/safe/parameterized-query.ts622 B
  • tests/fixtures/vuln/hardcoded-key.ts925 B
  • tests/fixtures/vuln/jwt-bypass.ts509 B
  • tests/fixtures/vuln/nosql-injection.ts620 B
  • tests/fixtures/vuln/xss.tsx562 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

sec-full-scan

役割: リリース前・全ファイル静的解析スキル(言語・フレームワーク非依存)

プロジェクト構造を自動検出し、以下を並列実行する:

  • ソースモジュールサブエージェント(検出されたモジュールごとに1つ): 全ソースファイルの静的解析
  • パッケージサブエージェント: 依存関係の既知 CVE スキャン + シークレット漏洩チェック

コンテキスト上限への注意: リポジトリが大規模な場合、全ファイルがコンテキストウィンドウに収まらない可能性がある。スキップが発生した場合はサイレントに無視せず、必ずスキップしたファイル一覧とともに PARTIAL スキャンとして報告する。


引数

引数必須説明
対象パス任意明示的にスキャンしたいディレクトリ(省略時は自動検出)

手順

Step 1: プロジェクト構造の自動検出

以下の順序で構造を把握する:

  1. ソースディレクトリの特定

    • package.json / pyproject.toml / Cargo.toml / go.mod / Gemfile / pom.xml / build.gradle を node_modules/ / .git/ / dist/ / build/ を除外して検索する
    • 各マニフェストファイルの場所からソースディレクトリを推定する(例: package.json がある場所の src/ / lib/ / app/ 等)
    • 引数でパスが指定された場合はそれを優先する
  2. 言語・フレームワークの検出

    • マニフェストファイルの内容(dependencies / devDependencies 等)からフレームワークを特定する
    • 例: next → Next.js、express → Express、fastapi → FastAPI、rails → Rails 等
  3. モジュール分割の決定

    • ソースディレクトリが複数ある場合(モノレポ等): モジュールごとにサブエージェントを割り当てる
    • ソースディレクトリが1つの場合: サブエージェント1つで全体をカバーする
    • モジュールが4つ以上ある場合: 関連するモジュールをグループ化する(コンテキストコスト削減)
  4. スキャン前にファイル一覧を確定する(必須):

    • 各モジュールのソースファイルを find コマンドで列挙し、総ファイル数を記録する
    • この時点で確定した総ファイル数が、カバレッジ計算の分母になる
    • 「このスキャンは以下のモジュールを対象とします: [モジュール一覧] / 総ファイル数: [N]件」と明示する

Step 2: サブエージェントを並列実行

以下を同時に起動する(並列実行):


ソースモジュールサブエージェント(モジュールごと)

検出された各ソースモジュールのファイルを静的解析する。

解析手順(必須):

  1. 解析開始前に全ファイルを列挙する: find <src_dir> -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.py" 等 \) で対象ファイルの完全なリストを取得し、総数 N を記録する
  2. 全ファイルを順番に読んで解析する: 以下の優先度順に読み進める
  3. コンテキスト上限に達した場合: 解析を即座に停止し、「読めなかったファイル一覧」を記録する。未解析ファイルをスキップしたままスキャン完了と報告してはならない

読み込み優先度(コンテキスト上限時のみ意味を持つ):

優先度ファイル種別汎用パターン例
1HTTPエントリーポイント・ルーターroutes/, controllers/, api/, handlers/, endpoints/
2ミドルウェア・フィルターmiddleware/, filters/, interceptors/
3認証・認可auth/, security/, permissions/, guards/
4外部入力を受け取る層リクエストボディを直接扱うファイル
5データアクセス層repository/, infra/, models/, db/, store/
6外部サービス連携clients/, adapters/, services/, integrations/
7ユーティリティ・ヘルパーutils/, lib/, helpers/, shared/

報告義務(必須):

  • 解析完了後に必ず FILES_ANALYZED: <解析済み数> of <総数> を報告する
  • 未解析ファイルがある場合は ファイルパスを全件列挙する
  • 解析済み数 < 総数 の場合、結果を PARTIAL SCAN として明示する

検出対象(信頼度 8/10 以上のみ報告):

  • インジェクション: SQL / NoSQL / コマンド / テンプレートインジェクション、パストラバーサル
  • 認証・認可の欠陥: セッション管理・JWT 誤実装・認可バイパス・権限昇格
  • ハードコードされた認証情報・API キー: シークレット・接続文字列の平文埋め込み
  • 危険なメソッドによる XSS: dangerouslySetInnerHTML / innerHTML / bypassSecurityTrustHtml / eval / document.write 等
  • PII・トークン・パスワードのログ出力
  • SSRF: ホスト・プロトコルをユーザー入力で制御できる場合のみ

除外ルール(報告しない):

  • DoS・リソース枯渇・レート制限
  • React / Angular 通常コンポーネントの XSS(危険なメソッド不使用の場合)
  • クライアントサイドの認証チェック欠如(サーバーサイドが責任を持つ)
  • AI システムプロンプトへのユーザー入力混入
  • 環境変数・CLI フラグ経由の攻撃(信頼済み)
  • Markdown・ドキュメントファイル
  • ログスプーフィング
  • パスのみ制御できる SSRF
  • UUID は推測不能と仮定

偽陽性フィルタリング:

  • 具体的な攻撃経路があるか(理論上ではなく実際に悪用可能か)
  • 既存のフレームワーク・ライブラリが安全に処理している場合は除外する
  • ログへの非 PII データ出力は脆弱性としない

パッケージサブエージェント

依存関係スキャン:

検出されたマニフェストファイルに応じて対応するコマンドを実行する:

マニフェストコマンド抽出対象
package.jsonnpm audit --json または yarn audit --jsonHigh / Critical
requirements.txt / Pipfilepip-audit または safety checkHigh / Critical
Gemfilebundle audit checkHigh / Critical
go.modgovulncheck ./...High / Critical
Cargo.tomlcargo auditHigh / Critical
pom.xml / build.gradledependency-checkHigh / Critical

ツールが存在しない場合はスキップして記録する。 --force や破壊的変更が必要な修正は別途明示する。

シークレット漏洩チェック:

  • gitleaks detect --source . --report-format json を実行する
  • trufflehog filesystem . を代替として試みる
  • どちらもなければスキップして記録する

Step 3: 結果の統合・重複排除

  1. 同一の脆弱性が複数サブエージェントから報告された場合は1件にまとめる
  2. 深刻度別にソートする(Critical → High → Medium → Low)
  3. フレームワーク固有の修正方法を具体的に記載する

Critical を発見したら: 即座に報告し、残りの処理を続けながらも即時対応を促す。

Step 4: カバレッジ集計

scan_date: <ISO8601>
scan_type: full_static

project:
  detected_modules: <検出されたモジュール名リスト>
  languages: <検出された言語リスト>
  frameworks: <検出されたフレームワークリスト>

coverage:
  modules:
    - name: <モジュール名>
      files_total: <総ファイル数>
      files_analyzed: <解析済み数>
      context_limit_reached: <true/false>
  skipped_files:
    - path: <スキップしたファイル>
      reason: <理由(コンテキスト上限・バイナリ等)>

packages:
  scanned: <スキャン済みマニフェスト数>
  tools_unavailable: <利用不可だったツールリスト>
  vulns_high_critical: <件数>

findings:
  critical: <件数>
  high: <件数>
  medium: <件数>
  low: <件数>

not_covered_by_this_scan:
  - デプロイ後のランタイム挙動 → /sec-runtime-scan を使用
  - PR差分の即時レビュー → /sec-diff-review を使用
  - ビジネスロジックの欠陥 → ペネトレーションテスト(人手)が必要
  - インフラ・クラウド設定 → インフラ担当者レビューが必要
  - ゼロデイ脆弱性 → CVEデータベース外のため検出不可
  - マルチステップ攻撃チェーン → ペネトレーションテストが必要

# coverage_score = files_analyzed / files_total × 100(全モジュール合算)
# files_analyzed < files_total の場合は scan_status: PARTIAL
coverage_score: <files_analyzed合計 / files_total合計 × 100>%
scan_status: <COMPLETE | PARTIAL>
ci_result: <pass/fail>

Step 5: レポート生成・履歴インデックス更新

  1. 日付付きファイル名でレポートを保存する

    • レポート: ./security-reports/YYYY-MM-DD-full-scan-report.md
    • カバレッジ: ./security-reports/YYYY-MM-DD-full-scan-coverage.yml
    • 日付は実行時の ISO 8601 形式(例: 2026-05-01)
    • ディレクトリが存在しない場合は作成する
  2. 深刻度別ソート・修正優先順位・具体的な修正コマンドを含める

  3. ./security-reports/index.md に1行追記する

    • ファイルが存在しない場合はヘッダーから作成する
    • 追記フォーマット:
    | YYYY-MM-DD | sec-full-scan | 全ソース (<総ファイル数>files / <scan_status>) | <Critical件数> | <High件数> | <Medium件数> | <CI結果> | [レポート](YYYY-MM-DD-full-scan-report.md) |
    
    • CI結果: High 以上の発見が 0 件なら ✅ pass、1件以上なら ❌ fail
  4. High 以上の発見がある場合、終了コード 1 を報告する


3スキルの住み分け

タイミングスキル対象
開発中・PR 単位/sec-diff-reviewgit diff のみ・静的解析
リリース前/sec-full-scan全ソースファイル + 依存関係(言語非依存)
ステージングデプロイ後/sec-runtime-scanランタイム挙動・HTTP 動的テスト

このスキルでカバーできない領域

領域推奨手段
デプロイ後の HTTP ヘッダー・動的挙動/sec-runtime-scan
ビジネスロジックの欠陥(仕様知識が必要)ペネトレーションテスト
インフラ・クラウド設定(IAM・ネットワーク ACL)インフラ担当者レビュー
ゼロデイ脆弱性CVE データベース外のため検出不可
マルチステップ攻撃チェーンペネトレーションテスト

完了条件

  • ./security-reports/YYYY-MM-DD-full-scan-report.md が生成されている
  • ./security-reports/YYYY-MM-DD-full-scan-coverage.yml が生成されている(scan_type: full_static 明記)
  • 検出されたモジュール・言語・フレームワークが明示されている
  • 解析済みファイル数とスキップしたファイルが明示されている
  • カバーできない領域が明示されている
  • severity_gate 基準に基づく CI 結果(pass / fail)が明示されている
  • ./security-reports/index.md に1行追記されている

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

cc-sdd-restack-after-merge

無料日本語概要

stacked PRの下位PRがマージされた後に上位branchをrestack(rebase/cherry-pick再構成)する際に使用。「restackして」「上位PRを更新して」「restack after merge」「PRのbaseを更新」「スタックを整理」という依頼でトリガーする。対象sliceの特定→rebase→変更ファイル確認と代表テスト実行→force-with-leaseでpush→PR base更新→auto-merge判定の順で進める。

studiogadget/skills32026年5月25日 更新

cc-sdd-review-slice-stack

無料日本語概要

cc-sdd実装用統合ブランチのコミット群(ベースブランチとの差分)をreview slice単位のstacked PRに再構成する際に使用。「review sliceに分割」「stacked PRを作成」「PRをスタックして」「レビュー用にPRを分けて」「review slice stack」という依頼でトリガーする。dry-run(既定)でslice計画を提示し、apply指示で実際にブランチ・PRを作成する。

studiogadget/skills32026年5月25日 更新

ci-stable-log-testing

無料日本語概要

CI環境で安定動作するPythonテスト(特にstructlogのログ検証)を書く際に使用。「CIで失敗する」「capture_logsが不安定」「ログアサーションがCIだけ落ちる」「caplogフォールバック」「ANSI混入」「xdistでログが取れない」という課題で起動。capture_logs→caplogフォールバック→ANSI正規化→アサーション設計の流れで堅牢なテストを書く。

studiogadget/skills32026年5月25日 更新

create-issue

無料日本語概要

GitHub Issueを作成してGitHubに投稿するスキル。「Issueを作成」「Issue作成」「Issueにして」「Issueとして投稿」「GitHubにIssue」「create issue」「open issue」「バグ報告」「機能追加をIssueに」「改善提案をIssueに」などの依頼でトリガーする。コンテキスト収集→Issue本文生成→ラベル存在確認・作成→gh issue create投稿の流れでIssueを作成する。

studiogadget/skills32026年5月25日 更新

docker-deployment-guide

無料日本語概要

Dockerベースのアプリケーションのデプロイメント手順書(Markdown)を作成するスキル。「デプロイ手順書」「デプロイメント手順」「deployment guide」「本番環境への配置手順」「サーバーへの配置手順」などの依頼でトリガーする。Docker Composeビルド→イメージ転送→サーバー配置→設定→動作確認→cron設定の流れで手順書を生成する。

studiogadget/skills32026年5月25日 更新

hibernate-pc

無料日本語概要

タスク完了後にPCを休止状態にする。Use when: ユーザーが「休止」「hibernate」「タスク完了後に休止状態」「作業後にPCをスリープ/休止」と明示的に指示した場合のみ。正常終了時だけでなく、エラーや未解決事項が残っていても、明示指示があれば最後に休止へ移行する。Windows only.

studiogadget/skills32026年5月25日 更新

studiogadget のスキルをすべて見る

このスキルの問題を報告する