Best for
- Use when users want to create a release, tag a version, generate a changelog, bump version numbers, cut a release, or publish a GitHub release.
mgiovani/cc-arsenal/skills/git-release/SKILL.md
Create semantic version releases with automated changelog generation from conventional commits, version file bumps (package.json, pyproject.toml, Cargo.toml, etc.), git tagging, and GitHub release publishing, for repos on a simple main-branch workflow (no release/hotfix branches). Use when users want to create a release, tag a version, generate a changelog, bump version numbers, cut a release, or publish a GitHub release. Not for release/hotfix branch topology or promoting one branch to another
Decision brief
Create semantic version releases with automated changelog generation from conventional commits, version file updates, and GitHub release publishing.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/mgiovani/cc-arsenal --skill "skills/git-release"Inspect the Agent Skill "git-release" from https://github.com/mgiovani/cc-arsenal/blob/410f2649860bb1892ee8c66721f57462eeefcf13/skills/git-release/SKILL.md at commit 410f2649860bb1892ee8c66721f57462eeefcf13. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
3. Validate preconditions: - Working tree is clean: git status --porcelain - On the expected branch (main/master or release branch) - Remote is up to date: git fetch origin && git log HEAD..origin/$(git branch --show-current) --oneline - If there are no commits since the last ta…
3. Validate preconditions: - Working tree is clean: git status --porcelain - On the expected branch (main/master or release branch) - Remote is up to date: git fetch origin && git log HEAD..origin/$(git branch --show-current) --oneline - If there are no commits since the last ta…
1. Parse each commit using conventional commit format: - Extract type: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert - Extract scope (optional): text in parentheses after type - Detect breaking changes: ! after type/scope OR BREAKING CHANGE: in commit bo…
1. Read existing CHANGELOG.md (if it exists) to understand the current format and preserve it
When --changelog-only is passed, skip Phases 4-6 entirely:
Permission review
The documentation asks the agent to run terminal commands or scripts.
git describe --tags --abbrev=0 2>/dev/null || echo "none"The documentation asks the agent to run terminal commands or scripts.
git log <last-tag>..HEAD --format="%H %s" --no-mergesThe documentation includes network, browsing, or remote request actions.
## [1.3.0](https://github.com/owner/repo/compare/v1.2.3...v1.3.0) (YYYY-MM-DD)The documentation asks the agent to create, modify, or delete local files.
**Verify the write** (same call sites as step 5): after writing the file, re-read it and confirm the new version heading (`## [<new-version>]`) is present and that at least one section under it has a real bullet line, not just an empty `###The documentation includes network, browsing, or remote request actions.
GitHub: https://github.com/owner/repo/releases/tag/v1.3.0Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 86/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 6 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Create semantic version releases with automated changelog generation from conventional commits, version file updates, and GitHub release publishing.
Release operations are high-consequence and irreversible once pushed:
git describe --tags --abbrev=0 2>/dev/null || echo "none"
# With existing tag
git log <last-tag>..HEAD --format="%H %s" --no-merges
# Without existing tag (first release)
git log --format="%H %s" --no-merges
git status --porcelaingit fetch origin && git log HEAD..origin/$(git branch --show-current) --onelinefeat, fix, docs, style, refactor, perf, test, build, ci, chore, revert! after type/scope OR BREAKING CHANGE: in commit bodyotherThis is plain regex/string parsing over commit subjects, do it inline regardless of commit count, no agent needed.
Determine version bump: load references/semver-guide.md for the full commit-type → bump mapping and pre-1.0 rules. The highest-priority bump wins (major > minor > patch).
Calculate new version:
v if present)0.1.0 (first feature release) or 1.0.0 if user specifies--major, --minor, or --patch override from argumentsCurrent version: v1.2.3
Detected bump: minor (2 features, 5 fixes, 3 chores)
New version: v1.3.0
Breaking changes: none
Read existing CHANGELOG.md (if it exists) to understand the current format and preserve it
Group commits by type using this order and heading format:
## [1.3.0](https://github.com/owner/repo/compare/v1.2.3...v1.3.0) (YYYY-MM-DD)
### Breaking Changes
- **scope:** description ([hash](url))
### Features
- **scope:** description ([hash](url))
### Bug Fixes
- **scope:** description ([hash](url))
### Performance
- **scope:** description ([hash](url))
### Documentation
- **scope:** description ([hash](url))
### Other Changes
- **scope:** description ([hash](url))
Type-to-heading mapping:
! or BREAKING CHANGE:) → Breaking Changesfeat → Featuresfix → Bug Fixesperf → Performancedocs → Documentationrefactor, style, test, build, ci, chore, revert, other → Other ChangesOnly include sections that have entries. Omit empty sections.
gh repo view --json url -q .url 2>/dev/null || git remote get-url origin
**scope:** descriptionYYYY-MM-DD# Changelog header, preserving existing entries below it# Changelog header## [<new-version>]) is present and that at least one section under it has a real bullet line, not just an empty ### Heading with nothing below. A narrated changelog is not evidence the write succeeded, check the file on disk, e.g.:grep -A2 "## \[<new-version>\]" CHANGELOG.md
If the heading is missing, or every section under it is empty, abort before creating the release commit: "CHANGELOG.md write produced empty sections, release aborted, no commit created." Do not proceed to Phase 5 step 3 (or, in changelog-only mode, report success) on a failed verification.
--changelog-only)When --changelog-only is passed, skip Phases 4-6 entirely:
Use case: draft a changelog before deciding on a release, or maintain a running changelog during development.
# Example output for --changelog-only
git-release --changelog-only
# → Scans commits since v1.2.3
# → Writes changelog entry to CHANGELOG.md
# → Reports: "CHANGELOG.md updated with 8 commits. No tag or release created."
=== Release Summary ===
Version: v1.2.3 → v1.3.0 (minor)
Tag: v1.3.0
Commits: 12 commits since v1.2.3
Branch: main
Changelog preview:
─────────────────────
## [1.3.0](...) (2025-01-15)
### Features
- **auth:** add OAuth2 login support (abc1234)
- **api:** add rate limiting endpoint (def5678)
### Bug Fixes
- **api:** resolve null pointer in user endpoint (ghi9012)
─────────────────────
Version files to update:
- package.json (1.2.3 → 1.3.0)
- pyproject.toml (1.2.3 → 1.3.0)
Actions:
1. Update version files
2. Update CHANGELOG.md
3. Create git commit: "chore(release): v1.3.0"
4. Create git tag: v1.3.0
5. Push commit and tag to origin
6. Create GitHub release with changelog
If --dry-run (or -n) was passed: stop here. The summary above already shows everything that would happen, this flag is the only dry-run entry point, so no separate "preview" option is offered below.
Otherwise, ask for confirmation:
Execute all release actions in strict order. Stop immediately if any step fails and report which step failed and what manual cleanup may be needed.
package.json: Update "version": "x.y.z" fieldpackage-lock.json: Update "version": "x.y.z" at root levelpyproject.toml: Update version = "x.y.z" under [project] or [tool.poetry]Cargo.toml: Update version = "x.y.z" under [package]VERSION or VERSION.txt: Replace entire file contentsetup.cfg: Update version = x.y.z under [metadata]build.gradle / build.gradle.kts: Update version = "x.y.z"Write CHANGELOG.md using the Phase 3 step 5 insertion logic, including its step 6 verification (abort before step 3 below if verification fails).
Create release commit:
git add -A
git commit -m "chore(release): v<new-version>"
git tag -a v<new-version> -m "Release v<new-version>"
git push origin $(git branch --show-current)
git push origin v<new-version>
--no-github flag is set):notes_file=$(mktemp -t release-notes)
# write the changelog entry (without the "## [version]" header) to $notes_file
gh release create v<new-version> \
--title "v<new-version>" \
--notes-file "$notes_file" \
--latest
rm -f "$notes_file"
A fixed path (e.g. /tmp/release-notes.md) can collide across concurrent or repeated runs: mktemp guarantees a unique file.
Release v1.3.0 completed successfully!
- Commit: abc1234 chore(release): v1.3.0
- Tag: v1.3.0
- GitHub: https://github.com/owner/repo/releases/tag/v1.3.0
- Changelog: Updated CHANGELOG.md
Parse optional arguments from command arguments:
--major: Force a major version bump (overrides auto-detection)--minor: Force a minor version bump (overrides auto-detection)--patch: Force a patch version bump (overrides auto-detection)--dry-run or -n: Show what would happen without making changes (see Phase 4 step 2, the single dry-run entry point)--no-github: Skip GitHub release creation (only local tag + changelog)--changelog-only: Generate/update CHANGELOG.md only, skip tagging, version bumps, and GitHub releaseWhen force flags conflict (e.g., --major --minor), use the highest: major > minor > patch.
patch bump and list all commits under Other Changes0.x.y): Follow semver pre-1.0 rules, breaking changes bump minor, features bump minor, fixes bump patchpackage.json files exist, only update the root one. Warn the user about other version files foundgit push fails due to no remote, skip push and GitHub release, warn the userv prefix (e.g., v1.3.0) unless existing tags use a different convention--no-verify on the release commit# Auto-detect version bump from commits
git-release
# Force a major version bump
git-release --major
# Preview without making changes
git-release --dry-run
# Release without creating a GitHub release
git-release --no-github
# Force minor bump, dry run
git-release --minor --dry-run
# Update CHANGELOG.md only (no tag or release)
git-release --changelog-only
Alternatives
prisma/prisma
Review what Prisma Next migrations will run on merge or deploy, render the migration graph, resolve concurrent / diamond-convergence conflicts, and configure environment refs for CI. Use for "what migrations are going to run", "what runs on deploy", merge conflict, diamond convergence, concurrent migrations, migration status, ref management, staging, production, MIGRATION.DIVERGED, MIGRATION.NO_MARKER, MIGRATION.MARKER_NOT_IN_HISTORY, prisma migrate status, prisma migrate diff, prisma migrate re
teng-lin/notebooklm-py
Complete API for Google NotebookLM - full programmatic access including features not in the web UI. Create notebooks, add sources, generate all artifact types, download in multiple formats. Activates on explicit /notebooklm or intent like "create a podcast about X"
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for deployment and design tasks; the detail page covers purpose, installation, and practical steps.
huggingface/skills
Build and publish a Gradio demo on Hugging Face Spaces for a user-provided LoRA. Use when someone asks to create, generate, ship, or publish a Space, demo, Gradio app, or playground for a LoRA — including LoRAs for Qwen-Image, Qwen-Image-Edit, LTX-Video, Wan, FLUX, SDXL, or other diffusion base models. Also triggers when someone describes a LoRA they trained or hosts on the Hub and wants to share it. Covers picking the right base pipeline and `diffusers` inference recipe, designing a UI tailored