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.
Takes a project from a clean main branch to a tagged release: pre-flight checks, version choice, git cliff changelog and narrative release notes.
$ npx skills add alexei-led/ccgram --skill releasing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install alexei-led/ccgram releasing --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/alexei-led/ccgram.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/releasing .claude/skills/releasing && 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 "releasing" agent skill from https://github.com/alexei-led/ccgram/tree/main/.claude/skills/releasing into .claude/skills/releasing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing", 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/alexei-led/ccgram/tree/main/.claude/skills/releasingType 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 alexei-led/ccgram --skill releasing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install alexei-led/ccgram releasing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alexei-led/ccgram.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/releasing .agents/skills/releasing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "releasing" agent skill from https://github.com/alexei-led/ccgram/tree/main/.claude/skills/releasing into .agents/skills/releasing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing", 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 alexei-led/ccgram --skill releasing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install alexei-led/ccgram releasing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alexei-led/ccgram.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/releasing .cursor/skills/releasing && 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 "releasing" agent skill from https://github.com/alexei-led/ccgram/tree/main/.claude/skills/releasing into .cursor/skills/releasing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing", 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/alexei-led/ccgram.git --path .claude/skills/releasing--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 alexei-led/ccgram --skill releasing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install alexei-led/ccgram releasing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alexei-led/ccgram.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/releasing .gemini/skills/releasing && 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 "releasing" agent skill from https://github.com/alexei-led/ccgram/tree/main/.claude/skills/releasing into .gemini/skills/releasing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing", 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 alexei-led/ccgram releasingInstalls 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 alexei-led/ccgram --skill releasing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/alexei-led/ccgram.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/releasing .github/skills/releasing && 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 "releasing" agent skill from https://github.com/alexei-led/ccgram/tree/main/.claude/skills/releasing into .github/skills/releasing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing", 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 alexei-led/ccgram --skill releasing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install alexei-led/ccgram releasing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alexei-led/ccgram.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/releasing .opencode/skills/releasing && 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 "releasing" agent skill from https://github.com/alexei-led/ccgram/tree/main/.claude/skills/releasing into .opencode/skills/releasing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing", 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.
releasingTakes 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.
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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0b8ae82. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(git *)Bash(gh *)Bash(git cliff *)Bash(make check)ReadFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghmakeuvbrewFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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 alexei-led/ccgram at commit 0b8ae82, republished under its MIT licence (© alexei-led). 411 words, ~1,032 tokens.
.claude/skills/releasing/SKILL.md (or your agent's skills folder).Tag and publish a new version with rich, narrative release notes.
Run in parallel:
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.
Get the last tag:
git describe --tags --abbrev=0Parse $ARGUMENTS:
2.4.0 → use it directlypatch / minor / major → bump the last tag accordinglyfeat commits → minorfix/docs/refactor → patchThe version is X.Y.Z (no v prefix in display). The git tag is vX.Y.Z.
git cliff --tag vX.Y.Z --output CHANGELOG.mdRead the FULL diff since the last tag to understand every change:
git diff <last-tag>..HEAD -- '*.py' '*.yml' '*.toml'
git log <last-tag>..HEAD --format="%H %s"Also read any PR descriptions referenced in commits:
gh pr list --state merged --search "is:merged" --limit 20 --json number,title,bodyNow write release notes following this structure and style (study existing releases for tone):
Lead with a theme headline — one sentence summarizing what this release is about
## Shell Provider — Chat-First Shell Interface via Telegram## Bug Fixes & Reliability## Wrap Prompt Mode — Preserve Your Shell PromptExplain WHY, not just WHAT — don't just list commit messages. Explain user-facing impact:
- Fix idempotent prompt markers- **Idempotent prompt markers** — guards prevent duplicate marker injection on repeated setup (e.g., after exec bash or profile reload)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
Include context — before/after examples, tables, config snippets where they help
End with Install / Upgrade block — always include uv tool upgrade ccgram and brew upgrade ccgram
Keep it concise — a patch release with 2 fixes needs 15-20 lines, not 100. Scale depth with change magnitude.
No "Documentation" section — skip changelog/readme commits, they're noise in release notes
Link PRs where available: ([#36](https://github.com/alexei-led/ccgram/pull/36))
Present the draft release notes to the user for review before proceeding.
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.ZCRITICAL: The CHANGELOG commit message must NOT contain [skip ci] — it kills tag-triggered workflows.
Poll until the release exists (CI creates it), then edit with the crafted notes:
# Poll every 15s, up to 5 minutes
gh release view vX.Y.Z --json tagName 2>/dev/nullOnce it exists:
gh release edit vX.Y.Z --notes "<crafted release notes>"Report final status with link to the release.
v2.4.0 → PyPI 2.4.0.github/workflows/release.yml (3 jobs: PyPI, Homebrew, GitHub Release)--latest for baseline notes; this skill replaces them with rich notesgit 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
Just SKILL.md in .claude/skills/releasing of alexei-led/ccgram.
Open the folder on GitHubat commit 0b8ae82
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release Tagging and Notes this skillalexei-led/ccgram | 277 | — | ~1k | Automated safety check: Pass | MIT | |
| Git Workflow and Versioningaddyosmani/agent-skills | 104k | 2 repos | ~3.5k | Automated safety check: Notes | MIT | |
| pybind11 Release Preparationpybind/pybind11 | 18k | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| AionUi Version BumpiOfficeAI/AionUi | 33k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| ZCF Release AutomationUfoMiao/zcf | 6.1k | — | ~3.4k | Automated safety check: Pass | MIT | |
| WooCommerce Draft PR Creatorwoocommerce/woocommerce | 11k | — | ~1.1k | Automated safety check: Pass | Custom licence |
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.
pybind/pybind11
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.
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.
UfoMiao/zcf
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.
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.
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.
Works with
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.