agentleFS
devoxxdevoxx/DevoxxGenieIDEAPlugin/.claude/skills/release/SKILL.md

release

Skill689 starsChanged 8 days agoMITView on GitHub

Release a new version of the DevoxxGenie IntelliJ plugin — prompt for the target version, bump it in the build files, write a curated CHANGELOG.md entry and plugin.xml change-notes from the git/PR history since the last tag, build to verify, then commit, tag, and publish a matching GitHub release. Use this whenever the user wants to cut, ship, publish, or tag a new plugin release, bump the version for a release, or asks to "release vX.Y.Z" / "do a release" / "make a new version".

  • Commits and pushes

196 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use create-agent-adapter, changelog-style and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • MicrosoftSkill

    create-agent-adapter

    Technical guide for creating a new Paperclip agent adapter. Use when building a new adapter package, adding support for a new AI coding tool (e.g. a new CLI agent, API-based agent, or custom process), or when modifying the adapter system. Covers the required interfaces, module structure, registration points, and conventions derived from the existing claude-local and codex-local adapters.

    Also in 5 projects that use this

  • GrinvSkill

    changelog-style

    Turn a commit range into CHANGELOG.md entries following common-changelog style. Use when finishing a PR or cutting a release, to write/fix the [Unreleased] section's entries — moving [Unreleased] under a new dated version heading is a separate, automated step (see the release skill / scripts/sync-version.ts), not this skill's job.

    Also in 4 projects that use this

  • GrinvSkill

    docs-consistency-check

    Check README/manifest.json/server.json/CHANGELOG.md/AGENTS.md and docs/*.md for drift against the actual registered tools and source. Use after adding, renaming, or removing a tool, or as part of a live-audit pass.

    Also in 4 projects that use this

  • Microsoft AzureSkill

    component-release

    Prepares a verifiable Agent Landing Zone UI release. Use for release branches, VERSION, changelog entries, tags, release notes, and compatibility evidence; never publish without explicit human approval.

    Also in 4 projects that use this

  • Microsoft AzureSkill

    documentation-consistency

    Keeps AI Landing Zone contributor, user, and operator documentation aligned with shipped Bicep behavior. Use for parameters, defaults, outputs, topology, deployment flow, operations, or releases.

    Also in 8 projects that use this

  • rivet-devSkill

    launch-graphics

    Generate agentOS marketing/launch graphics (launch & social heroes, code-snippet cards) from the committed generators in docs-internal/graphics. Use when asked to make, update, or render an agentOS launch image, social image, "agentOS Apps" graphic, or technical code-snippet image.

    Also in 3 projects that use this

  • +3 more from Grinv

The file

We split this skill into the rules it gives an agent

6 rules. 0 are common, 6 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 186 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Never assume the next version.

    line 18
  2. Distinctive:

    Write descriptive entries: explain what changed and why it matters for a user or maintainer, drawing on the PR body/diff — not just the raw …

    line 53
  3. Distinctive:

    Use today's date (the current date is available in your context).

    line 91
  4. Distinctive:

    Keep the indentation consistent with the surrounding blocks.

    line 110
  5. Distinctive:

    Write the body to a temp file (avoids shell-escaping issues), then:

    line 155
  6. Distinctive:

    If the working tree has unrelated uncommitted changes, surface that before staging so the release commit doesn't sweep them in.

    line 171

“Common” is measured: kept by at least 6 in 10 of the 186 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Release a new DevoxxGenie plugin version

This skill cuts a complete plugin release: version bump → curated changelog → plugin change-notes → build → commit → tag → GitHub release. The goal is a release whose CHANGELOG.md, plugin.xml change-notes, and GitHub release body all tell the same story, written from the actual work done — not a raw dump of PR titles.

The release commit lands on the current default branch (master), matching how prior releases were cut here. Do not create a feature branch for a release.

Step 1 — Ask for the target version

Never assume the next version. Show the current version and ask the user what to release.

grep -E '^version\s*=' build.gradle.kts | head -n1   # e.g. version = "1.7.4"

Offer patch / minor / major as a guide (e.g. current 1.7.4 → patch 1.7.5, minor 1.8.0, major 2.0.0) but let the user state the exact number. Use it verbatim as X.Y.Z (tags are vX.Y.Z).

Step 2 — Gather the history since the last release

Find the previous tag, then read what actually changed. You need the substance of each change, so look at PR titles and bodies/commits, not just subject lines.

git describe --tags --abbrev=0                 # previous tag, e.g. v1.7.4
git log <prev-tag>..HEAD --oneline             # commits to summarise
gh pr list --state merged --base master --limit 30 \
  --json number,title,author,mergedAt,body     # PR detail + authors

Group changes into the sections the CHANGELOG already uses, by conventional-commit prefix:

PrefixCHANGELOG section
feat / addAdded
fixFixed
refactor / build / perf / style / chore (non-dep)Changed
docsDocumentation
testTests
chore(deps) / bump / upgradeDependencies

Collect the unique PR authors for a Contributors section (@login).

Write descriptive entries: explain what changed and why it matters for a user or maintainer, drawing on the PR body/diff — not just the raw commit subject. Keep the feat(scope): / fix(scope): lead so entries scan consistently, and append issue/PR/task references like (#1097) or (task-229, #1093). Omit empty sections.

Step 3 — Bump the version

  • build.gradle.kts: update the top-level version = "X.Y.Z" line (around line 18).
  • src/main/resources/application.properties is auto-regenerated by the build from the Gradle project version — do not hand-edit it; Step 6's build updates it.
  • plugin.xml has no <version> tag (it's injected by the Gradle IntelliJ plugin), so only its change-notes need editing — see Step 5.

Step 4 — Write the CHANGELOG.md entry

Insert a new section at the top of CHANGELOG.md, directly under the # Changelog header and above the previous version. Match the existing house style exactly:

## vX.Y.Z - YYYY-MM-DD

### Added
- feat(tips): rotating tip line under the prompt placeholder, fetched from a 24h-cached
  tips.json with a built-in fallback list (#1099)

### Fixed
- fix(scope): concise but complete description of the fix and its user-visible effect (#NNNN)

### Changed
- refactor(scope): what was restructured and why it's cleaner (#NNNN)

### Dependencies
- chore: upgrade <lib> A.B.C → X.Y.Z

### Contributors
- @stephanj

Use today's date (the current date is available in your context). Keep entries information- dense; a single fix can warrant a long sentence if the behaviour change is subtle (see the v1.7.4 credentials entry for the level of detail that's welcome).

Step 5 — Update plugin.xml change-notes

The Marketplace change-notes are a condensed view — the user-relevant highlights, one concise <LI> each. Insert a new block immediately after <change-notes><![CDATA[, above the existing <h2> for the prior version:

        <h2>vX.Y.Z</h2>
        <UL>
                    <LI>feat(tips): rotating tip line under the prompt input, fetched from a cached tips.json (#1099)</LI>
                    <LI>fix(scope): short user-facing summary (#NNNN)</LI>
                </UL>

Skip internal-only churn (test-only, pure-refactor, doc) here unless it matters to users. Keep the indentation consistent with the surrounding blocks.

Step 6 — Build to verify

The project requires JDK 21 (JDK 25 breaks the Gradle build). Set JAVA_HOME first:

export JAVA_HOME=/Users/stephan/Library/Java/JavaVirtualMachines/azul-21.0.5/Contents/Home
./gradlew buildPlugin   # regenerates application.properties, but packages the old one
./gradlew buildPlugin   # packages the regenerated file: this zip is the release asset

The build is run twice because updateProperties rewrites application.properties after the jar is packaged, so the first zip after a version bump still bundles the previous version.

This produces build/distributions/DevoxxGenie-X.Y.Z.zip. Confirm the zip name matches the new version before continuing — a mismatch means the version bump didn't take. Then confirm the zip bundles the new version:

unzip -p build/distributions/DevoxxGenie-X.Y.Z.zip DevoxxGenie/lib/DevoxxGenie-X.Y.Z.jar > /tmp/devoxxgenie-release-check.jar
unzip -p /tmp/devoxxgenie-release-check.jar application.properties   # expect version=X.Y.Z
rm /tmp/devoxxgenie-release-check.jar

Step 7 — Commit, tag, and push (confirm first)

Pushing and tagging are hard to undo and are outward-facing, so show the user the staged diff and the planned tag, and get an explicit go-ahead before running this step.

git add build.gradle.kts src/main/resources/application.properties \
        src/main/resources/META-INF/plugin.xml CHANGELOG.md
git commit -m "chore: bump version to vX.Y.Z"
git tag -a "vX.Y.Z" -m "Release vX.Y.Z"
git push origin HEAD
git push origin "vX.Y.Z"

Step 8 — Create the GitHub release

The release body is the CHANGELOG section for this version. Prior releases bold the lead clause of detailed entries (e.g. - **fix(credentials): …** — …) for scanability; apply that lightly to the heaviest entries. Attach the built zip as the release asset.

Write the body to a temp file (avoids shell-escaping issues), then:

gh release create "vX.Y.Z" \
  --title "vX.Y.Z" \
  --notes-file /tmp/release-notes-X.Y.Z.md \
  build/distributions/DevoxxGenie-X.Y.Z.zip

Finish by printing the release URL gh returns so the user can review it.

Notes

  • This skill stops at the GitHub release. Publishing to the JetBrains Marketplace is a separate, explicit step (PUBLISH_TOKEN=… ./gradlew publishPlugin) — only do it if the user asks.
  • If the working tree has unrelated uncommitted changes, surface that before staging so the release commit doesn't sweep them in.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.