Release Bump
jamiepine/voicebox
Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.
Drafts release notes for an upcoming Obot minor release and saves them as an unpublished GitHub draft release, never tagging or publishing.
$ npx skills add obot-platform/obot --skill draft-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install obot-platform/obot draft-release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/obot-platform/obot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/draft-release .claude/skills/draft-release && rm -rf skills-srcUse ~/.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/
Install the "draft-release" agent skill from https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-release into .claude/skills/draft-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add obot-platform/obot --skill draft-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install obot-platform/obot draft-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/obot-platform/obot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/draft-release .agents/skills/draft-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "draft-release" agent skill from https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-release into .agents/skills/draft-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add obot-platform/obot --skill draft-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install obot-platform/obot draft-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/obot-platform/obot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/draft-release .cursor/skills/draft-release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "draft-release" agent skill from https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-release into .cursor/skills/draft-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/obot-platform/obot.git --path .claude/skills/draft-release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add obot-platform/obot --skill draft-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install obot-platform/obot draft-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/obot-platform/obot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/draft-release .gemini/skills/draft-release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "draft-release" agent skill from https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-release into .gemini/skills/draft-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install obot-platform/obot draft-releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add obot-platform/obot --skill draft-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/obot-platform/obot.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/draft-release .github/skills/draft-release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "draft-release" agent skill from https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-release into .github/skills/draft-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add obot-platform/obot --skill draft-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install obot-platform/obot draft-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/obot-platform/obot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/draft-release .opencode/skills/draft-release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "draft-release" agent skill from https://github.com/obot-platform/obot/tree/main/.claude/skills/draft-release into .opencode/skills/draft-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
draft-releaseDrafts release notes for an upcoming Obot minor release and saves them as an unpublished GitHub draft release, never tagging or publishing.
Starting from a target version such as v0.22.0, the agent finds the diff baseline (the highest non-pre-release tag that is also an ancestor of HEAD, verified with git merge-base rather than trusting version sort alone) and a style reference (the latest minor release), then analyzes git history between the baseline and HEAD. If only release-candidate tags exist, it suggests the matching minor version and asks you to confirm.
Hard constraints keep the release safe: it never creates or pushes git tags, runs gh release create only with the draft flag, and never publishes. Notes follow the tone and structure of the latest minor release, not patches or pre-releases, and the What's Changed section must come from the GitHub API rather than invented PRs, authors or commit messages. Style rules ban emojis, em dashes, curly quotes and marketing language.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c79d508. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
ghgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
docs.obot.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Obot Release Notes Drafter loads about 4.5k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 2,232 words of instructions outside code blocks.
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.
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); files beside SKILL.md are not scanned.
The full file from obot-platform/obot at commit c79d508, republished under its MIT licence (© obot-platform). 2,232 words, ~4,538 tokens.
.claude/skills/draft-release/SKILL.md (or your agent's skills folder).Drafts release notes for the next obot minor release and creates a draft (unpublished) GitHub release containing them. The release stays in draft state for the user to review, edit, and publish themselves. Never creates the git tag, never publishes the release, never pushes anything.
v0.22.0): ask the user if not provided. If recent pre-release tags exist (e.g. v0.22.0-rc3), suggest the corresponding minor (v0.22.0) and confirm.v0.21.3): auto-detect as the highest non-pre-release tag, regardless of whether it is a minor or patch, that is also an ancestor of HEAD. This is the range used to find changes (<DIFF_BASELINE>..HEAD) and the left side of the "Full Changelog" compare link. Use git tag --sort=-v:refname | grep -v -- '-' | head -1, then verify with git merge-base --is-ancestor <candidate> HEAD. Patch releases are sometimes cut from a separate release branch that never merges back into main — if the highest-sorted tag fails the ancestor check, walk down to the next-highest tag and check again until one passes. Do not silently trust version-sort order alone.v0.21.0): auto-detect as the highest vX.Y.0 tag that is not a pre-release. Use git tag --list 'v*.*.0' --sort=-v:refname | grep -v -- '-' | head -1. This release's notes are the tone/structure template. It is often the same as the diff baseline but may differ when patch releases exist between minors.git tag or git push --tags. The draft release does not require the tag to exist locally — GitHub creates it only when the draft is published, which the user does manually.gh release create is allowed ONLY with --draft. Never run it without --draft. Never run gh release edit --draft=false. Never publish.vX.Y.Z where Z > 0) or pre-releases (-rc, -alpha, -beta). Those use minimal notes. Always model on the most recent vX.Y.0.—). Use plain hyphens or rewrite the sentence. No "we're thrilled / excited to / proud to" beyond the one opening line the template already uses. No marketing fluff.' and "), not curly quotes.gh release create (or any other command that writes to GitHub) until the user has seen the fully assembled draft (opener, Big Updates, Improvements, Upgrade Notes, What's Changed, Full Changelog line — the whole document, not just the feature list from step 5) and explicitly approved it. Step 5's feature-list confirmation is necessary but not sufficient; the user must sign off on the actual prose before anything is pushed to GitHub.# Diff baseline: latest non-pre-release tag (minor OR patch):
git tag --sort=-v:refname | grep -v -- '-' | head -1
# Style reference: latest published minor (vX.Y.0, no pre-releases):
git tag --list 'v*.*.0' --sort=-v:refname | grep -v -- '-' | head -1
# Recent tags to suggest the target version:
git tag --sort=-creatordate | head -10Confirm the target version, diff baseline, and style reference with the user before proceeding. The diff baseline and style reference often differ — e.g. baseline v0.21.3, style v0.21.0. Use the baseline for everything that touches commit range, and the style reference for tone/structure.
gh release view <STYLE_REF> --repo obot-platform/obotMatch its structure exactly:
We're excited to announce the <VERSION> release of the Obot MCP Platform. This release <one-sentence theme summary>.## Big Updates with 3-6 ### Feature Name subsections. Each subsection is 1-3 short paragraphs in plain prose. Link to docs with [docs](https://docs.obot.ai/...) when a docs page exists.## Improvements section with a short bulleted list of smaller usability/perf items. Include only if there are clearly several smaller user-facing improvements worth calling out. Omit otherwise (v0.21.0 has no Improvements section).## Upgrade Notes — usually There are no major breaking changes in this release. If the diff contains breaking changes (removed APIs, renamed config, schema migrations, removed env vars), call them out explicitly and concretely. Check commits with chore: remove, BREAKING, or schema/migration changes.## What's Changed — generated via API (see step 7).**Full Changelog**: https://github.com/obot-platform/obot/compare/<DIFF_BASELINE>...<VERSION>.git log <DIFF_BASELINE>..HEAD --oneline
git log <DIFF_BASELINE>..HEAD --format='%H%n%s%n%b%n---' # full bodies if more context neededIdentify candidate big features. Heuristics:
feat: commits are top candidates.enhance: commits that introduce notable user-visible capability also qualify.image pull secrets commits become one "Image Pull Secrets" feature).fix:, chore:, docs:, dependabot, and CI commits are NOT big features.Aim for 3-6 Big Updates. If the range is small, fewer is fine. If many candidates exist, prioritize features that change what users can do, not internal refactors.
Deep-read each candidate before drafting its gist. Commit subjects are too thin to build a release note on. For every candidate Big Update (and every PR that gets merged into one as part of a theme), do all of:
# Full PR body + comments + reviewers:
gh pr view <NUM> --repo obot-platform/obot --comments
# Files changed (helps confirm scope and spot user-facing surface area):
gh pr view <NUM> --repo obot-platform/obot --json files --jq '.files[].path'Finding linked issues. This repo deliberately does NOT use GitHub's closes #N / fixes #N keywords, so the closingIssuesReferences field will almost always be empty. Issues are referenced in PR body or comments as plain text. Grep the PR body and the comment thread (both come back from gh pr view --comments) for:
#<number> referencesobot-platform/obot#<number>https://github.com/obot-platform/obot/issues/<number>For every issue number found that way, read it:
gh issue view <ISSUE_NUM> --repo obot-platform/obot --commentsBe slightly generous — false positives (numbers that turn out to be PR numbers, version numbers, or unrelated) are cheap to read and discard. Missing the issue that explains the why is what you're avoiding. Linked issues usually contain the user problem, the design discussion, and the constraints that the PR body and commit message omit. That context is what makes the difference between a release note that says "added X" and one that explains what X actually unlocks for users.
If a candidate is a theme spanning multiple PRs, deep-read the largest one (or two) — not every single follow-up fix PR. Use judgement: enough reading to write an accurate gist, not exhaustive.
Do not write up a feature whose PR(s) and linked issues you have not actually read in this session.
release-note issuesThe team flags items that need an explicit callout in the release (deprecations, upgrade warnings, behavior changes, required config changes) by labeling GitHub issues with release-note and attaching them to the milestone matching the release.
Look them up:
# Try the version both with and without the leading "v" — milestones are usually "v0.22.0" but check both.
gh issue list --repo obot-platform/obot --milestone "<VERSION>" --label "release-note" --state all \
--json number,title,body,url,state,labels --limit 50
gh issue list --repo obot-platform/obot --milestone "<VERSION_NO_V>" --label "release-note" --state all \
--json number,title,body,url,state,labels --limit 50If neither returns results, also check whether the milestone exists at all:
gh api repos/obot-platform/obot/milestones --jq '.[] | {title, number, state}'If the milestone is missing or has no release-note issues, note that to the user and continue without callouts. Do not invent callouts.
For each issue found, draft a concise note:
See [#<NUMBER>](<URL>) for details.## Upgrade Notes section as a bullet or short paragraph. Use for deprecations, removed config, required migrations, behavior changes that affect all users.### Feature subsection in Big Updates. Use only when the note is specifically about how to enable, configure, or be aware of one of the features being highlighted. Mirror the blockquote style from v0.19.0's Message Policies entry.Do not paste the issue body verbatim. Distill it. The issue is for details; the release note is the headline.
Before writing any prose, present the candidate Big Updates AND the release-note callouts back to the user for review. This catches three failure modes: highlighting the wrong things, mis-describing what a feature actually does, and misclassifying a release-note callout. Format the review like this:
Candidate Big Updates for <VERSION> (range <DIFF_BASELINE>..HEAD):
1. <Proposed feature title>
Gist: <one or two sentences summarizing what this feature is and why it matters>
Source PRs: #6567, #6605, #6636, ...
2. <Proposed feature title>
Gist: ...
Source PRs: ...
Also considered but dropped (say if any should be promoted):
- <feature> — reason dropped (e.g. "internal refactor only", "rolled into #N", "fix not feat")
Release-note callouts found in milestone <VERSION>:
1. [#<NUM>] <issue title>
Proposed note: <drafted one or two sentences>
Classified as: Upgrade Notes (or: Feature-attached callout under "<Feature Title>")
(If none: "No release-note issues found in milestone <VERSION>.")
Questions for you:
a. Are these the right features to highlight? Any to add, drop, or merge?
b. For each kept feature, is the gist accurate? Reply with corrections inline or just "all good".
c. Any feature here that should be downgraded to the Improvements bullet list instead?
d. For each release-note callout: is the wording accurate, and is it classified in the right place (Upgrade Notes vs. attached to a feature)?Use AskUserQuestion when there are concrete forks (e.g. multiple ways to title or scope a feature, or whether a callout belongs in Upgrade Notes vs. on a feature). For open-ended gist corrections, plain text reply is fine. Wait for the user's response and incorporate corrections before proceeding to step 6. Do not draft prose for a feature or callout whose wording the user has not confirmed or corrected.
If the user corrects a gist or callout, mirror their wording closely in the draft. They know the feature better than the commit messages or issue body do.
For each Big Update:
### Title in title case, matching the style of previous minors (e.g. "Aviatrix Integration for MCP Server Egress Control", "JumpCloud Authentication Provider").For Improvements (optional): a bulleted list of 4-10 short items. One line each. Skip the section entirely if there is nothing meaningful to list.
For Upgrade Notes: if step 4 surfaced release-note issues classified as Upgrade Notes items, include them as bullets (or short paragraphs if longer). Each ends with a See [#<NUMBER>](<URL>) for details. link. If there were no callouts and no breaking changes detected in the commits, fall back to the default There are no major breaking changes in this release. line.
For feature-attached callouts: render the confirmed note as a blockquote (> ...) inside the relevant ### Feature subsection in Big Updates, ending with the issue link.
Use the GitHub-authoritative source — the same endpoint the release UI uses:
gh api -X POST repos/obot-platform/obot/releases/generate-notes \
-f tag_name="<VERSION>" \
-f previous_tag_name="<DIFF_BASELINE>" \
-f target_commitish="main" \
--jq .bodyPaste the ## What's Changed section and **Full Changelog** line from the response verbatim. Do not edit PR titles, authors, or links. If the endpoint also returns headings above What's Changed (it sometimes includes a "## What's Changed" header itself), keep only the list and the Full Changelog line, integrating with the rest of the draft.
If gh api fails (auth, network), fall back to:
gh pr list --repo obot-platform/obot --state merged \
--search "merged:>=<DIFF_BASELINE_DATE> base:main" \
--json number,title,author,url --limit 200Format each as * <title> by @<author> in <url>. If using this fallback, tell the user the list came from gh pr list and recommend they regenerate it from the GitHub UI when they create the release, since the UI's list is the canonical one.
Write the fully assembled notes (opener, Big Updates, Improvements, Upgrade Notes, What's Changed, Full Changelog line) to <REPO_ROOT>/release-notes-<VERSION>.md — in the project working directory itself (not /tmp), so the user can open it directly in their IDE for review/editing.
Then show the complete rendered document to the user in the chat too — not just a summary or the feature list from step 5, and not just a pointer to the file. This is a second, distinct checkpoint from step 5: step 5 confirms which features and callouts to include, this step confirms the actual wording of the finished document, since prose can drift from an approved gist during drafting.
Explicitly ask for approval before doing anything on GitHub, e.g. "Here's the full draft, also written to release-notes-<VERSION>.md if you'd rather review it in your IDE — let me know if you want changes, or I'll go ahead and create the GitHub draft release." If the user edits the file directly, re-read it before proceeding rather than relying on your in-memory copy. Do not proceed to step 9 until the user responds with approval (or with edits, which you incorporate and then re-confirm if they're substantial). Do not treat silence, an unrelated reply, or a reply about something else in the conversation as approval.
Only after the user has approved the full draft in step 8. Reuse the same <REPO_ROOT>/release-notes-<VERSION>.md file written in step 8 (re-read it first if the user said they edited it) as the body:
gh release create <VERSION> \
--repo obot-platform/obot \
--draft \
--title "<VERSION>" \
--target main \
--notes-file release-notes-<VERSION>.mdNotes on the flags:
--draft is mandatory. Never omit it. The draft does not create the tag — GitHub creates the tag only when the draft is published (and the user does that themselves through the UI).--title "<VERSION>" matches the project convention (release title equals the tag name, e.g. v0.22.0).--target main so the tag, when eventually published, points at main. Adjust only if the user has explicitly told you to release from another branch.--latest, --prerelease, or --generate-notes. We already have the notes; we are not publishing; this is not a pre-release.If a draft already exists for this version, gh release create will fail with "already exists". In that case ask the user whether to delete the existing draft (gh release delete <VERSION> --repo obot-platform/obot --yes) and recreate, or leave the existing one alone. Do not delete without asking.
Print the draft URL returned by gh release create and a one-line summary of what's in the draft (feature count, callout count). End the turn telling the user the release exists as a draft on GitHub — they should review it there, edit if needed, and publish manually when ready. Remind them publishing is what creates the actual tag.
We're excited to announce the v0.21.0 release of the Obot MCP Platform. This release introduces MCP server egress control with an Aviatrix integration and improves the admin dashboard experience.
Big Updates
Aviatrix Integration for MCP Server Egress Control
Obot now supports MCP server egress control for Kubernetes-hosted MCP servers, with Aviatrix as the first supported network policy provider.
Administrators can configure domain allowlists for individual
npx,uvx, andcontainerizedMCP servers. ...
Match that register: declarative, concrete, no hype words, no rhetorical flourishes.
© obot-platform, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/draft-release of obot-platform/obot.
Open the folder on GitHubat commit c79d508
Obot Release Notes Drafter 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Obot Release Notes Drafter this skillobot-platform/obot | 1.1k | — | ~4.5k | Automated safety check: Pass | MIT | |
| Release Bumpjamiepine/voicebox | 57k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Go-Redis Release Preparationredis/go-redis | 22k | — | ~1.1k | Automated safety check: Pass | BSD-2-Clause | |
| Hunk Release Workflowmodem-dev/hunk | 9.5k | — | ~3.8k | Automated safety check: Pass | MIT | |
| Worktrunk Release Workflowmax-sixty/worktrunk | 8.9k | — | ~6.9k | Automated safety check: Pass | Custom licence | |
| pybind11 Release Publicationpybind/pybind11 | 18k | — | ~2.5k | Automated safety check: Pass | Custom licence |
jamiepine/voicebox
Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.
redis/go-redis
Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
max-sixty/worktrunk
Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.
pybind/pybind11
Walks a maintainer through publishing a pybind11 release after the preparation PR merges, with preflight checks, confirmations before each push and a GitHub release.
GreptimeTeam/greptimedb
Generates a GreptimeDB release changelog with git cliff, subtracts patch PRs already shipped, rebuilds contributors and prepares the docs-repo blog PR.
obot-platform/obot
Drafts a release announcement blog post for an obot release as a Markdown file, with an optional WordPress draft through MCP and no live publishing without confirmation.
obot-platform/obot
Turns a verbose, reporter-submitted obot security advisory into a short, deployer-facing writeup covering impact, affected versions and mitigation.
Categories
Drafts release notes for an upcoming Obot minor release and saves them as an unpublished GitHub draft release, never tagging or publishing. 0, the agent finds the diff baseline (the highest non-pre-release tag that is also an ancestor of HEAD, verified with git merge-base rather than trusting version sort alone) and a style reference (the latest minor release), then analyzes git history between the baseline and HEAD. If only release-candidate tags exist, it suggests the matching minor version and asks you to confirm.
Obot Release Notes Drafter fits situations like: preparing release notes for an upcoming Obot minor release; creating an unpublished GitHub draft release for review; working out the right diff baseline when patch releases were cut from another branch.
Run `npx skills add obot-platform/obot --skill draft-release -a claude-code`. Or copy the skill folder (.claude/skills/draft-release in obot-platform/obot) into .claude/skills/draft-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add obot-platform/obot --skill draft-release -a codex`. Or copy the skill folder (.claude/skills/draft-release in obot-platform/obot) into .agents/skills/draft-release in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add obot-platform/obot --skill draft-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/draft-release, .gemini/skills/draft-release, .github/skills/draft-release and .opencode/skills/draft-release in your project.
Going by SKILL.md and its folder, Obot Release Notes Drafter needs the command-line tools its instructions call (gh and git). Our summary lists: The gh CLI, authenticated for the obot repository; A local clone with release tags available.
SKILL.md names 1 domain. In commands or code: docs.obot.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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. Review the folder before installing.
Obot Release Notes Drafter is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Obot Release Notes Drafter: Release Bump (jamiepine/voicebox, 57k stars), Go-Redis Release Preparation (redis/go-redis, 22k stars), Hunk Release Workflow (modem-dev/hunk, 9.5k stars) and Worktrunk Release Workflow (max-sixty/worktrunk, 8.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
obot-platform (a GitHub organization) maintains it in obot-platform/obot, which has 1,092 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.
Source: obot-platform/obot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.