Cutting A Release
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
Tag-namespaced release workflow for the Rocky monorepo. An agent skill from rocky-data/rocky.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add rocky-data/rocky --skill rocky-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rocky-data/rocky rocky-release --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/rocky-data/rocky.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/rocky-release .claude/skills/rocky-release && 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 "rocky-release" agent skill from https://github.com/rocky-data/rocky/tree/main/.agents/skills/rocky-release into .claude/skills/rocky-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rocky-release", 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/rocky-data/rocky/tree/main/.agents/skills/rocky-releaseType 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 rocky-data/rocky --skill rocky-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rocky-data/rocky rocky-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rocky-data/rocky.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/rocky-release .agents/skills/rocky-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rocky-release" agent skill from https://github.com/rocky-data/rocky/tree/main/.agents/skills/rocky-release into .agents/skills/rocky-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rocky-release", 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 rocky-data/rocky --skill rocky-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rocky-data/rocky rocky-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rocky-data/rocky.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/rocky-release .cursor/skills/rocky-release && 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 "rocky-release" agent skill from https://github.com/rocky-data/rocky/tree/main/.agents/skills/rocky-release into .cursor/skills/rocky-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rocky-release", 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/rocky-data/rocky.git --path .agents/skills/rocky-release--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 rocky-data/rocky --skill rocky-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rocky-data/rocky rocky-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rocky-data/rocky.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/rocky-release .gemini/skills/rocky-release && 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 "rocky-release" agent skill from https://github.com/rocky-data/rocky/tree/main/.agents/skills/rocky-release into .gemini/skills/rocky-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rocky-release", 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 rocky-data/rocky rocky-releaseInstalls 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 rocky-data/rocky --skill rocky-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rocky-data/rocky.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/rocky-release .github/skills/rocky-release && 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 "rocky-release" agent skill from https://github.com/rocky-data/rocky/tree/main/.agents/skills/rocky-release into .github/skills/rocky-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rocky-release", 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 rocky-data/rocky --skill rocky-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rocky-data/rocky rocky-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rocky-data/rocky.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/rocky-release .opencode/skills/rocky-release && 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 "rocky-release" agent skill from https://github.com/rocky-data/rocky/tree/main/.agents/skills/rocky-release into .opencode/skills/rocky-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rocky-release", 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.
rocky-releaseTag-namespaced release workflow for the Rocky monorepo. An agent skill from rocky-data/rocky.
Rocky Release is an agent skill from rocky-data/rocky. Tag-namespaced release workflow for the Rocky monorepo. All four artifacts (engine, rocky-sdk, dagster-rocky, vscode) are CI-driven — land a release PR with the version bump + CHANGELOG, tag the merged commit, push the tag, and the matching release workflow handles everything. Use when cutting any Rocky release.
Its SKILL.md is about 4.1k 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 Development, covering Monorepo tooling and Changelog and release notes. It works with Dagster, Visual Studio Code and GitHub. The repository describes itself as: A SQL transformation engine that type-checks your whole pipeline and catches breaking changes before they run — branches, replay, column-level lineage, compile-time contracts… The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9c3d777. 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:
justghgitcargouvnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, git, uv and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
UV_PUBLISH_TOKENNPM_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Rocky Release loads about 4.1k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 1,885 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 patterns that need a careful read before installing.
# + PyPI via UV_PUBLISH_TOKEN or ~/.pypircpublish` needs `UV_PUBLISH_TOKEN` or `~/.pypirc` |publish` needs `UV_PUBLISH_TOKEN` or `~/.pypirc` |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 rocky-data/rocky at commit 9c3d777, republished under its Apache-2.0 licence (© rocky-data). 1,885 words, ~4,074 tokens.
.claude/skills/rocky-release/SKILL.md (or your agent's skills folder).Four artifacts ship independently from one monorepo, each with its own tag namespace:
| Artifact | Tag | Destination | Build path |
|---|---|---|---|
Engine binaries (rocky + rocky-lsp) | engine-v<version> | GitHub Release (5 targets x 2 binaries = 10 archives) | CI — engine-release.yml |
rocky-sdk wheel | sdk-v<version> | GitHub Release + PyPI | CI — sdk-release.yml (OIDC → PyPI) |
dagster-rocky wheel | dagster-v<version> | GitHub Release + PyPI | CI — dagster-release.yml (OIDC → PyPI) |
| Rocky VS Code extension | vscode-v<version> | GitHub Release + VS Code Marketplace | CI — vscode-release.yml (VSCE_PAT secret → Marketplace) |
Never tag a release as bare v0.1.0 — the tag namespace is how engine/install.sh, engine/install.ps1, and downstream consumers filter for their artifact.
*-release.yml logs. A failed run leaves the GitHub Release as a draft; re-run the failed job. If a sdk/dagster/vscode job failed after its registry upload, the re-run fails on the duplicate upload: attach the artifacts with gh release upload and publish with gh release edit <tag> --draft=false --latest=false by hand.All four artifacts follow the same pattern:
engine-v*, sdk-v*, dagster-v*, vscode-v*).*-release.yml workflow.The workflow handles the GitHub Release creation, build, and (for dagster/vscode) the publish to the external registry.
scripts/release.sh + the just release-engine|sdk|dagster|vscode recipes survive as local-build fallbacks when CI is unavailable. The local path creates the GH Release as a draft with its artifacts attached. The tag push's CI run accepts that draft and publishes it. ensure-release refuses a release that is already published, so CI never attaches to, or re-publishes, a live release.
Every release is a draft until its last step — all five workflows and every local path. No path publishes a GitHub Release before every artifact it lists exists and the registry upload (PyPI, Marketplace, npm) has succeeded. A failed run leaves a draft, which the public release list omits. Re-run the failed job; the draft is the intended leftover, not a bug.
# 1. Bump versions + changelog in a PR, merge to main (see "Pre-flight" below).
# 2. From main at the commit you want to release:
git tag -a engine-v0.2.0 -m "Release engine-v0.2.0"
git push origin engine-v0.2.0That's it. The tag push triggers engine-release.yml, which:
ensure-release — creates the engine-v0.2.0 GitHub Release if missing, as a draft (--generate-notes --draft). An existing draft (the local fallback) is used as it is. An existing published release stops the run.build matrix — runs on macos-14, ubuntu-24.04, and windows-2022 across 5 targets. Each target produces two archives, one per binary: rocky-<target>.tar.gz and rocky-lsp-<target>.tar.gz (.zip on Windows). 10 archives in total, not 5.checksums — generates checksums.txt (not SHA256SUMS) from every platform archive and uploads it alongside them.publish — flips the release out of draft, once and only once every artifact is attached.The draft-until-complete ordering is load-bearing, not cosmetic: install.sh resolves "latest" by listing /releases and taking the highest engine-v* tag, and draft releases are omitted from that listing. Publishing up front would make the tag resolvable for the 15–25 min the matrix is still building, so a concurrent install.sh — a user's, or another PR's smoke job — would resolve a version whose binaries do not exist yet.
Total elapsed: ~15–25 min. Watch with:
gh run watch $(gh run list --workflow=engine-release.yml --limit=1 --json databaseId --jq '.[0].databaseId')After the run, verify:
gh release view engine-v0.2.0 --repo rocky-data/rocky shows 11 assets: 10 platform archives (rocky-* and rocky-lsp-*, one pair per target) + checksums.txtengine/install.sh and engine/install.ps1 resolve the new version (they filter releases by the engine-v* prefix)When GitHub Actions credits are exhausted or the CI matrix is broken, scripts/release.sh (exposed as just release-engine <version>) builds on your laptop:
just release-engine 0.2.0
# or:
./scripts/release.sh engine 0.2.0This builds macOS locally (cargo --release), cross-builds Linux via cargo-zigbuild or Docker (scripts/build_rocky_linux.sh), pushes the tag, then creates the GitHub Release as a draft (--generate-notes --draft) with the macOS + Linux tarballs. The tag push still triggers engine-release.yml: if CI is healthy it rebuilds everything, overwrites the local uploads, adds checksums.txt, and publishes the draft. If CI is broken, the draft stays a draft. Publish it by hand with gh release edit engine-v0.2.0 --repo rocky-data/rocky --draft=false --latest, knowing that install.sh will still fail on it: the local path builds neither checksums.txt nor the rocky-lsp archives.
Only reach for this when CI is genuinely unavailable. It's slower, riskier, and produces artifacts signed by your laptop instead of the GitHub runner.
# 1. Bump sdk/python/pyproject.toml + sdk/python/CHANGELOG.md in a PR, merge to main.
# 2. Tag the merged commit and push:
git tag -a sdk-v0.2.0 -m "Release sdk-v0.2.0"
git push origin sdk-v0.2.0The tag push triggers sdk-release.yml, which:
ensure-release — creates the sdk-v0.2.0 GitHub Release if missing, as a draft (--draft --latest=false). An existing draft (the local fallback) is used as it is. An existing published release stops the run.publish-pypi — uv build, publish via pypa/gh-action-pypi-publish using OIDC (trusted publisher; no token in repo secrets), attach dist/* to the GH Release (wheel, sdist, and the two .publish.attestation files the publish step writes), then publish the release (gh release edit --draft=false --latest=false) as the last step.Ordering rule: release rocky-sdk before any dagster-rocky release that raises its rocky-sdk>=… floor — the published dagster wheel resolves the SDK from PyPI, not the monorepo path source.
just release-sdk 0.2.0 # GH release only
just release-sdk 0.2.0 --publish # + PyPI# 1. Bump pyproject.toml + CHANGELOG in a PR, merge to main.
# 2. Tag the merged commit and push:
git tag -a dagster-v0.4.0 -m "Release dagster-v0.4.0"
git push origin dagster-v0.4.0The tag push triggers dagster-release.yml, which:
ensure-release — creates the dagster-v0.4.0 GitHub Release if missing, as a draft (--draft --latest=false). An existing draft (the local fallback) is used as it is. An existing published release stops the run.publish-pypi — uv build, publish via pypa/gh-action-pypi-publish using OIDC (trusted publisher; no token in repo secrets), attach dist/* to the GH Release (wheel, sdist, and the two .publish.attestation files), then publish the release (gh release edit --draft=false --latest=false) as the last step.just release-dagster 0.4.0 # GH release only
just release-dagster 0.4.0 --publish # + PyPI via UV_PUBLISH_TOKEN or ~/.pypircWithout --publish, the local path creates a draft and the tag push's CI run publishes it after the PyPI upload. With --publish, PyPI already has the wheel, so the script creates the draft, attaches the artifacts, and then publishes it in a separate step; the tag push's CI run then stops at ensure-release (already published). That red run is expected. Only reach for this when the CI workflow itself is broken.
# 1. Bump package.json + CHANGELOG in a PR, merge to main.
# 2. Tag the merged commit and push:
git tag -a vscode-v0.3.0 -m "Release vscode-v0.3.0"
git push origin vscode-v0.3.0The tag push triggers vscode-release.yml, which:
ensure-release — creates the vscode-v0.3.0 GitHub Release if missing, as a draft (--draft --latest=false). An existing draft (the local fallback) is used as it is. An existing published release stops the run.build — npx vsce package produces the VSIX and attaches it with gh release upload; vsce publish pushes to the VS Code Marketplace using the VSCE_PAT repo secret; then the release is published (gh release edit --draft=false --latest=false) as the last step. In rocky-data/rocky an unset VSCE_PAT fails the run and the release stays a draft. A fork without the secret skips the Marketplace step.just release-vscode 0.3.0 # GH release only
just release-vscode 0.3.0 --publish # + Marketplace via local VSCE_PAT| Artifact | Default path (CI) | Local fallback |
|---|---|---|
| Engine | git + gh CLI | plus cargo, cargo-zigbuild + zig (or Docker) for local Linux cross-compile |
| SDK | git + gh CLI; PyPI OIDC trusted-publisher configured on the project | uv + gh; --publish needs UV_PUBLISH_TOKEN or ~/.pypirc |
| Dagster | git + gh CLI; PyPI OIDC trusted-publisher configured on the project | uv + gh; --publish needs UV_PUBLISH_TOKEN or ~/.pypirc |
| VS Code | git + gh CLI; VSCE_PAT configured as a repo secret | npm, npx + gh; --publish needs VSCE_PAT in the shell environment |
gh must be authenticated against rocky-data/rocky with release-write permission for all paths.
Runs before any release:
# 1. Everything builds + tests
just build
just test
just lint
# 2. Codegen is clean (no drift)
just codegen
git status # should show no diff
# 3. Changelog updated
# For engine releases: engine/CHANGELOG.md
# For sdk: sdk/python/CHANGELOG.md
# For dagster: integrations/dagster/CHANGELOG.md
# For vscode: editors/vscode/CHANGELOG.md
# 4. Version numbers bumped
# engine: every engine/crates/*/Cargo.toml + engine/rocky/Cargo.toml + engine/rocky-lsp/Cargo.toml (~25 files)
# sdk: sdk/python/pyproject.toml
# dagster: integrations/dagster/pyproject.toml
# vscode: editors/vscode/package.jsonRocky uses a single "release" commit per artifact that bumps the version file + updates the changelog. Land it as a PR to main, not a direct push:
chore(engine): release 0.2.0
chore(sdk): release 0.2.0
chore(dagster): release 0.4.0
chore(vscode): release 0.3.0For engine releases, the PR touches ~25 Cargo.toml files — one per crate (including rocky-bigquery), plus engine/rocky/Cargo.toml and engine/rocky-lsp/Cargo.toml. All crates version in lockstep.
Neither CI (engine-release.yml) nor scripts/release.sh bump versions for you — that's a manual step before the tag. scripts/release.sh WILL refuse to proceed if the tag already exists (confirm_tag() in release.sh); engine-release.yml won't, but its ensure-release job attaches only to an existing draft and refuses a release that is already published.
v0.2.0 instead of engine-v0.2.0. The install scripts filter by prefix; a bare tag is invisible to them.git log -1 before tagging — the tag captures HEAD, not main.engine/crates/* must bump. Grep for the old version before pushing the release PR: grep -rn '^version = "1.2.0"$' engine --include="Cargo.toml" should return zero after the bump.rocky-mcp bump specifically: rocky mcp announces its own crate version to every MCP client as serverInfo.version, so a missed bump makes the server claim an older Rocky than rocky --version prints. engine/rocky/tests/mcp_server_identity.rs fails the build when the two disagree, which the grep above cannot do (it looks for the OLD version, so a crate that already fell behind is invisible to it).rocky-mcp's served_text.golden pins the initialize payload, which carries the version. Expect exactly two rows to change, default/initialize and worker/initialize, and re-bless with ROCKY_BLESS_MCP_SERVED_TEXT=1 cargo test -p rocky-mcp --test roundtrip. Any OTHER row moving in the same diff is a real change to the served text: read it before blessing.just codegen produced a diff that wasn't committed — codegen-drift.yml CI retroactively fails.scripts/build_rocky_linux.sh silently falls back to zigbuild which has its own issues with ring on newer Rust. The --docker flag forces the Docker path.Path-filtered workflows in .github/workflows/:
engine-ci.yml — test + clippy + fmt on every PR touching engine/**engine-weekly.yml — coverage (tarpaulin) + cargo-audit, Monday schedule + manual dispatchengine-bench.yml — only PRs labeled perf touching engine/crates/** or engine/Cargo.*engine-release.yml — full 5-target matrix build on tag engine-v* push. Owns the GitHub Release creation + binary uploads + checksums.txt.sdk-release.yml / dagster-release.yml / vscode-release.yml — tag-triggered (sdk-v* / dagster-v* / vscode-v*) release + publishengine-wasm-release.yml — builds rocky-wasm and publishes to npm on engine-wasm-v* tags (independent of CLI releases). Same draft-until-last-step shape as the other four; an unset NPM_TOKEN fails the run here and stays a no-op on a forkengine-docs.yml — build + deploy Astro docs from docs/ to GitHub Pagescodegen-drift.yml — fails any PR where committed bindings drift from just codegen outputgh release view <tag> shows all expected artifacts (11 for engine: 10 archives + checksums.txt; 4 for sdk and 4 for dagster: wheel, sdist and one .publish.attestation for each, uploaded by the PyPI trusted-publisher step; 1 for vscode) and gh release view <tag> --json isDraft is falseengine/install.sh or install.ps1) resolves and installs the new version on a clean machinePATH, run ./cli-recording/record-ui-screenshots.sh --publish and look at each image before committing. Skip it when the release changed nothing the UI shows. The images in docs/public/ must show a binary a reader can install, so they are recaptured from the tagged build, never from main.docs/src/content/docs/guides/browser-ui.md carries one such line under the tour GIF: it tells a reader the screenshots show the current release and names what arrives in the next one. Once the tag ships that change, the line is false. Delete it, or point it at whatever is now next.main (it merged with the release PR, but double-check)© rocky-data, 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 .agents/skills/rocky-release of rocky-data/rocky.
Open the folder on GitHubat commit 9c3d777
Rocky Release 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 |
|---|---|---|---|---|---|---|
| Rocky Release this skillrocky-data/rocky | 304 | — | ~4.1k | Automated safety check: Warn | Apache-2.0 | |
| Cutting A ReleaseTriliumNext/Trilium | 38k | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| Release Roslynatordotnet/roslynator | 3.5k | — | ~1k | Automated safety check: Pass | Custom licence | |
| Releasesignageos/vscode-sops | 122 | — | ~2.2k | Automated safety check: Notes | MIT | |
| Releasequerylenshq/ef-querylens | 225 | — | ~887 | Automated safety check: Pass | MIT | |
| Automate npm Releasejd-solanki/slidev-theme-dracula | 161 | — | ~626 | Automated safety check: Pass | None |
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
dotnet/roslynator
A skill your agent uses when shipping a roslynator release, rolling CHANGELOG.md [Unreleased], updating the VS Code extension changelog, creating a GitHub v release, or optionally tagging cli-v.
signageos/vscode-sops
Releases the vscode-sops extension end-to-end: determines the next version from the bump history, updates CHANGELOG.md and package.json/package-lock.json, builds via vscode:prepublish, publishes to…
querylenshq/ef-querylens
A skill your agent uses when: creating a release, publishing a version, cutting a release, tagging a release, releasing plugin, release workflow, prepare release, create git tag, create GitHub…
jd-solanki/slidev-theme-dracula
Automate npm package publishing via GitHub Actions for single-package repos and independent monorepo packages, including bumpp version tags, GitHub release notes, trusted publishing, provenance, and…
github/awesome-copilot
Generate tailored AI agent instruction files via AgentRC instructions command.
rocky-data/rocky
Fivetran REST API reference for Rocky's source adapter. An agent skill from rocky-data/rocky.
rocky-data/rocky
Databricks REST API and SQL reference for Rocky's warehouse adapter.
rocky-data/rocky
Rocky CLI JSON-output schema cascade. An agent skill from rocky-data/rocky.
rocky-data/rocky
Top-level router for Rocky development tasks. An agent skill from rocky-data/rocky.
rocky-data/rocky
Rocky DSL (.rocky file) cross-subproject cascade. An agent skill from rocky-data/rocky.
rocky-data/rocky
Adding a new warehouse or source adapter crate to the Rocky engine.
Works with
Categories
Tag-namespaced release workflow for the Rocky monorepo. An agent skill from rocky-data/rocky. Rocky Release is an agent skill from rocky-data/rocky. Tag-namespaced release workflow for the Rocky monorepo.
Rocky Release fits situations like: cutting any Rocky release; tasks that involve Monorepo tooling; tasks that involve Changelog and release notes.
Run `npx skills add rocky-data/rocky --skill rocky-release -a claude-code`. Or copy the skill folder (.agents/skills/rocky-release in rocky-data/rocky) into .claude/skills/rocky-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rocky-data/rocky --skill rocky-release -a codex`. Or copy the skill folder (.agents/skills/rocky-release in rocky-data/rocky) into .agents/skills/rocky-release 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 rocky-data/rocky --skill rocky-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rocky-release, .gemini/skills/rocky-release, .github/skills/rocky-release and .opencode/skills/rocky-release in your project.
Going by SKILL.md and its folder, Rocky Release needs the command-line tools its instructions call (just, gh, git, cargo, uv and npx) and credentials named UV_PUBLISH_TOKEN and NPM_TOKEN. Our summary lists: Node.js; Docker; A credential in UV_PUBLISH_TOKEN.
SKILL.md contains no URLs. Its commands use gh, git, uv and npx, 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 flagged 3 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.
Rocky Release 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 4.1k tokens (SKILL.md is roughly 16k 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 Rocky Release: Cutting A Release (TriliumNext/Trilium, 38k stars), Release Roslynator (dotnet/roslynator, 3.5k stars), Release (signageos/vscode-sops, 122 stars) and Release (querylenshq/ef-querylens, 225 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rocky-data (a GitHub organization) maintains it in rocky-data/rocky, which has 304 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 9, 2026.
Source: rocky-data/rocky on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.