node-supply-chain について
node-supply-chain は、npm、pnpm、yarn のリポジトリを監査し、サプライチェーンを強化するスキルです。決定的な監査スクリプトと多層防御のガイドを備え、それぞれの限界も示します。
主な機能
- 01決定的なリポジトリ監査
- 02ロックファイルと CI のインストール確認
- 03Dependabot のクールダウンとグループ化の指針
- 04パッケージマネージャー別のスクリプトポリシー
- 05来歴証明とトークンの指針
- 06上流侵害への対応チェックリスト
活用シーン
- 01Node.js リポジトリのサプライチェーン対策の点検
- 02CI の無指定インストールをロックファイル準拠に変更
- 03一律の自動マージを避けた依存関係更新ポリシーの設定
- 04侵害された上流パッケージによる影響範囲の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ paldom/ node-skills --skill node-supply-chainインストール後、Claude Code で/node-supply-chainを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/supply-chain-playbook.mdscripts/audit_supply_chain.py詳細
node-supply-chain
実際の npm 攻撃で効果を発揮した防御を重ね、それぞれの層で防げないことを明示します。このスキルが解決する問題:モデルが CI での npm install を推奨する、ボットの PR を一律に自動マージする(実際に確認されているマルウェアの侵入経路です)、クールダウンを完全な保護とみなす、そして npm 固有のスクリプトポリシーを、効果のない pnpm/yarn リポジトリに適用する、といった問題です。
使用しない場合
- GitHub リポジトリの設定(ルールセット、シークレットスキャン、PVR)→ このコレクション外のリポジトリ設定ツール(例:github-skills の
repo-protectionsスキル)。 - 来歴情報付きで独自のパッケージを公開する場合 →
node-release。 - 独自コードの CVE を修正する場合 → 通常の開発作業です。
ワークフロー
- ベースライン監査:
以下を報告します:ロックファイルの状態、CI のインストールコマンド、Dependabot の設定(クールダウン/グループ)、ピン留めされていないサードパーティ製アクション、リポジトリで実際に使われているパッケージマネージャーのインストールスクリプトポリシー。python3 "${CLAUDE_SKILL_DIR}/scripts/audit_supply_chain.py" - ロックファイルの徹底:ロックファイルをコミットし、CI では
npm ci/pnpm install --frozen-lockfile/yarn の immutable を使います。引数なしの install は決して使いません。 - Dependabot(
.github/dependabot.yml):npm と github-actions のエコシステムを対象に、週次でグループ化し、明示的なクールダウンを設定します(github.com のデフォルトは 2026-07-14 以降 3 日です。意図する期間を記述してください)。そのたびに、次の実際の制限事項を 3 つ明記します: セキュリティ PR は仕様上クールダウンを迂回する、npm の推移的依存関係は対象外、SHA でピン留めしたアクションについてはアラートが出ない。ボットの PR を一律に自動マージしてはいけません。ボットが作成した PR は、CI が成功していてもマルウェアを持ち込んだ実績があります。人間の PR と同じレビューゲートを適用します。 - パッケージマネージャーごとのインストールスクリプトポリシー(プレイブックの表:npm >= 12 の
allowScripts許可リスト、npm 11 のignore-scripts、pnpm のallowBuilds、yarn のenableScripts): リポジトリで実際に有効な仕組みを適用し、ビルドスクリプトが本当に必要な少数のパッケージだけを許可リストに追加します。 - 来歴情報の検証(
npm audit signatures。プレイブックではコマンドのバージョン要件を指定):配布元の証明として扱い、安全性の証明とはみなしません。 - トークンの衛生管理:クラシックトークンは使いません。OIDC で対応できない用途には、有効期間の短いきめ細かなトークンを使います。アカウントレベルで信頼された公開のみを強制します(設定自体については →
node-release)。 - Actions のピン留め:サードパーティ製アクションをバージョンコメント付きで SHA にピン留めします。
node-ciのチェッカーまたは zizmor でワークフローを lint します。 - インシデント対応(上流の侵害):プレイブックのチェックリストに従います。ロックファイルから影響範囲を特定し(正確な解決済みバージョンとインストール期間)、正常と確認されたバージョンにオーバーライドまたはピン留めし、期間を記録してから、セキュリティを再強化します。
出力仕様
監査スクリプトで問題がないこと(またはすべての指摘事項に対応方針があること)。クールダウンとグループを設定した Dependabot 設定があり、一律の自動マージがないこと。パッケージマネージャーごとのスクリプトポリシーが実際に有効であること。ピン留めが適用されていること。報告書にクールダウンの 3 つの制限事項が明記されていること。設定で実現できない保護を示唆してはいけません。
注意点
- npm/pnpm/yarn のスクリプトポリシーはそれぞれ異なる仕組みです。pnpm リポジトリで npm のみを対象とする回答をしても、何も保護されません。
- クールダウンとは、その期間内に他の誰かがマルウェアを見つけることに期待する仕組みです。多層防御の一部として使い、頼り切らないでください。
overrides/resolutionsは影響をすばやく解消できますが、気づかないうちに古くなります。日付を記録し、上流で正常なバージョンがリリースされたら削除してください。- npm CLI の動作(スクリプトのデフォルト、監査署名)については、使用時点で npm の公式ドキュメントを確認し、バージョン要件を満たしていることを確かめてください。
ファイル
references/supply-chain-playbook.md— 多層防御モデル、パッケージマネージャーごとのスクリプトポリシー表、Dependabot の設定、来歴情報の制限、トークンポリシー、インシデント対応チェックリスト。scripts/audit_supply_chain.py— 決定論的なリポジトリ監査。重大な違反(ロックファイルがない、CI で引数なしの install を実行している、ボット PR を一律に自動マージしている)があると、ゼロ以外の終了コードを返します。
コメント
Markdown 対応