dependabot について
Dependabot は GitHub の依存関係管理ツールです。このスキルでは、セキュリティ通知や更新 PR の設定方法を、エコシステムの検出、モノレポ、グループ化、スケジュールなどの観点から説明します。
主な機能
- 01エコシステムとディレクトリの設定
- 02依存関係更新 PR のグループ化
- 03スケジュールとクールダウンの設定
- 04PR のラベルとブランチのカスタマイズ
- 05セキュリティと除外ルールの設定
活用シーン
- 01リポジトリの Dependabot 設定作成
- 02モノレポ内の複数ディレクトリの対象化
- 03依存関係更新 PR の削減
- 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.mdexample-configs.mdpr-commands.md詳細
Dependabot の設定と管理
概要
Dependabot は GitHub に組み込まれた依存関係管理ツールで、主に 3 つの機能があります。
- Dependabot Alerts — 既知の脆弱性(CVE)がある依存関係を通知します
- Dependabot Security Updates — 脆弱な依存関係を修正する PR を自動作成します
- Dependabot Version Updates — 依存関係を最新の状態に保つ PR を自動作成します
すべての設定は、デフォルトブランチにある 1 つのファイル .github/dependabot.yml に記述します。GitHub は、リポジトリごとに複数の dependabot.yml ファイルをサポートしていません。
設定ワークフロー
dependabot.yml を作成または最適化する際は、次の手順に従ってください。
ステップ 1:すべてのエコシステムを検出する
リポジトリ内の依存関係マニフェストをスキャンします。次のものを探してください。
| エコシステム | YAML 値 | マニフェストファイル |
|---|---|---|
| npm/pnpm/yarn | npm | package.json、package-lock.json、pnpm-lock.yaml、yarn.lock |
| pip/pipenv/poetry | pip | requirements.txt、Pipfile、pyproject.toml、setup.py |
| uv | uv | pyproject.toml、uv.lock |
| Docker | docker | Dockerfile |
| Docker Compose | docker-compose | docker-compose.yml |
| GitHub Actions | github-actions | .github/workflows/*.yml |
| Go modules | gomod | go.mod |
| Bundler (Ruby) | bundler | Gemfile |
| Cargo (Rust) | cargo | Cargo.toml |
| Composer (PHP) | composer | composer.json |
| NuGet (.NET) | nuget | *.csproj、packages.config |
| .NET SDK | dotnet-sdk | global.json |
| Maven (Java) | maven | pom.xml |
| Gradle (Java) | gradle | build.gradle |
| Terraform | terraform | *.tf |
| OpenTofu | opentofu | *.tf |
| Helm | helm | Chart.yaml |
| Hex (Elixir) | mix | mix.exs |
| Swift | swift | Package.swift |
| Pub (Dart) | pub | pubspec.yaml |
| Bun | bun | bun.lockb |
| Dev Containers | devcontainers | devcontainer.json |
| Git Submodules | gitsubmodule | .gitmodules |
| Pre-commit | pre-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 rebase | PR をリベースします |
@dependabot recreate | PR を一から作り直します |
@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— 実際の設定例