release

hardimpactdev's avatarfrom hardimpactdev

Publish a new release of hardimpactdev/liftoff-laravel to Packagist. Handles CHANGELOG updates, git tagging via GitHub CLI, and creating GitHub releases.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 8, 2026

When & Why to Use This Skill

This Claude skill automates the end-to-end release workflow for Laravel packages, specifically designed for publishing to Packagist. It streamlines the deployment process by managing semantic versioning, updating CHANGELOG.md files, and utilizing the GitHub CLI for git tagging and release creation, ensuring a consistent and professional software delivery pipeline.

Use Cases

  • Automated Version Management: Automatically determine the next version (Patch, Minor, or Major) and update the CHANGELOG.md with standardized formatting before a new release.
  • GitHub Release Orchestration: Use GitHub CLI commands to create official releases and tags, ensuring that the repository's history is accurately documented and synchronized with remote origins.
  • Packagist Deployment: Facilitate the automatic update of PHP packages on Packagist by triggering webhooks through GitHub releases, making new features or bug fixes immediately available to users via Composer.
  • Standardized Release Workflows: Provide a reliable, step-by-step execution environment for developers to publish updates without manual errors in git configuration or release notes.
namerelease
descriptionPublish a new release of hardimpactdev/craft-laravel to Packagist. Handles CHANGELOG updates, git tagging via GitHub CLI, and creating GitHub releases.
allowed-toolsRead, Write, Edit, Bash, Glob, Grep

Release Workflow for hardimpactdev/craft-laravel

Publish new versions to Packagist via GitHub releases.

Quick Release

# 1. Check current version
git fetch --tags
git tag --sort=-v:refname | head -3

# 2. Determine next version (see Version Types below)
VERSION="0.1.4"  # Set appropriately

# 3. Update CHANGELOG.md with new version section

# 4. Commit changes (if any uncommitted work)
git add -A
git commit -m "Release v$VERSION"
git push origin main

# 5. Create GitHub release (auto-publishes to Packagist)
gh release create "v$VERSION" --title "v$VERSION" --notes-file - <<EOF
## What's Changed

- List changes here
- See CHANGELOG.md for details

**Full Changelog**: https://github.com/hardimpactdev/craft-laravel/compare/v0.1.3...v$VERSION
EOF

Version Types

Type When to Use Example
Patch (0.0.x) Bug fixes, docs, minor changes 0.1.0 → 0.1.1
Minor (0.x.0) New features, backwards compatible 0.1.0 → 0.2.0
Major (x.0.0) Breaking changes 0.1.0 → 1.0.0

CHANGELOG Format

Always update CHANGELOG.md before releasing:

## v0.1.4 - YYYY-MM-DD

### New Features
- Added feature X

### Bug Fixes
- Fixed issue Y

### Documentation
- Updated README

How It Works

  1. GitHub Release: Creating a release with gh release create creates a git tag
  2. Packagist Webhook: Packagist is configured to auto-update when new tags are pushed
  3. Composer Update: Users can now composer update hardimpactdev/craft-laravel

IMPORTANT: Use GitHub CLI for All Git Operations

When the repository lacks local git user config, always use gh CLI instead of raw git commands:

Creating Commits via GitHub API

# Get current commit SHA
CURRENT_SHA=$(gh api repos/hardimpactdev/craft-laravel/git/refs/heads/main --jq '.object.sha')

# Create a blob for each changed file
BLOB_SHA=$(gh api repos/hardimpactdev/craft-laravel/git/blobs \
  -f content="$(base64 -w0 path/to/file)" \
  -f encoding="base64" \
  --jq '.sha')

# Create tree, commit, and update ref...
# (Complex - prefer having local git config set up)

Preferred: Ensure Local Git Config Exists

Each project should have local git config in .git/config:

[user]
    name = Vibe Kanban
    email = noreply@vibekanban.com

If missing, ask the user to set it up rather than configuring it yourself.

Troubleshooting

Packagist Not Updating

  1. Check webhook is configured: GitHub repo → Settings → Webhooks
  2. Verify tag was pushed: git ls-remote --tags origin
  3. Manual trigger: Visit packagist.org and click "Update"

Release Already Exists

# Delete and recreate if needed
gh release delete v0.1.4 --yes
gh release create v0.1.4 --title "v0.1.4" --notes "..."

View Recent Releases

gh release list --limit 5

Monitoring

Check Release Status

gh release view v0.1.4

View Release Assets

gh release view v0.1.4 --json assets

This package works with: