AgentSkillsCN

release

基于现有release.ps1/release.sh基础设施的Maven发布工作流。涵盖前置检查、QA准入、版本号升级、CHANGELOG更新、Git标签创建、GitHub Release发布,以及Maven Central的发布触发。当用户调用/release时启用。支持patch、minor、major版本更新,以及dry-run模拟运行模式。

SKILL.md
--- frontmatter
name: release
description: >
  Maven publishing workflow using the existing release.ps1/release.sh infrastructure.
  Handles pre-flight checks, QA gate, version bumping, CHANGELOG update, Git tag, GitHub Release,
  and Maven Central publish trigger. Use when the user invokes /release.
  Supports: patch, minor, major, and dry-run mode.
disable-model-invocation: true
allowed-tools: Bash, Read, AskUserQuestion
argument-hint: "[dry] [patch|minor|major]"

Release Workflow

Guides a Constellation Engine release through pre-flight, QA, and publish stages. Delegates the actual release to scripts/release.ps1 (Windows) or scripts/release.sh (Unix).


Argument Parsing

Parse the invocation arguments:

InvocationTypeDry Run
/release minorminorno
/release patchpatchno
/release majormajorno
/release dry minorminoryes
/release dry patchpatchyes
/release dry majormajoryes

If no release type is provided, ask the user which type they want (patch/minor/major).


Workflow Stages

Stage 1 — Pre-Flight Checks (automatic)

Run these checks and report results. Fail early if any check fails.

bash
# 1. Verify on master branch
git branch --show-current
# Must be "master"

# 2. Clean working directory
git status --porcelain
# Must be empty (or only untracked files in agents/)

# 3. Synced with origin
git fetch origin master
git rev-list HEAD..origin/master --count
# Must be "0"

# 4. gh CLI authenticated
gh auth status
# Must succeed

Report:

code
Pre-flight:
  Branch: master
  Working dir: clean
  Remote sync: up to date
  GitHub CLI: authenticated

Stage 2 — CHANGELOG Review (interactive)

Read CHANGELOG.md and extract the [Unreleased] section. Present it to the user.

  • If [Unreleased] section is empty or missing, warn the user and ask whether to proceed
  • If it has content, show the content and confirm it looks correct
  • Use AskUserQuestion to get confirmation before proceeding

Stage 3 — QA Gate (automatic)

Run phases 1-6 of the /qa pipeline (compile + format + lint + docs + ethos + tests):

bash
sbt compile
sbt scalafmtCheckAll
sbt -J-Xmx4g "scalafixAll --check"
sbt "docGenerator/runMain io.constellation.docgen.FreshnessChecker"
sbt "docGenerator/runMain io.constellation.docgen.EthosVerifier"
sbt -J-Xmx4g test

Note: -J-Xmx4g is required for scalafix and test — parallel compilation OOMs with default heap.

Sequential execution — fail on first error. If any phase fails, abort the release and report which phase failed with its fix suggestion.

Stage 4 — Version Confirmation (interactive)

Extract the current version from build.sbt:

bash
grep 'ThisBuild / version' build.sbt

Calculate the new version based on the release type and present to the user:

code
Current version: 0.6.1(-SNAPSHOT)
Release type: minor
New version: 0.7.0

Files that will be updated:
  - build.sbt
  - vscode-extension/package.json
  - CHANGELOG.md ([Unreleased] → [0.7.0] - 2026-02-12)

Use AskUserQuestion to confirm before proceeding.

Stage 5 — Dry Run (automatic)

Run the release script in dry-run mode:

Windows:

powershell
.\scripts\release.ps1 -Type <type> -DryRun

Unix:

bash
./scripts/release.sh <type> --dry-run

Show the dry-run output to the user. If /release dry <type> was invoked, stop here — do not proceed to Stage 6.

Stage 6 — Execute Release (user confirmation required)

This is a destructive action. Before executing, clearly state what will happen:

code
This will:
  1. Update version in build.sbt, package.json, CHANGELOG.md
  2. Run sbt test
  3. Commit: "chore(release): v0.7.0"
  4. Tag: v0.7.0
  5. Push commit and tag to origin/master
  6. Create GitHub Release (triggers Maven Central publish)

Proceed?

Use AskUserQuestion to get explicit confirmation. On approval:

Windows:

powershell
.\scripts\release.ps1 -Type <type>

Unix:

bash
./scripts/release.sh <type>

Stage 7 — Post-Release Verification (automatic)

After the release script completes:

bash
# Verify tag exists
git tag -l "v<new-version>"

# Verify GitHub release was created
gh release view "v<new-version>"

# Check if publish workflow was triggered
gh run list --workflow=publish.yml --limit=1

Report:

code
Post-release:
  Git tag: v0.7.0 (created)
  GitHub Release: https://github.com/VledicFranco/constellation-engine/releases/tag/v0.7.0
  Publish workflow: triggered (run #1234)

Published Modules

These modules are published to Maven Central when the publish workflow runs:

ModuleMaven Artifact
coreconstellation-core
runtimeconstellation-runtime
lang-astconstellation-lang-ast
lang-parserconstellation-lang-parser
lang-compilerconstellation-lang-compiler
lang-stdlibconstellation-lang-stdlib
lang-lspconstellation-lang-lsp
http-apiconstellation-http-api
module-provider-sdkconstellation-module-provider-sdk
cache-memcachedconstellation-cache-memcached

NOT published (publish/skip = true): module-provider (server), example-app, lang-cli, doc-generator, root.

Maven group: io.github.vledicfranco

For publish infrastructure details, see PUBLISH-INFRA.md.


Error Recovery

StageRecovery
Pre-flight: wrong branchgit checkout master
Pre-flight: dirty workdirgit stash or commit changes
Pre-flight: behind remotegit pull origin master
QA gate failureFix the issue, re-run /qa quick or /qa tests
Release script failureScript auto-reverts file changes on test failure
Post-release: no workflowCheck GitHub Actions tab manually