Plan and publish a GitHub Release in a tag-driven repository.

MITAuto-check passedDevelopment

Install Release

skills CLI
$ npx skills add pwrdrvr/openclaw-codex-app-server --skill release -a claude-code

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

GitHub CLI
$ gh skill install pwrdrvr/openclaw-codex-app-server 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/pwrdrvr/openclaw-codex-app-server.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release .claude/skills/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
release
GitHub stars
265
Token cost
~2.2k tokens
SKILL.md length
913 words
Files
3 (incl. scripts)
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Plan and publish a GitHub Release in a tag-driven repository.

  • Works in 2 steps: Read .local/release/release-plan.md and… → After approval
  • A user asks to cut
  • SKILL.md covers Guardrails, Helper Script, Approval Prompt and Notes And Changelog Rules, plus 3 more sections
  • Runs Python scripts from its folder; calls git, gh and python3

What it does

Release is an agent skill from pwrdrvr/openclaw-codex-app-server. Plan and publish a GitHub Release in a tag-driven repository. Use when a user asks to cut, prepare, or publish a stable or prerelease, propose the next vX.Y.Z or vX.Y.Z-beta.N tag, draft better release notes from PRs and direct commits since the last release, update CHANGELOG.md when appropriate, create the tag pinned to an exact commit, and watch the publish workflow.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `agents/openai.yaml` and `scripts/release_plan.py`).

It sits in Development, covering Changelog and release notes. It works with GitHub, OpenAI, Discord and Telegram. The repository describes itself as: Proof of Concept - Moved to PwrAgent. The licence is MIT.

When your agent uses it

  • A user asks to cut
  • Publish a stable
  • Propose the next vX.Y.Z
  • VX.Y.Z-beta.N tag

Example prompts

  • “/release”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Read .local/release/release-plan.md and summarize the proposed release for approval.
  2. After approval

What it can do on your machine

Read from SKILL.md and the folder at commit 4dce2e2. 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 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • gh
    • python3
    • jq

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

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    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

Release loads about 2.2k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 913 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~95
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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 pwrdrvr/openclaw-codex-app-server at commit 4dce2e2, republished under its MIT licence (© pwrdrvr). 913 words, ~2,201 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
release
description
Plan and publish a GitHub Release in a tag-driven repository. Use when a user asks to cut, prepare, or publish a stable or prerelease, propose the next vX.Y.Z or vX.Y.Z-beta.N tag, draft better release notes from PRs and direct commits since the last release, update CHANGELOG.md when appropriate, create the tag pinned to an exact commit, and watch the publish workflow.

Release

Use this skill for repos that publish from GitHub Releases and want human-written notes instead of GitHub's generated summary.

Guardrails

  • Prefer the repo's default branch from gh repo view; do not guess.
  • Start from a clean working tree. If tracked files are dirty, stop and ask before continuing.
  • If the current branch is not the default branch, stop and ask before switching.
  • Fetch before planning: git fetch origin --tags.
  • Fast-forward the default branch before editing: git pull --ff-only origin <default-branch>.
  • Never force-push the default branch.
  • Never use GitHub generated release notes for this workflow.
  • Always create the release tag with a leading v, for example v0.1.0 or v0.2.0-beta.1.
  • Always pin the release to the exact changelog commit SHA with gh release create --target <sha>.
  • If origin/<default-branch> moves after planning or before pushing, stop and regenerate the release plan.
  • For prereleases, use a semver prerelease tag that names the npm dist-tag you want, for example v0.2.0-beta.1 -> npm beta.
  • For prereleases, create the GitHub release with --prerelease.
  • Prefer leaving CHANGELOG.md untouched for prereleases unless the user explicitly wants beta entries there; that keeps later promotion to stable cleaner.

Helper Script

Use the bundled planner to gather release facts and raw note inputs:

bash
python3 .agents/skills/release/scripts/release_plan.py --output-dir .local/release

Examples:

bash
# Plan the next stable release.
python3 .agents/skills/release/scripts/release_plan.py --output-dir .local/release

# Plan the next beta prerelease for the upcoming stable line.
python3 .agents/skills/release/scripts/release_plan.py --channel beta --output-dir .local/release

# Promote an existing beta tag to a stable release from the same code base.
python3 .agents/skills/release/scripts/release_plan.py --promote-from v0.2.0-beta.2 --output-dir .local/release

It writes:

  • .local/release/release-plan.json
  • .local/release/release-plan.md

The planner:

  • finds the latest published semver release
  • counts first-parent commits on the default branch since that release
  • filters leaked release-housekeeping commits such as changelog-only commits
  • proposes the next stable tag, prerelease tag, or promotion target
  • groups PR-backed changes separately from direct commits on main
  • captures contributor mentions for PR-backed items
  • when planning a prerelease, increments tags like v0.2.0-beta.1, v0.2.0-beta.2, and so on
  • when planning a promotion, pins the plan to the exact prerelease tag commit instead of whatever is now at origin/<default-branch>

