Agent skill

Release Tagging and Notes

by alexei-led in alexei-led/ccgram

Takes a project from a clean main branch to a tagged release: pre-flight checks, version choice, git cliff changelog and narrative release notes.

MITAuto-check passedDevelopment

Install Release Tagging and Notes

skills CLI
$ npx skills add alexei-led/ccgram --skill releasing -a claude-code

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

GitHub CLI
$ gh skill install alexei-led/ccgram releasing --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/alexei-led/ccgram.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/releasing .claude/skills/releasing && 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
releasing
GitHub stars
277
Token cost
~1k tokens
SKILL.md length
411 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Takes a project from a clean main branch to a tagged release: pre-flight checks, version choice, git cliff changelog and narrative release notes.

  • Works in 6 steps: Pre-flight → Determine Version → Generate CHANGELOG → …
  • Cutting a new version of a tool you maintain
  • SKILL.md covers Step 1: Pre-flight, Step 2: Determine Version, Step 3: Generate CHANGELOG and Step 4: Craft Release Notes, plus 3 more sections
  • Calls git, gh and make

What it does

The skill carries a project from a clean main branch to a published version. It first confirms that the branch is main, the working tree is clean, nothing is left unpushed and the project's make check passes; any failure stops the run.

The version comes from a number you give, a patch, minor or major bump of the last tag, or a suggestion drawn from the commit history, where feature commits suggest minor, fixes, docs and refactors suggest patch and breaking changes suggest major. You are asked to confirm the suggestion. The changelog is then generated for the new tag with git cliff.

For the release notes the agent reads the whole diff since the last tag plus merged pull request descriptions. It writes a themed headline, explains the user-facing reason for each change instead of listing commits, groups changes by theme, adds before-and-after context where useful and ends with an install and upgrade block. Length scales with the size of the change.

When your agent uses it

  • Cutting a new version of a tool you maintain
  • Tagging a release and publishing it with written notes
  • Choosing the next version number from what changed since the last tag
  • Regenerating the CHANGELOG for a new tag

Example prompts

  • “Cut a release of this project now that main is green.”
  • “Release a patch version and write notes that explain why each fix matters.”
  • “Tag and release version 2.4.0.”
  • “Suggest the next version number from the commits since the last tag.”

Requirements

  • git and the GitHub CLI (gh)
  • git-cliff
  • A make check target in the project
  • Pre-approved tools (allowed-tools): Bash(git *), Bash(gh *), Bash(git cliff *), Bash(make check), Read

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Pre-flight
  2. Determine Version
  3. Generate CHANGELOG
  4. Craft Release Notes
  5. Commit and Tag
  6. Update GitHub Release

What it can do on your machine

Read from SKILL.md and the folder at commit 0b8ae82. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(git *)
    • Bash(gh *)
    • Bash(git cliff *)
    • Bash(make check)
    • Read

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh
    • make
    • uv
    • brew

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

  • Network

    No URLs in SKILL.md. Its commands use git, gh and uv, 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 Tagging and Notes loads about 1k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 411 words of instructions outside code blocks.

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

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from alexei-led/ccgram at commit 0b8ae82, republished under its MIT licence (© alexei-led). 411 words, ~1,032 tokens.

