メインコンテンツまでスキップ

audit

インストール済みの Skill をスキャンし、セキュリティ上の脅威や悪意のあるパターンを検出します。

skillshare audit                        # インストール済みの全 Skill をスキャン
skillshare audit <name> # 特定のインストール済み Skill をスキャン
skillshare audit a b c # 複数の Skill をスキャン
skillshare audit --group frontend # グループ内の全 Skill をスキャン
skillshare audit <path> # ファイル/ディレクトリのパスをスキャン
skillshare audit --threshold high # HIGH 以上の findings でブロック
skillshare audit -T h # --threshold high と同じ
skillshare audit --format json # JSON 出力
skillshare audit --format sarif # SARIF 2.1.0 出力(GitHub Code Scanning)
skillshare audit --format markdown # Markdown レポート(GitHub Issues/PR 向け)
skillshare audit --json # --format json と同じ(非推奨)
skillshare audit -p # project の Skill をスキャン
skillshare audit --quiet # findings のある Skill のみ表示
skillshare audit --yes # 大規模スキャンの確認をスキップ
skillshare audit --no-tui # プレーンテキスト出力(インタラクティブ TUI なし)
skillshare audit --profile strict # strict プロファイルを使用(HIGH 以上でブロック)
skillshare audit --dedupe global # 完全な composite-key 重複排除
skillshare audit --analyzer static # static analyzer のみ実行
skillshare audit --analyzer static --analyzer dataflow # 複数の analyzer

使うタイミング

  • 新しい Skill をインストールした後にセキュリティの findings を確認する
  • プロンプトインジェクション、データ流出、認証情報アクセスのパターンについて全 Skill をスキャンする
  • 組織のセキュリティポリシーに合わせて audit ルールをカスタマイズする
  • コンプライアンス向け(--format json)、静的解析ツール向け(--format sarif)、またはドキュメント向け(--format markdown)の audit レポートを生成する
  • CI/CD パイプラインに組み込んで Skill のデプロイをゲートする
  • SARIF の結果を GitHub Code Scanning にアップロードして PR レベルの注釈を行う

検出内容

audit エンジンは、Skill ディレクトリ内のすべてのテキストベースのファイルを 100 以上の組み込みルール(正規表現パターン、テーブル駆動の認証情報検出、構造チェック、コンテンツの整合性検証、サプライチェーンの信頼性分析)と照合し、5 段階の重大度(CRITICALHIGHMEDIUMLOWINFO)に分類します。

完全な検出カタログ、脅威カテゴリの詳細、リスクスコアリングアルゴリズム、コマンド安全性のティア分類、Skill 間の相互作用分析については、Audit Engine を参照してください。

出力例

skillshare audit
──────────────────────────────────────────────────
Scanning 12 skills for threats
mode: global
path: /Users/alice/.config/skillshare/skills
block rule: finding severity >= CRITICAL
policy: DEFAULT / dedupe:GLOBAL / analyzers:ALL

[3/12] ! ci-release-helper (AGG MEDIUM 25/100, max HIGH)
[4/12] ✗ suspicious-skill (AGG HIGH 35/100, max CRITICAL)

Summary
──────────────────────────────────────────────────
Block: severity >= CRITICAL
Policy: DEFAULT / dedupe:GLOBAL / analyzers:ALL
Max sev: CRITICAL
Scanned: 12 skill(s)
Passed: 9
Warning: 2
Failed: 1
Severity: c/h/m/l/i = 1/2/1/0/0
Threats: inj:1 exfil:1 cred:1 priv:1
Aggregate: HIGH (35/100)
Auditable: 100% avg
Note: Failed uses severity gate; aggregate is informational

Failed は、有効な閾値(--threshold または config の audit.block_threshold、デフォルトは CRITICAL)以上の findings を持つ Skill の数を数えます。

Threats は、短縮名を使ってすべての findings をカテゴリ別に内訳表示します: inj(injection)、exfil(exfiltration)、cred(credential)、obfusc(obfuscation)、priv(privilege)、integ(integrity)、struct(structure)、risk(risk)。findings がない場合、この行は省略されます。ターミナル出力では、各カテゴリは脅威タイプごとに色分けされます。

audit.block_threshold はブロックの閾値のみを制御します。スキャン自体を無効化することはありません

インタラクティブ TUI モード

インタラクティブなターミナルで複数の Skill をスキャンする場合、audit コマンドは結果を 1 行ずつ出力する代わりに フルスクリーン TUI(bubbletea 製)を起動します。この TUI はサイドバイサイドのレイアウトを使用します。

