brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
create-github-releaseCreate a GitHub release with proper tagging, release notes, and optional build artifacts. Covers semantic versioning, changelog generation, and GitHub CLI usage. Use when marking a stable version of software for distribution, publishing a new library or application version, creating release notes for stakeholders, or distributing build artifacts (binaries, …
Independent GitHub snapshot · Automated classification · Original documentation governs
Create a tagged GitHub release with release notes and optional artifacts.
Follow semantic versioning (MAJOR.MINOR.PATCH):
| Change | Example | When |
|---|---|---|
| MAJOR | 1.0.0 -> 2.0.0 | Breaking changes |
| MINOR | 1.0.0 -> 1.1.0 | New features, backward compatible |
| PATCH | 1.0.0 -> 1.0.1 | Bug fixes only |
Expected: A version number is chosen that accurately reflects the scope of changes since the last release.
On failure: If unsure whether changes are breaking, review the public API diff. Any removal or signature change of an exported function is a breaking change requiring a MAJOR bump.
DESCRIPTION (R packages)package.json (Node.js)Cargo.toml (Rust)pyproject.toml (Python)Expected: The version number is updated in the appropriate project file and committed to version control.
On failure: If the version was already updated in a previous step (e.g., via usethis::use_version() in R), verify it matches the intended release version.
Create or update changelog. Organize by category:
## What's Changed
### New Features
- Added user authentication (#42)
- Support for custom themes (#45)
### Bug Fixes
- Fixed crash on empty input (#38)
- Corrected date parsing in UTC (#41)
### Improvements
- Improved error messages
- Updated dependencies
### Breaking Changes
- `old_function()` renamed to `new_function()` (#50)
**Full Changelog**: https://github.com/user/repo/compare/v1.0.0...v1.1.0
Expected: Release notes are organized by category (features, fixes, breaking changes) with issue/PR references for traceability.
On failure: If changes are hard to categorize, review git log v1.0.0..HEAD --oneline to reconstruct the list of changes since the last release.
git tag -a v1.1.0 -m "Release v1.1.0"
git push origin v1.1.0
Expected: An annotated tag v1.1.0 exists locally and on the remote. git tag -l shows the tag.
On failure: If the tag already exists, delete it with git tag -d v1.1.0 && git push origin :refs/tags/v1.1.0 and recreate it. If push is rejected, ensure you have write access to the remote.
Using GitHub CLI (recommended):
gh release create v1.1.0 \
--title "v1.1.0" \
--notes-file CHANGELOG.md
With artifacts:
gh release create v1.1.0 \
--title "v1.1.0" \
--notes "Release notes here" \
build/app-v1.1.0.tar.gz \
build/app-v1.1.0.zip
Pre-release:
gh release create v2.0.0-beta.1 \
--title "v2.0.0 Beta 1" \
--prerelease \
--notes "Beta release for testing"
Expected: Release visible on GitHub with tag, notes, and attached artifacts (if any).
On failure: If gh is not authenticated, run gh auth login. If the tag does not exist on the remote, push it first with git push origin v1.1.0.
GitHub can auto-generate notes from merged PRs:
gh release create v1.1.0 \
--title "v1.1.0" \
--generate-notes
Configure categories in .github/release.yml:
changelog:
categories:
- title: New Features
labels:
- enhancement
- title: Bug Fixes
labels:
- bug
- title: Documentation
labels:
- documentation
- title: Other Changes
labels:
- "*"
Expected: Release notes are auto-generated from merged PR titles, categorized by label. .github/release.yml controls the categories.
On failure: If auto-generated notes are empty, ensure PRs were merged (not closed) and had labels assigned. Manually write notes as a fallback.
# List releases
gh release list
# View specific release
gh release view v1.1.0
Expected: gh release list shows the new release. gh release view displays the correct title, tag, notes, and assets.
On failure: If the release is missing, check the Actions tab for any release workflows that may have failed. Verify the tag exists with git tag -l.
git log before tagging. Tag after version-bump commit.git push doesn't push tags. Use git push --tags or git push origin v1.1.0.v1.0.0 vs 1.0.0 and stick with it.commit-changes - staging and committing workflowmanage-git-branches - branch management for release preprelease-package-version - R-specific release workflowconfigure-git-repository - Git setup prerequisitesetup-github-actions-ci - automate releases via CI