.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 hex-releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 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 stepdevelopment
Review a Pull Request for code quality, tests, merge conflicts, and readiness to merge.
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.
documentation
Feishu knowledge base navigation. Activate when user mentions knowledge base, wiki, or wiki links.