Agent skill

Fory Release

by apache in apache/fory

Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email.

Apache-2.0Auto-check passed

Install Fory Release

skills CLI
$ npx skills add apache/fory --skill fory-release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install apache/fory fory-release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/apache/fory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fory-release .claude/skills/fory-release && rm -rf skills-src

Use ~/.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/

Facts

Skill name
fory-release
GitHub stars
4.6k
Token cost
~2.9k tokens
SKILL.md length
1,176 words
Files
5 (incl. scripts, references, assets)
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email.

  • Works in 9 steps: Create a clean release branch → Bump the version → Commit the release version → …
  • Rerunning a Fory release candidate
  • SKILL.md covers Required Inputs, Release Workflow, Release retries and Stop Conditions, plus 1 more section
  • Runs Python scripts from its folder; calls git, python3 and gh; reaches dist.apache.org

What it does

Fory Release is an agent skill from apache/fory. Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email. Use when creating or rerunning a Fory release candidate.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts, reference files and assets (for example `references/nexus-staging.md`, `scripts/check_tag_workflows.py` and `scripts/find_discussion.py`).

It works with C++, Go, Java and JavaScript. The repository describes itself as: A blazingly fast multi-language serialization framework for idiomatic domain objects, schema IDL, and cross-language data exchange. The licence is Apache-2.0.

When your agent uses it

  • Rerunning a Fory release candidate

Example prompts

  • “/fory-release”

Requirements

  • Python 3

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Create a clean release branch
  2. Bump the version
  3. Commit the release version
  4. Create and push the RC tag
  5. Publish JVM artifacts
  6. Check the tag-triggered workflows
  7. Build the ASF source release
  8. Commit the source release to ASF Subversion
  9. Draft the vote email

What it can do on your machine

Read from SKILL.md and the folder at commit dcf8d24. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • python3
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • dist.apache.org

    Also links to:

    • lists.apache.org
    • fory.apache.org
    • support.sonatype.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fory Release loads about 2.9k tokens when it runs, and up to ~3.6k if it reads all its reference files. Until then it costs about 60 tokens; SKILL.md has 1,176 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.6k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from apache/fory at commit dcf8d24, republished under its Apache-2.0 licence (© apache). 1,176 words, ~2,872 tokens.

Download SKILL.mdSave it as .claude/skills/fory-release/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
fory-release
description
Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email. Use when creating or rerunning a Fory release candidate.

Apache Fory Release

Use the repository release script for the release work. Do not manually reproduce its version-bump, JVM-publication, or source-build logic, and do not add unrelated test runs.

Required Inputs

Collect these values before starting:

  • release_version: final version without v or an RC suffix, such as 1.7.0.
  • rc: RC suffix, such as rc3.
  • previous_version: previous release tag version, such as 1.6.1.
  • Release discussion URL, if already known. If it is not supplied, find the exact release thread in the Fory development-list archive as described below.

Load release-manager details from .local/fory-release.env. If it does not exist, ask for the following values once, create the ignored local file, and continue. Never commit this file.

bash
FORY_RELEASE_MANAGER_NAME="..."
FORY_RELEASE_APACHE_EMAIL="..."
FORY_RELEASE_GPG_FINGERPRINT="..."
FORY_DIST_DEV_WC="..."

Load the cached values and derive the release values:

bash
repo_root="$(git rev-parse --show-toplevel)"
release_config="$repo_root/.local/fory-release.env"
test -f "$release_config"
. "$release_config"

release_branch="releases-${release_version}"
rc_tag="v${release_version}-${rc}"
dist_version="${release_version}"
release_manager_name="${FORY_RELEASE_MANAGER_NAME:?missing release manager name}"
apache_email="${FORY_RELEASE_APACHE_EMAIL:?missing Apache email}"
gpg_fingerprint="${FORY_RELEASE_GPG_FINGERPRINT:?missing GPG fingerprint}"
svn_wc="${FORY_DIST_DEV_WC:?missing ASF Subversion working-copy path}"

Use the same dist_version in Subversion and the vote email.

Find the release discussion

If the release discussion URL was not supplied, search the Fory development-list archive for the exact release version and a [DISCUSS] subject. Use the deterministic helper, which accepts exactly one root discussion thread:

bash
discussion_url="$(
  python3 .agents/skills/fory-release/scripts/find_discussion.py \
    "$release_version"
)"

