home / skills / chachamaru127 / claude-code-harness / x-release-harness

This skill automates Harness release management by generating changelog, version, and tags in one click for streamlined releases.

npx playbooks add skill chachamaru127/claude-code-harness --skill x-release-harness

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.6 KB
---
name: release-harness
description: "Automate Harness release. CHANGELOG, version, tag in one click. Use when user mentions harness release, harness version bump. Do NOT load for: general release discussions, other project releases."
description-en: "Automate Harness release. CHANGELOG, version, tag in one click. Use when user mentions harness release, harness version bump. Do NOT load for: general release discussions, other project releases."
description-ja: "Harness リリース作業を自動化。CHANGELOG、バージョン、タグをポチッと一発。Use when user mentions harness release, harness version bump. Do NOT load for: general release discussions, other project releases."
allowed-tools: ["Read", "Write", "Edit", "Bash"]
argument-hint: "[patch|minor|major]"
user-invocable: false
context: fork
---

# Release Harness Skill

Automates the claude-code-harness release process.

## Quick Reference

- "**Release a new harness version**" -> `/release-harness`
- "**Bump patch version**" -> `/release-harness patch`
- "**Create a minor release**" -> `/release-harness minor`

---

## Execution Flow

### Step 1: Change Verification

Run in parallel:
1. `git status` - Check uncommitted changes
2. `git diff --stat` - List changed files
3. `git log --format="%h|%s|%an|%ad" --date=short -10` - Recent commit history (structured)

### Git Log Flags (CC 2.1.30+)

Use structured log output for release note generation.

#### Commit List for Release Notes

```bash
# Structured format commit list
git log --format="%s" vPREV..HEAD

# Exclude merge commits (actual changes only)
git log --cherry-pick --no-merges --format="%s" vPREV..HEAD

# Detailed info (with author and date)
git log --format="%h|%s|%an|%ad" --date=short vPREV..HEAD
```

#### Key Use Cases

| Use Case | Flags | Effect |
|----------|-------|--------|
| **Release note generation** | `--format="%s"` | Extract commit messages only |
| **Exclude merges** | `--cherry-pick --no-merges` | Actual commits only |
| **Detailed list** | `--format="%h\|%s\|%an\|%ad"` | Structured detailed info |
| **Changed files** | `--raw` | Impact analysis |

### Step 2: Version Determination

Check current version:
```bash
cat VERSION
```

Determine version based on changes ([Semantic Versioning](https://semver.org/)):
- **patch** (x.y.Z): Bug fixes, minor improvements
- **minor** (x.Y.0): New features (backward compatible)
- **major** (X.0.0): Breaking changes

Ask user: "What should the next version be? (e.g., 2.5.23)"

### Step 3: CHANGELOG Update (JP + EN)

> **Important**: Focus on user-facing changes. Keep internal fixes brief.

Update both `CHANGELOG_ja.md` and `CHANGELOG.md`.

#### CHANGELOG Rules

| Change Type | How to Document |
|-------------|-----------------|
| **User-facing impact** | `What's Changed` + Before/After table |
| **New feature** | `Added` section, concise |
| **Internal (CI/test/docs)** | `Internal` section, one line |
| **Bug fix (user-facing)** | `Fixed` section |
| **Bug fix (internal only)** | Omit or merge into `Internal` |

#### Template

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

### What's Changed

**One-line description of user experience change**

| Before | After |
|--------|-------|
| Previous state | New state |

### Added

- Concise feature description

### Internal

- One-line summary of internal changes
```

#### Before/After Table Rules

- Only for **user-facing changes**
- Not needed for internal fixes (CI, tests, refactoring)
- Write from **user perspective**, not technical details

### Step 3.5: README Update Check

> Check if README needs update (JP/EN both)

### Step 4: Version File Update

```bash
echo "X.Y.Z" > VERSION
```

Also update `.claude-plugin/plugin.json`:
```json
"version": "X.Y.Z"
```

### Step 5: Commit and Tag

```bash
git add -A
git commit -m "chore: release vX.Y.Z"
git tag -a vX.Y.Z -m "Release vX.Y.Z"
```

### Step 6: Push

```bash
git push origin main
git push origin vX.Y.Z
```

### Step 7: GitHub Release (Optional)

```bash
gh release create vX.Y.Z \
  --title "vX.Y.Z - Title" \
  --notes "$(cat <<'EOF'
## What's Changed

**One-line user experience change**

| Before | After |
|--------|-------|
| Previous state | New state |

### Added / Changed / Fixed

- Concise description

---

Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
```

---

## GitHub Release Format

Follow `.claude/rules/github-release.md`:

```markdown
## What's Changed

**One-line value description**

| Before | After |
|--------|-------|
| Previous state | New state |

### Added / Changed / Fixed

- Brief description

---

Generated with [Claude Code](https://claude.com/claude-code)
```

---

## Related Skills

- `verify` - Pre-release verification

Overview

This skill automates the Harness release workflow for the claude-code harness, letting you create CHANGELOG entries, bump VERSION, tag commits, and optionally publish a GitHub release in one flow. It streamlines verification, version determination, changelog updates (JP/EN), commits, tags, and pushes to reduce manual errors. Use it when you need a predictable, repeatable release process for harness versions.

How this skill works

The skill inspects the Git working tree, diff stats, and recent commits to summarize what changed and whether there are uncommitted files. It suggests a semantic version bump (patch/minor/major) based on changes, updates VERSION and plugin metadata, and inserts structured entries in both CHANGELOG.md and CHANGELOG_ja.md following the prescribed template. Finally it stages and commits changes, creates an annotated tag, pushes to origin, and can create a GitHub release with formatted release notes.

When to use it

  • You need to release or bump the claude-code harness version (patch/minor/major).
  • You want automated CHANGELOG entries in both English and Japanese for a harness release.
  • You want to ensure commits, tags, and pushes follow a consistent release policy.
  • You want a GitHub Release created with structured release notes.
  • You need a quick, repeatable release flow to avoid manual mistakes.

Best practices

  • Run the verification step first to catch uncommitted changes and unexpected diffs.
  • Choose the semantic bump consciously: patch for fixes, minor for backward-compatible features, major for breaking changes.
  • Focus changelog content on user-facing impact and use the Before/After table only for user-visible changes.
  • Keep internal changes concise under an Internal section; avoid cluttering user-facing sections.
  • Update README and plugin metadata when public-facing behavior or interfaces change.

Example use cases

  • Create a patch release after fixing a user-facing bug and update CHANGELOG entries automatically.
  • Perform a minor release to ship a new backward-compatible feature with proper Added and What’s Changed sections.
  • Prepare a release candidate by running verification, generating structured commit lists for release notes, and tagging the release.
  • Automate the full push and optional GitHub release creation to reduce release overhead for maintainers.

FAQ

What determines patch vs minor vs major?

Follow semantic versioning: patch for bug fixes, minor for new backward-compatible features, major for breaking changes; the skill will prompt you to confirm the next version.

Will it push tags and create GitHub releases automatically?

By default it stages, commits, tags, and pushes; GitHub release creation is optional and can be run when you want a formatted release entry on GitHub.