release
Skill748 starsChanged 7 days agoApache-2.0View on GitHub
Use when cutting a kornia-rs release or pre-release (rc) — bumps the workspace version, updates CHANGELOG.md (moving [Unreleased] into a dated section and referencing the previous release), opens the release PR, and triggers the crates.io / wheel publish workflows. Trigger on "cut a release", "prepare a release", "pre-release", "publish to crates.io", "bump version".
- Installs packages
- Commits and pushes
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 184 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Before publishing wheels, confirm the GPU story:
- Very specific: line 27
Verify on a GPU box before announcing: bench_cuda_warp_affine --features gpu-cuda (Rust) and import kornia_rs.
- Distinctive: line 48
Create one todo per step.
- Very specific: line 62
Add/refresh the compare link at the bottom referencing the previous release tag: [X.Y.Z]: …
- Distinctive: line 105
No compare link / wrong previous tag → changelog history breaks.
“Common” is measured: kept by at least 6 in 10 of the 184 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Releasing kornia-rs
Publishing is irreversible (crates.io only yanks, never deletes). Never run the publish step without explicit human confirmation of version + scope.
CUDA — always in scope (unless the human opts out)
Every release must include the CUDA/GPU path. The linux wheels in
python_wheels.yml build with --features cuda; keep it that way. Do NOT ship
a release calling out GPU features from a wheel that lacks them.
Before publishing wheels, confirm the GPU story:
- kornia-py's
cudafeature uses cudarc dynamic loading — a--features cudawheel still imports on machines without CUDA and should fall back to CPU; the GPU path activates at runtime whenlibcuda+libnvrtcare present. So a single cuda-built wheel is the goal (universal), not a separate variant. - The validation smoke test (below) checks the linux wheels import with no CUDA
present and that
kornia_rs.cuda.is_available()returns False there. - Runtime requirements to put in the release notes: NVIDIA driver (
libcuda.so) andnvrtc(kernels are JIT-compiled), matching arch (x86_64 / aarch64 / Jetson Tegra). Without nvrtc the GPU path can't compile kernels. - Verify on a GPU box before announcing:
bench_cuda_warp_affine --features gpu-cuda(Rust) andimport kornia_rs; kornia_rs.cuda...(Python).
Facts about this repo
- Workspace version: single source in root
Cargo.toml(version = "...", all crates inherit viaversion.workspace = true). - Publish script:
scripts/release_rust.sh— topological, idempotent, skips already-published versions. The publish set is itsPUBLISH_ORDER/NOT_PUBLISHEDarrays;--checkfails if a publishable crate is in neither. - CI publish:
.github/workflows/rust_release.yml(workflow_dispatch, guarded by typingpublish) and.github/workflows/python_release.yml(wheels). - Wheel build matrix lives in
.github/workflows/python_wheels.yml, shared byPython ReleaseandPython Release Validation(builds + smoke-tests, never publishes). Change the build only there. - Tag convention:
vX.Y.Z, pre-releasesvX.Y.Z-rc.N. - User-facing notes live in
CHANGELOG.md(newest first) AND the GitHub release body. Keep them consistent.
Checklist
Create one todo per step.
- Confirm with the human (blocking): version string, whether it is an rc, and scope (Rust crates / Python wheels / both). Do not proceed on a guess.
- Gather what changed.
git log <last-tag>..main --oneline --no-merges. Group by theme (not per-commit). Read the previous CHANGELOG.md entries first to match tone and altitude — user-impact prose, not a commit dump. - Update
CHANGELOG.mdfrom the fragments inchangelog.d/:pixi run changelog-preview, curate the fragments (merge duplicates, fix wording) in the release PR, thenpython3 scripts/changelog.py build --version X.Y.Z --date YYYY-MM-DD(rc:--version "X.Y.Z-rc.N"and add(pre-release)to the heading). It moves[Unreleased]into the dated section, resets it and deletes the fragments. The release PR carries theno-changeloglabel.- Add/refresh the compare link at the bottom referencing the previous
release tag:
[X.Y.Z]: https://github.com/kornia/kornia-rs/compare/<prev-tag>...vX.Y.Z. This is what keeps the changelog navigable across releases. - Dates: ask the human or read from the environment; never invent one.
- Bump version in root
Cargo.toml— BOTH places:workspace.package.versionAND every kornia-* pin in[workspace.dependencies](one per kornia-* crate; Cargo cannot inherit those, and locallypathwins so a stale pin builds fine and only ships a wrong requirement at publish — this bit the rc.5 cut).sed -i 's/version = "<old>"/version = "<new>"/g' Cargo.tomlcovers both;python3 scripts/check_version_pins.py(also a pre-commit hook on Cargo.toml) verifies. Thencargo checksoCargo.lockreflects the bump. Sanity: the release commit's Cargo.toml diff should touch every kornia-* pin plus the workspace version, not 1 — compare against the previous release commit's diff shape. kornia-cpp/version.hpp is gitignored + regenerated by build.rs (runcargo check -p kornia-cppif doing by-hand CMake builds); kornia-py needs nothing (workspace-inherited version, pyproject dynamic). - Release branch + PR:
release/vX.Y.Z, commitchore(release): vX.Y.Zwith the version bump + CHANGELOG. Open PR, let CI pass, get it merged. Never force-push a contributor's fork branch — release commits go on a repo branch. - Tag the merged commit
vX.Y.Zand push the tag. - Validate before publishing (blocking, no exceptions):
- Python: dispatch
Python Release Validationon the tag with the FULL matrix and wait for every job to pass:gh workflow run python_release_validate.yml -R kornia/kornia-rs --ref vX.Y.Z -f subset=fullthengh run watch.minimal(py3.12 only) is NOT enough for a release: free-threaded (3.13t/3.14t), py3.8 and cross-built wheels only build infull. Any red job = do not publish. - Rust:
scripts/release_rust.sh --checkand the plan run (no--execute) must list exactly the crates/versions expected. - Report the validation run URL to the human with the go-ahead request.
- Python: dispatch
- Publish (only after validation is green AND the human types the go-ahead):
- Rust: run
rust_release.yml(workflow_dispatch, confirm fieldpublish), or locallyscripts/release_rust.sh(plan) →--execute. - Python: run
python_release.yml.
- Rust: run
- GitHub release:
gh release create vX.Y.Z(add--prereleasefor rc) with the body copied from the new CHANGELOG section. - Verify: crate versions on crates.io,
pip install --pre kornia-rs==X.Y.Z, release marked pre-release if rc.
Red flags
- "Just publish real quick" → stop, run the checklist; publish is irreversible.
- CHANGELOG untouched → a release without a changelog entry is incomplete.
- No compare link / wrong previous tag → changelog history breaks.
- Pushing to a fork branch → release work belongs on a repo
release/*branch. - Dispatching
python_release.ymlwithout a green FULLPython Release Validationrun on the same ref → stop; a failed matrix job mid-publish leaves PyPI with a partial release.
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 194
- paperclipai/paperclip★ 110ksame name
- modelcontextprotocol/servers★ 92ksame name
- remotion-dev/remotion★ 70ksame name
- traefik/traefik★ 65ksame name
- usememos/memos★ 64ksame name
- tw93/Pake★ 63ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 40ksame name
- Yeachan-Heo/oh-my-claudecode★ 40ksame name
- tobi/qmd★ 30ksame name
- jlowin/fastmcp★ 28ksame name
184 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use create-agent-adapter, changelog-style and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MicrosoftSkillcreate-agent-adapter
Technical guide for creating a new Paperclip agent adapter. Use when building a new adapter package, adding support for a new AI coding tool (e.g. a new CLI agent, API-based agent, or custom process), or when modifying the adapter system. Covers the required interfaces, module structure, registration points, and conventions derived from the existing claude-local and codex-local adapters.
Also in 5 projects that use this
GrinvSkillchangelog-style
Turn a commit range into CHANGELOG.md entries following common-changelog style. Use when finishing a PR or cutting a release, to write/fix the [Unreleased] section's entries — moving [Unreleased] under a new dated version heading is a separate, automated step (see the release skill / scripts/sync-version.ts), not this skill's job.
Also in 4 projects that use this
GrinvSkilldocs-consistency-check
Check README/manifest.json/server.json/CHANGELOG.md/AGENTS.md and docs/*.md for drift against the actual registered tools and source. Use after adding, renaming, or removing a tool, or as part of a live-audit pass.
Also in 4 projects that use this
MicrosoftSkillpr-report
Review a pull request or contribution deeply, explain it tutorial-style for a maintainer, and produce a polished report artifact such as HTML or Markdown. Use when asked to analyze a PR, explain a contributor's design decisions, compare it with similar systems, or prepare a merge recommendation.
Also in 5 projects that use this
Microsoft AzureSkilldocumentation-consistency
Keeps GPT-RAG MCP service and umbrella documentation aligned with shipped behavior. Use for capabilities, configuration keys, deployment steps, endpoints, defaults, operations, or breaking changes.
Also in 6 projects that use this
parcadeiSkillagent-context-isolation
Agent Context Isolation
Also in 3 projects that use this
- +3 more from Grinv
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- kornia-api-flavorSkill
- kornia-archSkill
- kornia-bindingsSkill
- kornia-code-reviewSkill
- kornia-coding-styleSkill
- kornia-curationSkill
- kornia-simdSkill
- kornia-workflowSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

