Create a new GitHub release for cheasee-pi. Fetches all merged PRs since last tag, categorizes by title patterns, calculates version, runs checks (TypeScript + Go), syncs version strings, pushes tag for GoReleaser CI, updates release body. Use for any cheasee-pi release.
Create a new GitHub release for cheasee-pi. Fetches all merged PRs since last tag, categorizes by title patterns, calculates version, runs checks (TypeScript + Go), syncs version strings, pushes tag for GoReleaser CI, updates release body. Use for any cheasee-pi release.
Creates a new GitHub release for SchneiderDaniel/cheasee-pi.
Release model: Push a v* tag → GitHub Actions (GoReleaser) builds binaries and publishes artifacts.
This skill owns the tag push and release body — GoReleaser owns artifact publishing.
Scripts (in scripts/ relative to this skill):
fetch-prs.sh — Fetch all merged PRs since last release tag
process-prs.mjs — Categorize PRs, calculate version, build release body markdown
sync-version.mjs — Update version string in all 4 files
Each check must pass before proceeding. Any failure → STOP.
1a — TypeScript
cd /workspaces/main && npm run tsc:extensions
1b — Node Tests
cd /workspaces/main && npm test
1c — Go Build
cd /workspaces/main && go build ./cmd/cheasee-pi/
1d — Go Vet
cd /workspaces/main && go vet ./cmd/cheasee-pi/...
1e — Go Tests
cd /workspaces/main && go test ./cmd/cheasee-pi/...
1f — GoReleaser Check
cd /workspaces/main && goreleaser check
Step 2 — Verify Git State
cd /workspaces/main
git branch --show-current # must be main
git status --porcelain # must be empty
gh auth status # must be authenticated
Step 3 — Fetch Last Tag
cd /workspaces/main && git fetch --tags origin
LAST_TAG=$(git tag --sort=-creatordate | head -1)
echo"Last tag: $LAST_TAG"
Step 4 — Fetch + Process PRs (automated)
Run the two data scripts. This replaces manual PR-by-PR fetching and LLM categorization.
cd /workspaces/main
SCRIPT_DIR="/workspaces/main/.pi/skills/release-cheasee-pi/scripts"# Fetch all merged PRs since last release"$SCRIPT_DIR/fetch-prs.sh""SchneiderDaniel/cheasee-pi" > ignore/release-data.json
# Categorize, calculate version, build release body
node "$SCRIPT_DIR/process-prs.mjs" < ignore/release-data.json > ignore/release-plan.json
Read ignore/release-plan.json and present the result to the user:
cat ignore/release-plan.json
If prCount is 0: no new PRs since last tag. STOP — nothing to release.
If tagExists is true: tag collision. STOP — delete existing tag first or abort.
Step 5 — User Confirmation
Present the numbers from release-plan.json:
Last tag: v{baseVersion}
PRs merged: {prCount}
Features: {featureCount} (>=10 → +0.1, <10 → +0.01)
Increment: {increment}
New version: v{newVersion}
Show first 5 rows of the proposed release body from release-plan.json.body.
Ask user:
"Create release v{newVersion}?"
Options: [Create] [Show full release body] [Cancel]