release-resonite

Automates tag-driven dual publishing of ResoniteIO mod zips and PyPI packages.

3|Updated Jun 7, 2026
One-click install
npx skills add https://github.com/MLShukai/ResoniteIO --skill release-resonite-mlshukai
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: release-resonite
Source: https://github.com/MLShukai/ResoniteIO/tree/main/.agents/skills/release-resonite
Command: npx skills add https://github.com/MLShukai/ResoniteIO --skill release-resonite-mlshukai

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Cutting a ResoniteIO release requires keeping three version strings in lockstep, updating the changelog, pushing a tag, and coordinating a multi-job GitHub Actions pipeline that publishes the mod zip to GitHub Releases and the Python package to PyPI — a process with many failure points like version mismatches, stale renderer prebuilts, and broken changelog extraction. ## Core Features & Use Cases - Lockstep version bumping: Updates the csproj <Version>, pyproject.toml version, and CHANGELOG.md (including link reference definitions) together, then runs uv lock and the full just run verification suite. - Tag-driven publish pipeline: Pushing a v* tag triggers publish.yml, which runs version guards, renderer prebuilt drift checks, PackTS mod zip builds, PyPI Trusted Publishing via OIDC, and GitHub Release creation with changelog-extracted notes. - Prerelease and troubleshooting support: Covers alpha/beta/rc prerelease tagging, one-time PyPI Trusted Publisher setup, and diagnosis of common failures like version-guard mismatches and stale renderer prebuilts. - Use Case: You want to ship ResoniteIO v0.2.0 — the skill walks you through the bump branch, changelog edits, tag push, and post-release verification including Gale local mod import. ## Quick Start Ask the assistant to cut a new ResoniteIO release for version X.Y.Z and it will bump the versions, update the changelog, and guide the tag push that publishes to PyPI and GitHub Releases.

Frequently Asked Questions about release-resonite

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I publish a new ResoniteIO release to PyPI and GitHub?

Bump the version in the csproj, pyproject.toml, and CHANGELOG.md to the same value, run uv lock and just run, then push a vX.Y.Z tag from a release branch. The tag triggers publish.yml, which builds the mod zip and publishes to PyPI and GitHub Releases.

How do I create a prerelease version like rc1 for a .NET and Python project?

Set the version to a hyphenated form like 0.1.0-rc1 in all three version locations and push tag v0.1.0-rc1. The github-release job detects the rc suffix and marks the GitHub Release as a prerelease, while PyPI accepts it natively.

Why does the publish build job fail with a version-guard mismatch?

The tag version, csproj Version, and pyproject.toml version must match exactly, and uv lock must be rerun after bumping. Delete the bad remote tag with git push origin :refs/tags/vX.Y.Z, fix the versions, and push the tag again.

Why is my GitHub Release note showing generic text instead of the changelog?

The changelog heading was escaped by mdformat because the version lacks a link reference definition at the bottom of CHANGELOG.md. Add [X.Y.Z]: url and update the unreleased compare link so the extraction regex matches the heading.

Can I publish the ResoniteIO mod to Thunderstore with tcli?

Thunderstore upload is currently suspended due to package approval and layout issues, so distribution happens only through GitHub Releases. The publish-thunderstore job remains commented out for future reactivation with a TCLI_AUTH_TOKEN secret.

What causes the renderer prebuilt drift guard failure in CI?

The Renderer source was changed without regenerating the committed prebuilt DLLs, which cannot be rebuilt in CI because UnityEngine.CoreModule is not redistributable. Run just renderer-prebuild locally on a machine with Resonite installed and commit the mod/prebuilt changes.