Official agent skill

Renovate Batch Update

by grafana in grafana/quickpizza

Consolidate all open Renovate PRs on quickpizza into tested, reviewable PRs.

OfficialApache-2.0Auto-check passedDevOps & Cloud

Install Renovate Batch Update

skills CLI
$ npx skills add grafana/quickpizza --skill renovate-batch-update -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install grafana/quickpizza renovate-batch-update --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/grafana/quickpizza.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/renovate-batch-update .claude/skills/renovate-batch-update && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
renovate-batch-update
GitHub stars
171
Token cost
~3.2k tokens
SKILL.md length
1,613 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Consolidate all open Renovate PRs on quickpizza into tested, reviewable PRs.

  • Works in 8 steps: Sanity check → Collect open Renovate PRs → Build the batch branch(es) → …
  • Tasks that involve Load testing
  • SKILL.md covers Step 0: Sanity check, Why GitHub Actions bumps get…, Step 1: Collect open Renovate… and Step 2: Build the batch…, plus 7 more sections
  • Calls git, gh and make; reaches claude.com

What it does

Renovate Batch Update is an agent skill from grafana/quickpizza, published by the product's own GitHub organization. Consolidate all open Renovate PRs on quickpizza into tested, reviewable PRs. Splits GitHub Actions bumps into their own PR (validated by their own CI run) from code/library bumps (validated by local build + k6), merges as many as will merge cleanly into each batch branch, risk-assesses the survivors, and opens draft PRs summarizing what's in and what got dropped.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Load testing and CI/CD. It works with GitHub Actions, Grafana and Docker. The repository describes itself as: Demo app for learning observability with Grafana and performance testing with k6. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Load testing
  • Tasks that involve CI/CD

Example prompts

  • “/renovate-batch-update”

Requirements

  • Node.js
  • Docker

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Sanity check
  2. Collect open Renovate PRs
  3. Build the batch branch(es)
  4. Risk-assess only what survived Step 2
  5. Build + test the batch
  6. Track drops
  7. Push and open the draft PR(s)
  8. Leave the original PRs alone

What it can do on your machine

Read from SKILL.md and the folder at commit 8943426. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh
    • make
    • go
    • docker
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • claude.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Renovate Batch Update loads about 3.2k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,613 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~97
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from grafana/quickpizza at commit 8943426, republished under its Apache-2.0 licence (© grafana). 1,613 words, ~3,202 tokens.

