Create Release Checklist
software-mansion/smelter
Generate a GitHub release-checklist issue for a full (non-RC) release of the Smelter server and/or the TypeScript SDK.
Assists with Morphir CLI release management for finos/morphir, including pre-release verification, extension verification, version bumps, tagging, and release coordination.
$ npx skills add finos/morphir --skill release-manager -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install finos/morphir release-manager --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/finos/morphir.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release-manager .claude/skills/release-manager && 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 "release-manager" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/release-manager into .claude/skills/release-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-manager", 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/finos/morphir/tree/main/.claude/skills/release-managerType 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 finos/morphir --skill release-manager -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install finos/morphir release-manager --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/release-manager .agents/skills/release-manager && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release-manager" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/release-manager into .agents/skills/release-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-manager", 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 finos/morphir --skill release-manager -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install finos/morphir release-manager --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/release-manager .cursor/skills/release-manager && 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 "release-manager" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/release-manager into .cursor/skills/release-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-manager", 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/finos/morphir.git --path .claude/skills/release-manager--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 finos/morphir --skill release-manager -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install finos/morphir release-manager --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/release-manager .gemini/skills/release-manager && 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 "release-manager" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/release-manager into .gemini/skills/release-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-manager", 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 finos/morphir release-managerInstalls 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 finos/morphir --skill release-manager -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/release-manager .github/skills/release-manager && 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 "release-manager" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/release-manager into .github/skills/release-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-manager", 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 finos/morphir --skill release-manager -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install finos/morphir release-manager --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/release-manager .opencode/skills/release-manager && 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 "release-manager" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/release-manager into .opencode/skills/release-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-manager", 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.
release-managerAssists with Morphir CLI release management for finos/morphir, including pre-release verification, extension verification, version bumps, tagging, and release coordination.
Release Manager is an agent skill from finos/morphir. Assists with Morphir CLI release management for finos/morphir, including pre-release verification, extension verification, version bumps, tagging, and release coordination. Use when preparing releases, checking release readiness, or managing version bumps.
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 Product & Project Management, covering Open source maintenance and Feature launches and release readiness. It works with Rust. The repository describes itself as: A universal language for business and technology. The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 95c1aec. 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.
Shell commands in SKILL.md call:
gitmisecargoghpython3npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh and npm, which can reach the network depending on how they are called.
From 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.
Release Manager loads about 3.2k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 1,235 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 finos/morphir at commit 95c1aec, republished under its Apache-2.0 licence (© finos). 1,235 words, ~3,245 tokens.
.claude/skills/release-manager/SKILL.md (or your agent's skills folder).You are a release management assistant for the Morphir CLI released from
finos/morphir. The release is the Rust morphir binary built from
crates/morphir. Go tooling is released from finos/morphir-go and is out of
scope here.
Cargo.toml under
[workspace.package]. Every crate inherits it. Never set a crate version by
hand.v<version>, for example v0.4.0-alpha.6. The release
workflow refuses a tag that does not match the workspace version.MAJOR.MINOR.PATCH-<stage>.N spelling, for
example 0.4.0-alpha.6 or 0.4.0-rc.1. Bump only N for another
prerelease of the same stage and target version. Change the stage when the
release moves from alpha to beta or to a release candidate.main. The version bump lands through a pull
request from a milestone/v<version> branch. Tag the merge commit, not the
branch tip. The branch can be opened early, as a draft pull request, to
queue pin moves and other release-only changes until the release is cut.
Releases up to v0.4.0-beta.8 used release/v<version> branches.- in it publishes as a GitHub prerelease. The workflow sets
this flag itself.| File | What to change |
|---|---|
Cargo.toml | [workspace.package] version |
Cargo.lock | Regenerate with cargo update --workspace --offline after the bump |
tests/ci/test_release_workflow.py | The expected version strings in test_workspace_uses_release_prerelease_version |
.github/workflows/release.yml | The example tag in the workflow_dispatch input description |
INSTALLING.md | The mise use -g github:finos/morphir@<version> example and the pinned mise.toml snippet |
docs/getting-started/morphir-cli.md | The same two mise install examples |
CHANGELOG.md | Move [Unreleased] into a [<version>] - <date> section and add a fresh empty [Unreleased] |
docs/cli/, docs/man/, completions/ | Generated. Run mise run docs:cli after the release build and commit the result; CI fails on drift |
Check for other references before the bump:
git grep -n "$(python3 -c 'import pathlib,tomllib;print(tomllib.loads(pathlib.Path("Cargo.toml").read_text())["workspace"]["package"]["version"])')" -- ':!Cargo.lock' ':!CHANGELOG.md'Run every gate from a clean checkout of main with the submodules populated.
ecosystem/morphir-rust must be present because the CLI has path dependencies
into it. Confirm its pinned commit is on morphir-rust main, not on a pull
request branch:
git -C ecosystem/morphir-rust fetch origin main
git -C ecosystem/morphir-rust branch -r --contains "$(git -C ecosystem/morphir-rust rev-parse HEAD)"Run the aggregate first, then the gates CI enforces:
# Formatting, Clippy, schema lint, example validation, naming corpus,
# and metaschema validation
mise run check
# Formatting and Clippy on their own
mise run fmt-check:rust
mise run lint:rust
# Rust unit and integration tests. CI gates on the morphir and
# integration-tests packages; `mise run test` also runs the pinned
# ecosystem/morphir-rust crates.
cargo test --locked --package morphir
mise run test
# Release workflow and CI helper tests (Python)
python3 -B -m unittest discover -s tests/ci
# Documentation, tool metadata, schema, and naming-corpus checks
mise run ci:validate-tool-release-metadata
mise run schema:validate
mise run fixtures:naming-corpus-check
# Release binary
cargo build --locked --release --package morphir
target/release/morphir --versionlint:schema excludes the rules the schemas do not satisfy yet; the list is
in .config/mise/config.toml. fixtures:validate is not part of check
because it needs mise run fixtures:fetch first. Four morphir-common
cache-inventory tests are ignored on macOS because APFS is case-insensitive;
Linux CI runs them.
CI also runs mise run docs:cli and fails if the generated CLI docs drift.
Run it locally when a command's help text changed and commit the result.
The CLI ships with no extensions. Extensions install from repositories at run time, so the release must prove the installed-extension paths still work.
Process extensions (Elm, Scala). CI downloads the Morphir Elm extension
that finos/morphir-elm releases on its own tag, extension/elm/v<version>, from
the vnext branch. The pin is [executables.elm] in
.config/published-extension-bundles.toml (repository, tag, archive and the
archive's sha256), for the x86_64-unknown-linux-gnu archive that CI runs.
CI also downloads the Morphir Scala Elm provider, morphir-scala-elm, which
finos/morphir-scala releases with its root v* release as a raw executable.
Its pin is [executables.scala-elm] with an asset in place of an archive,
and its version equals the morphir-scala release version. CI runs the
elm_extension and cli_integration ignored tests against both. A green CI
run on the release commit covers these.
mise run ci:fetch-published-bundles unpacks the pinned Linux executable. To
run the Elm path on another platform, download the archive for that platform
from the same release:
gh release download extension/elm/v0.1.0 -R finos/morphir-elm \
--pattern "*aarch64-apple-darwin.tgz" --dir /tmp/elm-ext
tar -xzf /tmp/elm-ext/*.tgz -C /tmp/elm-ext
export MORPHIR_ELM_EXTENSION_BIN=/tmp/elm-ext/morphir-elm-extension
# The version of the pinned release. The CLI refuses an extension that reports another one.
export MORPHIR_ELM_EXTENSION_VERSION=0.1.0
cargo test --locked --package integration-tests --test elm_extension -- --ignored --nocapture
cargo test --locked --package morphir --test cli_integration \
real_installed_morphir_elm_is_verified_and_activates_offline -- --ignored --nocaptureThe Scala provider test takes its executable and version the same way:
gh release download v0.5.0-M06 -R finos/morphir-scala \
--pattern "morphir-scala-elm-mac-aarch64-0.5.0-M06" --dir /tmp/scala-elm
chmod +x /tmp/scala-elm/morphir-scala-elm-mac-aarch64-0.5.0-M06
export MORPHIR_SCALA_ELM_EXTENSION_BIN=/tmp/scala-elm/morphir-scala-elm-mac-aarch64-0.5.0-M06
export MORPHIR_SCALA_ELM_EXTENSION_VERSION=0.5.0-M06
cargo test --locked --package morphir --test cli_integration \
real_installed_morphir_scala_elm_is_selected_and_activates_offline -- --ignored --exact --nocaptureBefore a release, check finos/morphir-elm for a newer extension/elm/v* tag and
finos/morphir-scala for a newer v* release, and move the pins.
WASM extensions (Avro, OpenAPI, Python, Rust). finos/morphir does not build
the guests. finos/morphir-rust owns the check that a new bundle works with the
released CLI. This repository owns the check that a CLI change does not break the
bundles users already installed: CI downloads the bundles pinned in
.config/published-extension-bundles.toml and runs the ignored extension tests
against them. Run the same check with the release binary:
mise run ci:fetch-published-bundles
B="$PWD/.dev/out/published-bundles"
MORPHIR_AVRO_GUEST="$(ls "$B"/avro/*.wasm)" MORPHIR_OPENAPI_GUEST="$(ls "$B"/openapi/*.wasm)" \
MORPHIR_PYTHON_BUNDLE="$B/python" MORPHIR_RUST_BUNDLE="$B/rust" \
cargo test --locked --release -p morphir \
--test generate_extension --test generate_openapi_extension \
--test python_extension --test rust_extension -- --ignoredBefore a release, check finos/morphir-rust releases for newer extension/<id>/v*
tags and move the pins. When the CLI changes the extension protocol on purpose,
publish a compatible bundle from finos/morphir-rust first, then move the pin in
the same pull request as the CLI change.
Then prove one bundle by hand in a clean home. generate needs a project
configuration, so the steps run inside a directory with a morphir.toml:
export MORPHIR_HOME="$(mktemp -d)"
bin="$PWD/target/release/morphir"
ir="$PWD/website/static/ir/examples/v3/greeting-example.json"
work="$(mktemp -d)" && cd "$work"
printf '[project]\nname = "Acme.Greeting"\nversion = "1.0.0"\n' > morphir.toml
$bin extension repository init repo
$bin extension repository add local --directory repo
$bin extension repository publish local --bundle "$B/avro"
$bin extension search avro
$bin extension install --repository local morphir-avro
$bin extension list
$bin generate --target avro --input "$ir" --output out/avroEvery command must succeed and the generate step must write artifacts.
Native Elm provider. morphir-elm-native is compiled into the CLI. Prove it
with a project whose morphir.toml sets [frontend] language = "elm" and
[frontend.elm] extension = "morphir-elm-native": morphir compile --ir-version 3
and --ir-version 4 must both write morphir-ir.json with that formatVersion.
CHANGELOG.md has a section for this version with every user-visible
change since the previous tag. Breaking changes are marked and describe
the migration.main is green for the commit you will tag.Cargo.lock are either merged
or deliberately left out.cd website && npm ci && npm run build.git switch main && git pull --ff-only
git submodule update --init --recursive
git switch -c milestone/v<version>Update every file in the version table. Then:
cargo update --workspace --offline
# run every gate from "Automated checks" and "Extension verification"
git commit -am "chore: prepare v<version> release"
git push -u origin milestone/v<version>
gh pr create --title "chore: prepare v<version> release" --body "<summary and verification>"A milestone branch opened before the release is ready stays a draft pull
request. Rebase it on main before the release, move the [Unreleased]
CHANGELOG entries into the version section, and rerun every gate.
Work for the release can target the milestone branch with its own pull
request. CI runs on pull requests into milestone/** as it does for main.
Wait for CI on the pull request to pass, then merge. Merge on green CI. Bot reviews land after the checks and are advisory.
git switch main && git pull --ff-only
git tag -a v<version> -m "Release v<version>"
git push origin v<version>Pushing the tag starts .github/workflows/release.yml. It validates the tag
against the workspace version, builds the CLI for six targets, packages
.tgz and .zip archives with .sha256 files, and creates the GitHub
release with generated notes. Re-running the workflow only uploads assets
whose hash changed.
If the tag already exists and the workflow needs to run again:
gh workflow run release.yml -f tag=v<version>gh release view v<version> shows twelve CLI assets (six archives with
checksums) and the prerelease flag for alpha versions.morphir --version:
mise use -g github:finos/morphir@<version> or cargo binstall morphir.bd close.The release-info job exits with that message when Cargo.toml at the tag
does not carry the tagged version. Delete the tag, fix the version on main
through a pull request, and tag again.
--locked builds fail after a version bump until Cargo.lock is regenerated.
Run cargo update --workspace --offline and commit the lockfile.
The submodule is empty. Run git submodule update --init --recursive. In a git
worktree, also run git -C ecosystem/morphir-rust reset --hard HEAD if the
index is empty after the update.
release bundle has no release.json means the descriptor still has its
download name. release bundle files do not match release.json means an extra
file sits in the bundle directory. Keep only the three expected files.
© finos, 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/release-manager of finos/morphir.
Open the folder on GitHubat commit 95c1aec
Release Manager 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 |
|---|---|---|---|---|---|---|
| Release Manager this skillfinos/morphir | 213 | — | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Create Release Checklistsoftware-mansion/smelter | 732 | — | ~1.9k | Automated safety check: Notes | Custom licence | |
| Upgrade Dear Imgui StackLatias94/dear-imgui-rs | 107 | — | ~977 | Automated safety check: Pass | Apache-2.0 | |
| Dogfoodpaiml/aprender | 127 | — | ~13k | Automated safety check: Pass | MIT | |
| Apr Dogfoodpaiml/aprender | 127 | — | ~21k | Automated safety check: Pass | MIT | |
| Release Managementruby-git/ruby-git | 1.8k | — | ~3.1k | Automated safety check: Pass | MIT |
software-mansion/smelter
Generate a GitHub release-checklist issue for a full (non-RC) release of the Smelter server and/or the TypeScript SDK.
Latias94/dear-imgui-rs
A skill your agent uses when a user asks to upgrade Dear ImGui, cimgui, ImPlot, ImPlot3D, ImNodes, ImGuizmo, Dear ImGui Test Engine, or related bindings in this repository.
paiml/aprender
Sovereign-stack PRE-RELEASE protocol. An agent skill from paiml/aprender.
paiml/aprender
Dogfood the aprender release surface — derive every interface from the built binaries, measure gate coverage against the surface ledger, exercise the covered set, and emit a go/no-go receipt
ruby-git/ruby-git
Prepares and publishes new releases of the ruby-git gem including version bumps, changelog updates, tagging, and gem publishing.
aws/agent-toolkit-for-aws
Trigger a pre-merge release readiness review on a GitHub PR, GitLab MR, or local branch.
finos/morphir
Assists with writing and maintaining Morphir technical documentation.
finos/morphir
Manages the Morphir knowledge base under kb/ — OKF bundles and concept documents.
finos/morphir
A skill your agent uses when adding, adopting, debugging or updating Morphir CLI examples and morphir itest scenarios, including scenarios.md, .feature.md and .feature files, scenario metadata, Rego…
finos/morphir
A skill your agent uses when asked to babysit or watch a PR, when watching an open pull request, after opening or pushing to a PR, or when asked to monitor CI, review comments, merge conflicts…
Works with
Categories
Assists with Morphir CLI release management for finos/morphir, including pre-release verification, extension verification, version bumps, tagging, and release coordination. Release Manager is an agent skill from finos/morphir. Assists with Morphir CLI release management for finos/morphir, including pre-release verification, extension verification, version bumps, tagging, and release coordination.
Release Manager fits situations like: preparing releases; checking release readiness; managing version bumps.
Run `npx skills add finos/morphir --skill release-manager -a claude-code`. Or copy the skill folder (.claude/skills/release-manager in finos/morphir) into .claude/skills/release-manager in your project. Claude Code loads it when a task matches its description.
Run `npx skills add finos/morphir --skill release-manager -a codex`. Or copy the skill folder (.claude/skills/release-manager in finos/morphir) into .agents/skills/release-manager 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 finos/morphir --skill release-manager -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-manager, .gemini/skills/release-manager, .github/skills/release-manager and .opencode/skills/release-manager in your project.
Going by SKILL.md and its folder, Release Manager needs the command-line tools its instructions call (git, mise, cargo, gh, python3 and npm). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git, gh and npm, which can reach the network depending on how they are called. 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.
Release Manager 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 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.
Skills that share tags, products or a category with Release Manager: Create Release Checklist (software-mansion/smelter, 732 stars), Upgrade Dear Imgui Stack (Latias94/dear-imgui-rs, 107 stars), Dogfood (paiml/aprender, 127 stars) and Apr Dogfood (paiml/aprender, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
finos (a GitHub organization) maintains it in finos/morphir, which has 213 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: finos/morphir on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.