Skip to main content
ClaudeWave
Skill1.7k repo starsupdated 5d ago

release

This Claude Code skill automates the release workflow for grepai by verifying CI passes, analyzing merged pull requests to determine the appropriate semantic version bump, updating the CHANGELOG and documentation files with the new version, and creating a GitHub release with contributor credits. Use this skill when a user requests to create a new release, publish a version, or bump the version number.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/yoanbernabeu/grepai /tmp/release && cp -r /tmp/release/.claude/skills/release ~/.claude/skills/release
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Release Process for grepai

This skill guides you through creating a new release. **All output must be in English.**

## When to Use This Skill

Invoke this skill when:
- User asks to "create a release"
- User asks to "publish a new version"
- User asks to "bump the version"
- User mentions "release" in the context of versioning

## Release Workflow

### Step 1: Verify CI on Main

Check that all CI checks pass on main:

```bash
gh run list --branch main --limit 1 --json status,conclusion,name
```

**STOP if CI is not green.** Ask the user to fix issues first.

### Step 2: Get Current Version and Changes

Get the latest release:

```bash
gh release list --limit 1
```

List merged PRs since last release:

```bash
gh pr list --state merged --base main --json number,title,author,mergedAt,labels --limit 50
```

Display a summary of changes categorized by type (feat, fix, docs, etc.).

### Step 3: Determine Version Type

| Change Type | Version Bump |
|-------------|--------------|
| Breaking changes | **Major** (vX+1.0.0) |
| New features (`feat`) | **Minor** (vX.Y+1.0) |
| Bug fixes (`fix`) | **Patch** (vX.Y.Z+1) |
| Docs/chore only | Usually no release needed |

**Ask user confirmation** before proceeding.

### Step 4: Update Version Files

#### 4.1 CHANGELOG.md

Add new section after `## [Unreleased]`:

```markdown
## [X.Y.Z] - YYYY-MM-DD

### Added
- **Feature Name**: Description (#PR) - @author

### Fixed
- **Fix Name**: Description (#PR) - @author
```

Update comparison links at bottom:

```markdown
[Unreleased]: https://github.com/yoanbernabeu/grepai/compare/vX.Y.Z...HEAD
[X.Y.Z]: https://github.com/yoanbernabeu/grepai/compare/vPREVIOUS...vX.Y.Z
```

#### 4.2 Documentation Hero

Update version in `docs/src/components/homepage/HeroAnimated.astro` line 6:

```astro
const { version = "X.Y.Z" } = Astro.props;
```

#### 4.3 Nix Flake

Update `flake.nix`:

1. Update `version` (line 13):

```nix
version = "X.Y.Z";
```

2. Update `vendorHash`:
   - Set `vendorHash = "";` temporarily in `flake.nix`
   - Run `make nix-hash` to compute the correct hash (requires Docker)
   - Replace with the new hash: `vendorHash = "sha256-XXXXX";`
   - If Docker is not available, ask the user to provide the hash or skip this step

### Step 5: Commit and Push

```bash
git add CHANGELOG.md docs/src/components/homepage/HeroAnimated.astro flake.nix
git commit -m "chore(release): bump version to X.Y.Z

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
git push origin main
```

### Step 6: Wait for CI

```bash
gh run list --branch main --limit 1 --json status,conclusion --watch
```

### Step 7: Create GitHub Release

```bash
gh release create vX.Y.Z --generate-notes --title "vX.Y.Z"
```

### Step 8: Verify

```bash
gh release view vX.Y.Z
```

## Contributor Credits

**IMPORTANT:** Always credit PR authors in CHANGELOG:

```markdown
- **Pascal/Delphi Support**: Add `.pas` and `.dpr` file support (#71) - @yoanbernabeu
```

GitHub `--generate-notes` automatically credits contributors in release notes.

## Checklist

- [ ] CI green on main before starting
- [ ] Version type matches changes (major/minor/patch)
- [ ] CHANGELOG.md updated with all PRs
- [ ] All contributors credited with @username
- [ ] Hero version updated in docs
- [ ] Nix flake version and vendorHash updated in flake.nix
- [ ] CI passed after version commit
- [ ] GitHub release created

## Keywords

release, version, bump, publish, changelog, semver, semantic versioning