左パネル — 重大度順(findings のあるものが先)にソートされた Skill のリスト。/!/ のステータスバッジと集計リスクスコアを表示。

右パネル — 現在選択中の Skill の詳細。ナビゲートするたびに自動的に更新される。

  • Summary: リスクスコア(色付き)、最大重大度、ブロックステータス、閾値、スキャン時間、重大度の内訳(c/h/m/l/i)
  • Findings: 各 finding は [N] SEVERITY pattern、メッセージ、file:line の位置、一致したスニペットを表示

操作:

  • ↑↓ で Skill を移動、←→ でページ送り
  • / で Skill を名前でフィルタ
  • Ctrl+d/Ctrl+u で詳細パネルをスクロール
  • マウスホイールで詳細パネルをスクロール
  • q/Esc で終了

TUI は次の条件がすべて満たされた場合に自動的に起動します: インタラクティブなターミナルであること、JSON 以外の出力であること、複数の結果があること。プレーンテキスト出力を強制するには --no-tui を使用します。狭いターミナル(<70 列)では縦レイアウトにフォールバックします。

大規模スキャンの確認

インタラクティブなターミナルで 1,000 を超える Skill をスキャンする場合、コマンドは実行前に確認を求めます。TTY 環境(例: ローカルの自動化スクリプト)でこのプロンプトをスキップするには --yes を使用します。CI/CD パイプライン(非 TTY)では、このプロンプトは自動的にスキップされます。

ポリシーとプロファイル

audit コマンドは、プロファイル、重複排除モード、analyzer の選択を通じたポリシー駆動の設定をサポートします。これらは CLI フラグ、project config、またはグローバル config で設定できます。

プロファイル

プロファイルは、閾値と重複排除の適切なデフォルトを設定するプリセットです。

プロファイル閾値重複排除用途
defaultCRITICALglobal標準的な動作 — critical な脅威のみをブロック
strictHIGHglobalセキュリティ重視のチーム — high 以上の脅威をブロック
permissiveCRITICALlegacyアドバイザリ専用 — 最小限のブロック、グローバル重複排除なし
skillshare audit --profile strict       # HIGH 以上でブロック、グローバル重複排除
skillshare audit --profile permissive # アドバイザリモード

明示的なフラグは常にプロファイルのデフォルトより優先されます。

skillshare audit --profile strict --threshold medium  # strict プロファイルだが MEDIUM 以上でブロック

重複排除

同じ finding が複数の analyzer(例: static と dataflow の両方)で検出された場合、重複排除は冗長なエントリを削除します。

モード動作
globalすべての findings に対する完全な composite-key 重複排除(デフォルト)
legacyanalyzer 単位のみの重複排除(v0.16.9 以前の動作)

Analyzer の選択

デフォルトではすべての analyzer が実行されます。特定の analyzer のみを実行するには --analyzer を使用します。

