/release — Create a GitHub Release
SkillDev toolsCuts a tagged release by dispatching the repository's release pipeline, .github/workflows/release-tag.yml.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /release — Create a GitHub Release skill
About this capability
An embedded lisp interpreter
What this skill tells your AI
The instructions your AI receives, as published by luthersystems/elps in .claude/skills/release/SKILL.md and read by ahel’s review.
Cuts a tagged release by dispatching the repository's release pipeline,
.github/workflows/release-tag.yml. The pipeline validates the version,
generates release notes from the commits since the last stable tag, and
creates the tag + GitHub Release with the official Claude App token; the
tag-push event then triggers vscode-publish.yml (platform elps binaries +
VS Code Marketplace extension).
Use the pipeline. Do not create the tag or release by hand. Two reasons, both documented in the workflow's own header:
- A tag created with the default
GITHUB_TOKEN(e.g.gh release createfrom a workflow, or an Actions-context push) does NOT triggervscode-publish.yml— GitHub suppresses workflow→workflow events for that token. The release would exist but the binaries and extension would never publish. - Direct tag pushes are blocked from agent sandboxes, so
git push origin vX.Y.Zis not available there anyway.
A release is externally visible immediately — the tag publishes the VS Code extension to the Marketplace. Treat cutting one as a production action.
Trigger
Use when asked to create a release, tag a release, cut a release, or ship a version.
Arguments
Optional: version bump type or explicit version.
patch(default) — bump patch: v1.44.0 -> v1.44.1minor— bump minor: v1.44.0 -> v1.45.0major— bump major: v1.44.0 -> v2.0.0vX.Y.Z— explicit version
Workflow
1. Determine the version
git fetch --tags origin
LATEST=$(git tag --list 'v*' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -1)
echo "Latest stable tag: $LATEST"
git log $LATEST..origin/main --oneline
If there are no unreleased commits, stop and say so. Compute the next
version from the bump argument (or use the explicit version). The pipeline
re-validates — exact vMAJOR.MINOR.PATCH format, strictly newer than the
latest stable tag by semver — and refuses anything else, so a wrong guess
fails safely rather than shipping.
2. Verify main is releasable
The pipeline always cuts from main HEAD — there is no ref input. So before dispatching, confirm main is what you intend to ship and its CI is green:
gh run list --branch main --limit 3 # or the Actions API if gh is absent
make release-notes previews the same information locally (latest tag, CI
status, commits since the tag) when gh is available.
3. Update the VS Code extension changelog (if applicable)
If any unreleased change affects the extension (grammar, LSP, DAP,
formatter, minifier, binary bundling), add a section to
editors/vscode/CHANGELOG.md and land it on main before dispatching —
the pipeline releases main HEAD, so a changelog commit after the dispatch
misses the release. Skip for internal refactors, test-only changes, and CI
tweaks.
4. Dispatch the pipeline
Trigger release-tag.yml with the version:
gh workflow run release-tag.yml -f version=vX.Y.Z
# optional rehearsal first:
gh workflow run release-tag.yml -f version=vX.Y.Z -f dry_run=true
Without gh (agent sandboxes), use the Actions dispatch API / MCP
actions_run_trigger on release-tag.yml with input version: vX.Y.Z.
dry_run: true prints the validation result and the generated notes
without creating anything — use it if there is any doubt about the version
or the notes.
The pipeline then: validates (format, strictly-newer, checkout == main
HEAD), summarizes the merged PRs/commits since the last stable tag into the
release notes, and runs gh release create with the App token. On a
validation failure it STOPS with an explanation and creates nothing; the
agent transcript is uploaded as the release-tag-trace-<run id> artifact
(14-day retention) so a refusal is explainable after the fact.
5. Monitor the publish
The tag push triggers the VS Code extension publish:
gh run list --workflow vscode-publish.yml --limit 3
Verify all 9 jobs pass (4 binary builds + 4 platform publishes + 1 universal). The extension lands at https://marketplace.visualstudio.com/items?itemName=LutherSystems.elps-lang
6. Report
Return the release URL (https://github.com/luthersystems/elps/releases/tag/vX.Y.Z), the publish-pipeline status, and a summary of what shipped.
Fallback (human operator only)
make release VERSION=vX.Y.Z performs the same validation and gh release create from a local machine. It requires gh authenticated as a real user
(a personal token's tag DOES trigger the publish workflow — the suppression
applies to the Actions GITHUB_TOKEN, not to user or App tokens). Prefer
the pipeline even then: it keeps every release on one audited path with one
identity.
Signals
- GitHub stars
- 36
- Forks
- 9
- Last commit
- Sep 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
release-luthersystems- Source
- github.com/luthersystems/elps