mz-dbt-release

star 6.3k

Cut a dbt-materialize PyPI release: bump the version in `__version__.py` and `setup.py`, date the `Unreleased` CHANGELOG entry, and open the release PR with a `Ship: <url>` body. Trigger: "cut a dbt release", "release dbt-materialize", "release the dbt adapter", "ship dbt-materialize vX.Y.Z", "publish dbt-materialize to PyPI", "bump dbt-materialize version", "new dbt adapter version". Use this skill even if the user just says "ship the dbt adapter" or pastes a feature PR and asks for "the next dbt release" without naming version mechanics.

MaterializeInc By MaterializeInc schedule Updated 5/20/2026

name: mz-dbt-release description: > Cut a dbt-materialize PyPI release: bump the version in __version__.py and setup.py, date the Unreleased CHANGELOG entry, and open the release PR with a Ship: <url> body. Trigger: "cut a dbt release", "release dbt-materialize", "release the dbt adapter", "ship dbt-materialize vX.Y.Z", "publish dbt-materialize to PyPI", "bump dbt-materialize version", "new dbt adapter version". Use this skill even if the user just says "ship the dbt adapter" or pastes a feature PR and asks for "the next dbt release" without naming version mechanics.

Cutting a dbt-materialize release

A release PR bumps the published version of the dbt-materialize PyPI package. It is mechanical: three files change, one commit, one PR.

The adapter lives in misc/dbt-materialize/. PyPI publication is handled by CI after the PR merges.

Files to touch

Exactly three files:

File Change
misc/dbt-materialize/dbt/adapters/materialize/__version__.py Bump version = "X.Y.Z"
misc/dbt-materialize/setup.py Bump version="X.Y.Z" (kwarg in setup(...))
misc/dbt-materialize/CHANGELOG.md Insert ## X.Y.Z - YYYY-MM-DD between ## Unreleased and the existing bullets

Both version strings must stay in sync — the comments in each file say so.

Picking the next version

  • Default: bump the patch component (1.9.9 → 1.9.10).
  • The minor component tracks the required dbt-postgres minor. Only bump minor when upgrading to a new dbt-postgres minor (e.g. 1.9.x → 1.10.0).
  • Read the current version from __version__.py.

Confirming what's being released

The ## Unreleased section of CHANGELOG.md is the source of truth for what ships. If it's empty, there is nothing to release. Cross-check with:

git log <prev-release-sha>..HEAD -- misc/dbt-materialize/

If a commit since the previous release touched misc/dbt-materialize/ but is not represented under ## Unreleased, stop and ask whether it should be included — don't silently invent a changelog entry.

CHANGELOG edit

The release does not rewrite the unreleased bullets; it just dates them. Insert a new dated heading immediately after ## Unreleased, leaving ## Unreleased itself empty:

## Unreleased

## 1.9.10 - 2026-05-20

* Support unmanaged clusters in `deploy_init`. ...

Use today's date in YYYY-MM-DD.

Branch, commit, PR

  • Branch name: dbt-release-X.Y.Z, branched from current main.
  • Commit subject: dbt-materialize: release vX.Y.Z
  • Commit body / PR body: a single Ship: <url> line pointing at the PR that triggered this release (the feature/fix PR being shipped). If multiple PRs are being shipped, pick the headline one — the changelog already enumerates them.
  • PR title: same as the commit subject.
  • PR targets MaterializeInc/materialize:main.

Example:

gh pr create --repo MaterializeInc/materialize --base main \
  --head <your-fork>:dbt-release-1.9.10 \
  --title "dbt-materialize: release v1.9.10" \
  --body "Ship: https://github.com/MaterializeInc/materialize/pull/36625"

What you do NOT run

This PR touches only Python version strings and Markdown. Skip:

  • cargo check, cargo clippy, Cargo.lock work — no Rust changes.
  • Test suites — there are no tests to add for a version bump.

bin/fmt and bin/lint cover misc/dbt-materialize/*.py, but a one-character version bump almost never triggers them. Run them if you've made an accidental wider change; otherwise they're optional.

Verifying before pushing

git diff --stat

Should show exactly three files, predominantly a +4 / -2 shape (one line each in the two version files, two added lines in CHANGELOG.md). A few extra lines in CHANGELOG.md are fine if a bullet was reformatted while finalising it; an unexpected fourth file means you've gone off-script.

Quick reference

# 1. Branch
git checkout -b dbt-release-X.Y.Z

# 2. Edit the three files (see table above)

# 3. Verify
git diff --stat   # expect 3 files, +4/-2

# 4. Commit
git commit -am "dbt-materialize: release vX.Y.Z

Ship: <feature-pr-url>"

# 5. Push and open PR
git push -u origin dbt-release-X.Y.Z
gh pr create --repo MaterializeInc/materialize --base main \
  --head <your-fork>:dbt-release-X.Y.Z \
  --title "dbt-materialize: release vX.Y.Z" \
  --body "Ship: <feature-pr-url>"

Historical reference

Recent release commits (find via git log --oneline -- misc/dbt-materialize/dbt/adapters/materialize/__version__.py):

  • v1.9.10 — PR #36636
  • v1.9.9 — PR #36609
  • v1.9.8 — PR #36529

Inspect any of them with git show <sha> to see the exact diff shape.

Install via CLI
npx skills add https://github.com/MaterializeInc/materialize --skill mz-dbt-release
Repository Details
star Stars 6,314
call_split Forks 510
navigation Branch main
article Path SKILL.md
More from Creator
MaterializeInc
MaterializeInc Explore all skills →