Open the resulting URL and verify that its subject and body discuss the exact release_version. If the automated search finds zero or multiple roots, use the archive UI to search the same exact version and [DISCUSS]; ask the release manager only if the result remains absent or ambiguous. When a URL is supplied, open and verify it instead of assuming it matches this release.

Release Workflow

1. Create a clean release branch

Run from the repository root. Clean means no staged, modified, or untracked files.

bash
test -z "$(git status --porcelain)"
test "$(git remote get-url apache)" = "git@github.com:apache/fory.git"
git fetch apache main --tags
git switch -c "$release_branch" apache/main
test -z "$(git status --porcelain)"

For a new release branch, stop if the branch already exists or either cleanliness check fails. To resume an existing candidate, follow Release retries instead of recreating its branch or tag. Do not remove or hide user files to make the check pass.

2. Bump the version
bash
python3 ci/release.py bump_version -version "$release_version" -l all
git diff --check
git status --short

Review the version diff. Use this command directly; do not substitute another version-bump workflow.

3. Commit the release version
bash
git add -u
git commit -m "prepare release for ${release_version}"
test -z "$(git status --porcelain)"
release_commit="$(git rev-parse HEAD)"

Stage only the version changes produced by the release script.

4. Create and push the RC tag

Before creating a new RC tag, confirm that neither the local nor remote tag already exists. Never move, delete, or overwrite a published RC tag. Retrying a workflow for its existing tag does not create a new candidate; follow Release retries.

bash
test -z "$(git tag --list "$rc_tag")"
test -z "$(git ls-remote --tags apache "refs/tags/${rc_tag}")"
test "$(git rev-parse HEAD)" = "$release_commit"
git tag "$rc_tag" && git push apache "$rc_tag"
test "$(git rev-parse "${rc_tag}^{commit}")" = "$release_commit"

The tag starts the ecosystem package-release workflows. Do not wait for them here: start JVM publication immediately so the remote workflows and JVM staging run in parallel. If a later step fails, diagnose it using Release retries before deciding whether the candidate needs to change.

5. Publish JVM artifacts
bash
python3 ci/release.py publish_jvm

The command publishes from a temporary worktree at the committed HEAD and removes that worktree afterward. Record the distinct Java/Kotlin and Scala Nexus staging repository IDs from the output:

bash
java_kotlin_staging_id="orgapachefory-..."
scala_staging_id="orgapachefory-..."
test -n "$java_kotlin_staging_id"
test -n "$scala_staging_id"
test "$java_kotlin_staging_id" != "$scala_staging_id"

After recording both IDs, read and follow Nexus staging closure. It contains the credential rules, authenticated state checks, /bulk/close request, HTTP 201 gate, close polling, failure inspection, and anonymous artifact checks. Do not close any repository ID that was not recorded from this publication. Keep both repositories closed during the vote; do not promote them until the vote passes.

6. Check the tag-triggered workflows

After JVM publication and Nexus closure, inspect the workflows that have been running since the tag was pushed. Filter by the tag rather than only by commit SHA so main-branch runs at the same commit are not mixed into the result. By default, wait for every tag-triggered run and require successful conclusions:

bash
python3 .agents/skills/fory-release/scripts/check_tag_workflows.py \
  --repo apache/fory \
  --tag "$rc_tag" \
  --commit "$release_commit" \
  --watch

The helper re-queries by tag after waiting to catch later-created runs. A failed run requires diagnosis, not an automatic RC increment. For a transient failure, rerun only the failed jobs with gh run rerun <run-id> --repo apache/fory --failed, then run the helper again for the same tag and commit.

If the release manager explicitly waives workflow monitoring for a particular RC, run the same command with --allow-incomplete instead of --watch, and record the snapshot IDs, states, and reason. Do not cancel the remote workflows or report incomplete runs as successful.

7. Build the ASF source release

Start from the clean release branch and build the exact RC tag. The build must archive that tag without changing tracked files, creating commits, or moving Git refs. Benchmark-specific attribution belongs in benchmarks/LICENSE, alongside the benchmark sources excluded from the archive; do not rewrite the root LICENSE during packaging.

