Skip to content
Back to skills

Release Rome Image

ASecurity

Release a new Rome runtime image by pushing a `vX.Y.Z` tag — pick the version, verify main is releasable, push the tag, and confirm the image published to Docker Hub. Covers the `v*` runtime-image tag only, not the desktop app (`desktop-v*`) and not npm packages (`ui-v*`, `app-runtime-v*`).

  • 704 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added August 31, 2026
ai-agentsbashdockergitapidatabase

Works with

  • api

Security analysis

A100/100

Scanned August 31, 2026

npx -y skills add rome-os/rome --skill release-rome-image --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Release Rome Image?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Release Rome Image
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rome-os-release-rome-image/badge)](https://www.skillsdirectory.com/skills/rome-os-release-rome-image)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: release-rome-image
description: Release a new Rome runtime image by pushing a `vX.Y.Z` tag — pick the version, verify main is releasable, push the tag, and confirm the image published to Docker Hub. Covers the `v*` runtime-image tag only, not the desktop app (`desktop-v*`) and not npm packages (`ui-v*`, `app-runtime-v*`).
disable-model-invocation: true
---

# Release a new Rome image

A pushed `vX.Y.Z` tag is the release. `.github/workflows/docker-publish.yml` builds the multi-arch image and publishes it to `yunfanye/rome`, with no approval gate between the push and Docker Hub. Get explicit confirmation before the push. Verify the published image after it.

The tagging contract covering the semver gate, tag immutability, and `latest` movement lives in [docs/releases.md](../../../docs/releases.md#tagging-contract).

## Out of scope

- Desktop releases use the `desktop-v*` tag and a separate pipeline.
- npm package releases belong to release-please. Never create those tags by hand.

## 1. Preflight

The tag lands on `origin/main`, and `docker-publish.yml` runs no CI gate of its own.

1. Read the commit that the tag will point at.

   ```bash
   git fetch origin --tags && git rev-parse origin/main
   ```

2. List the recent CI runs.

   ```bash
   gh run list --branch main --workflow CI --limit 5
   ```

3. Find the run for the exact commit from step 1 and confirm the status is `success`. CI cancels superseded runs, so a rapid series of merges leaves `cancelled` runs on real commits. If the run failed, was cancelled, or is still running, stop and report it.

4. Confirm no release is already in flight.

   ```bash
   gh run list --workflow "Docker Hub Publish" --limit 3
   ```

## 2. Pick the version

1. Read the current stable tags.

   ```bash
   git tag --list 'v[0-9]*' | sort -V | tail -5
   ```

2. For a patch release, use the helper in step 3. The helper computes the next patch version.
3. For a minor or major release, take the version from the user.
4. For a prerelease, use `vX.Y.Z-rc.N`. A prerelease publishes its own docker tag and never moves `latest`.

Two constraints decide the number. A published version is immutable, so re-pushing a released version fails and the fix for a bad release is the next version up. `latest` moves only when the new version is the highest stable version in the registry.

## 3. Cut the tag

For a patch release:

1. Print the planned tag and target commit.

   ```bash
   scripts/dev/create-patch-release-tag.sh --dry-run
   ```

2. Show that output to the user and wait for an explicit yes.
3. Create and push the tag, which starts the publish.

   ```bash
   scripts/dev/create-patch-release-tag.sh
   ```

For a minor, major, or prerelease version, the helper does not apply, because it bumps the patch version only. Confirm the version with the user, then tag `origin/main` directly.

```bash
git tag -a v1.1.0 origin/main -m "Release v1.1.0" && git push origin refs/tags/v1.1.0
```

## 4. Verify the publish

1. Watch the run to completion.

   ```bash
   gh run watch "$(gh run list --workflow "Docker Hub Publish" --limit 1 --json databaseId --jq '.[0].databaseId')"
   ```

2. Confirm the version reached the registry.

   ```bash
   curl -fsSL "https://hub.docker.com/v2/repositories/yunfanye/rome/tags?page_size=20" | jq -r '.results[].name'
   ```

3. Report the published version, whether `latest` moved, and the build SHA. A running instance reports the baked version at `/api/build-info`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.