Approval Prompt

Before making any changelog edit, commit, push, tag, or release, show the user:

  • the last release tag
  • the raw and meaningful commit counts since that release
  • the suggested new tag and why
  • whether the change looks like a stable minor, a small emergency patch, a prerelease, or a prerelease promotion
  • the exact commit SHA currently targeted by the release plan
  • for prereleases, the npm dist-tag that will be used instead of latest

If the meaningful commit count is less than 3, explicitly warn that there are not many changes in this release and ask whether they still want to proceed.

Notes And Changelog Rules

  • Do not copy PR titles verbatim into release notes.
  • Rewrite each PR-backed item into a clearer user-facing bullet.
  • For direct commits on main with no PR, use the commit subject and body as raw input and rewrite those too.
  • Add the PR author mention on the same line for PR-backed entries.
  • Keep the same substance in CHANGELOG.md and the GitHub release notes for stable releases.
  • Prefer grouped sections such as Highlights, Fixes, Performance, Docs, and Internal when they fit the release.
  • If CHANGELOG.md does not exist, create it with a # Changelog header.
  • Insert the new release section at the top, directly under the file header if there is one.
  • Use a heading in this shape:
md
## v0.1.0 - 2026-03-15
  • If you make a dedicated changelog commit, use a subject like:
bash
docs: add changelog for v0.1.0
  • For prereleases, prefer writing only .local/release/release-notes.md and skipping a changelog commit unless the user explicitly wants prerelease changelog entries.
  • For promotion from vX.Y.Z-beta.N to vX.Y.Z, either tag the same prerelease commit for exact code parity or add only changelog/release-note edits on top before creating the stable tag.
Show full SKILL.md (345 more words)Show less

Versioning Heuristic

Use the planner's suggestion unless the user overrides it.

  • Default to a minor bump: v0.1.0 -> v0.2.0.
  • Use a patch bump only for a small hotfix shortly after the previous release.
  • Treat v0.9.0 -> v0.10.0 as the normal next minor bump.
  • Do not jump from v0.9.0 to v1.0.0 unless the user explicitly asks.
  • For prereleases, keep the stable base and add a channel suffix such as v0.2.0-beta.1.
  • The prerelease channel name becomes the npm dist-tag, so v0.2.0-beta.1 publishes to @beta and does not replace @latest.
  • Promotion removes the prerelease suffix: v0.2.0-beta.2 -> v0.2.0.

The bundled planner treats a patch release as the default only when all of these are true:

  • the last release is recent
  • there are only a few meaningful commits
  • the included changes are patch-sized fix/docs/ci/chore/deps style work
  • there is no obvious feature or larger performance/restructure change

Execution Flow

  1. Prepare the repo.
bash
git fetch origin --tags
default_branch=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
current_branch=$(git branch --show-current)
test "$current_branch" = "$default_branch"
git pull --ff-only origin "$default_branch"
python3 .agents/skills/release/scripts/release_plan.py --output-dir .local/release

For a beta prerelease:

bash
python3 .agents/skills/release/scripts/release_plan.py --channel beta --output-dir .local/release

For promotion from an existing beta tag:

bash
python3 .agents/skills/release/scripts/release_plan.py --promote-from v0.2.0-beta.2 --output-dir .local/release
  1. Read .local/release/release-plan.md and summarize the proposed release for approval.

  2. After approval:

  • always write .local/release/release-notes.md
  • for stable releases, update CHANGELOG.md
  • for prereleases, skip CHANGELOG.md unless the user explicitly wants prerelease changelog entries
  1. If you updated CHANGELOG.md, commit and push the changelog commit on top of the planned source tip.
bash
git add CHANGELOG.md
git commit -m "docs: add changelog for <tag>"
git push origin HEAD:"$default_branch"
release_sha=$(git rev-parse HEAD)

If you did not update CHANGELOG.md, release directly from the planned SHA:

bash
release_sha=$(jq -r '.planning.baseSha' .local/release/release-plan.json)
  1. Create the release from that exact commit.

Stable:

bash
gh release create "<tag>" \
  --target "$release_sha" \
  --title "<tag>" \
  --notes-file .local/release/release-notes.md

Prerelease:

bash
gh release create "<tag>" \
  --prerelease \
  --target "$release_sha" \
  --title "<tag>" \
  --notes-file .local/release/release-notes.md
  1. Verify the release and watch the publish workflow.
bash
gh release view "<tag>"
run_id=$(gh run list --workflow publish.yml --event release --limit 10 --json databaseId,headSha,status,conclusion \
  --jq '.[] | select(.headSha == "'"$release_sha"'") | .databaseId' | head -n1)