bash
test -z "$(git status --porcelain)"
before_build="$(git rev-parse HEAD)"
test "$(git rev-parse "${rc_tag}^{commit}")" = "$release_commit"
python3 ci/release.py build -v "$release_version" --rc-tag "$rc_tag"
test "$(git rev-parse HEAD)" = "$before_build"
test -z "$(git status --porcelain)"
test -f "dist/apache-fory-${release_version}-src.tar.gz"
test -f "dist/apache-fory-${release_version}-src.tar.gz.asc"
test -f "dist/apache-fory-${release_version}-src.tar.gz.sha512"
test "$(gzip -dc "dist/apache-fory-${release_version}-src.tar.gz" | git get-tar-commit-id)" = "$release_commit"

The build command verifies the generated PGP signature and SHA-512 checksum. The archive must match a direct git archive of the RC tag, including its embedded commit ID and unmodified root LICENSE.

Show full SKILL.md (427 more words)Show less
8. Commit the source release to ASF Subversion

Use a clean, updated working copy of the ASF development distribution repository.

bash
test -d "$svn_wc/.svn" || svn checkout https://dist.apache.org/repos/dist/dev/fory "$svn_wc"
svn update "$svn_wc"
mkdir -p "$svn_wc/$dist_version"
cp dist/* "$svn_wc/$dist_version/"
svn add --force "$svn_wc/$dist_version"
svn status "$svn_wc/$dist_version"
svn commit "$svn_wc/$dist_version" -m "Prepare Apache Fory ${rc_tag}"
test -z "$(svn status "$svn_wc/$dist_version")"
svn log -l 1 "$svn_wc/$dist_version"
svn ls "https://dist.apache.org/repos/dist/dev/fory/${dist_version}/"

Inspect svn status before committing. The upload is complete only after svn commit returns a revision and the remote svn ls shows the three release files; local A status alone is not an upload.

9. Draft the vote email

Read the vote email template and produce a complete, copyable email. Replace every placeholder from verified output, confirm that no ${...} placeholder remains, use an explicit UTC deadline at least 72 hours after sending, and do not send the email unless requested.

Before sending, verify the tag and commit, all URLs, both closed Maven staging repositories, the remote Subversion files, PGP fingerprint, and UTC deadline against the actual release outputs.

Release retries

An RC identifies the release content under review, not a CI attempt. Inspect the failed step and its logs before deciding how to recover. Network timeouts, dependency-download failures, runner failures, and interrupted status checks do not by themselves invalidate an unchanged candidate.

Without a substantive release change, keep the same release commit and RC tag and resume only the failed or incomplete steps. Preserve verified Maven staging repositories and source artifacts; do not rebuild or republish successful artifacts merely because an unrelated CI job failed. Before retrying a push, upload, Nexus action, or SVN commit, inspect remote state because an interrupted request may already have succeeded. Use the Nexus reference's --verify-only path for repositories that are already closed.

Create a higher RC only when a substantive fix changes the release content, such as source, dependencies, build inputs, or packaging. Commit the actual fix before tagging the replacement; do not create an empty commit or a second RC at the same unchanged release commit just to retry infrastructure. Keep the previous tag immutable and verify the replacement artifacts through the release workflow. An unresolved code or artifact defect still blocks the vote.

Stop Conditions

Before creating a new tag, stop if the Git tree is dirty, the tag already exists, or its target would differ from the release commit. A failed JVM publication, workflow, artifact check, or SVN operation pauses the dependent step until it is diagnosed and recovered under Release retries; failure alone does not require a higher RC. Before sending the vote, require both staging repositories to be closed and public, the Subversion commit to be remotely visible, and the tag workflows to be successful unless the release manager explicitly waived monitoring.

References

© apache, 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

Files

SKILL.md and 4 other files (scripts, references, assets) in .agents/skills/fory-release of apache/fory.

  • SKILL.md
  • assets/vote-email.txt
  • references/nexus-staging.md
  • scripts/check_tag_workflows.py
  • scripts/find_discussion.py

Open the folder on GitHubat commit dcf8d24

Compare with similar skills

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

Fory Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fory Release this skillapache/fory4.6k—~2.9kAutomated safety check: PassApache-2.0
GeomasterLeonChaoX/qinyan-academic-skills9371 repos~2.9kAutomated safety check: PassMIT
GeomasterK-Dense-AI/scientific-agent-skills48k1 repos~2.8kAutomated safety check: PassMIT
Constant-Time Analysistrailofbits/skills7.4k—~3.3kAutomated safety check: NotesCC-BY-SA-4.0
Code TranslationArabelaTso/Skills-4-SE253—~3.1kAutomated safety check: PassApache-2.0
CodeQL Security Scantrailofbits/skills7.4k—~4.6kAutomated safety check: NotesCC-BY-SA-4.0

Similar skills

  • Geomaster

    LeonChaoX/qinyan-academic-skills

    Comprehensive geospatial science skill covering remote sensing, GIS, spatial analysis, machine learning for earth observation, and 30+ scientific domains.

    937 GitHub starsUsed in 1 repo~2.9k tokens
    Data & AnalyticsAuto-check passed
  • Geomaster

    K-Dense-AI/scientific-agent-skills

    Supports geospatial research workflows for remote sensing, vector and raster GIS, spatial statistics, terrain and network analysis, and machine learning for Earth observation.

    48k GitHub starsUsed in 1 repo~2.8k tokens
    Data & AnalyticsAuto-check passed
  • Constant-Time Analysis

    trailofbits/skills

    Official

    Compiles cryptographic code and inspects the assembly or bytecode for variable-time instructions, then triages which flagged operations actually touch secrets.

    7.4k GitHub stars~3.3k tokensUpdated 5 days ago
    SecurityAuto-check: notes
  • Code Translation

    ArabelaTso/Skills-4-SE

    Convert code between programming languages while preserving functionality and semantics.

    253 GitHub stars~3.1k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • CodeQL Security Scan

    trailofbits/skills

    Official

    Scans a codebase for vulnerabilities with CodeQL's data flow and taint tracking in run-all or important-only modes, including data extensions for project-specific sources and sinks.

    7.4k GitHub stars~4.6k tokensUpdated 5 days ago
    SecurityAuto-check: notes
  • Shared reference for naming, function size, complexity and error handling rules that reviewer agents apply across TypeScript, Python, Go, Rust, Java, C# and Swift.

    2k GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed

More from apache/fory

  • Bump Apache Fory release or post-release development versions across Java, Kotlin, Scala, Python, Rust, Go, C++, C, Dart, JavaScript, Swift, integration tests, examples, and source docs.

    4.6k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Run profile-driven bottleneck optimization across Apache Fory implementations (Java, C++, Python/Cython, Go, Rust, Swift, C, JavaScript/TypeScript, Dart, Kotlin, Scala).

    4.6k GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Questions about Fory Release

What does Fory Release do?

Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email. Fory Release is an agent skill from apache/fory. Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email.

When should I use Fory Release?

Fory Release fits situations like: rerunning a Fory release candidate.

How do I install Fory Release in Claude Code?

Run `npx skills add apache/fory --skill fory-release -a claude-code`. Or copy the skill folder (.agents/skills/fory-release in apache/fory) into .claude/skills/fory-release in your project. Claude Code loads it when a task matches its description.

How do I install Fory Release in Codex?

Run `npx skills add apache/fory --skill fory-release -a codex`. Or copy the skill folder (.agents/skills/fory-release in apache/fory) into .agents/skills/fory-release in your project. Codex loads it when a task matches its description.

Can I use Fory Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add apache/fory --skill fory-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/fory-release, .gemini/skills/fory-release, .github/skills/fory-release and .opencode/skills/fory-release in your project.

What does Fory Release need to run?

Going by SKILL.md and its folder, Fory Release needs Python for the scripts in its folder and the command-line tools its instructions call (git, python3 and gh). Our summary lists: Python 3.

Does Fory Release access the network?

SKILL.md names 4 domains. In commands or code: dist.apache.org; the agent is likely to contact it when it follows the instructions. As links in the text: lists.apache.org, fory.apache.org and support.sonatype.com. This is read from the text; nothing was executed.

Is Fory Release safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Fory Release use?

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

How many tokens does Fory Release use?

About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 715 tokens, read only when the agent opens those files.

What are the alternatives to Fory Release?

Skills that share tags, products or a category with Fory Release: Geomaster (LeonChaoX/qinyan-academic-skills, 937 stars), Geomaster (K-Dense-AI/scientific-agent-skills, 48k stars), Constant-Time Analysis (trailofbits/skills, 7.4k stars) and Code Translation (ArabelaTso/Skills-4-SE, 253 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fory Release?

apache (a GitHub organization) maintains it in apache/fory, which has 4,566 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.

Source: apache/fory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.