Skip to content
Productivity
Skill

/release

Cut and publish a new GitHub release for the ClaudeCodeNotify macOS app. Use this whenever the user wants to release, ship, publish, cut, or tag a new version — phrases like "create a release", "ship the release", "publish v1.0.x", "tag and release the app", "cut a new version",

From plugin
claudecodenotify
101 skill
Install
$ npx -y skills add narlei/claudecodenotify --skill release --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/release

Context preview

The summary Claude sees to decide when to auto-load this skill.

Cut and publish a new GitHub release for the ClaudeCodeNotify macOS app. Use this whenever the user wants to release, ship, publish, cut, or tag a new version — phrases like "create a release", "ship the release", "publish v1.0.x", "tag and release the app", "cut a new version",

SKILL.md

release.SKILL.md
name: release
description: >-
  Cut and publish a new GitHub release for the ClaudeCodeNotify macOS app.
  Use this whenever the user wants to release, ship, publish, cut, or tag a new
  version — phrases like "create a release", "ship the release", "publish
  v1.0.x", "tag and release the app", "cut a new version", or "make a release".
  It builds the .dmg/.zip artifacts via `make release`, reads the version from
  Resources/Info.plist, creates the matching git tag, and publishes a GitHub
  release using release_notes.md as the body. Trigger it even if the user
  doesn't say "GitHub" explicitly — this repo releases on GitHub via `gh`.

Release ClaudeCodeNotify

Publish a new GitHub release: build the artifacts, tag the version from `Resources/Info.plist`, and create the release with `release_notes.md` as the body.

What a release consists of

  • **Version** — `CFBundleShortVersionString` in `Resources/Info.plist` (e.g. `1.0.3`). This is the single source of truth; the git tag and release title are derived from it.
  • **Tag** — `v<version>` (e.g. `v1.0.3`), annotated, pushed to `origin`.
  • **Artifacts** — produced by `make release`:
  • `dist/ClaudeCodeNotify.dmg` — stable name (the website's "latest" download link depends on it).
  • `dist/ClaudeCodeNotify-<version>.zip` — versioned zip.
  • **Notes** — the contents of `release_notes.md` at the repo root become the release body.

How to run it

The whole flow is bundled in `scripts/create-release.sh`. It is idempotent-safe: it refuses to run if the tag already exists, so you never double-publish a version.

**Always dry-run first** so the user can see exactly what will happen:

.claude/skills/release/scripts/create-release.sh --dry-run

Show the user the planned version, tag, artifacts, and notes preview. Once they confirm, run it for real:

.claude/skills/release/scripts/create-release.sh

Before you publish — checklist

Releases are public and irreversible-ish (deleting a release/tag is messy), so verify before running for real:

1. **Version is bumped.** If `v<version>` already exists, the version in `Info.plist` was not bumped — point this out and ask the user to bump it (and the Homebrew tap, if relevant) rather than forcing the tag. 2. **The release commit is on the intended branch and pushed.** The tag is created at `HEAD`. If the user is on a feature branch (not `main`), confirm that's intentional — most releases should be cut from the default branch with everything merged and pushed. 3. **`release_notes.md` reflects this version.** Skim it; if it still mentions an old version or stale install steps, fix it (or ask the user) before publishing. 4. **Working tree is clean.** Uncommitted changes won't be in the release. The script warns but doesn't block — surface the warning to the user.

After publishing

  • Confirm the release URL the script prints and that both assets attached.
  • Remind the user that if they ship via the Homebrew tap, the cask/formula in `narlei/homebrew-tap` still needs to be bumped to the new version + sha256.

Doing it manually (if the script can't be used)

VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" Resources/Info.plist)
make release
git tag -a "v$VERSION" -m "ClaudeCodeNotify $VERSION"
git push origin "v$VERSION"
gh release create "v$VERSION" \
  --title "ClaudeCodeNotify $VERSION" \
  --notes-file release_notes.md \
  "dist/ClaudeCodeNotify.dmg" "dist/ClaudeCodeNotify-$VERSION.zip"
Read more
Ships withclaudecodenotify

A macOS menu bar app that pops a floating notification in the center of your screen when Claude Code needs you.

Get the whole plugin
Stats
10
Stars
0
Forks
Maintained
Maintenance
Swift
Language
MIT
License
2mo ago
Last commit
3mo ago
Created

Repo: narlei/claudecodenotify