Download SKILL.mdSave it as .claude/skills/renovate-batch-update/SKILL.md (or your agent's skills folder).
name
renovate-batch-update
description
Consolidate all open Renovate PRs on quickpizza into tested, reviewable PRs. Splits GitHub Actions bumps into their own PR (validated by their own CI run) from code/library bumps (validated by local build + k6), merges as many as will merge cleanly into each batch branch, risk-assesses the survivors, and opens draft PRs summarizing what's in and what got dropped.

/renovate-batch-update — Consolidated Dependency Update

Turns the weekly pile of individual Renovate PRs on grafana/quickpizza into tested PRs, instead of reviewing/merging each one by hand.

Boundary: this skill opens draft PRs to main. It never merges to main itself — that's a shared-branch action and stays a human call.

Produces two separate PRs, not one: a code/dependency batch (Go modules, npm packages, Docker base image tags, security patches) and, only if any exist, a GitHub Actions batch. This is a hard split, not optional risk-tiering — see "Why GitHub Actions bumps get their own PR" below.

Step 0: Sanity check

  • Confirm the working tree is clean (git status). If not, stop and tell the user — don't stash or discard their work.
  • Confirm the current branch, then git fetch origin --prune.
  • Check whether port 3333 is already in use (lsof -i :3333). Quickpizza's port is hardcoded in cmd/main.go with no override, and a long-running local Docker container (docker ps --filter publish=3333) commonly holds it. If so, ask the user before touching it. If they agree, docker stop <name> before Step 4 and docker start <name> again once k6 finishes, pass or fail.

Why GitHub Actions bumps get their own PR

A GitHub Actions version bump changes the CI workflow itself — the thing meant to validate the batch. This skill's local testing (make build + make test-go + k6) can't exercise workflow-level behavior at all; only that PR's own CI run can.

  1. Never mix Actions bumps into the code/dependency batch. A CI-breaking Actions change and a real code regression both just show up as "CI failed" if they're in the same batch — keep Actions bumps in a PR that contains only Actions bumps, so a failure there is unambiguous.
  2. The acceptance bar for the Actions batch is its own CI run, not a local check. Push it and read its checks. A first-push failure is expected and is the batch doing its job — report it plainly in the PR body rather than fixing it silently. The fix itself (e.g. pinning a version in ci.yaml) is a main-level CI change, out of scope for a dependency-bump PR.

This holds regardless of which Actions bump happens to break something — the reason is structural (only a workflow's own run can validate a change to that workflow), not tied to any specific action.

Step 1: Collect open Renovate PRs

bash
gh pr list --state open --json number,title,headRefName,labels \
  --search "head:renovate/ OR head:security-" --limit 100

Renovate branches are prefixed renovate/; security branches use the additionalBranchPrefix: "security-" from renovate.json, so also match security-* heads. From each PR's labels, note: update-major / update-minor / update-patch, and any severity:* / automerge-security-update.

Don't request mergeable from gh pr list — GitHub computes it lazily and it's UNKNOWN for most PRs right after a fetch. Step 2's actual git merge is the only reliable mergeability check.

Dedupe overlapping PRs before merging, not by discovering conflicts. renovate.json groups npm/go/docker updates into one PR (e.g. renovate/npm-dependencies), but Renovate also opens narrower individual security-* PRs for the same packages. If a grouped PR and a security PR touch the same package (compare titles), merge the grouped one and skip the narrower one — it's superseded, and merging both guarantees a conflict.

Exclude the observability-stack container images group entirely. These are the Grafana observability stack images (Alloy, LGTM, etc.) upgraded manually while deciding whether to adopt new stack features — batching them defeats that review. Read renovate.json's packageRules, find the rule matching matchManagers: ["docker-compose", "terraform"], and take its groupName. Exclude any PR whose title contains that groupName, including its (major) variant. Don't merge these, risk-assess them, or mention them in the batch PR body — they're out of scope for this skill, not a drop. Tell the user how many were left untouched by design.

Split off GitHub Actions bumps into their own batch — filter by the github-actions label (applied via presets/github-actions in renovate.json's extends), not by branch name or title. Steps 2-6 below run twice: once for the code/dependency PRs, once for the Actions PRs, each on its own branch and its own PR. Within the Actions set, dedupe the same way as above — e.g. a digest-only pin and a major-version bump for the same action will conflict; keep the lower-risk one.

Step 2: Build the batch branch(es)

bash
# Code/dependency batch:
git checkout -b renovate-batch/$(date +%Y-%m-%d) origin/main
# GitHub Actions batch, if any Actions PRs exist:
git checkout -b renovate-actions-batch/$(date +%Y-%m-%d) origin/main

Merge order within the code/dependency batch: lowest-risk first (security-patch, security-minor), then grouped patch/minor PRs, then majors last (majors are the first candidates to drop if later steps fail).

bash
git merge --no-ff origin/<headRefName> -m "merge: <PR title> (#<number>)"

On a clean merge, continue. On a conflict, git merge --abort, record <PR> — dropped: merge conflict, and continue to the next PR. Don't attempt manual conflict resolution.

Why conflicts are common here: this repo vendors Go dependencies (vendor/), so any single-module bump touches go.mod, go.sum, and often unrelated files under vendor/ (shared semconv/version directories get rewritten wholesale). Once one otel/grpc/x-net-family bump is merged, every other PR touching a related module will conflict with it, even though the version bumps are logically compatible. Treat these as expected noise in the batch PR summary, not as unsafe changes that got rejected.

Step 3: Risk-assess only what survived Step 2

Risk-assessing before merging wastes effort on PRs that just get dropped as conflicts. Assess only the PRs that are actually in each batch branch.

For the code/dependency batch, route by ecosystem:

  • Go/npm code libraries: grafana-engineering:dependency-bump-context
  • Docker/container image tags (e.g. the Dockerfile base image group): grafana-engineering:analyze-image-dep-bump-pr

For the GitHub Actions batch, no skill covers this — read each action's actual release notes between the current and target version (gh release view <version> -R <owner>/<repo>), looking specifically for breaking changes to the action's runtime behavior, not just its own dependency bumps. Version number alone doesn't reveal this kind of change, and skipping the check is how a CI-breaking bump gets through unnoticed.

Build a table — PR #, title, ecosystem, update type, severity, risk verdict — and keep it; it becomes the batch PR body.

Show full SKILL.md (661 more words)Show less

Step 4: Build + test the batch

Applies to the code/dependency batch only. The Actions batch has no local build/test step — skip straight to Step 6 for it.

bash
make build

Use make build, not npm run build / go build directly — the frontend build needs PUBLIC_BACKEND_ENDPOINT/PUBLIC_BACKEND_WS_ENDPOINT exported first, which only the Makefile target does.

If npm install modified pkg/web/package-lock.json beyond what the merged PRs already changed, discard that diff (git checkout -- pkg/web/package-lock.json) — it's typically platform-specific optional-dependency drift, not a real change, and it must not leak into the batch PR.

If the build fails, drop the most recently merged high-risk (major) update via git revert -m 1 <merge-commit> and retry, up to twice. If it still fails, stop and report the failure without opening a PR — don't keep reverting blindly.

If the build succeeds, run the Go unit tests next — they're fast and catch regressions in pure logic (e.g. pkg/password's bcrypt round-trip) that a black-box k6 test might not exercise:

bash
make test-go

Apply the same drop-and-retry logic on failure as the build step above.

If that succeeds, run the app and the k6 suite against it:

bash
./bin/quickpizza > /tmp/qp_batch.log 2>&1 &
QP_PID=$!
sleep 2
./k6/run-tests.sh -u http://localhost:3333 -t "k6/foundations/*.js"
K6_EXIT=$?
kill $QP_PID

Default to k6/foundations/*.js, not the full k6/**/*.js tree — some subtrees (browser, extension examples) need the custom xk6 quickpizza extension binary or extra credentials that aren't guaranteed to be available locally.

This can exceed a 180s foreground command timeout and move to background — that's expected for the full 17-file suite. Treat the background task's exit code as the pass/fail signal; the captured output may only contain the tail once it's moved.

If K6_EXIT is non-zero, apply the same drop-and-retry logic as a build failure, and check /tmp/qp_batch.log for server-side errors, not just the exit code.

Step 5: Track drops

Keep a running list of every PR dropped and why (merge conflict / build failure / test failure). Group conflict-drops by root cause (e.g. "conflicted with the otel bumps already in the batch") rather than listing them as unexplained failures.

Step 6: Push and open the draft PR(s)

For the code/dependency batch, only after Step 4 succeeds (or partially succeeds with drops recorded):

bash
git push -u origin renovate-batch/$(date +%Y-%m-%d)
gh pr create --draft --title "chore(deps): batch renovate update $(date +%Y-%m-%d)" --body "$(cat <<'EOF'
## Included
<table from Step 3, filtered to what's actually merged>

## Dropped
<list from Step 5, grouped by root cause — omit if nothing was dropped>

## Testing
- `make build`: <pass/fail>
- `make test-go`: <pass/fail>
- `./k6/run-tests.sh`: <pass/fail, note any skipped/dropped-due-to-failure items>

🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"

For the Actions batch, push and open it unconditionally — there's no local gate, its own CI run is the test:

bash
git push -u origin renovate-actions-batch/$(date +%Y-%m-%d)
gh pr create --draft --title "chore(deps): batch GitHub Actions update $(date +%Y-%m-%d)" --body "$(cat <<'EOF'
Separate from the code/dependency batch — see "Why GitHub Actions bumps get their own PR"
in the skill. This PR's own CI run is the test.

## Included
<table from Step 3>

## Dropped
<list from Step 5, if any>

## Risk notes
<anything found reading release notes in Step 3 — call out a breaking runtime/behavior
change explicitly, don't bury it in a version number>

🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"

If the Actions batch's CI comes back red, don't silently drop the offending PR and re-push. Edit the PR body to report which check failed and why, and let the human decide whether to drop that PR or fix the CI config alongside it — the latter is a main-level change, out of scope for this skill to make unilaterally.

Tell the user both PRs are drafts and summarize what's in/out for each. Don't mark either ready for review or merge them.

Step 7: Leave the original PRs alone

Don't close or comment on the individual Renovate PRs. Once a batch PR merges, Renovate detects the deps are already at target versions on main and closes its own PRs on its next run.

Notes

  • If Step 1 finds zero open Renovate PRs, say so and stop.
  • If only one Renovate PR is open, still run the full process rather than special-casing "just merge it" — the value is the tested draft PR, not the batching.
  • If either batch ends up empty after Step 1's filtering, skip that PR entirely.
  • Safe to re-run: each run creates a dated branch. Re-running after a batch PR merges should clear out many conflict-drops automatically, since the conflict was against content that's now on main.

Future improvement (not yet implemented)

The real fix for the vendor/lockfile conflict problem in Step 2 is to stop merging each Renovate branch's generated diff, and instead collect the target version for each accepted PR, apply them directly on the batch branch (go get <module>@<version> for Go, edit package.json for npm), then run go mod tidy && go mod vendor / npm install once for the whole batch. That would avoid nearly all vendor-churn conflicts, at the cost of a more complex Step 2 — worth building once this skill is used regularly enough to justify it.

© grafana, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/renovate-batch-update of grafana/quickpizza.

Open the folder on GitHubat commit 8943426

Compare with similar skills

Renovate Batch Update next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Renovate Batch Update compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Renovate Batch Update this skillgrafana/quickpizza171—~3.2kAutomated safety check: PassApache-2.0
Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit2606 repos~1.1kAutomated safety check: NotesCustom licence
GitHub Actions CreatorFNOSP/FlyNarwhal5091 repos~2.4kAutomated safety check: PassAGPL-3.0
Swig CI Reproswig/swig6.3k—~1.2kAutomated safety check: PassCustom licence
Megalinter Checknvuillam/npm-groovy-lint2481 repos~3.9kAutomated safety check: NotesMIT
DDNS Build and Release MaintenanceNewFuture/DDNS4.7k—~444Automated safety check: PassMIT

Similar skills

  • Senior DevOps Toolkit

    maslennikov-ig/claude-code-orchestrator-kit

    Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…

    260 GitHub starsUsed in 6 repos~1.1k tokens
    DevOps & CloudAuto-check: notes
  • GitHub Actions Creator

    FNOSP/FlyNarwhal

    A skill your agent uses when the user wants to create, generate, or set up a GitHub Actions workflow.

    509 GitHub starsUsed in 1 repo~2.4k tokens
    DevOps & CloudAuto-check passed
  • Swig CI Repro

    swig/swig

    Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…

    6.3k GitHub stars~1.2k tokensUpdated 3 days ago
    DevOps & CloudAuto-check passed
  • Megalinter Check

    nvuillam/npm-groovy-lint

    Collect MegaLinter lint errors for the current repository. An agent skill from nvuillam/npm-groovy-lint.

    248 GitHub starsUsed in 1 repo~3.9k tokens
    DevOps & CloudAuto-check: notes
  • Maintains the DDNS project's GitHub Actions, Docker and Nuitka builds, packaging and release preparation without touching publishing credentials.

    4.7k GitHub stars~444 tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed
  • CI CD

    EliasOulkadi/shokunin

    Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…

    114 GitHub stars~3.4k tokensUpdated 5 days ago
    DevOps & CloudAuto-check: notes

Categories

Questions about Renovate Batch Update

What does Renovate Batch Update do?

Consolidate all open Renovate PRs on quickpizza into tested, reviewable PRs. Renovate Batch Update is an agent skill from grafana/quickpizza, published by the product's own GitHub organization. Consolidate all open Renovate PRs on quickpizza into tested, reviewable PRs.

When should I use Renovate Batch Update?

Renovate Batch Update fits situations like: tasks that involve Load testing; tasks that involve CI/CD.

How do I install Renovate Batch Update in Claude Code?

Run `npx skills add grafana/quickpizza --skill renovate-batch-update -a claude-code`. Or copy the skill folder (.claude/skills/renovate-batch-update in grafana/quickpizza) into .claude/skills/renovate-batch-update in your project. Claude Code loads it when a task matches its description.

How do I install Renovate Batch Update in Codex?

Run `npx skills add grafana/quickpizza --skill renovate-batch-update -a codex`. Or copy the skill folder (.claude/skills/renovate-batch-update in grafana/quickpizza) into .agents/skills/renovate-batch-update in your project. Codex loads it when a task matches its description.

Can I use Renovate Batch Update in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add grafana/quickpizza --skill renovate-batch-update -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/renovate-batch-update, .gemini/skills/renovate-batch-update, .github/skills/renovate-batch-update and .opencode/skills/renovate-batch-update in your project.

What does Renovate Batch Update need to run?

Going by SKILL.md and its folder, Renovate Batch Update needs the command-line tools its instructions call (git, gh, make, go, docker and npm). Our summary lists: Node.js; Docker.

Does Renovate Batch Update access the network?

SKILL.md names 1 domain. In commands or code: claude.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Renovate Batch Update safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Renovate Batch Update use?

Renovate Batch Update is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Renovate Batch Update use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Renovate Batch Update?

Skills that share tags, products or a category with Renovate Batch Update: Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 260 stars), GitHub Actions Creator (FNOSP/FlyNarwhal, 509 stars), Swig CI Repro (swig/swig, 6.3k stars) and Megalinter Check (nvuillam/npm-groovy-lint, 248 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Renovate Batch Update?

grafana (a GitHub organization, an official publisher) maintains it in grafana/quickpizza, which has 171 GitHub stars. The repository was last updated on October 9, 2026.

Source: grafana/quickpizza on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.