SKILL.md
/release-alpha
Cut an alpha pre-release for the current repo.
Assumptions
- Repo has
scripts/calver.tsthat supports--check+ apply-by-default - Repo has an
alphabranch onorigin calver-release.ymlauto-tags + publishes when a version-bump commit lands onalpha- Current branch is NOT
main,alpha, orbeta
Step 0: Detect repo + verify state
date "+🕐 %H:%M %Z (%A %d %B %Y)"
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || { echo "❌ Not in a git repo"; exit 1; }
BRANCH=$(git -C "$REPO_ROOT" branch --show-current)
echo "📁 $REPO_ROOT"
echo "🌿 $BRANCH"
Hard checks:
[ "$BRANCH" != "main" ] || { echo "❌ On main"; exit 1; }
[ "$BRANCH" != "alpha" ] || { echo "❌ On alpha"; exit 1; }
[ "$BRANCH" != "beta" ] || { echo "❌ On beta"; exit 1; }
[ -z "$(git -C "$REPO_ROOT" status --porcelain)" ] || { echo "❌ Working tree dirty"; exit 1; }
git -C "$REPO_ROOT" fetch origin alpha 2>/dev/null
Step 1: Locate calver script
CALVER="$REPO_ROOT/scripts/calver.ts"
[ -f "$CALVER" ] || { echo "❌ No scripts/calver.ts"; exit 1; }
Step 2: Compute target
TARGET=$(TZ=Asia/Bangkok bun "$CALVER" --check 2>&1 | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+-alpha\.[0-9]+' | head -1)
Step 3: Confirm gate
Show full plan. Wait for user y/yes. Anything else → abort.
Step 4: Execute
TZ=Asia/Bangkok bun "$CALVER"
git -C "$REPO_ROOT" add package.json
git -C "$REPO_ROOT" commit -m "bump: $TARGET"
git -C "$REPO_ROOT" push -u origin "$BRANCH"
gh pr create --base alpha --title "release: $TARGET" --body "Cuts $TARGET on merge via calver-release.yml."
