agentleFS
korniakornia/kornia-rs/.claude/skills/release/SKILL.md

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
  1. Distinctive:

    Before publishing wheels, confirm the GPU story:

    line 17
  2. Very specific:

    Verify on a GPU box before announcing: bench_cuda_warp_affine --features gpu-cuda (Rust) and import kornia_rs.

    line 27
  3. Distinctive:

    Create one todo per step.

    line 48
  4. Very specific:

    Add/refresh the compare link at the bottom referencing the previous release tag: [X.Y.Z]: …

    line 62
  5. Distinctive:

    No compare link / wrong previous tag → changelog history breaks.

    line 105

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 cuda feature uses cudarc dynamic loading — a --features cuda wheel still imports on machines without CUDA and should fall back to CPU; the GPU path activates at runtime when libcuda + libnvrtc are 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) and nvrtc (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) and import kornia_rs; kornia_rs.cuda... (Python).

Facts about this repo

  • Workspace version: single source in root Cargo.toml (version = "...", all crates inherit via version.workspace = true).
  • Publish script: scripts/release_rust.sh — topological, idempotent, skips already-published versions. The publish set is its PUBLISH_ORDER / NOT_PUBLISHED arrays; --check fails if a publishable crate is in neither.
  • CI publish: .github/workflows/rust_release.yml (workflow_dispatch, guarded by typing publish) and .github/workflows/python_release.yml (wheels).
  • Wheel build matrix lives in .github/workflows/python_wheels.yml, shared by Python Release and Python Release Validation (builds + smoke-tests, never publishes). Change the build only there.
  • Tag convention: vX.Y.Z, pre-releases vX.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.

  1. 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.
  2. 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.
  3. Update CHANGELOG.md from the fragments in changelog.d/:
    • pixi run changelog-preview, curate the fragments (merge duplicates, fix wording) in the release PR, then python3 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 the no-changelog label.
    • 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.
  4. Bump version in root Cargo.toml — BOTH places: workspace.package.version AND every kornia-* pin in [workspace.dependencies] (one per kornia-* crate; Cargo cannot inherit those, and locally path wins 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.toml covers both; python3 scripts/check_version_pins.py (also a pre-commit hook on Cargo.toml) verifies. Then cargo check so Cargo.lock reflects 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 (run cargo check -p kornia-cpp if doing by-hand CMake builds); kornia-py needs nothing (workspace-inherited version, pyproject dynamic).
  5. Release branch + PR: release/vX.Y.Z, commit chore(release): vX.Y.Z with 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.
  6. Tag the merged commit vX.Y.Z and push the tag.
  7. Validate before publishing (blocking, no exceptions):
    • Python: dispatch Python Release Validation on 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=full then gh 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 in full. Any red job = do not publish.
    • Rust: scripts/release_rust.sh --check and 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.
  8. Publish (only after validation is green AND the human types the go-ahead):
    • Rust: run rust_release.yml (workflow_dispatch, confirm field publish), or locally scripts/release_rust.sh (plan) → --execute.
    • Python: run python_release.yml.
  9. GitHub release: gh release create vX.Y.Z (add --prerelease for rc) with the body copied from the new CHANGELOG section.
  10. 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.yml without a green FULL Python Release Validation run on the same ref → stop; a failed matrix job mid-publish leaves PyPI with a partial release.

Download now (ZIP)

  • Other versions194 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 194

    1. paperclipai/paperclip★ 110ksame name
    2. modelcontextprotocol/servers★ 92ksame name
    3. remotion-dev/remotion★ 70ksame name
    4. traefik/traefik★ 65ksame name
    5. usememos/memos★ 64ksame name
    6. tw93/Pake★ 63ksame name
    7. Yeachan-Heo/oh-my-claude-sisyphus★ 40ksame name
    8. Yeachan-Heo/oh-my-claudecode★ 40ksame name
    9. tobi/qmd★ 30ksame name
    10. 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.
    • MicrosoftSkill

      create-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

    • GrinvSkill

      changelog-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

    • GrinvSkill

      docs-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

    • MicrosoftSkill

      pr-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 AzureSkill

      documentation-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

    • parcadeiSkill

      agent-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.

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.