.claude/skills/generate-release-notes/SKILL.md
Generate comprehensive release notes for Bit from git commits and pull requests. Use when creating release notes, building changelogs, documenting version releases, or preparing a new Bit release.
npx skillsauth add teambit/bit generate-release-notesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps generate release notes for Bit following the established patterns and guidelines.
All intermediate steps must be saved to releases-docs/temp-files/ for review. This folder is gitignored.
Required intermediate files:
raw-commits.md - Raw commit data from GitHub APIfiltered-commits.md - Two sections: filtered out commits and kept commitsFollow these steps to generate release notes:
First, ensure the temp directory exists:
mkdir -p releases-docs/temp-files
Get the latest release tag and commit:
# Get latest release tag
gh release view --repo teambit/bit --json tagName -q '.tagName'
# Get the commit SHA for the tag (handles annotated tags)
TAG="v1.12.158" # Replace with actual tag
TAG_REF=$(gh api "repos/teambit/bit/git/refs/tags/$TAG" -q '.object.sha')
TAG_TYPE=$(gh api "repos/teambit/bit/git/refs/tags/$TAG" -q '.object.type')
if [ "$TAG_TYPE" = "tag" ]; then
# Annotated tag - get the commit it points to
RELEASE_COMMIT=$(gh api "repos/teambit/bit/git/tags/$TAG_REF" -q '.object.sha')
else
# Lightweight tag - already have the commit
RELEASE_COMMIT=$TAG_REF
fi
Determine the starting point:
FROM_COMMITHEAD (latest commit on master)Use the GitHub API to get commits between the release and the starting point:
# Compare commits between release and HEAD (or specific commit)
gh api "repos/teambit/bit/compare/${RELEASE_COMMIT}...${FROM_COMMIT}" \
--jq '.commits[] | "\(.sha[0:7]) | \(.commit.message | split("\n")[0]) | \(.commit.author.name)"'
Save the output to releases-docs/temp-files/raw-commits.md with the following format:
# Raw Commits
Generated: {DATE}
From: {FROM_COMMIT or HEAD}
To: {RELEASE_TAG} ({RELEASE_COMMIT})
Total commits: {COUNT}
## Commits
| Hash | Message | Author |
| ------- | ---------------------------- | ----------- |
| abc1234 | feat: add new feature (#123) | Author Name |
| def5678 | fix: resolve bug (#456) | Author Name |
...
Analyze each commit and categorize into two groups:
FILTER OUT (do not include in release notes):
bump teambit version to X.X.X [skip ci][skip ci] in the messageMerge branch 'X' into masterKEEP (include in release notes):
feat:)fix:)perf:)Save to releases-docs/temp-files/filtered-commits.md with the following format:
# Filtered Commits
Generated: {DATE}
## Filtered Out ({COUNT} commits)
These commits are excluded from the release notes:
| Hash | Message | Reason |
| ------- | ----------------------------------------- | ------------ |
| abc1234 | bump teambit version to 1.13.5 [skip ci] | Version bump |
| def5678 | ci, temporarily set tag to increment by 2 | CI change |
...
## Kept for Release Notes ({COUNT} commits)
These commits will be included in the release notes:
| Hash | Message | Category |
| ------- | ------------------------------- | ------------ |
| ghi9012 | feat: add new command (#123) | New Features |
| jkl3456 | fix: resolve issue (#456) | Bug Fixes |
| mno7890 | chore(deps): bump lodash (#789) | Internal |
...
For commits that are merge commits or have unclear messages, fetch PR details:
# Get PR details by number
gh pr view 12345 --repo teambit/bit --json title,body,labels
# Search for PR by commit
gh pr list --repo teambit/bit --search "SHA_HERE" --state merged --json number,title,body
Look for:
Group the KEPT commits into these categories based on content:
| Category | Indicators | | ---------------- | --------------------------------------------------------------------------------- | | New Features | New commands, new major functionality, "Introduce", "feat:" prefix | | Improvements | Enhancements, "Support", "Allow", "Add option", improvements to existing features | | Performance | "Optimize", "perf:", "Reduce memory", "Speed up", "Improve performance" | | Bug Fixes | "Fix", "fix:", bug corrections, issue resolutions | | Internal | Dependency updates, refactoring, CI changes, code cleanup, test improvements |
Follow the guidelines in releases-docs/guideline.md:
(#1234) or (#1234, #1235)Save to releases-docs/releases/ folder:
releases-docs/releases/v{VERSION}.mdreleases-docs/releases/new-release.mdImportant: Do NOT include the header metadata (title, tag, draft, etc.) - only the release content starting from the sections.
### New Features
- New `bit validate` command to run a complete `test`, `lint`, `compile` and `typecheck` for a project (#10022)
- **Bit Scripts** for simple shell commands or function execution for components (#10028)
### Improvements
- `bit recover` command now supports component and glob patterns (#10033)
- Improve error messages in CLI (#10027, #9983)
### Performance
- Don't read and parse the lockfile multiple times for calculating deps graph (#10019)
### Bug Fixes
- Fix an issue where test duration had incorrect format (#9940)
- Fix an issue where `bit new` wasn't resolving a remote env (#9981)
### Internal
- Update dependencies (#10018, #10015, #10006)
- Modernize some legacy code (#10024, #10014)
| File | Location | Purpose |
| ----------------------------------- | --------------------------- | -------------------------------- |
| raw-commits.md | releases-docs/temp-files/ | Raw commit data for review |
| filtered-commits.md | releases-docs/temp-files/ | Filtered/kept commits for review |
| v{VERSION}.md or new-release.md | releases-docs/releases/ | Final release notes |
releases-docs/guideline.md - Detailed formatting and style guidelinesreleases-docs/releases/ - Previous release notes for reference patternsThe releases-docs/scripts/ directory contains shell scripts for manual use:
get-release-commits.sh [FROM_COMMIT] [TO_TAG] - Fetches commits between releasesfilter-commits.sh - Filters out uninteresting commits (pipe input to it)These scripts are provided for manual/CLI use. When using this skill, Claude uses the gh API commands directly as they work from any directory without needing the local git repository.
tools
MUST consult before running ANY bit command. Do NOT guess bit commands from memory. This skill tells you the right command, correct syntax, subcommands, and flags.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.