Download SKILL.mdSave it as .claude/skills/releasing/SKILL.md (or your agent's skills folder).
name
releasing
description
Full release lifecycle — version bump, CHANGELOG, rich release notes, tag, publish. Use when user says "release", "tag and release", "publish version", "cut a release", "new version".
allowed-tools
Bash(git *), Bash(gh *), Bash(git cliff *), Bash(make check), Read
user-invocable
true
argument-hint
[patch|minor|major|<version>] (e.g., patch, minor, 2.4.0)

Release

Tag and publish a new version with rich, narrative release notes.

Step 1: Pre-flight

Run in parallel:

bash
git branch --show-current          # Must be main
git status --porcelain             # Must be clean
git log origin/main..HEAD --oneline  # Must be empty (all pushed)

If any fail: report and stop.

Run make check — all must pass.

Step 2: Determine Version

Get the last tag:

bash
git describe --tags --abbrev=0

Parse $ARGUMENTS:

  • If a semver like 2.4.0 → use it directly
  • If patch / minor / major → bump the last tag accordingly
  • If empty → analyze commits since last tag to suggest:
    • feat commits → minor
    • Only fix/docs/refactor → patch
    • Breaking changes → major
    • Present suggestion, ask user to confirm

The version is X.Y.Z (no v prefix in display). The git tag is vX.Y.Z.

Step 3: Generate CHANGELOG

bash
git cliff --tag vX.Y.Z --output CHANGELOG.md

Step 4: Craft Release Notes

Read the FULL diff since the last tag to understand every change:

bash
git diff <last-tag>..HEAD -- '*.py' '*.yml' '*.toml'
git log <last-tag>..HEAD --format="%H %s"

Also read any PR descriptions referenced in commits:

bash
gh pr list --state merged --search "is:merged" --limit 20 --json number,title,body

Now write release notes following this structure and style (study existing releases for tone):

Style Rules
  1. Lead with a theme headline — one sentence summarizing what this release is about

    • Feature release: ## Shell Provider — Chat-First Shell Interface via Telegram
    • Bug fix release: ## Bug Fixes & Reliability
    • Mixed: ## Wrap Prompt Mode — Preserve Your Shell Prompt
  2. Explain WHY, not just WHAT — don't just list commit messages. Explain user-facing impact:

    • Bad: - Fix idempotent prompt markers
    • Good: - **Idempotent prompt markers** — guards prevent duplicate marker injection on repeated setup (e.g., after exec bash or profile reload)
  3. Group by theme, not commit type — if 3 fixes all relate to "shell prompt reliability", group them under that heading instead of a flat "### Fixed" list

  4. Include context — before/after examples, tables, config snippets where they help

  5. End with Install / Upgrade block — always include uv tool upgrade ccgram and brew upgrade ccgram

  6. Keep it concise — a patch release with 2 fixes needs 15-20 lines, not 100. Scale depth with change magnitude.

  7. No "Documentation" section — skip changelog/readme commits, they're noise in release notes

  8. Link PRs where available: ([#36](https://github.com/alexei-led/ccgram/pull/36))

Show full SKILL.md (104 more words)Show less

Present the draft release notes to the user for review before proceeding.

Step 5: Commit and Tag

bash
git add CHANGELOG.md
git commit -m "docs: update CHANGELOG.md for vX.Y.Z"
git push origin main
git tag vX.Y.Z
git push origin vX.Y.Z

CRITICAL: The CHANGELOG commit message must NOT contain [skip ci] — it kills tag-triggered workflows.

Step 6: Update GitHub Release

Poll until the release exists (CI creates it), then edit with the crafted notes:

bash
# Poll every 15s, up to 5 minutes
gh release view vX.Y.Z --json tagName 2>/dev/null

Once it exists:

bash
gh release edit vX.Y.Z --notes "<crafted release notes>"

Report final status with link to the release.

Notes

  • hatch-vcs generates version from tag: v2.4.0 → PyPI 2.4.0
  • Release workflow: .github/workflows/release.yml (3 jobs: PyPI, Homebrew, GitHub Release)
  • CI uses git-cliff --latest for baseline notes; this skill replaces them with rich notes
  • Re-tag if needed: git tag -d vX.Y.Z && git push origin :refs/tags/vX.Y.Z

© alexei-led, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/releasing of alexei-led/ccgram.

Open the folder on GitHubat commit 0b8ae82

Compare with similar skills

Release Tagging and Notes 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 Tagging and Notes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release Tagging and Notes this skillalexei-led/ccgram277—~1kAutomated safety check: PassMIT
Git Workflow and Versioningaddyosmani/agent-skills104k2 repos~3.5kAutomated safety check: NotesMIT
pybind11 Release Preparationpybind/pybind1118k—~1.7kAutomated safety check: PassCustom licence
AionUi Version BumpiOfficeAI/AionUi33k—~2.1kAutomated safety check: PassApache-2.0
ZCF Release AutomationUfoMiao/zcf6.1k—~3.4kAutomated safety check: PassMIT
WooCommerce Draft PR Creatorwoocommerce/woocommerce11k—~1.1kAutomated safety check: PassCustom licence

Similar skills

  • Git Workflow and Versioning

    addyosmani/agent-skills

    Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.

    104k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes
  • Opens the pybind11 release-preparation pull request: picking the release base, bumping the version in common.h and integrating the changelog, following docs/release.rst.

    18k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • AionUi Version Bump

    iOfficeAI/AionUi

    Automates an AionUi release: checks the latest AionCore release and its artifacts, updates package.json, writes the changelog, opens a PR and tags the release.

    33k GitHub stars~2.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.

    6.1k GitHub stars~3.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • WooCommerce Draft PR Creator

    woocommerce/woocommerce

    Opens a concise draft pull request for the current branch, working out change type, base branch, title and body from the commits and diff.

    11k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Shift Commit Rules

    shift-editor/shift

    Rules for writing git commits in the Shift font editor repo: Conventional Commits subjects, user-facing changelog wording, concise subjects and logical commit boundaries.

    349 GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check: notes

Works with

Categories

Questions about Release Tagging and Notes

What does Release Tagging and Notes do?

Takes a project from a clean main branch to a tagged release: pre-flight checks, version choice, git cliff changelog and narrative release notes. The skill carries a project from a clean main branch to a published version. It first confirms that the branch is main, the working tree is clean, nothing is left unpushed and the project's make check passes; any failure stops the run.

When should I use Release Tagging and Notes?

Release Tagging and Notes fits situations like: cutting a new version of a tool you maintain; tagging a release and publishing it with written notes; choosing the next version number from what changed since the last tag; regenerating the CHANGELOG for a new tag.

How do I install Release Tagging and Notes in Claude Code?

Run `npx skills add alexei-led/ccgram --skill releasing -a claude-code`. Or copy the skill folder (.claude/skills/releasing in alexei-led/ccgram) into .claude/skills/releasing in your project. Claude Code loads it when a task matches its description.

How do I install Release Tagging and Notes in Codex?

Run `npx skills add alexei-led/ccgram --skill releasing -a codex`. Or copy the skill folder (.claude/skills/releasing in alexei-led/ccgram) into .agents/skills/releasing in your project. Codex loads it when a task matches its description.

Can I use Release Tagging and Notes 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 alexei-led/ccgram --skill releasing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/releasing, .gemini/skills/releasing, .github/skills/releasing and .opencode/skills/releasing in your project.

What does Release Tagging and Notes need to run?

Going by SKILL.md and its folder, Release Tagging and Notes needs the command-line tools its instructions call (git, gh, make, uv and brew). Our summary lists: git and the GitHub CLI (gh); git-cliff; A make check target in the project. Its frontmatter pre-approves these tools: Bash(git *), Bash(gh *), Bash(git cliff *), Bash(make check), Read.

Does Release Tagging and Notes access the network?

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

Is Release Tagging and Notes 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. Review the folder before installing.

What licence does Release Tagging and Notes use?

Release Tagging and Notes 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 Tagging and Notes use?

About 1k tokens (SKILL.md is roughly 4.1k 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 Tagging and Notes?

Skills that share tags, products or a category with Release Tagging and Notes: Git Workflow and Versioning (addyosmani/agent-skills, 104k stars), pybind11 Release Preparation (pybind/pybind11, 18k stars), AionUi Version Bump (iOfficeAI/AionUi, 33k stars) and ZCF Release Automation (UfoMiao/zcf, 6.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release Tagging and Notes?

alexei-led (a GitHub user) maintains it in alexei-led/ccgram, which has 277 GitHub stars. The repository was last updated on October 8, 2026.

Source: alexei-led/ccgram on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.