deploy-release

Installation
SKILL.md
Contains Shell Commands

This skill contains shell command directives (!`command`) that may execute system commands. Review carefully before installing.

Release Creation Command

Create GitHub releases using release-please automation or manual release workflows for containerized applications.

When to Use

Scenario Use this skill Alternative
Cutting a new release from main Yes -
Setting up release-please automation Yes -
Creating a manual GitHub release Yes -
Publishing a pre-release or draft Yes -
Deploying to Kubernetes No deploy-handoff for handoff docs
Building container images No container-development for Dockerfiles
Tagging without a GitHub release No Use git tag directly

Context

  • Git remotes: !git remote -v
  • Branch: !git branch --show-current
  • Recent tags: !git tag --sort=-v:refname -l 'v*' --format='%(refname:short)' -n5
  • Last release commit: !git log --oneline --max-count=5
  • Release config: !find . -maxdepth 1 -name 'release-please-config.json'
  • Manifest: !find . -maxdepth 1 -name '.release-please-manifest.json'
  • Changelog: !find . -maxdepth 1 -name 'CHANGELOG.md'

Parameters

Parse from $ARGUMENTS:

  • $1 (VERSION): Semantic version string (e.g., 1.2.0, v2.0.0-rc.1)
  • --draft: Create release as draft (not published)
  • --prerelease: Mark as pre-release

Execution

Execute this release workflow:

Step 1: Determine release strategy

Check whether the project uses release-please or manual releases:

  1. If release-please-config.json exists, use the release-please workflow
  2. If no release-please config exists, use the manual release workflow

Step 2a: Release-please workflow

If release-please is configured:

  1. Verify conventional commits exist since last release tag
  2. Check for an open release PR: gh pr list --label "autorelease: pending" --json number,title,url
  3. If a release PR exists, report its status and URL
  4. If no release PR exists, explain that release-please creates PRs automatically from conventional commits
  5. Provide guidance on merging the release PR to trigger the release

Step 2b: Manual release workflow

If no release-please config:

  1. Validate the VERSION argument follows semver format
  2. Check that the working tree is clean: git status --porcelain
  3. Confirm the branch is main or master
  4. Create the release with:
    gh release create v<VERSION> --title "v<VERSION>" --generate-notes
    
  5. Add --draft flag if --draft was passed
  6. Add --prerelease flag if --prerelease was passed

Step 3: Set up release-please (if requested)

If the user asks to set up release-please automation:

  1. Create release-please-config.json with manifest release type:
    {
      "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
      "release-type": "simple",
      "packages": {
        ".": {
          "component": "<project-name>",
          "extra-files": [
            {"type": "json", "path": "package.json", "jsonpath": "$.version"}
          ],
          "changelog-sections": [
            {"type": "feat", "section": "Features"},
            {"type": "fix", "section": "Bug Fixes"},
            {"type": "perf", "section": "Performance"},
            {"type": "refactor", "section": "Code Refactoring"},
            {"type": "docs", "section": "Documentation"}
          ]
        }
      }
    }
    
  2. Create .release-please-manifest.json with current version:
    {
      ".": "0.0.0"
    }
    
  3. Recommend adding the release-please GitHub Action workflow

Step 4: Report results

Print a summary including:

  • Release version and URL (if created)
  • Release PR status (if release-please)
  • Next steps for the user

Release-Please GitHub Action

Recommended workflow for automation:

name: Release
on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        with:
          config-file: release-please-config.json
          manifest-file: .release-please-manifest.json

Agentic Optimizations

Context Command
List recent tags git tag --sort=-v:refname -l 'v*' -n5
Check release PRs gh pr list --label "autorelease: pending" --json number,title,url
Latest release gh release view --json tagName,publishedAt,url
Create release gh release create v1.0.0 --generate-notes
Create draft gh release create v1.0.0 --draft --generate-notes
Create prerelease gh release create v1.0.0-rc.1 --prerelease --generate-notes
List all releases gh release list --json tagName,isLatest,isDraft,isPrerelease
Commits since tag git log v1.0.0..HEAD --oneline

Quick Reference

Flag Description
--draft Create as draft release (not visible publicly)
--prerelease Mark as pre-release version
--generate-notes Auto-generate release notes from commits
--notes-file FILE Use file contents as release notes
--target BRANCH Target branch for the release tag

Related Skills

  • deploy-handoff - Generate deployment handoff documentation
  • container-development - Container image construction and optimization
Weekly Installs
54
GitHub Stars
28
First Seen
Feb 16, 2026