name: publish-release version: 1.2.0 date: 2026-01-20 description: Publish a new release to GitHub Packages. Use when ready to release, after tests pass and version is updated. Creates git tag and pushes to trigger GitHub Actions. canonical_repo: https://github.com/stoicstudio/ClaudeSkills canonical_path: skills/publish-release/SKILL.md
publish-release
Publishes a new release to GitHub Packages via GitHub Actions.
Canonical Source: This skill is maintained at stoicstudio/ClaudeSkills. Run
/update-skill publish-releaseor see Updating This Skill below.
Prerequisites
Before running, ensure:
- All code changes are complete
-
dotnet testpasses -
VersionInfo.cshas been updated with new version number -
CHANGELOG.mdhas been updated with release notes - PROJECT_NAME is determined for the current project
Steps
-
Read current version info from
src/_PROJECT_NAME_/VersionInfo.cs:- Extract
Version(e.g., "1.3.0") - Extract
VersionName(e.g., "Agent Adoption Guidance")
- Extract
-
Check git status to see what files have changed
-
Stage all changes:
git add -A -
Create commit with version in message (use HEREDOC for proper formatting):
git commit -m "$(cat <<'EOF' v{Version}: {VersionName} {Brief summary of changes from CHANGELOG.md} 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> EOF )" -
Create git tag:
git tag v{Version} -
Push to origin (triggers GitHub Actions NuGet publish):
git push origin master --tags -
Announce completion: "As Above, so Below" - the local changes now manifest in the remote repository.
Workflow Monitoring
After push, monitor the GitHub Actions workflow until completion:
-
Determine check interval by querying the last successful workflow duration:
gh run list --repo {owner}/{repo} --status success --limit 5 --json databaseId,updatedAt,createdAt- Calculate average duration from recent successful runs
- Use
duration / 3as the check interval (minimum 30 seconds, maximum 2 minutes) - If no previous runs, default to 1 minute interval
-
Get the triggered workflow run ID:
gh run list --repo {owner}/{repo} --limit 1 --json databaseId,status,conclusion,headBranch- Verify the run is for the correct tag/branch (v{Version})
-
Poll workflow status at the calculated interval:
gh run view {run_id} --repo {owner}/{repo} --json status,conclusion- Continue polling while
statusisqueued,in_progress, orwaiting - Stop when
statusiscompleted
- Continue polling while
-
Report final result:
- If
conclusionissuccess: Report success with package availability - If
conclusionisfailure: Report failure and provide link to logs:gh run view {run_id} --repo {owner}/{repo} --web
- If
Post-Release
After workflow completes successfully:
- Package will be available at: https://github.com/{owner}/{repo}/packages
- Users can update with:
dotnet tool update --global {package-name}
Updating This Skill
This skill is distributed from the canonical repository. To update your local copy:
Manual Update
# From your project root
curl -sL https://raw.githubusercontent.com/stoicstudio/ClaudeSkills/main/skills/publish-release/SKILL.md \
-o .claude/skills/publish-release/SKILL.md
Check for Updates
Compare your local version with canonical:
# Get canonical version
curl -sL https://raw.githubusercontent.com/stoicstudio/ClaudeSkills/main/skills/publish-release/SKILL.md | head -5
# Check local version
head -5 .claude/skills/publish-release/SKILL.md
Bulk Update (All Projects)
Use the sync script from the canonical repo:
# Clone or update ClaudeSkills repo
cd /path/to/ClaudeSkills
git pull
# Run sync to update all configured projects
./sync.sh
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!