dependabot-configuration
Skill2 starsChanged 3 months agoMITView on GitHub
Create, review, and harden GitHub Dependabot configuration for new or existing repositories. Use for .github/dependabot.yml, Dependabot version updates, Dependabot security updates, grouped updates, multi-ecosystem groups, private registries, Dependabot secrets, GitHub Actions updates, Dependabot automation workflows, and zizmor validation of Dependabot and workflow supply-chain hygiene.
- Reads credentials
In this repository13 other files it gives its agents.
- agent-governance-toolkitSkill
- aks-cluster-architectureSkill
- azure-sre-agentSkill
- container-supply-chainSkill
- drasiSkill
- hitl-design-patternsSkill
- identity-managed-identitySkill
- kedaSkill
- owasp-agenticSkill
- rust-patternsSkill
- tauri-desktop-ui-patternsSkill
- tauri-developmentSkill
- typespec-api-designSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
51 rules. About 0 are common, 28 are distinctive, and 23 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈28
Distinctive · estimate
This author's own choices. Worth a look.
23
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Use this skill to create or review Dependabot configuration that keeps dependencies current without turning dependency automation into a …
- Distinctive: line 31
Use this skill for:
- Distinctive: line 40
Do not use it as the primary skill for:
- Very specific: line 49
Use github-actions-ci-cd for workflow architecture, OIDC, and broad workflow hardening.
- Distinctive: line 51
Use container, language, cloud security, or runtime skills for remediation outside dependency-update configuration.
- Very specific: line 74
Never invent ecosystem names, registry types, action SHAs, or config keys from memory.
- Distinctive: line 80
Use these sources before writing current configuration:
- Distinctive: line 120
Before creating a config, inspect or ask for:
- Distinctive: line 126
Default branch, release branches, and whether non-default branch updates are required.
- Distinctive: line 133
Update cadence and PR volume tolerance.
- Distinctive: line 139
Search for dependency manifests and lockfiles.
- Very specific: line 148
Use one update block per ecosystem and dependency root unless directories safely covers all roots for that ecosystem.
- Very specific: line 150
Prefer directories for monorepos when package roots share the same schedule, reviewers, labels, and registry access.
- Distinctive: line 152
Keep unrelated ecosystems separate unless a multi-ecosystem group has a clear operational reason.
- Distinctive: line 156
Start with weekly version updates for most ecosystems.
- Distinctive: line 157
Use daily checks for GitHub Actions or critical runtime dependencies only when the team can handle the PR flow.
- Very specific: line 161
Add cooldown.default-days: 7 for version updates unless the ecosystem or business requirement needs faster adoption.
- Very specific: line 166
Use groups to reduce noise within one ecosystem.
- Distinctive: line 167
Prefer separate groups for production, development, toolchain, and test dependencies when the ecosystem supports dependency-type filtering.
- Very specific: line 169
Use update-types: ["minor", "patch"] inside groups.
- Distinctive: line 171
Use multi-ecosystem groups only for dependencies that are released and reviewed together, such as Terraform providers plus Docker base …
- Distinctive: line 183
Do not group security updates across different ecosystems.
- Very specific: line 186
Avoid target-branch unless the repo intentionally updates a non-default branch.
- Distinctive: line 196
Prefer OIDC for supported private registries such as AWS CodeArtifact, Azure DevOps Artifacts, Cloudsmith, Google Artifact Registry, and …
- Very specific: line 199
Never put tokens, passwords, or PATs directly in dependabot.yml.
- Very specific: line 202
Keep insecure-external-code-execution absent or explicitly deny.
- Distinctive: line 210
Run GitHub's Dependabot configuration validation through the repository UI or the next Dependabot run.
- Very specific: line 212
Run zizmor --collect=dependabot .
- Very specific: line 213
Run zizmor --collect=all .
- Distinctive: line 214
If Advanced Security is available, upload zizmor SARIF and enforce code scanning thresholds with rulesets.
- Very specific: line 219
Use this map when scanning repositories under github.com/lukemurraynz or similarly mixed Azure engineering repos.
- Very specific: line 243
When reviewing or designing .github/dependabot.yml for an npm-ecosystem repo, this incident reinforces:
- Distinctive: line 251
Do not add Dependabot blocks for plain MDX, Markdown, HTML, CSS, Shell, PowerShell, TypeSpec, Makefile, or PLpgSQL unless a supported …
- Very specific: line 264
Do not generate package-ecosystem: "bicep".
- Very specific: line 277
If a repo publishes reusable Bicep modules, keep module versioning explicit.
- Very specific: line 278
Avoid a floating latest pattern unless the target registry and policy explicitly support it and the team accepts breaking-change risk.
- Distinctive: line 283
Use these defaults for new repositories unless the project has stronger local policy:
- Distinctive: line 298
Avoid auto-merge for runtime production dependencies and major updates.
- Distinctive: line 307
Stop and return a design-level plan instead of final YAML when:
- Distinctive: line 325
Treat Dependabot workflows as privileged automation surfaces.
- Very specific: line 329
Prefer pull_request, not pull_request_target, for Dependabot PR checks.
- Very specific: line 330
Check github.event.pull_request.user.login == 'dependabot[bot]' rather than only github.actor == 'dependabot[bot]'.
- Very specific: line 332
Use dependabot/fetch-metadata to classify dependency name, dependency type, and update type before labelling or auto-merging.
- Distinctive: line 343
Use zizmor as the standard static security check for Dependabot and GitHub Actions configuration.
- Distinctive: line 372
Prefer fixing findings over suppressing them.
- Very specific: line 373
Use inline comments only for precise false positives, for example # zizmor: ignore[template-injection].
- Very specific: line 375
Use zizmor.yml or .github/zizmor.yml for repository-level ignore and severity remap policy.
- Very specific: line 377
Run with --no-ignores periodically to review the suppressed surface.
- Distinctive: line 385
When creating or reviewing Dependabot configuration, return:
- Distinctive: line 397
Use these bundled templates as starting points, then adapt them to the target repository:
- Distinctive: line 405
If you cannot inspect the repository or verify current docs, provide a minimal safe skeleton:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dependabot Configuration Skill
Use this skill to create or review Dependabot configuration that keeps
dependencies current without turning dependency automation into a supply-chain
risk. The normal output is a proposed .github/dependabot.yml, optional
Dependabot automation workflow guidance, and a validation plan using GitHub's
own checks plus zizmor.
APM cannot deploy .github/dependabot.yml directly as a raw repository file.
This skill helps agents create that file inside a future project when asked.
Use when
Use this skill for:
- Creating or reviewing
.github/dependabot.yml. - Enabling GitHub Actions, npm, NuGet, pip, uv, Docker, Terraform, devcontainer, Bicep-adjacent, or other ecosystem updates.
- Configuring groups, multi-ecosystem groups, cooldown, registries, labels, reviewers, assignees, PR limits, or commit messages.
- Auditing Dependabot config with zizmor.
Do not use it as the primary skill for:
- General GitHub Actions workflow design with no dependency-update scope.
- Runtime vulnerability triage after a dependency is already deployed.
- Replacing Dependabot with Renovate as the main tool.
- Auditing unrelated workflow vulnerabilities only.
Nearby skill collisions:
- Use
github-actions-ci-cdfor workflow architecture, OIDC, and broad workflow hardening. - Use container, language, cloud security, or runtime skills for remediation outside dependency-update configuration.
Anti-hallucination rule
Dependabot configuration is version-sensitive. GitHub adds ecosystems and
options regularly, and unsupported keys can silently prevent update jobs from
running. Before writing a production .github/dependabot.yml, verify these
surfaces against current official documentation or the target repository:
- Supported
package-ecosystemvalues and package-manager version support. - Whether the target uses
directoryordirectories. Do not use both in one update block. - Whether each ecosystem supports
cooldown,vendor, private registries, and indirect dependency updates. - Exact group and multi-ecosystem group syntax.
- Whether configuration options affect security updates as well as version
updates. GitHub marks shared options in the options reference, but
target-branchchanges the behavior. - Private registry authentication mode: automatic GitHub Packages access, Dependabot secrets, organization-level private registries, or OIDC.
- Current
zizmoraudit names and CLI flags.
Never invent ecosystem names, registry types, action SHAs, or config keys from
memory. If verification is blocked, return a labelled skeleton with [VERIFY]
markers rather than production-shaped YAML.
Source of truth
Use these sources before writing current configuration:
- GitHub Docs, Dependabot options reference: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference
- GitHub Docs, supported ecosystems: https://docs.github.com/en/code-security/dependabot/ecosystems-supported-by-dependabot/supported-ecosystems-and-repositories
- GitHub Docs, multi-ecosystem updates: https://docs.github.com/en/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/configuring-multi-ecosystem-updates
- GitHub Docs, private registries: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot
- GitHub Docs, automating Dependabot with GitHub Actions: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions
- Azure Bicep issue tracking Dependabot API-version scanning: https://github.com/Azure/bicep/issues/8324
- Azure Bicep issue tracking Azure resource provider scanning: https://github.com/Azure/bicep/issues/18465
- Azure Bicep Registry Modules issue for Dependabot module support: https://github.com/Azure/bicep-registry-modules/issues/452
- Dependabot Core releases: https://github.com/dependabot/dependabot-core/releases
- zizmor audits reference: https://docs.zizmor.sh/audits/
- zizmor usage, configuration, installation, and integrations: https://docs.zizmor.sh/usage/, https://docs.zizmor.sh/configuration/, https://docs.zizmor.sh/installation/, https://docs.zizmor.sh/integrations/
Current upstream snapshot from research: Dependabot Core v0.383.0 was the
latest public release observed on 2026-06-24. Treat that as context, not a
version pin for GitHub-hosted Dependabot.
Observed github.com/lukemurraynz public repository languages include C#,
MDX, TypeScript, Rust, Go, Bicep, PowerShell, JavaScript, Shell, HTML, CSS,
Python, TypeSpec, HCL, Dockerfile, Makefile, and PLpgSQL. Default suggestions
should cover these ecosystems where Dependabot supports them and use explicit
fallback guidance where it does not.
Required inputs
Before creating a config, inspect or ask for:
- Repository type: app, library, infrastructure, documentation, monorepo, or package source.
- Dependency manifests and lockfiles by directory.
- Package ecosystems in use, including GitHub Actions and devcontainer files.
- Default branch, release branches, and whether non-default branch updates are required.
- Private registry needs and whether credentials can use GitHub Packages automatic access, Dependabot secrets, organization private registries, or OIDC.
- Review model: labels, assignees, reviewers, CODEOWNERS, branch protection, merge queue, and auto-merge policy.
- Update cadence and PR volume tolerance.
- Whether GitHub Advanced Security code scanning is available for SARIF.
Configuration workflow
- Inventory manifests.
- Search for dependency manifests and lockfiles.
- Include
.github/workflows/**withpackage-ecosystem: github-actions. - Include
.devcontainer/**withpackage-ecosystem: devcontainerswhen devcontainer metadata is present. - For Azure Bicep repos, do not invent
package-ecosystem: bicep. GitHub Docs do not list Bicep as a supported Dependabot ecosystem. Add Bicep validation and AVM-update guidance instead.
- Choose update blocks.
- Use one update block per ecosystem and dependency root unless
directoriessafely covers all roots for that ecosystem. - Prefer
directoriesfor monorepos when package roots share the same schedule, reviewers, labels, and registry access. - Keep unrelated ecosystems separate unless a multi-ecosystem group has a clear operational reason.
- Use one update block per ecosystem and dependency root unless
- Set cadence and volume controls.
- Start with weekly version updates for most ecosystems.
- Use daily checks for GitHub Actions or critical runtime dependencies only when the team can handle the PR flow.
- Set
open-pull-requests-limitper ecosystem. Five is a practical default for active repos; lower it for low-maintenance projects. - Add
cooldown.default-days: 7for version updates unless the ecosystem or business requirement needs faster adoption. Cooldown does not delay security updates.
- Group routine updates.
- Use
groupsto reduce noise within one ecosystem. - Prefer separate groups for production, development, toolchain, and test dependencies when the ecosystem supports dependency-type filtering.
- Use
update-types: ["minor", "patch"]insidegroups. Useversion-update:semver-*values only forallowandignorerules. - Use multi-ecosystem groups only for dependencies that are released and reviewed together, such as Terraform providers plus Docker base images for one infrastructure stack.
- Multi-ecosystem groups require a top-level
multi-ecosystem-groupssection, a matchingmulti-ecosystem-groupvalue in each update block, andpatternsin each participating ecosystem. Use["*"]only when every dependency in that ecosystem should join the cross-ecosystem PR.
- Use
- Preserve security update behavior.
- Enable Dependabot security updates and alerts in repository or
organization settings;
.github/dependabot.ymlcustomizes PR behavior but is not the same as the alerts switch. - Do not group security updates across different ecosystems. GitHub states security update grouping is per ecosystem and does not mix security and version updates.
- Avoid
target-branchunless the repo intentionally updates a non-default branch. Some shared options stop affecting default-branch security update PRs whentarget-branchis used.
- Enable Dependabot security updates and alerts in repository or
organization settings;
- Configure private registries safely.
- For GitHub Packages and Container registry, prefer automatic Dependabot access through package access settings before adding PAT-based registry entries.
- For third-party registries, use Dependabot secrets or organization-level private registry configuration.
- Prefer OIDC for supported private registries such as AWS CodeArtifact, Azure DevOps Artifacts, Cloudsmith, Google Artifact Registry, and JFrog Artifactory.
- Never put tokens, passwords, or PATs directly in
dependabot.yml.
- Harden execution.
- Keep
insecure-external-code-executionabsent or explicitlydeny. - This option is documented for
bundler,mix, andpip. Do not add it to ecosystems that do not support it. - Allow it only after a documented risk decision. If enabled, Dependabot limits code execution to registries attached to that update block, but the supply-chain risk remains.
- Keep
- Validate.
- Run GitHub's Dependabot configuration validation through the repository UI or the next Dependabot run.
- Run
zizmor --collect=dependabot .for Dependabot-only checks. - Run
zizmor --collect=all .when workflow automation is also changed. - If Advanced Security is available, upload zizmor SARIF and enforce code scanning thresholds with rulesets.
Ecosystem mapping for Luke's common repositories
Use this map when scanning repositories under github.com/lukemurraynz or
similarly mixed Azure engineering repos. Add only ecosystems with matching files
in the target repository.
Recommended mapping:
.github/workflows/*.yml→github-actions.package.json, npm, pnpm, or yarn →npm.- Bun manifests →
bun. *.csprojorDirectory.Packages.props→nuget.global.jsonwith a .NET SDK pin →dotnet-sdk.requirements*.txt,pyproject.toml, Poetry, or Pipenv →pip.uv.lockor uv project metadata →uv.go.mod→gomod.Cargo.tomlorCargo.lock→cargo.rust-toolchain.toml→rust-toolchain.Dockerfileor Docker tags in Kubernetes or Helm files →docker.docker-compose.yml→docker-compose.*.tfor*.tf.lock.hcl→terraform.
Real-world scenario: AsyncAPI npm compromise (July 2026)
The AsyncAPI npm supply chain compromise (Microsoft Security blog, July 15 2026) is a worked example of why npm-ecosystem Dependabot configuration matters. The attack chain: a GitHub Actions pwn request allowed an attacker to deliver a payload at npm import time via the AsyncAPI package.
When reviewing or designing .github/dependabot.yml for an npm-ecosystem repo, this incident reinforces:
- Enable Dependabot security updates (
github-actionsandnpmecosystems at minimum). Security-only updates catch vulnerable transitive dependencies that pwn-request-style attacks exploit. - Group security updates separately from feature updates so a CVE-driven bump is not blocked by a major-version review.
- Use
allow/ignorelists deliberately. Auto-bumping high-risk dependencies (build tooling, GitHub Actions, codegen) without a pinning strategy creates the exact surface this attack abused. - Pair with
github-actions-ci-cdskill forpull_request_target/workflow_runhardening. Dependabot alone cannot stop pwn-request attacks; the workflow permissions block must.
Do not add Dependabot blocks for plain MDX, Markdown, HTML, CSS, Shell, PowerShell, TypeSpec, Makefile, or PLpgSQL unless a supported manifest also exists in the same repository.
Bicep and AVM guidance
Dependabot does not currently have a documented bicep package ecosystem.
Requests for Bicep API-version and module update support are tracked in Azure
Bicep and Azure Bicep Registry Modules issues, but they are not listed as
supported Dependabot ecosystems in GitHub Docs.
For Bicep repositories:
- Do not generate
package-ecosystem: "bicep". - Include
github-actions,docker,terraform,opentofu,devcontainers,nuget,npm,pip,uv, or other supported ecosystems that appear beside the Bicep code. - For AVM Bicep modules, use the
update-avm-modules-in-bicepskill. It queries MCR tags forbr/public:avm/...module versions and reviews module changelogs before changing versions. - For Bicep API versions, rely on
bicep build,bicep lint, and the Bicep linter rule for recent module versions where applicable. Do not treat API version bumps as low-risk dependency updates. - For GitHub Actions deployments of Bicep, prefer OIDC with Azure Login and
run
what-ifbefore deployment. Useazure-deployment-preflightorgithub-actions-ci-cdfor the workflow design. - If a repo publishes reusable Bicep modules, keep module versioning explicit.
Avoid a floating
latestpattern unless the target registry and policy explicitly support it and the team accepts breaking-change risk.
Recommended defaults
Use these defaults for new repositories unless the project has stronger local policy:
version: 2and explicit update blocks for every detected ecosystem.package-ecosystem: github-actionsfor.github/workflows.- Weekly version updates for application dependencies.
- Daily or weekly GitHub Actions updates, depending on review capacity.
cooldown.default-days: 7for version updates.open-pull-requests-limit: 5per ecosystem.labels: ["dependencies"], plus ecosystem labels such asnpm,nuget,github-actions, ordocker.commit-message.prefix: "chore(deps)"andinclude: "scope"for repos using Conventional Commits.- Separate major updates from patch/minor groups when the ecosystem supports group update-type filtering.
- Avoid auto-merge for runtime production dependencies and major updates.
- For ecosystems where immediate updates are risky, prefer cooldown over disabling updates. GitHub's Dependabot Core release notes include ongoing cooldown fixes, so keep this behavior verified against current docs.
- Allow auto-merge only for low-risk patch updates after required checks pass, and only through branch protection or merge queue controls.
Stop conditions
Stop and return a design-level plan instead of final YAML when:
- The repository has private dependencies but no registry access model.
- The user asks for auto-merge but required status checks or branch protection are absent.
- A workflow uses
pull_request_target,workflow_run, or actor checks to grant extra power to Dependabot PRs without a threat model. - The generated config would require long-lived PATs where OIDC or automatic GitHub Packages access is available.
- The exact ecosystem, registry type, or grouping syntax cannot be verified.
- The project uses another dependency bot and the user has not confirmed that Dependabot should coexist with or replace it.
Dependabot and GitHub Actions automation
Dependabot can trigger GitHub Actions workflows on its pull requests. GitHub warns that Dependabot always runs on GitHub Actions when enabled, bypassing Actions policy checks and repository or organization Actions disablement. Treat Dependabot workflows as privileged automation surfaces.
Rules for automation:
- Prefer
pull_request, notpull_request_target, for Dependabot PR checks. - Check
github.event.pull_request.user.login == 'dependabot[bot]'rather than onlygithub.actor == 'dependabot[bot]'. - Use
dependabot/fetch-metadatato classify dependency name, dependency type, and update type before labelling or auto-merging. - Give automation workflows the smallest permissions possible.
- Store workflow-needed secrets as Dependabot secrets when Dependabot PRs need them. GitHub Actions secrets are not automatically available in the same way.
- Require all normal checks before merge. If a merge queue is used, the built-in
GITHUB_TOKENcannot add PRs to the queue; use a GitHub App token only after explicit approval.
zizmor validation
Use zizmor as the standard static security check for Dependabot and GitHub Actions configuration.
Important audits for Dependabot work:
dependabot-cooldownchecks for missing or insufficient cooldown.dependabot-executiondetectsinsecure-external-code-execution: allow.bot-conditionsdetects spoofable bot checks around privileged workflows.dangerous-triggersdetects risky triggers such aspull_request_targetandworkflow_run.template-injectiondetects untrusted expression expansion into scripts.unpinned-usesdetects unpinned action references.known-vulnerable-actionsdetects actions with known vulnerabilities.excessive-permissionsdetects overbroad workflow token permissions.archived-uses,typosquat-uses,cache-poisoning,artipacked, andadhoc-packagescatch common workflow supply-chain defects.
Useful commands:
zizmor --collect=dependabot .
zizmor --collect=all .
zizmor --persona=pedantic --collect=all .
zizmor --format=sarif --collect=all . > zizmor.sarif
zizmor --format=github --collect=all .Suppression rules:
- Prefer fixing findings over suppressing them.
- Use inline comments only for precise false positives, for example
# zizmor: ignore[template-injection]. - Use
zizmor.ymlor.github/zizmor.ymlfor repository-level ignore and severity remap policy. - Run with
--no-ignoresperiodically to review the suppressed surface.
SARIF caveat: zizmor SARIF output is intended for GitHub code scanning and can exit successfully even when findings are present. Enforce thresholds with GitHub code scanning rulesets or an additional non-SARIF blocking run.
Output contract
When creating or reviewing Dependabot configuration, return:
- A repository dependency inventory by ecosystem and directory.
- The proposed
.github/dependabot.ymlor a focused patch. - Private registry and secret requirements, if any.
- Grouping and PR-volume rationale.
- Security update behavior and auto-merge policy.
- zizmor validation commands and expected gates.
- Remaining
[VERIFY]items with links or commands to resolve them.
Templates
Use these bundled templates as starting points, then adapt them to the target repository:
- Greenfield Dependabot config
- zizmor validation workflow
Safe degraded output
If you cannot inspect the repository or verify current docs, provide a minimal safe skeleton:
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
cooldown:
default-days: 7Then list [VERIFY] markers for every missing ecosystem, directory, group,
registry, reviewer, label, and automation decision.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

