.agents/skills/hex-release/SKILL.md
Guides interactive Hex package release for AgentJido repos. Supports automated (GitHub Actions workflow_dispatch) and manual release flows. Uses git_ops for version bumping and changelog generation. Triggers on: release, hex publish, bump version, new release, publish package.
npx skillsauth add agentjido/jido_ai hex-releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interactive workflow for releasing a Hex package with manual verification at each step. Supports two release paths: automated (via GitHub Actions) and manual (local).
Use this skill when asked to:
Before starting, run these checks automatically:
Read mix.exs to determine:
project() → :name or :app)@version or project() → :version)git_ops as a dependency (required for automated release)grep -E 'github:|git:|path:' mix.exs
Categorize any git/path deps found:
only: [:dev, :test]): Will not block Hex publish — note but continuemix hex.publish. Tell the user which deps need to be published to Hex first or switched to Hex versionsgit status --porcelain
If dirty, STOP and ask user to commit or stash changes first.
git branch --show-current
Confirm user is on main. Warn if on a different branch.
git log --oneline $(git describe --tags --abbrev=0 2>/dev/null || echo "")..HEAD
If no commits since last tag, STOP — nothing to release.
Review commits and confirm they follow conventional commit format (feat:, fix:, chore:, etc.).
Non-conventional commits won't be picked up by git_ops for the CHANGELOG.
mix test
If tests fail, STOP and show failures.
mix quality
This typically runs: format check, compile with warnings-as-errors, credo, and dialyzer.
If the alias doesn't exist, run mix format --check-formatted && mix compile --warnings-as-errors as a minimum.
If any check fails, STOP and show the issues.
mix hex.publish --dry-run
Verify the package metadata and file list look correct. If this fails, STOP.
SHOW USER: Summary of all pre-flight results and current version.
ASK USER: "All checks passed. Which release path: automated (GitHub Actions) or manual (local)?"
The AgentJido repos have a reusable release workflow triggered via workflow_dispatch.
Check that .github/workflows/release.yml exists and calls:
uses: agentjido/github-actions/.github/workflows/elixir-release.yml@main
TELL USER:
The release workflow supports these options:
• dry_run: true — Full dry run (no git push, no tag, no Hex publish)
• hex_dry_run: true — Runs git_ops release + push, but skips actual Hex publish
• skip_tests: true — Skip test step (use if CI already passed)
Recommended first run: dry_run: true
Option 1 — GitHub CLI (if gh is available):
# Dry run first
gh workflow run release.yml -f dry_run=true
# Watch the run
gh run list --workflow=release.yml --limit=1
gh run watch
Option 2 — GitHub UI:
1. Go to: https://github.com/agentjido/{REPO}/actions/workflows/release.yml
2. Click "Run workflow"
3. Set dry_run = true for first attempt
4. Click "Run workflow"
ASK USER: "Run a dry run first? (recommended)"
After the dry run completes:
gh run view --log-failed # Check for errors
Review the workflow summary for:
ASK USER: "Dry run succeeded. Ready to run the real release?"
gh workflow run release.yml
# Or with skip_tests if CI already passed:
gh workflow run release.yml -f skip_tests=true
gh run watch # Wait for completion
TELL USER:
✅ Release triggered!
The workflow will:
1. Run git_ops.release to bump version + update CHANGELOG
2. Push the release commit and tag
3. Publish to Hex.pm
4. Create a GitHub Release
Monitor at: https://github.com/agentjido/{REPO}/actions
After publish, verify at: https://hex.pm/packages/{PACKAGE}
Use when the automated workflow isn't available, or for repos that can't publish to Hex (e.g., git deps blocking publish).
git_ops handles this automatically from conventional commits, but ask the user for confirmation.
Run the release in dry-run mode to preview:
mix git_ops.release --dry-run
This shows what version would be bumped to based on commit types:
feat: commits → minor bumpfix: commits → patch bumpBREAKING CHANGE: → major bumpSHOW USER: The proposed version bump and commits that will be included.
ASK USER: "git_ops wants to release vX.Y.Z. Proceed, or override with a specific version?"
# Let git_ops decide the version:
mix git_ops.release --yes
# Or force a specific version:
mix git_ops.release --yes --new-version X.Y.Z
This will:
mix.exsCHANGELOG.md from conventional commitsSHOW USER: The release commit diff and tag.
git log --oneline -3
git diff HEAD~1
git tag -l | tail -5
ASK USER: "Release commit and tag created locally. Ready to push?"
git push origin main
git push origin --tags
# Final dry-run check
mix hex.publish --dry-run
# Publish
mix hex.publish --yes
VERSION="v$(grep -m1 '@version "' mix.exs | sed 's/.*"\(.*\)".*/\1/')"
gh release create "$VERSION" \
--title "Release $VERSION" \
--notes "See [CHANGELOG.md](CHANGELOG.md) for details."
TELL USER:
✅ Release complete!
Published: https://hex.pm/packages/{PACKAGE}
GitHub: https://github.com/agentjido/{REPO}/releases/tag/{VERSION}
git reset --soft HEAD~1 # Undo release commit
git tag -d v{VERSION} # Delete local tag
git checkout mix.exs CHANGELOG.md # Restore files
git push origin :refs/tags/v{VERSION} # Delete remote tag
git revert HEAD # Revert release commit
git push origin main
Hex packages cannot be unpublished after 1 hour. You can retire a version:
mix hex.retire {PACKAGE} {VERSION} invalid --message "Released in error"
git_opsquality mix alias varies per repo — check mix.exs aliases sectiongit_ops is a dev-only dependency — release commands run in MIX_ENV=devGITHUB_TOKEN for git push and HEX_API_KEY (org secret) for Hex publishjido_runic) cannot publish to Hex — use manual path for git tag/release only, skip Hex publish steptools
Converts between common units of measurement including temperature, distance, and weight.
development
Reviews code changes for quality, security, and best practices.
documentation
Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
documentation
Maintain the OpenClaw memory wiki vault with deterministic pages, managed blocks, and source-backed updates.