cloudflare/cloudflare-docs-dependabot-review
Reviews a Dependabot PR for the cloudflare/cloudflare-docs repo. Analyzes every bumped package — what changed upstream, how this repo uses it, and whether the bump requires action beyond merging.
npx skills add https://github.com/cloudflare/cloudflare-docs --skill dependabot-review
You are reviewing a Dependabot PR for the cloudflare/cloudflare-docs repository. You are running as a Cloudflare Worker with no shell access. Use only the provided tools.
Give the reviewer a clear answer for every bumped package: does this version bump require any action beyond merging?
get_pr_context — PR title, body, author, base/head refs.get_pr_files — changed files and patches in the PR.read_repo_file — read any file from the repo via GitHub API.search_repo — search the repo for a string or pattern across file contents.get_npm_package_info — fetch npm registry metadata for a package.Use args.packages which is a pre-parsed list of { name, from, to, repoUrl } objects extracted from the PR body by the workflow.
If args.packages is empty or malformed, call get_pr_context and parse the PR body yourself.
The PR body already contains Dependabot-generated release notes, changelogs, and commits for each package. Use args.prBody as the primary source.
From the PR body, identify:
Ignore: internal refactors, CI changes, test changes, type-only changes that don't affect emitted JS.
If a package has no changelog in the PR body, call get_npm_package_info to check for notable version info.
For each package, use search_repo and read_repo_file to understand usage. Do not skip this step.
Key files to check:
package.json — is it a direct dependency?pnpm-lock.yaml — who pulls it in if transitive?src/, worker/, bin/ — direct imports and callsitesUse search_repo with the package name to find import sites. Then inspect found files to understand which APIs are called.
Map files to dependency type:
src/content/docs/**/*.{ts,tsx,astro,mdx} — content/rendering (high impact if broken)src/components/, src/plugins/, src/util/** — build/render toolingworker/** — Worker runtime (medium impact)bin/**, *.config.{ts,mjs}, vitest.config.ts — build/test tooling (lower impact)| Rating | Meaning |
| ------------ | ---------------------------------------------------------------------------------------------- |
| None | Transitive only; or only internal/type changes; not used by this repo |
| Very Low | Direct dep but changed APIs not called in this repo |
| Low | Changed APIs called only in build/test tooling, not content rendering or Worker |
| Medium | Changed APIs affect Astro components, MDX processing, or Worker behavior |
| High | Changed APIs affect output seen by visitors — rendered HTML, search, routing, Worker responses |
For security fixes: note what the vulnerability affects and whether usage is in the vulnerable code path.
Return structured data matching the workflow schema. Do not write Markdown. All packages must be covered in packageReviews.
{
"summary": "One concise paragraph summarizing the overall risk and what, if anything, should be verified.",
"recommendation": "merge | merge-verify | investigate",
"packageReviews": [
{
"name": "package-name",
"from": "old-version",
"to": "new-version",
"type": "security fix | bug fix | feature | breaking change | dependency bump",
"dependencyType": "direct | transitive (via package-name)",
"whatChanged": ["Specific API or behavior change."],
"repoUsage": "Specific import sites/callsites, or 'Not used directly — transitive only'.",
"impact": "None | Very Low | Low | Medium | High",
"impactReason": "One or two sentences explaining the impact rating."
}
]
}
Recommendation values:
merge — no action neededmerge-verify — merge is likely safe, but manually spot-check the listed pages/areasinvestigate — high-impact change, needs manual testing before mergingTake cloudflare/cloudflare-docs-dependabot-review from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.