gh run watch "$run_id"

If the publish workflow fails, inspect it yourself:

bash
gh run view "$run_id" --log-failed

Best Practices

  • Re-read the generated notes before publishing; fix awkward wording instead of shipping raw commit text.
  • Keep release bullets user-facing and outcome-oriented, not implementation-jargon heavy.
  • Mention direct-to-main commits that would otherwise be invisible to GitHub's PR-based notes.
  • If the approval gap was long, rerun the planner immediately before editing CHANGELOG.md.
  • If the push to the default branch is rejected, stop and regenerate notes from the new branch tip instead of rebasing blindly.
  • For prerelease promotion, do not mix new product commits into the promotion step. Either tag the exact beta commit or keep follow-up changes limited to changelog/release metadata.

© pwrdrvr, MIT. 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 2 other files (scripts) in .agents/skills/release of pwrdrvr/openclaw-codex-app-server.

  • SKILL.md
  • agents/openai.yaml
  • scripts/release_plan.py

Open the folder on GitHubat commit 4dce2e2

Compare with similar skills

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.

Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release this skillpwrdrvr/openclaw-codex-app-server265—~2.2kAutomated safety check: PassMIT
Takopi Releasebanteg/takopi1k—~734Automated safety check: PassMIT
Keen Pbr Release Postmaksimkurb/keen-pbr139—~844Automated safety check: PassGPL-3.0
Writing Release NotesGoneTone/genshin-impact-wish-gacha-analyzer152—~1.6kAutomated safety check: PassMIT
Release Highlightsgarfiec/Librechat-Mobile112—~2kAutomated safety check: NotesMIT
Releasedevoxx/DevoxxGenieIDEAPlugin684—~1.7kAutomated safety check: PassMIT

Similar skills

  • Takopi Release

    banteg/takopi

    Prepare and ship a Takopi release. An agent skill from banteg/takopi.

    1k GitHub stars~734 tokensUpdated 4 mo ago
    DevelopmentAuto-check passed
  • Keen Pbr Release Post

    maksimkurb/keen-pbr

    Draft keen-pbr release posts for GitHub and Telegram from git history.

    139 GitHub stars~844 tokensUpdated today
    DevelopmentAuto-check passed
  • Writing Release Notes

    GoneTone/genshin-impact-wish-gacha-analyzer

    A skill your agent uses when drafting GitHub release notes or changelog content for this project (Genshin Impact Wish Gacha Analyzer).

    152 GitHub stars~1.6k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Release Highlights

    garfiec/Librechat-Mobile

    Add a hand-written Highlights section to a GitHub release whose notes were auto-generated, summarizing the release's PRs in user-facing language above the generated changelog.

    112 GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check: notes
  • Release

    devoxx/DevoxxGenieIDEAPlugin

    Release a new version of the DevoxxGenie IntelliJ plugin — prompt for the target version, bump it in the build files, write a curated CHANGELOG.md entry and plugin.xml change-notes from the git/PR…

    684 GitHub stars~1.7k tokensUpdated 9 days ago
    DevelopmentAuto-check passed
  • Create a Discord-ready Neva release announcement from a GitHub release payload.

    1.1k GitHub stars~500 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from pwrdrvr/openclaw-codex-app-server

  • Project Manager

    pwrdrvr/openclaw-codex-app-server

    Manage GitHub issues and the GitHub Project board for the current repository, while keeping the local tracker in sync.

    265 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Test Ocas Openclaw

    pwrdrvr/openclaw-codex-app-server

    Regression test the OpenClaw Codex App Server plugin against a live local OpenClaw instance in Telegram or Discord.

    265 GitHub stars~4k tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Release

What does Release do?

Plan and publish a GitHub Release in a tag-driven repository. Release is an agent skill from pwrdrvr/openclaw-codex-app-server. Plan and publish a GitHub Release in a tag-driven repository.

When should I use Release?

Release fits situations like: A user asks to cut; publish a stable; propose the next vX.Y.Z; VX.Y.Z-beta.N tag.

How do I install Release in Claude Code?

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

How do I install Release in Codex?

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

Can I use 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 pwrdrvr/openclaw-codex-app-server --skill 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/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.

What does Release need to run?

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

Does Release access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is 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 Release use?

Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Release?

Skills that share tags, products or a category with Release: Takopi Release (banteg/takopi, 1k stars), Keen Pbr Release Post (maksimkurb/keen-pbr, 139 stars), Writing Release Notes (GoneTone/genshin-impact-wish-gacha-analyzer, 152 stars) and Release Highlights (garfiec/Librechat-Mobile, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release?

pwrdrvr (a GitHub organization) maintains it in pwrdrvr/openclaw-codex-app-server, which has 265 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on August 23, 2026.

Source: pwrdrvr/openclaw-codex-app-server on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.