mcpField
D
dependabot

dependabot

github.com/githubセキュリティ40.5k4.4k 回インストール今日更新
リポジトリ

dependabot について

Dependabot は GitHub の依存関係管理ツールです。このスキルでは、セキュリティ通知や更新 PR の設定方法を、エコシステムの検出、モノレポ、グループ化、スケジュールなどの観点から説明します。

主な機能

  1. 01エコシステムとディレクトリの設定
  2. 02依存関係更新 PR のグループ化
  3. 03スケジュールとクールダウンの設定
  4. 04PR のラベルとブランチのカスタマイズ
  5. 05セキュリティと除外ルールの設定

活用シーン

  1. 01リポジトリの Dependabot 設定作成
  2. 02モノレポ内の複数ディレクトリの対象化
  3. 03依存関係更新 PR の削減
  4. 04依存関係更新の時期調整

MCP 対応

GitHub MCP Server の `dependabot` ツールセットを使った依存関係スキャンについて説明します。追加した依存関係を GitHub Advisory Database と照合できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill dependabot

インストール後、Claude Code で/dependabotを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
dependabot-yml-reference.md
example-configs.md
pr-commands.md

詳細

Dependabot の設定と管理

概要

Dependabot は GitHub に組み込まれた依存関係管理ツールで、主に 3 つの機能があります。

  1. Dependabot Alerts — 既知の脆弱性(CVE)がある依存関係を通知します
  2. Dependabot Security Updates — 脆弱な依存関係を修正する PR を自動作成します
  3. Dependabot Version Updates — 依存関係を最新の状態に保つ PR を自動作成します

すべての設定は、デフォルトブランチにある 1 つのファイル .github/dependabot.yml に記述します。GitHub は、リポジトリごとに複数の dependabot.yml ファイルをサポートしていません。

設定ワークフロー

dependabot.yml を作成または最適化する際は、次の手順に従ってください。

ステップ 1:すべてのエコシステムを検出する

リポジトリ内の依存関係マニフェストをスキャンします。次のものを探してください。

エコシステムYAML 値マニフェストファイル
npm/pnpm/yarnnpmpackage.json、package-lock.json、pnpm-lock.yaml、yarn.lock
pip/pipenv/poetrypiprequirements.txt、Pipfile、pyproject.toml、setup.py
uvuvpyproject.toml、uv.lock
DockerdockerDockerfile
Docker Composedocker-composedocker-compose.yml
GitHub Actionsgithub-actions.github/workflows/*.yml
Go modulesgomodgo.mod
Bundler (Ruby)bundlerGemfile
Cargo (Rust)cargoCargo.toml
Composer (PHP)composercomposer.json
NuGet (.NET)nuget*.csproj、packages.config
.NET SDKdotnet-sdkglobal.json
Maven (Java)mavenpom.xml
Gradle (Java)gradlebuild.gradle
Terraformterraform*.tf
OpenTofuopentofu*.tf
HelmhelmChart.yaml
Hex (Elixir)mixmix.exs
SwiftswiftPackage.swift
Pub (Dart)pubpubspec.yaml
Bunbunbun.lockb
Dev Containersdevcontainersdevcontainer.json
Git Submodulesgitsubmodule.gitmodules
Pre-commitpre-commit.pre-commit-config.yaml

注:

  • pnpm と yarn はどちらも npm エコシステムの値を使用します。
  • uv.lock がある場合は uv エコシステムの値を優先し、それ以外の場合は pip を使用します。
ステップ 2:ディレクトリの場所を対応付ける

各エコシステムについて、マニフェストの場所を特定します。モノレポでは、glob パターンを使用して複数形の directories を指定します。

directories:
  - "/"           # root
  - "/apps/*"     # all app subdirs
  - "/packages/*" # all package subdirs
  - "/lib-*"      # dirs starting with lib-
  - "**/*"        # recursive (all subdirs)

重要:単数形の directory は glob をサポートしていません。ワイルドカードには複数形の directories を使用してください。

ステップ 3:各エコシステムのエントリを設定する

各エントリには、最低限次の設定が必要です。

- package-ecosystem: "npm"
  directory: "/"
  schedule:
    interval: "weekly"
ステップ 4:グループ化、ラベル、スケジュールで最適化する

各最適化手法については、以下のセクションを参照してください。

モノレポの戦略

ワークスペースを網羅する glob パターン

多数のパッケージがあるモノレポでは、各ディレクトリを列挙せずに済むよう、glob パターンを使用します。

- package-ecosystem: "npm"
  directories:
    - "/"
    - "/apps/*"
    - "/packages/*"
    - "/services/*"
  schedule:
    interval: "weekly"
ディレクトリをまたいだグループ化

複数のディレクトリで同じ依存関係が更新される際に、1 つの PR を作成するには group-by: dependency-name を使用します。

groups:
  monorepo-deps:
    group-by: dependency-name

これにより、指定したすべてのディレクトリを対象に、依存関係ごとに 1 つの PR が作成され、CI コストとレビューの負担を軽減できます。

