Release Skill
Automates the full release pipeline for gh-copilot-scratch: commit → push → tag → CI → release.
When to use
Any time the user wants to ship changes. This includes partial flows (e.g., "just push and wait for CI") — adapt by running only the relevant steps.
Scripts
Three shell scripts in scripts/ handle the mechanical parts:
| Script | Purpose |
|---|---|
scripts/release.sh |
Full orchestrated release (push → tag → CI → release) |
scripts/find-workflow-run.sh |
Finds the GH Actions run triggered by a specific tag/commit |
scripts/wait-for-workflow.sh |
Polls a workflow run until completion (success/failure/timeout) |
Full release flow
Step 1: Commit
Use the git-commit skill if available, or commit directly. Ensure the Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> trailer is included.
Step 2: Determine version
Check existing tags to determine the next version:
git tag --sort=-v:refname | head -5
Follow semver (v0.x.y for pre-1.0, vX.Y.Z after).
Step 3: Run the release script
chmod +x .github/skills/release/scripts/*.sh
.github/skills/release/scripts/release.sh ekroon gh-copilot-scratch main <version>
This will:
- Push to main
- Create and push the version tag
- Wait for the Release workflow to complete
- Report the release URL
Step 4: Report results
Tell the user the final status — the release tag, the workflow URLs, and whether everything succeeded.
Running individual scripts
SCRIPTS=".github/skills/release/scripts"
# Find the workflow run for a tag push
RUN_ID=$("$SCRIPTS/find-workflow-run.sh" ekroon gh-copilot-scratch <sha> release.yml)
# Wait for it to complete (10s poll, 600s timeout)
"$SCRIPTS/wait-for-workflow.sh" ekroon gh-copilot-scratch "$RUN_ID" 10 600
Error handling
- CI failure: The release script exits with code 1 and prints the workflow conclusion. Show the user the workflow URL and offer to investigate.
- Timeout: Exits with code 2. Default timeout is 600s. Override with
TIMEOUT=900env var. - GPG signing hang: Use
-c commit.gpgsign=falsewhen committing.
Environment variables
| Variable | Default | Description |
|---|---|---|
POLL_INTERVAL |
10 |
Seconds between CI status checks |
TIMEOUT |
600 |
Max seconds to wait for each workflow |