Agent skill

Update Beam

by spotify in spotify/magnolify

Update Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt.

Apache-2.0Auto-check passed

Install Update Beam

skills CLI
$ npx skills add spotify/magnolify --skill update-beam -a claude-code

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

GitHub CLI
$ gh skill install spotify/magnolify update-beam --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/spotify/magnolify.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/update-beam .claude/skills/update-beam && 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
update-beam
GitHub stars
180
Token cost
~2.7k tokens
SKILL.md length
973 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Update Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt.

  • Works in 6 steps: Find the latest stable Beam release → Extract dependency versions from Beam → Resolve the libraries-bom dependency tree → …
  • Someone asks to bump Beam
  • SKILL.md covers Priority rule, Workflow (execute every step…, Useful URLs (fill in version… and Edge cases & gotchas
  • Reaches raw.githubusercontent.com and central.sonatype.com

What it does

Update Beam is an agent skill from spotify/magnolify. Update Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt. Use this skill whenever someone asks to bump Beam, upgrade Beam, update Beam, align dependencies with libraries-bom, or sync Google Cloud dependency versions for the Magnolify project. Also trigger when the user says "update-beam", "/update-beam", or mentions upgrading any of: beamVersion, bigtableVersion, datastoreVersion, guavaVersion, protobufVersion, jacksonVersion in the context of Magnolify.

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

It works with Google Cloud. The repository describes itself as: A collection of Magnolia add-on modules. The licence is Apache-2.0.

When your agent uses it

  • Someone asks to bump Beam
  • Align dependencies with libraries-bom
  • Sync Google Cloud dependency versions for the Magnolify project
  • The user says update-beam

Example prompts

  • “update-beam”
  • “/update-beam”
  • “/update-beam”

Workflow steps

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

  1. Find the latest stable Beam release
  2. Extract dependency versions from Beam
  3. Resolve the libraries-bom dependency tree
  4. Merge beam_pins with BOM versions
  5. Update build.sbt
  6. Report changes

What it can do on your machine

Read from SKILL.md and the folder at commit a90c8ea. 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

    No scripts in the folder and no shell commands in SKILL.md.

    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:

    • raw.githubusercontent.com
    • central.sonatype.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

Update Beam loads about 2.7k tokens when it runs. Until then it costs about 126 tokens; SKILL.md has 973 words of instructions outside code blocks.

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

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 spotify/magnolify at commit a90c8ea, republished under its Apache-2.0 licence (© spotify). 973 words, ~2,685 tokens.

Download SKILL.mdSave it as .claude/skills/update-beam/SKILL.md (or your agent's skills folder).
name
update-beam
description
Update Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt. Use this skill whenever someone asks to bump Beam, upgrade Beam, update Beam, align dependencies with libraries-bom, or sync Google Cloud dependency versions for the Magnolify project. Also trigger when the user says "update-beam", "/update-beam", or mentions upgrading any of: beamVersion, bigtableVersion, datastoreVersion, guavaVersion, protobufVersion, jacksonVersion in the context of Magnolify.

Update Beam & Align Google Cloud Dependencies

This skill updates Magnolify's build.sbt to use the latest stable Apache Beam release and aligns every pinned Google Cloud / shared dependency version with the com.google.cloud:libraries-bom that Beam ships against.

Priority rule

Beam wins. If a dependency version is pinned in both Beam's BeamModulePlugin.groovy and the resolved libraries-bom, use the Beam version. The BOM is the fallback for deps Beam doesn't explicitly pin.


Workflow (execute every step in order)

All steps below should be performed directly by fetching URLs and parsing their content inline — no external scripts are needed.

Step 1 — Find the latest stable Beam release

Search the web for the latest Apache Beam release version, or fetch:

https://raw.githubusercontent.com/apache/beam/master/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy

If the master branch is ahead of the latest release tag, use the release tag instead (e.g. v2.75.0). Confirm the version with a web search if unsure. Store the result as $BEAM_VERSION (e.g. 2.75.0).

Step 2 — Extract dependency versions from Beam

First, read build.sbt and collect every val …Version = "…" declaration. These are the dependencies Magnolify pins. Note each variable name and its current value — you will need the current values for the Step 6 report.

Next, fetch:

https://raw.githubusercontent.com/apache/beam/v$BEAM_VERSION/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy

Parse this Groovy file to build a map called beam_pins:

  1. libraries-bom version (required) — find the line containing google_cloud_platform_libraries_bom with a string like "com.google.cloud:libraries-bom:26.83.0". Extract the version after the last colon. Store this as $LIBRARIES_BOM_VERSION. This is needed for Step 3.

  2. def …_version variables — scan for all lines matching def <name>_version = "<value>". For each one, convert the Groovy-style snake_case name to the camelCase equivalent used in build.sbt (e.g. guava_version → guavaVersion). If a matching build.sbt variable exists, record it in beam_pins.

  3. Inline artifact versions — scan for dependency strings with inline versions, e.g. "groupId:artifactId:version". For each artifact that corresponds to a build.sbt variable (match by artifact name — e.g. google-api-services-bigquery → bigqueryVersion, datastore-v1-proto-client → datastoreVersion, org.apache.avro:avro → avroVersion), extract the version and record it in beam_pins.

Note: some deps (like proto_google_cloud_bigtable_v2) are marked "google_cloud_platform_libraries_bom sets version" — meaning Beam delegates to the BOM and doesn't pin them. In that case there is no beam_pin entry; Step 3 will fill it in.

Step 3 — Resolve the libraries-bom dependency tree

The libraries-bom is a hierarchy of nested BOMs. Resolve them in order:

3a. Fetch the google-cloud-bom POM

From the googleapis/java-cloud-bom GitHub repo, fetch google-cloud-bom/pom.xml. Try the main branch first; if the repo is archived or 404s, try the tag matching the libraries-bom version (e.g. v$LIBRARIES_BOM_VERSION).

URL: https://raw.githubusercontent.com/googleapis/java-cloud-bom/main/google-cloud-bom/pom.xml

From the POM XML, extract:

  • gapic-libraries-bom version (e.g. 1.87.1) — look for a <dependency> entry with <artifactId>gapic-libraries-bom</artifactId> and extract its <version> element. Store as $GAPIC_VERSION.
3b. Fetch the gapic-libraries-bom POM

URL: https://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/gapic-libraries-bom/pom.xml

This contains ~215 sub-BOM imports. You only need to identify the bigtable sub-BOM entry to proceed to 3c.

3c. Resolve the bigtable sub-BOM

Fetch the bigtable sub-BOM. The directory structure in google-cloud-java uses varying prefixes, so try these paths in order:

  1. https://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/java-bigtable/google-cloud-bigtable-bom/pom.xml
  2. https://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/google-cloud-bigtable/google-cloud-bigtable-bom/pom.xml

From the bigtable BOM POM, find the <dependency> entry with <artifactId>proto-google-cloud-bigtable-v2</artifactId> and extract its <version>. This is the bigtableVersion value.

The proto-google-cloud-bigtable-v2 version will match the google-cloud-bigtable main artifact version (they share a BOM).

3d. Resolve first-party-dependencies for core library versions

The first-party-dependencies BOM (from googleapis/sdk-platform-java) manages core deps like Guava, Protobuf, and gRPC. Fetch:

URL: https://raw.githubusercontent.com/googleapis/sdk-platform-java/main/gapic-generator-java-pom-parent/pom.xml

Parse the <properties> block and extract guava.version, protobuf.version, grpc.version. These serve as BOM fallback values for guavaVersion and protobufVersion if Beam doesn't pin them explicitly.

Important: The sdk-platform-java repo tags don't match the first-party-dependencies Maven version. Use the main branch as a reasonable proxy, or search for the correct tag via the GitHub API.

Show full SKILL.md (385 more words)Show less
Step 4 — Merge beam_pins with BOM versions

Build the final version map. For every pinned dependency in build.sbt:

  1. If beam_pins has an explicit version → use it.
  2. Else if the BOM resolution (Steps 3c–3d) has a version → use it.
  3. Else → leave unchanged.
Step 5 — Update build.sbt

Read build.sbt (at repository root). Apply str_replace edits to each val …Version line that needs updating. The version declarations are all in the first ~50 lines.

Here is a nonexhaustive list of variables to check and potentially update:

val beamVersion = "$BEAM_VERSION"
val bigtableVersion = "…"       ← from BOM bigtable sub-BOM (proto-google-cloud-bigtable-v2)
val datastoreVersion = "…"      ← beam_pin OR BOM (datastore-v1-proto-client)
val guavaVersion = "…"          ← beam_pin OR first-party-dependencies
val jacksonVersion = "…"        ← beam_pin
val protobufVersion = "…"       ← beam_pin OR first-party-dependencies
val hadoopVersion = "…"         ← beam_pin
val avroVersion = "…"           ← beam_pin (the default, not the sys.prop override)
val bigqueryVersion = "…"       ← beam_pin (google-api-services-bigquery)

Do NOT touch these unless you have a concrete reason:

  • algebirdVersion, catsVersion, magnoliaScala*Version, munitVersion, neo4jDriverVersion, paigesVersion, parquetVersion, refinedVersion, scalaCollectionCompatVersion, scalacheckVersion, shapelessVersion, slf4jVersion, tensorflowVersion, tensorflowMetadataVersion
Step 6 — Report changes

After editing, print a summary table:

| Variable          | Old      | New      | Source                              |
|-------------------|----------|----------|-------------------------------------|
| beamVersion       | 2.71.0   | 2.75.0   | Latest stable release               |
| bigtableVersion   | 2.68.0   | 2.79.0   | libraries-bom → bigtable-bom        |
| …                 | …        | …        | …                                   |

Flag any major version bumps (e.g. datastoreVersion 2.x → 3.x) with a warning about potential breaking changes.

Present the updated build.sbt file to the user.


Useful URLs (fill in version variables at runtime)

ResourceURL template
Beam module pluginhttps://raw.githubusercontent.com/apache/beam/v$BEAM_VERSION/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
libraries-bom POM (Sonatype)https://central.sonatype.com/artifact/com.google.cloud/libraries-bom/$LIBRARIES_BOM_VERSION
google-cloud-bom POMhttps://raw.githubusercontent.com/googleapis/java-cloud-bom/main/google-cloud-bom/pom.xml
gapic-libraries-bom POMhttps://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/gapic-libraries-bom/pom.xml
Individual library BOMhttps://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/$LIB_NAME/$LIB_NAME-bom/pom.xml
first-party-dependencies propertieshttps://raw.githubusercontent.com/googleapis/sdk-platform-java/main/gapic-generator-java-pom-parent/pom.xml

Edge cases & gotchas

  • datastore-v1-proto-client lives under group com.google.cloud.datastore, NOT com.google.cloud. It has its own versioning scheme separate from google-cloud-datastore. Beam pins it explicitly — always prefer Beam's value.

  • proto-google-cloud-bigtable-v2 lives under group com.google.api.grpc. Its version matches the google-cloud-bigtable main artifact version (they share a BOM). Beam delegates this to the libraries-bom, so resolve from BOM.

  • bigqueryVersion in Magnolify is for com.google.apis:google-api-services-bigquery, not com.google.cloud:google-cloud-bigquery. This is a Google API Client library artifact, not a Cloud Client library, so it is NOT in the libraries-bom. Take it from Beam's google_api_services_bigquery line.

  • Guava is set in first-party-dependencies via guava-bom. Beam also pins a guava_version. Prefer Beam's pin unless it looks stale compared to the BOM (Beam sometimes lags the BOM by a minor version — in that case, note the discrepancy and prefer Beam's pin to stay compatible with Beam at runtime).

  • sdk-platform-java tags don't match the first-party-dependencies Maven artifact version (e.g. repo tag v2.68.0 ≠ Maven version 3.64.0). Use the main branch as a reasonable approximation, or search the GitHub API for the correct tag.

  • The java-cloud-bom repo was archived on 2026-07-14. If fetching from main fails, try the tag matching the libraries-bom version (e.g. v26.85.0).

  • Protobuf major version bumps (e.g. 3.x → 4.x) are significant. If the BOM introduces one, warn the user prominently.

© spotify, 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/update-beam of spotify/magnolify.

Open the folder on GitHubat commit a90c8ea

Compare with similar skills

Update Beam 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.

Update Beam compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Update Beam this skillspotify/magnolify180—~2.7kAutomated safety check: PassApache-2.0
Gmail Inbox Watchergoogleworkspace/cli31k1 repos~476Automated safety check: PassApache-2.0
Cloud Cost Optimizationwshobson/agents40k14 repos~1.7kAutomated safety check: PassMIT
Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit2606 repos~1.1kAutomated safety check: NotesCustom licence
Terravision Cloud Diagramspatrickchugh/terravision1.6k—~5.6kAutomated safety check: NotesAGPL-3.0-only
Thesvgglincker/thesvg2.8k—~1.5kAutomated safety check: PassMIT

Similar skills

  • Gmail Inbox Watcher

    googleworkspace/cli

    Streams new Gmail messages as NDJSON from the gws command line tool using Google Pub/Sub, with label filters, batch settings and optional per-message files.

    31k GitHub starsUsed in 1 repo~476 tokens
    Productivity & AutomationAuto-check passed
  • Cuts cloud spend across AWS, Azure, GCP and OCI with cost tagging, rightsizing, commitment and spot pricing models, and architecture changes.

    40k GitHub starsUsed in 14 repos~1.7k tokens
    DevOps & CloudAuto-check passed
  • 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
  • Terravision Cloud Diagrams

    patrickchugh/terravision

    Draw cloud architecture diagrams for AWS, Azure or GCP with the official provider icon sets, using TerraVision.

    1.6k GitHub stars~5.6k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • Thesvg

    glincker/thesvg

    Fetch brand SVG logos and cloud architecture icons (AWS, Azure, GCP) from theSVG.

    2.8k GitHub stars~1.5k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Check Kiln's model list for deprecated or sunset models across all providers.

    5.2k GitHub stars~2.5k tokensUpdated today
    AI & LLM EngineeringAuto-check: notes

Works with

Questions about Update Beam

What does Update Beam do?

Update Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt. Update Beam is an agent skill from spotify/magnolify.sbt.

When should I use Update Beam?

Update Beam fits situations like: someone asks to bump Beam; align dependencies with libraries-bom; sync Google Cloud dependency versions for the Magnolify project; the user says update-beam.

How do I install Update Beam in Claude Code?

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

How do I install Update Beam in Codex?

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

Can I use Update Beam 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 spotify/magnolify --skill update-beam -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/update-beam, .gemini/skills/update-beam, .github/skills/update-beam and .opencode/skills/update-beam in your project.

What does Update Beam need to run?

SKILL.md names no scripts, command-line tools or credentials: Update Beam is instructions for the agent only.

Does Update Beam access the network?

SKILL.md names 2 domains. In commands or code: raw.githubusercontent.com and central.sonatype.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Update Beam 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 Update Beam use?

Update Beam 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 Update Beam use?

About 2.7k tokens (SKILL.md is roughly 11k 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 Update Beam?

Skills that share tags, products or a category with Update Beam: Gmail Inbox Watcher (googleworkspace/cli, 31k stars), Cloud Cost Optimization (wshobson/agents, 40k stars), Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 260 stars) and Terravision Cloud Diagrams (patrickchugh/terravision, 1.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Update Beam?

spotify (a GitHub organization) maintains it in spotify/magnolify, which has 180 GitHub stars. The repository was last updated on October 8, 2026.

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