skillshare audit --analyzer static                    # static パターンマッチングのみ
skillshare audit --analyzer static --analyzer dataflow # 複数の analyzer
Analyzerスコープ説明
staticファイル単位audit ルールに対する正規表現ベースのパターンマッチング
dataflowファイル単位shell スクリプトと markdown コードブロックの taint tracking
tierSkill 単位Capability tier の組み合わせリスク分析
integritySkill 単位コンテンツハッシュ検証(SKILL.md の file_hashes
metadataSkill 単位サプライチェーンの信頼性検証(publisher の不一致、権威の主張)
structureSkill 単位markdown のダングリングリンク検出
cross-skillバンドル単位Skill 間のデータ流出・権限昇格分析

config で設定することもできます。

audit:
enabled_analyzers: [static, dataflow]

優先順位

設定は次の順序で解決されます(最初に空でない値が優先されます)。

  1. CLI フラグ(--profile, --threshold, --dedupe, --analyzer
  2. Project config(.skillshare/config.yaml
  3. グローバル config(~/.config/skillshare/config.yaml
  4. プロファイルのデフォルト

自動スキャン

インストール時

Skill はインストール中に自動的にスキャンされます。audit.block_threshold(デフォルト: CRITICAL)以上の findings があるとインストールがブロックされます。

skillshare install /path/to/evil-skill
# Error: security audit failed: critical threats detected in skill

skillshare install /path/to/evil-skill --force
# 警告付きでインストールする(注意して使用)

skillshare install /path/to/skill --audit-threshold high
# コマンド単位のブロック閾値の上書き

skillshare install /path/to/skill -T h
# --audit-threshold high と同じ

skillshare install /path/to/skill --skip-audit
# スキャンをバイパスする(注意して使用)

--force はブロックの判定を上書きします。--skip-audit は、そのインストールコマンドに対するスキャンを無効化します。

install 時の audit をグローバルに無効化する config フラグはありません。意図的にスキャンをバイパスしたいコマンドに限って --skip-audit を使用してください。

差異のまとめ:

Install フラグAudit は実行される?Findings は利用可能?
--forceはいはい(インストールは続行される)
--skip-auditいいえいいえ(スキャンはバイパスされる)

両方が指定された場合、audit が実行されないため実質的に --skip-audit が優先されます。

更新時

skillshare update は、追跡中のリポジトリを pull した後にセキュリティ audit を実行します。有効な閾値(デフォルトは audit.block_threshold、または --audit-threshold / --threshold / -T による上書き)以上の findings があると、ロールバックが発生します。詳細は update --skip-audit を参照してください。

--force で受け入れた findings はその Skill について記憶されるため、後続の更新で同じルールが同じテキストに一致しても再びブロックされることはありません。新しい finding、または同じルールが異なるテキストに一致した場合は、再びブロックされます。詳細は Accepted Findings を参照してください。

install 経由で追跡中のリポジトリを更新する場合(skillshare install <repo> --track --update)、ゲートは同じ閾値ポリシー(audit.block_threshold または --audit-threshold / --threshold / -T)を使用します。

CI/CD 統合

audit コマンドはパイプライン自動化向けに設計されています。非 TTY 環境(CI ランナー、パイプ出力)では、インタラクティブ TUI と確認プロンプトは自動的に無効化されます — --yes--no-tui は不要です。

完全な CI/CD ワークフロー(GitHub Actions、GitLab CI、SARIF アップロード、出力フォーマット)については、CI/CD Skill Validation recipe を参照してください。

Pre-commit フック

pre-commit フレームワークを使って、コミットごとに skillshare audit を自動実行します。このフックは .skillshare/ または skills/ ディレクトリに一致するファイルをスキャンし、findings が設定した閾値を超える場合にコミットをブロックします。

# .pre-commit-config.yaml
repos:
- repo: https://github.com/runkids/skillshare
rev: v0.16.11 # 最新のリリースタグを使用
hooks:
- id: skillshare-audit

完全なセットアップ手順は Pre-commit Hook recipe を参照してください。

ベストプラクティス

個人開発者向け

  • 信頼する前に audit する — 信頼できないソースから Skill をインストールした後は、必ず skillshare audit を実行する
  • 合否だけでなく findings を確認する — 「合格」した Skill でも、調査する価値のある LOW/MEDIUM の findings がある場合がある
  • Skill ファイルを読む — 自動スキャンは既知のパターンを検出するが、新種の攻撃には人間によるレビューが必要

チームおよび組織向け

  • audit.block_threshold: HIGH を設定する — デフォルトの CRITICAL より厳しくし、難読化や破壊的なコマンドを検出する
  • 組織全体のカスタムルールを作成する — 社内のシークレット形式(例: corp-api-key-*)用のパターンを追加する
  • オーバーライドには project モードのルールを使う — グローバルではなく project 単位で、想定されるパターンの重大度を引き下げる

推奨される Audit ワークフロー

  1. インストール: Skill は自動的にスキャンされる — 閾値を超えるとブロックされる
  2. 定期スキャン: インストール後に更新されたルールを検出するために、定期的に skillshare audit を実行する
  3. Pre-commit フック: pre-commit フレームワーク でコミット前に問題を検出する
  4. CI ゲート: 共有 Skill リポジトリのために、CI パイプラインに audit を追加する
  5. カスタムルール: 組織の脅威モデルに合わせて検出をカスタマイズする
  6. レポートを確認する: コンプライアンス向けには --format json、GitHub Code Scanning 向けには --format sarif、GitHub Issues/PR 向けには --format markdown を使用する

閾値の設定

config ファイルでブロック閾値を設定します。

# ~/.config/skillshare/config.yaml
audit:
block_threshold: HIGH # HIGH 以上でブロック(デフォルトの CRITICAL より厳しい)

またはコマンド単位で設定します。

skillshare audit --threshold medium  # MEDIUM 以上でブロック

完全な Audit 設定

すべての audit 設定は config.yaml に永続化できます。

# ~/.config/skillshare/config.yaml (project の場合は .skillshare/config.yaml)
audit:
block_threshold: HIGH # ブロックの重大度ゲート
profile: strict # プロファイルのプリセット(default/strict/permissive)
dedupe_mode: global # 重複排除モード(global/legacy)
enabled_analyzers: [static, dataflow, tier] # 特定の analyzer に限定

CLI フラグは config の値より優先されます。完全な解決順序については 優先順位 を参照してください。

skillshare status コマンドは、すべての優先順位のレイヤーを適用した後の、有効なプロファイル、閾値、重複排除モード、analyzer リストを表示する、解決済みの audit ポリシーを表示します。

Web UI

audit 機能は、Web ダッシュボードの /audit でも利用できます。

skillshare ui
# Audit ページに移動 → 「Run Audit」をクリック

Security Audit page in web dashboard

Dashboard ページには、クイックスキャンのサマリーを含む Security Audit セクションがあります。

カスタムルールエディタ

Web ダッシュボードには、ブラウザ上で直接カスタムルールを作成・編集するための専用の Audit Rules ページが /audit/rules にあります。

  • 作成: audit-rules.yaml が存在しない場合、「Create Rules File」をクリックしてスキャフォールドする
  • 編集: シンタックスハイライトと検証機能付きの YAML エディタ
  • 保存: 保存前に YAML フォーマットと正規表現パターンを検証する

Audit ページの「Custom Rules」ボタンからアクセスできます。

終了コード

コード意味
0有効な閾値以上の findings なし
1有効な閾値以上の findings が 1 件以上ある

スキャン対象ファイル

audit は Skill ディレクトリ内のテキストベースのファイルをスキャンします。

  • .md, .txt, .yaml, .yml, .json, .toml
  • .sh, .bash, .zsh, .fish
  • .py, .js, .ts, .rb, .go, .rs
  • 拡張子のないファイル(例: Makefile, Dockerfile

スキャンは各 Skill ディレクトリ内で再帰的に行われるため、サポート対象のテキストファイルタイプに一致する限り、SKILL.md、ネストした references/*.mdscripts/*.sh もすべて検査されます。

バイナリファイル(画像、.wasm など)と隠しディレクトリ(.git)はスキップされます。

オプション

フラグ説明
-G, --group <name>グループ内のすべての Skill をスキャン(複数指定可)
-p, --projectproject レベルの Skill をスキャン
-g, --globalグローバルな Skill をスキャン
--threshold <t>, -T <t>ブロック閾値: critical|high|medium|low|info(省略形: c|h|m|l|i、加えて crit, med
--profile <p>Audit プロファイルのプリセット: default, strict, permissive
--dedupe <mode>重複排除モード: legacy, global(デフォルト)
--analyzer <id>指定した analyzer のみ実行(複数指定可)。ID: static, dataflow, tier, integrity, metadata, structure, cross-skill
--format <f>出力フォーマット: text(デフォルト), json, sarif, markdown
--jsonJSON を出力(非推奨: --format json を使用)
--yes, -y大規模スキャンの確認プロンプトをスキップ(自動確認)
--quiet, -qfindings のある Skill とサマリーのみ表示(クリーンな ✓ 行を抑制)
--no-tuiインタラクティブ TUI を無効化し、プレーンテキストを出力
--init-rulesスターター用の audit-rules.yaml を作成(-p/-g に対応)
-h, --helpヘルプを表示

サブコマンド

サブコマンド説明
rulesaudit ルールの閲覧、有効化、無効化(audit rules を参照)

Agent サポート

skillshare audit agents はセキュリティスキャンの対象を agent のみに絞り、agent の source ディレクトリ内の .md ファイルをスキャンします。

skillshare audit agents                    # すべての agent をスキャン
skillshare audit agents --threshold high # agent の HIGH 以上でブロック
skillshare audit agents --format sarif # agent 向けの SARIF 出力
skillshare audit agents -p # project の agent をスキャン

Agent は、Skill と同じ audit ルール、重大度レベル、閾値ゲートの対象になります。agents 引数を指定しない場合、audit は Skill のみをスキャンします(デフォルトの動作)。背景については Agents を参照してください。

関連項目

  • Audit Engine — エンジンの仕組み(脅威モデル、リスクスコアリング、コマンドのティア分類)
  • audit rules — ルールの管理とカスタマイズ
  • install — Skill をインストール(自動スキャン付き)
  • check — Skill の整合性と同期状態を検証
  • doctor — セットアップの問題を診断
  • list — インストール済みの Skill を一覧表示
  • Securing Your Skills — チームや組織向けのセキュリティガイド
  • CI/CD Skill Validation — パイプライン自動化のレシピ
  • Pre-commit Hook — コミットごとの自動 audit
  • Agents — Agent の概念