制限事項:

  • すべてのディレクトリで同じパッケージエコシステムを使用する必要があります
  • バージョン更新にのみ適用されます
  • バージョン制約に互換性がない場合は、別々の PR が作成されます
ワークスペース外のスタンドアロンパッケージ

ディレクトリに独自のロックファイルがあり、ワークスペースに含まれていない場合(例:.github/ 内のスクリプト)は、そのディレクトリ用に別のエコシステムエントリを作成してください。

依存関係のグループ化

関連する依存関係を 1 つの PR にまとめ、PR のノイズを減らします。

依存関係の種類別
groups:
  dev-dependencies:
    dependency-type: "development"
    update-types: ["minor", "patch"]
  production-dependencies:
    dependency-type: "production"
    update-types: ["minor", "patch"]
名前のパターン別
groups:
  angular:
    patterns: ["@angular*"]
    update-types: ["minor", "patch"]
  testing:
    patterns: ["jest*", "@testing-library*", "ts-jest"]
セキュリティ更新の場合
groups:
  security-patches:
    applies-to: security-updates
    patterns: ["*"]
    update-types: ["patch", "minor"]

主な動作:

  • 複数のグループに一致する依存関係は、最初に一致したグループに振り分けられます
  • applies-to が指定されていない場合、デフォルトで version-updates になります
  • グループ化されていない依存関係には、個別の PR が作成されます

マルチエコシステムグループ

異なるパッケージエコシステム間の更新を 1 つの PR にまとめます。

version: 2

multi-ecosystem-groups:
  infrastructure:
    schedule:
      interval: "weekly"
    labels: ["infrastructure", "dependencies"]

updates:
  - package-ecosystem: "docker"
    directory: "/"
    patterns: ["nginx", "redis"]
    multi-ecosystem-group: "infrastructure"

  - package-ecosystem: "terraform"
    directory: "/"
    patterns: ["aws*"]
    multi-ecosystem-group: "infrastructure"

multi-ecosystem-group を使用する場合、patterns キーは必須です。

PR のカスタマイズ

ラベル
labels:
  - "dependencies"
  - "npm"

labels: [] を設定すると、デフォルトのラベルも含め、すべてのラベルが無効になります。リポジトリに存在する場合、SemVer ラベル(major、minor、patch)は常に適用されます。

コミットメッセージ
commit-message:
  prefix: "deps"
  prefix-development: "deps-dev"
  include: "scope"  # adds deps/deps-dev scope after prefix
担当者とマイルストーン
assignees: ["security-team-lead"]
milestone: 4  # numeric ID from milestone URL
ブランチ名の区切り文字
pull-request-branch-name:
  separator: "-"  # default is /
対象ブランチ
target-branch: "develop"  # PRs target this instead of default branch

注:target-branch を設定しても、セキュリティ更新の対象はデフォルトブランチのままです。エコシステムの設定は、バージョン更新にのみ適用されます。

スケジュールの最適化

間隔

サポート対象:daily、weekly、monthly、quarterly、semiannually、yearly、cron

schedule:
  interval: "weekly"
  day: "monday"         # for weekly only
  time: "09:00"         # HH:MM format
  timezone: "America/New_York"
Cron 式
schedule:
  interval: "cron"
  cronjob: "0 9 * * 1"  # Every Monday at 9 AM
クールダウン期間

早期導入に伴う問題を避けるため、新しくリリースされたバージョンの更新を遅らせます。

cooldown:
  default-days: 5
  semver-major-days: 30
  semver-minor-days: 7
  semver-patch-days: 3
  include: ["*"]
  exclude: ["critical-lib"]

クールダウンが適用されるのはバージョン更新のみで、セキュリティ更新には適用されません。

セキュリティ更新の設定

リポジトリ設定から有効にする

設定 → Advanced Security → Dependabot のアラート、セキュリティ更新、グループ化されたセキュリティ更新を有効にします。

YAML でセキュリティ更新をグループ化する
groups:
  security-patches:
    applies-to: security-updates
    patterns: ["*"]
    update-types: ["patch", "minor"]
バージョン更新を無効にする(セキュリティ更新のみ)
open-pull-requests-limit: 0  # disables version update PRs
自動トリアージルール

GitHub のプリセットでは、影響の小さい開発用依存関係のアラートが自動的に無視されます。カスタムルールでは、重大度、パッケージ名、CWE などで絞り込めます。リポジトリの「設定」→「Advanced Security」で設定してください。

PR コメントコマンド

@dependabot コメントを使って Dependabot の PR を操作します。

注: 2026 年 1 月現在、マージ/クローズ/再オープンのコマンドは非推奨になりました。 代わりに、GitHub の標準 UI、CLI(gh pr merge)、または自動マージを使用してください。

コマンド動作
@dependabot rebasePR をリベースします
@dependabot recreatePR を一から作り直します
@dependabot ignore this dependencyこの依存関係をクローズし、今後更新しないようにします
@dependabot ignore this major versionこのメジャーバージョンを無視します
@dependabot ignore this minor versionこのマイナーバージョンを無視します
@dependabot ignore this patch versionこのパッチバージョンを無視します

