
AIコーディングアシスタント向けの自動依存関係セキュリティレイヤー。npm、PyPI、RubyGems、Maven、Go、Rustエコシステム全体で、パッケージのCVE、タイポスクワッティング、放置、バージョン経年問題、ハッシュ整合性を監査します。
ClaudeのようなAIコーディングアシスタントがプロジェクトにパッケージを追加するとき、多くの場合、既知のセキュリティ脆弱性があるかどうか、パッケージがまだ積極的にメンテナンスされているかどうか、あるいは名前が悪意のある偽物とタイプミス1文字違いではないかどうかを確認せずに、適当に聞こえるバージョンを選びます。
safer-dependenciesはClaude Codeのセキュリティレイヤーです。Claudeとマニフェストファイルの間に位置し、セキュリティチェックを自動的に実行します。脆弱なインストールは実行前に拒否され、マニフェストに書き込まれたリスクのあるバージョンは書き込み直後にディスク上で修正されます。CVE、タイポスクワット、放棄されたパッケージ、バージョンの古さの問題に加え、新規リリースに対するクールダウン期間を検出して修正し、npm、PyPI、RubyGems、Maven、Go、Rust、PHP(Composer)に対応しています。正確に何がカバーされ、何がカバーされていないかはCAPABILITIES.mdを参照してください。
初めての方ですか? GETTING-STARTED.mdでは、約5分でゼロから動作するインストールまでを案内します。
セキュリティとプライバシー: SECURITY.md(脆弱性の開示)、PRIVACY.md(データ外部送信、テレメトリなし)、CAPABILITIES.md(このツールが防御するものとしないもの)を参照してください。
ライセンス(ソース利用可能 — OSI「オープンソース」ではありません): 自分の目的のために自由に使用・変更できます。営利目的・社内利用、販売する製品の構築を含みます。ソフトウェア自体を収益化する場合 — 販売、販売される製品やサービスへの同梱、または第三者への機能提供(ホステッド/SaaS/APIを含む)に対する有料提供 — にはのみ、別途有料ライセンスが必要です。再配布および派生物はライセンスを保持し、このプロジェクトへのクレジットを記載する必要があります。LICENSE(商用制限についてはセクション4)を参照してください。商用ライセンスのリクエストはgithub.com/robert-augerまで。
**GETTING-STARTED.mdでは、前提条件、対話型インストール、検証を含め、約5分でゼロから動作するインストールまでを案内します。完全なインストールリファレンス(グローバル/プロジェクト/手動インストール、Windows固有の詳細、権限許可リスト、更新、アンインストール)については、INSTALLATION.md**を参照してください。
日常的な使用: フックがインストールされると、実行するものは何もありません — safer-dependenciesはバックグラウンドで自動的に動作します。Claudeがパッケージを追加またはインストールする際、リスクのある依存関係にフラグを立て、脆弱なバージョンをその場で安全なものにアップグレードし、既知の脆弱なインストールは実行前にブロックします — そのため、安全でないパッケージはあなたが依頼しなくても検出・修正されます。いつでも直接呼び出すこともできます:「[email protected]は安全ですか?」、「safer-dependenciesのセットアップを確認して」、「safer-dependenciesの統計情報を表示して」。
Claudeがプロジェクトにパッケージを追加しようとするとき、safer-dependenciesはインターセプトして5つのチェックを実行します:
--hash=sha256:...ピンを含むPyPI requirements.txt行について、宣言されたハッシュがPyPIの公開ハッシュと照合され、不一致はWARNINGを発しますpaperclip、request、pycrypto、github.com/dgrijalva/jwt-go)は、代替案の提案とともに即座にハードブロックされます。2年以上安定版リリースがないパッケージには、アドバイザリのSTALE:警告が発行されます。ハードブロックされたパッケージはマニフェストから削除され、Claudeが今後の進め方を尋ねます。陳腐化のみのパッケージはそのまま残されます。問題が見つかった場合、Claudeは警告を発し、より安全なバージョンに戻ることがあります。すべてのチェックは~/.claude/safer-dependencies-audit-YYYY-MM.log(暦月ごとに1ファイル)に記録されます。
このスキルは、Claudeが以下の操作を行うときに自動的に発動します:
マニフェスト / インストール操作
package.json、requirements.txt、Gemfile、pom.xml、build.gradle、Cargo.toml、go.mod、その他の対応マニフェストでパッケージを追加または更新import、require、useを書き込むnpm install、bundle install、poetry install、uv sync、go mod tidyなど)— インストール前はコマンド引数を監査し、インストール後は結果のロックファイルを監査DockerfileまたはCIワークフロー(.github/workflows/*.ymlなど)を書き込む選択・推奨に関する質問
使用意図の表明(追加前)
パッケージの健全性と信頼性に関する質問
スキャフォールディングコマンド
npx create-react-app、npm create vite@latest、django-admin startproject、rails new、cargo new + cargo add、「新しいFastAPIプロジェクトをブートストラップ」暗黙のパッケージ追加(新しい依存関係を意味する機能リクエスト)
移行と移植
以下の場合には発動しません:
os、fs、java.util.*など)これはスキル + フックのバンドルであり、単一のスキルファイルではありません。完全なインストールでは以下の要素が展開されます:
| ファイル | 役割 |
|---|---|
skills/safer-dependencies.md | スキル(インストール後はSKILL.md)。監査手順を説明し、インストール/統計のための管理モードを含みます。 |
skills/safer-dependencies-shim.sh | PostToolUse:Write/Editフック — マニフェストとロックファイルの書き込みを監査し、脆弱なバージョンをその場で自動修正します(インターセプトモード)。 |
skills/safer-dependencies-pretooluse-bash.sh | PreToolUse:Bashフック — パッケージマネージャーのインストールコマンドの事前OSV監査。インストール実行前に脆弱な具体的ピンを拒否します(インストール前モード)。 |
skills/safer-dependencies-posttooluse-bash.sh | PostToolUse:Bashフック — Bashコマンド後の事後監査。新しく書き込まれたロックファイル、sed/jq/スクリプトで編集されたマニフェスト、および素のpip installの解決済み環境における推移的CVEを捕捉します(インストール後モード)。 |
skills/safer-dependencies-pretooluse-agent.sh + skills/safer-dependencies-posttooluse-agent.sh | PreToolUse:Agent + PostToolUse:Agentフックペア — サブエージェントのカバレッジギャップを解消します。モード2〜4はルートセッションのツール呼び出しでのみ発動するため、サブエージェントが書き込むマニフェストはこれらをバイパスします。Post-Agentは各Agentツール呼び出しが戻った後にサブエージェントが書き込んだものを監査します(エージェント後モード)。 |
skills/scripts/ | すべてのフックで使用される共有Pythonライブラリ(safedep/)とスタンドアロンのリゾルバースクリプト。 |
skills/scripts/safer_dependencies_manager.py | 対話型インストール、使用統計、セットアップ検証のための管理モジュール。 |
スキルファイルだけでは不十分です — フックがなければ、自動呼び出しはClaudeがスキルに手を伸ばすかどうかに依存します。完全なカバレッジのために5つの要素すべてをインストールしてください。多くのスキルやスラッシュコマンドは内部的にサブエージェントをディスパッチするため、明示的にサブエージェントを起動しなくてもPost-Agentペアは重要です。(スキル単独ではカバレッジを保証できない理由についてはFAQ.mdを参照してください。)
| エコシステム | マニフェスト | ロックファイル |
|---|---|---|
| npm | package.json | package-lock.json、yarn.lock、pnpm-lock.yaml |
| PyPI | requirements.txt、pyproject.toml、Pipfile、setup.py、setup.cfg | Pipfile.lock、poetry.lock、uv.lock |
| RubyGems | Gemfile、*.gemspec | Gemfile.lock |
| Maven | pom.xml、build.gradle、libs.versions.toml | -- |
| Go | go.mod | go.sum |
| Rust | Cargo.toml | Cargo.lock |
| PHP(Composer) | composer.json | composer.lock |
プロジェクトに初めて参加しますか?**GETTING-STARTED.md**から始めてください。簡単なバージョンは以下の通りです:```bash git clone https://github.com/robert-auger/safer-dependencies /tmp/safer-dependencies python3 /tmp/safer-dependencies/skills/scripts/safer_dependencies_manager.py interactive_install
インストーラーは、スコープ(グローバルかプロジェクトか)と有効にするフックをプロンプトで尋ね、その後、フックエントリ**と**、スキルのチェックコマンドが監査のたびに承認プロンプトなしで実行できるようにする権限許可リストの両方を`settings.json`に書き込みます。