Skip to content

Add release-cel2sql4j skill#12

Merged
richardwooding merged 1 commit intomainfrom
feat/release-skill
Apr 27, 2026
Merged

Add release-cel2sql4j skill#12
richardwooding merged 1 commit intomainfrom
feat/release-skill

Conversation

@richardwooding
Copy link
Copy Markdown
Contributor

Summary

Adds a project-local skill that captures the cel2sql4j release workflow — tag-driven, no CHANGELOG maintenance (release notes are auto-generated from PR titles), publishes to Maven Central via the vanniktech plugin.

Skill content

SKILL.md covers:

  • Picking a semver bump (patch / minor / major) — with cel2sql4j's pre-1.0 caveat that breaking changes can land in a minor while still in 0.x.
  • Common slip-ups: lightweight tag vs annotated, stale gradle.properties (intentional — release.yml overrides via ORG_GRADLE_PROJECT_VERSION_NAME), pre-release qualifier shape (v1.0.0-rc1), forgetting to merge security Dependabot PRs first.
  • The four required org-level secrets (Maven Central token + GPG key; GPG must be RSA, not Ed25519).
  • Post-tag verification — release URL, Maven Central sync delay (~30 min), what to do if the workflow fails mid-publish.

Preflight script

scripts/release_preflight.sh [<version>]:

  • ✅ Validates branch (must be main), working-tree clean, in sync with origin/main (hard errors).
  • ✅ Lists commits since the previous tag — the release-notes preview.
  • ✅ Checks CI status on the current origin/main HEAD via gh. Only the CI workflow is release-blocking; the Automatic Dependency Submission (Gradle) workflow flakes on transient GitHub 5xx and is reported as (advisory).
  • ⚠️ Lists open Dependabot PRs as a soft warning (security fixes should ideally land before the tag).
  • ✅ If a version is supplied, validates the format (vX.Y.Z or vX.Y.Z-qualifier) and prints the exact git tag -a / git push commands.

Smoke-tested behaviour

Running ./release_preflight.sh v0.2.0 from this branch correctly reports:

ERROR: current branch is 'feat/release-skill', expected 'main'
ERROR: working tree has uncommitted changes
=== Commits since v0.1.0 ===
  5e8eaa6 Add three repo-local agent skills + fix missed Spark writeFormat impl (#11)
  ...
=== CI on origin/main HEAD ===
  failure      Automatic Dependency Submission (Gradle)  (advisory)
  success      CI
=== Version check ===
  OK:    version 'v0.2.0' format valid

That is, the script flags the real preconditions while correctly not blocking on the known submit-gradle flake.

Lint

SKILL.md is 104 lines (under the 200-line target) and passes python3 .claude/skills/skill-authoring/scripts/lint_skill.py cleanly.

Test plan

  • Skill lints clean
  • Preflight script runs end-to-end and reports correctly
  • Build still green (./gradlew build)
  • CI green on this branch

🤖 Generated with Claude Code

Captures the cel2sql4j release workflow: tag-driven, no CHANGELOG
maintenance (release notes are auto-generated by softprops/action-gh-release
from PR titles), publish via the vanniktech publish plugin to Maven Central.

The skill covers:
- Picking a semver bump (patch/minor/major) for cel2sql4j's pre-1.0 line.
- Common slip-ups: lightweight tag instead of annotated, stale
  gradle.properties version (intentional — release.yml overrides it),
  pre-release qualifier shape, forgetting to merge security PRs first.
- The four required org-level secrets (Maven Central + GPG; GPG key must
  be RSA, not Ed25519).
- Post-tag verification.

Includes scripts/release_preflight.sh that:
- Validates branch (must be main), working-tree cleanliness, and sync with
  origin/main (hard errors).
- Lists commits since the previous tag (release-notes preview).
- Checks the CI workflow status on origin/main HEAD via gh — only the
  `CI` workflow is release-blocking; `submit-gradle` failures are
  advisory because that workflow flakes on transient GitHub 5xx.
- Lists open Dependabot PRs as a soft warning (security ones should
  land before tagging).
- Validates the version-string format and prints the exact tag commands
  if a version is supplied.

SKILL.md is 104 lines (under the 200-line target) and lints clean against
.claude/skills/skill-authoring/scripts/lint_skill.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@richardwooding richardwooding merged commit ee2c848 into main Apr 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant