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.
Update Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt.
$ npx skills add spotify/magnolify --skill update-beam -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install spotify/magnolify update-beam --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "update-beam" agent skill from https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beam into .claude/skills/update-beam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-beam", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beamType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add spotify/magnolify --skill update-beam -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install spotify/magnolify update-beam --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spotify/magnolify.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/update-beam .agents/skills/update-beam && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "update-beam" agent skill from https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beam into .agents/skills/update-beam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-beam", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spotify/magnolify --skill update-beam -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install spotify/magnolify update-beam --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spotify/magnolify.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/update-beam .cursor/skills/update-beam && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "update-beam" agent skill from https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beam into .cursor/skills/update-beam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-beam", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/spotify/magnolify.git --path .claude/skills/update-beam--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add spotify/magnolify --skill update-beam -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install spotify/magnolify update-beam --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spotify/magnolify.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/update-beam .gemini/skills/update-beam && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "update-beam" agent skill from https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beam into .gemini/skills/update-beam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-beam", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install spotify/magnolify update-beamInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add spotify/magnolify --skill update-beam -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/spotify/magnolify.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/update-beam .github/skills/update-beam && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "update-beam" agent skill from https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beam into .github/skills/update-beam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-beam", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spotify/magnolify --skill update-beam -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install spotify/magnolify update-beam --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spotify/magnolify.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/update-beam .opencode/skills/update-beam && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "update-beam" agent skill from https://github.com/spotify/magnolify/tree/main/.claude/skills/update-beam into .opencode/skills/update-beam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-beam", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
update-beamUpdate Apache Beam and all pinned Google Cloud dependency versions in Magnolify's build.sbt.
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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a90c8ea. It shows what the files ask for, not the result of running them.
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.
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.
Hosts in commands or code, which the agent is likely to contact:
raw.githubusercontent.comcentral.sonatype.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from spotify/magnolify at commit a90c8ea, republished under its Apache-2.0 licence (© spotify). 973 words, ~2,685 tokens.
.claude/skills/update-beam/SKILL.md (or your agent's skills folder).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.
Beam wins. If a dependency version is pinned in both Beam's
BeamModulePlugin.groovyand the resolvedlibraries-bom, use the Beam version. The BOM is the fallback for deps Beam doesn't explicitly pin.
All steps below should be performed directly by fetching URLs and parsing their content inline — no external scripts are needed.
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.groovyIf 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).
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.groovyParse this Groovy file to build a map called beam_pins:
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.
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.
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.
The libraries-bom is a hierarchy of nested BOMs. Resolve them in order:
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.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.
Fetch the bigtable sub-BOM. The directory structure in google-cloud-java uses
varying prefixes, so try these paths in order:
https://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/java-bigtable/google-cloud-bigtable-bom/pom.xmlhttps://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/google-cloud-bigtable/google-cloud-bigtable-bom/pom.xmlFrom 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).
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-dependenciesMaven version. Use themainbranch as a reasonable proxy, or search for the correct tag via the GitHub API.
Build the final version map. For every pinned dependency in 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, tensorflowMetadataVersionAfter 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.
| Resource | URL template |
|---|---|
| Beam module plugin | https://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 POM | https://raw.githubusercontent.com/googleapis/java-cloud-bom/main/google-cloud-bom/pom.xml |
| gapic-libraries-bom POM | https://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/gapic-libraries-bom/pom.xml |
| Individual library BOM | https://raw.githubusercontent.com/googleapis/google-cloud-java/v$GAPIC_VERSION/$LIB_NAME/$LIB_NAME-bom/pom.xml |
| first-party-dependencies properties | https://raw.githubusercontent.com/googleapis/sdk-platform-java/main/gapic-generator-java-pom-parent/pom.xml |
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
Just SKILL.md in .claude/skills/update-beam of spotify/magnolify.
Open the folder on GitHubat commit a90c8ea
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Update Beam this skillspotify/magnolify | 180 | — | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| Gmail Inbox Watchergoogleworkspace/cli | 31k | 1 repos | ~476 | Automated safety check: Pass | Apache-2.0 | |
| Cloud Cost Optimizationwshobson/agents | 40k | 14 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit | 260 | 6 repos | ~1.1k | Automated safety check: Notes | Custom licence | |
| Terravision Cloud Diagramspatrickchugh/terravision | 1.6k | — | ~5.6k | Automated safety check: Notes | AGPL-3.0-only | |
| Thesvgglincker/thesvg | 2.8k | — | ~1.5k | Automated safety check: Pass | MIT |
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.
wshobson/agents
Cuts cloud spend across AWS, Azure, GCP and OCI with cost tagging, rightsizing, commitment and spot pricing models, and architecture changes.
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
patrickchugh/terravision
Draw cloud architecture diagrams for AWS, Azure or GCP with the official provider icon sets, using TerraVision.
glincker/thesvg
Fetch brand SVG logos and cloud architecture icons (AWS, Azure, GCP) from theSVG.
Kiln-AI/Kiln
Check Kiln's model list for deprecated or sunset models across all providers.
Works with
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.
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.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Update Beam is instructions for the agent only.
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.
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.
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.
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.
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.
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.