releasing-software

0
0
Source

Use when preparing a release, tagging a version, or when user says "release", "tag", "ship it", "push to production" - ensures all release artifacts are verified before tagging to avoid the retag-four-times failure pattern

Install

mkdir -p .claude/skills/releasing-software && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6206" && unzip -o skill.zip -d .claude/skills/releasing-software && rm skill.zip

Installs to .claude/skills/releasing-software

About this skill

Releasing Software

Overview

Never tag until CI passes. Every retag erodes trust and wastes time.

This skill prevents the "tag, watch CI fail, retag, repeat" anti-pattern by establishing a pre-flight checklist that catches issues BEFORE creating the tag.

The Iron Law

NO TAG WITHOUT GREEN CI

Run the full verification locally. Fix everything. THEN tag. Not before.

Pre-Release Checklist

MANDATORY: Use TodoWrite to create todos for EACH item.

1. Verify Build Paths

Check ALL places that reference your main package:

  • goreleaser.yml - main: field (common: ./cmd/app vs .)
  • .github/workflows/*.yml - any go build commands
  • Makefile - build targets
  • Dockerfile - build commands
# Find all references to cmd/ or main package paths
grep -r "cmd/" . --include="*.yml" --include="*.yaml" --include="Makefile" --include="Dockerfile"
grep -r "go build" . --include="*.yml" --include="*.yaml" --include="Makefile"

2. Verify Tests Exist

Go 1.23+ coverage tool fails on packages without tests:

# Check for test files in each package
find . -name "*_test.go" | wc -l

# If zero, add placeholder tests to EVERY package

Every package needs at least one test file or CI coverage step fails with no such tool "covdata".

3. Verify Local CI Passes

# Run what CI runs
make test          # or go test ./...
make lint          # or golangci-lint run
make build         # verify it compiles

# If using coverage
make test-coverage

4. Verify Documentation

  • README.md exists and is current
  • CHANGELOG.md updated (if maintained)
  • Version references updated

5. Verify Release Config

  • goreleaser description is correct (not template leftovers)
  • goreleaser homepage URL is correct
  • .gitignore includes build artifacts, coverage files

6. Verify Clean Git State

git status                    # Nothing unexpected staged
git diff --stat              # Review all changes
git log --oneline -5         # Verify recent history

Release Procedure

Only after ALL checks pass:

# 1. Commit all changes
git add -A && git commit -m "release: prepare v0.0.X"

# 2. Wait for pre-commit hooks to pass
# If hooks fail, fix and re-commit

# 3. Push and wait for CI
git push origin main

# 4. WAIT FOR CI TO PASS - check status
gh run list --limit 2
# OR watch in browser

# 5. Only after CI is green, create tag
git tag -a v0.0.X -m "v0.0.X"
git push origin v0.0.X

# 6. Verify release workflow completes
gh run list --limit 2

Red Flags - STOP

If you catch yourself doing any of these, STOP:

  • Tagging before CI completes
  • "CI will probably pass"
  • "I'll fix it if it fails"
  • Deleting and recreating tags
  • Force-pushing tags
  • "It's just a minor release"

All of these mean: Wait for CI. Fix issues. Then tag.

Common Failures

SymptomCauseFix
couldn't find main fileWrong path in goreleaserSet main: . if main.go at root
no such tool "covdata"Package without testsAdd placeholder test to each package
Release succeeds but brew failsWrong description/homepageUpdate goreleaser brews section
Had to retagTagged before CI passedWAIT FOR GREEN CI
504 errors in CIGitHub infra issueRetry workflow, not a code problem

Version Bumping

When incrementing version:

  1. Patch (0.0.X): Bug fixes, no new features
  2. Minor (0.X.0): New features, backwards compatible
  3. Major (X.0.0): Breaking changes

Search codebase for version references:

grep -r "version" . --include="*.go" --include="*.yml" --include="*.json" | grep -v test | grep -v vendor

Post-Release Verification

After tag is pushed:

# Watch release workflow
gh run watch

# Verify release assets
gh release view v0.0.X

# Test installation (if applicable)
go install github.com/user/repo@v0.0.X

The Bottom Line

Retagging is a symptom of rushing.

The 5 minutes spent on pre-flight checks saves 30 minutes of retag cycles and preserves your release history integrity.

Every tag should be final. If you're deleting tags, you skipped the checklist.

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

643969

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

591705

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

318399

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

340397

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

452339

fastapi-templates

wshobson

Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.

304231

Stay ahead of the MCP ecosystem

Get weekly updates on new skills and servers.