check-npm について
npm、yarn、pnpmのワークスペース設定を読み取り専用で監査するスキルです。ツールのバージョン、ライフサイクルスクリプト、依存プロトコル、リリース経過時間の方針を確認し、修正例とともに報告します。
主な機能
- 01パッケージマネージャーの判定
- 02ツールの最低バージョン確認
- 03ライフサイクルスクリプト設定の監査
- 04安全でない依存プロトコルの検出
- 05最低リリース経過時間の確認
- 06修正例付きの結果報告
活用シーン
- 01パッケージマネージャーのセキュリティ設定の確認
- 02ライフサイクルスクリプト制限の確認
- 03レジストリ外依存参照の特定
- 04インストール前のリリース経過時間方針の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ grafana/ skills --skill check-npmインストール後、Claude Code で/check-npmを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/fix-snippets.mdmanagers.mdprotocols.md詳細
npm / yarn / pnpm サプライチェーン監査
ワークスペースのルートを読み取り専用で監査します。ファイルは変更しないでください。
0. パッケージマネージャーを検出する
test -f package.json || { echo "STOP: no package.json at workspace root"; exit 1; }
jq -r '.packageManager // "unset"' package.json
ls -1 yarn.lock package-lock.json pnpm-lock.yaml 2>/dev/null || true
package.json がない場合は停止します。優先順位:packageManager → ロックファイル → デフォルトの npm。
1. ツールのバージョン
npm --version # required ≥ 11.15.0
yarn --version # required ≥ 4.14.0
pnpm --version # required ≥ 11.0.0
semver による比較を使用します。固定された packageManager がしきい値を満たしていることを確認します。
| マネージャー | 最小バージョン |
|---|---|
| npm | 11.15.0 |
| yarn | 4.14.0 |
| pnpm | 11.0.0 |
2. ライフサイクルスクリプトの無効化
grep -E '^ignore-scripts=' .npmrc 2>/dev/null
grep -E 'enableScripts:' .yarnrc.yml 2>/dev/null
grep -E 'strictDepBuilds:|dangerouslyAllowAllBuilds:|allowBuilds:' pnpm-workspace.yaml 2>/dev/null
| マネージャー | PASS | FAIL |
|---|---|---|
| npm | .npmrc に ignore-scripts=true がある | 欠落または false |
| yarn | enableScripts: false、またはキーが存在しない | enableScripts: true |
| pnpm ≥ 11 | strictDepBuilds が未設定/true、dangerouslyAllowAllBuilds が未設定/false、かつ allowBuilds が未設定/[] | strictDepBuilds: false、dangerouslyAllowAllBuilds: true、または allowBuilds が空でない |
| pnpm 10 | .npmrc の ignore-scripts=true または strictDepBuilds: true | どちらも該当しない |
pnpm 11 以降は .npmrc および package.json#pnpm のスクリプト設定を無視します。pnpm 10/yarn の例外的なケース:references/managers.md。
3. 安全でない依存関係プロトコル
レジストリ:
grep -E '^allow-git=' .npmrc 2>/dev/null
grep -E 'approvedGitRepositories:' .yarnrc.yml 2>/dev/null
grep -E 'blockExoticSubdeps:' pnpm-workspace.yaml 2>/dev/null
ワークスペースの package.json ファイル(dependencies、devDependencies、optionalDependencies、peerDependencies)をスキャンします。references/protocols.md に従って、ワークスペースメンバーの検出(pnpm-workspace.yaml/ルートの workspaces/lerna/rush)を優先し、その後で該当するマニフェストのみをスキャンします。フォールバック(ワークスペース外のマニフェストも誤検出する可能性があります):
find . -name package.json -not -path '*/node_modules/*'
安全な値のみ: semver 範囲、workspace:、patch:、semver への npm: エイリアス。それ以外(Git URL、tarball、user/repo 形式、file:、link:、exec: など)はすべて path → name → value (protocol) として報告します。
| マネージャー | PASS | FAIL |
|---|---|---|
| npm | allow-git=none または root | 欠落または all |
| yarn | approvedGitRepositories: [] または grafana に限定したリスト、あるいはポリシーコメントとクリーンなスキャン結果がある場合は省略 | 安全でない項目、または広範な許可リスト |
| pnpm ≥ 11 | blockExoticSubdeps が未設定/true | false |
| pnpm 10.x | blockExoticSubdeps: true | 未設定(デフォルトは false)または false |
プロトコルの検出順序と yarn の設定詳細:references/protocols.md。
4. 最低リリース経過期間 ≥ 3 日
3 日 = 4320 分です。npm は日を使用し、yarn と pnpm は分を使用します。
grep -E '^min(imum)?-release-age=' .npmrc 2>/dev/null
grep -E 'npmMinimalAgeGate:' .yarnrc.yml 2>/dev/null
grep -E 'minimumReleaseAge:|minimumReleaseAgeStrict:' pnpm-workspace.yaml 2>/dev/null
| マネージャー | PASS | FAIL |
|---|---|---|
| npm | min-release-age ≥ 3 | 欠落 |
| yarn | npmMinimalAgeGate ≥ 4320 分 | 欠落または下回る |
| pnpm ≥ 11 | minimumReleaseAge ≥ 4320 | 未設定(デフォルトは 1440)または下回る |
| pnpm 10 | minimum-release-age / minimumReleaseAge ≥ 4320 | 欠落 |
pnpm 11 で minimumReleaseAgeStrict: false の場合は報告します。
5. レポート
| # | チェック | ステータス | 詳細 |
|---|---|---|---|
| 0 | パッケージマネージャー | (npm / yarn / pnpm) | バージョン:x.y.z(設定されている場合の固定バージョン:y.y.y) |
| 1 | ツールのバージョン ≥ しきい値 | PASS / FAIL | actual と required の比較 |
| 2 | スクリプトの無効化 | PASS / FAIL | 設定行または「欠落」 |
| 3 | 安全でない依存関係プロトコル | PASS / FAIL | レジストリの状態 + 報告対象の項目 |
| 4 | 最低リリース経過期間 ≥ 3 日 | PASS / FAIL | 設定 + 値 |
PASS/FAIL のみを使用し、絵文字は使用しないでください。
FAIL ごとに、貼り付けてすぐ使える修正方法を 1 つ示します。
# npm — .npmrc
ignore-scripts=true
allow-git=none
min-release-age=3
# pnpm 11 — pnpm-workspace.yaml
strictDepBuilds: true
dangerouslyAllowAllBuilds: false
allowBuilds: []
minimumReleaseAge: 4320
blockExoticSubdeps: true
# yarn — .yarnrc.yml
npmMinimalAgeGate: 4320
その他の修正方法(ツールのアップグレード、yarn の Git 許可リスト、pnpm 10):references/fix-snippets.md。
すべて PASS の場合は「すべてのチェックに合格しました。」と表示して停止します。