グループ化された PR では、次の追加コマンドを使用できます。

  • @dependabot ignore DEPENDENCY_NAME — グループ内の特定の依存関係を無視します
  • @dependabot unignore DEPENDENCY_NAME — 無視設定を解除し、更新を適用して再オープンします
  • @dependabot unignore * — グループ内のすべての依存関係の無視設定を解除します
  • @dependabot show DEPENDENCY_NAME ignore conditions — 現在の無視設定を表示します

すべてのコマンドについては、references/pr-commands.md を参照してください。

無視ルールと許可ルール

特定の依存関係を無視する
ignore:
  - dependency-name: "lodash"
  - dependency-name: "@types/node"
    update-types: ["version-update:semver-patch"]
  - dependency-name: "express"
    versions: ["5.x"]
特定の種類のみを許可する
allow:
  - dependency-type: "production"
  - dependency-name: "express"

ルール:依存関係が allow と ignore の両方に一致する場合、無視されます。

パスを除外する
exclude-paths:
  - "vendor/**"
  - "test/fixtures/**"

詳細オプション

バージョン管理戦略

Dependabot がバージョン制約をどのように編集するかを制御します。

値動作
autoデフォルト — アプリではバージョンを引き上げ、ライブラリでは範囲を広げます
increase最小バージョンを常に引き上げます
increase-if-necessary現在の範囲に新しいバージョンが含まれない場合のみ変更します
lockfile-onlyロックファイルのみを更新し、マニフェストは無視します
widen古いバージョンと新しいバージョンの両方を含むように範囲を広げます
リベース戦略
rebase-strategy: "disabled"  # stop auto-rebasing

コミットメッセージに [dependabot skip] を含めると、追加のコミットがあってもリベースできるようになります。

オープン PR の上限数
open-pull-requests-limit: 10  # default is 5 for version, 10 for security

0 に設定すると、バージョン更新がすべて無効になります。

プライベートレジストリ
registries:
  npm-private:
    type: npm-registry
    url: https://npm.example.com
    token: ${{secrets.NPM_TOKEN}}

updates:
  - package-ecosystem: "npm"
    directory: "/"
    registries:
      - npm-private

FAQ

複数の dependabot.yml ファイルを使用できますか? いいえ。GitHub でサポートされるファイルは .github/dependabot.yml の 1 つだけです。異なるエコシステムやディレクトリには、そのファイル内に複数の updates エントリを使用してください。

Dependabot は pnpm をサポートしていますか? はい。package-ecosystem: "npm" を使用すると、Dependabot が pnpm-lock.yaml を自動的に検出します。

モノレポで PR のノイズを減らすにはどうすればよいですか? groups を使用して更新をまとめ、カバー範囲には glob を使った directories を指定し、ディレクトリをまたいだグループ化には group-by: dependency-name を使用してください。優先度の低いエコシステムでは、monthly または quarterly の間隔を検討してください。

ワークスペース外の依存関係はどのように扱えばよいですか? その場所を指す独自の directory を指定して、別のエコシステムエントリを作成してください。

AI コーディングエージェントによるコミット前の依存関係スキャン

コミット前に AI コーディングエージェント内でコード変更に含まれる脆弱な依存関係をスキャンするには、GitHub MCP Server の dependabot ツールセットを使って、追加した依存関係を GitHub Advisory Database と照合できます。影響を受けるパッケージ、深刻度、推奨される修正バージョンを含む構造化された結果が返されます。コミット後により詳細なチェックを行う場合は、Dependabot CLI をローカルで実行し、変更前後の依存関係グラフを比較することもできます。

依存関係の専用スキャンツールと /dependency-scanning スキルを提供する Advanced Security プラグインをインストールしてください。

GitHub Copilot CLI(シェル):

# Enable the dependabot toolset for the GitHub MCP Server
copilot --add-github-mcp-toolset dependabot

GitHub Copilot CLI(copilot 内):

> /plugin install advanced-security@copilot-plugins

Visual Studio Code:

  • GitHub MCP Server のヘッダーに "X-MCP-Toolsets": "dependabot" を追加するか、Copilot Chat のツールセットセレクターから Dependabot を選択します
  • advanced-security プラグインをインストールし、Copilot Chat で /dependency-scanning を使用します

プロンプトの例:

このブランチで追加した依存関係をスキャンして、既知の脆弱性がないか確認し、コミット前にアップグレードすべきバージョンを教えてください。

参照:Advanced Security Plugin — Dependency Scanning Skill

GitHub MCP Server による依存関係スキャンがパブリックプレビューにで発表されました(2026 年 5 月)

リソース

  • references/dependabot-yml-reference.md — YAML オプションの完全なリファレンス
  • references/pr-commands.md — PR コメントコマンドの完全なリファレンス
  • references/example-configs.md — 実際の設定例

コメント