Automates the complete process of releasing a new version of the openclacky Ruby gem. Supports both stable releases (auto-increment) and pre-release versions (user-specified, e.g., 1.0.0.beta.1). Handles version bumping, testing, building, RubyGems publishing, GitHub Releases, and OSS CDN mirroring.
69
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Automates the complete openclacky gem release workflow via SKILL_DIR/scripts/release.sh.
/gem-releaseThe release script (SKILL_DIR/scripts/release.sh) handles everything end-to-end:
bundle exec rspec) + web search smoke tests (real network — verifies Bing/DDG parsers still work against live HTML)lib/clacky/version.rbGemfile.lock via bundle installgem build openclacky.gemspec)gem push)latest.txt on OSS (stable only, unless --update-latest)scripts/ to OSSRead current version:
grep 'VERSION =' lib/clacky/version.rbStable release (default): Increment patch version (e.g., 1.0.5 → 1.0.6). Confirm with user if unsure which part to bump (major/minor/patch).
Pre-release: Use the exact version the user specified (e.g., 2.0.0.beta.1). Before proceeding, warn about pre-release caveats (see section below).
This is the one step the agent handles manually — the script does not write changelog entries because it requires reviewing git history and exercising judgment.
Find the previous version tag:
git describe --tags --abbrev=0Gather commits since last release:
git log <previous_tag>..HEAD --onelineWrite a new section in CHANGELOG.md following this format:
## [X.Y.Z] - YYYY-MM-DD
### Added
- Feature description
### Improved
- Enhancement description
### Fixed
- Bug fix description
### More
- Minor itemsCategorization rules:
### Added bullets vs feat: commits — if commits > bullets, you likely merged too aggressivelyCommit the changelog:
git add CHANGELOG.md
git commit -m "docs: update CHANGELOG for v<version>"Stable release:
bash "SKILL_DIR/scripts/release.sh" <version>Pre-release (skip latest.txt):
bash "SKILL_DIR/scripts/release.sh" <version> --prereleasePre-release (update latest.txt — only if user explicitly requested):
bash "SKILL_DIR/scripts/release.sh" <version> --prerelease --update-latestDry run (preview only):
bash "SKILL_DIR/scripts/release.sh" <version> --dry-runThe script runs all steps sequentially and stops on any failure. Monitor the output — if a step fails, diagnose and fix before retrying.
After the script completes successfully, present a concise summary. The output will often be read in WeChat, so keep it compact and avoid template-like formatting that triggers message folding.
Rules:
Format (flexible — adapt as needed, but roughly):
v{version} released.
[One sentence highlight — the biggest user-visible change.]
Added:
- [translate each "Added" item]
- ...
Improved:
- [translate each "Improved" item]
- ...
Fixed:
- [translate each "Fixed" item]
- ...
Upgrade: click "Upgrade" in Web UI bottom-left, or `gem update openclacky`
Fresh install: curl -sSL https://raw.githubusercontent.com/clacky-ai/openclacky/main/scripts/install.sh | bash
RubyGems: https://rubygems.org/gems/openclacky/versions/{version}
GitHub: https://github.com/clacky-ai/openclacky/releases/tag/v{version}When releasing a pre-release version, inform the user of these behaviors:
| Concern | Behavior | Impact |
|---|---|---|
| Version check notification | Gem::Version("0.9.38") < Gem::Version("1.0.0.beta.1") is true | The upgrade dot WILL appear in the Web UI for most users |
gem update (official source) | Does NOT install prereleases without --pre | Users who click "Upgrade" will see notification but upgrade silently does nothing |
| OSS CDN upgrade (mirror users) | Downloads exact .gem from latest.txt | If latest.txt points to prerelease, mirror users WILL get the beta |
OSS latest.txt | Fresh installs fetch latest.txt | By default, do NOT update latest.txt for pre-releases |
Ask the user whether to use --update-latest before running the script.
The script uses set -euo pipefail and stops on any failure. Common issues:
bundle exec rspec spec/integration/web_search_smoke_spec.rb --tag smoke to verifyspec/integration/web_search_smoke_spec.rb to skip the relevance check on failure (e.g., using skip "Bing returned anti-scrape garbage...")gem signin)gh auth status~/.cos.yaml configAfter fixing an issue, you can re-run the script — it's safe to retry. If a partial release happened (e.g., gem pushed but tag not created), handle remaining steps manually.
SKILL_DIR/scripts/release.shlib/clacky/version.rbopenclacky.gemspecCHANGELOG.mdgh CLI installed and authenticatedcoscli installed at /usr/local/bin/coscli with ~/.cos.yaml4aea278
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.