release
Publish a new release of hardimpactdev/liftoff-laravel to Packagist. Handles CHANGELOG updates, git tagging via GitHub CLI, and creating GitHub releases.
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.
| name | release |
|---|---|
| description | Publish a new release of hardimpactdev/craft-laravel to Packagist. Handles CHANGELOG updates, git tagging via GitHub CLI, and creating GitHub releases. |
| allowed-tools | Read, 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
- GitHub Release: Creating a release with
gh release createcreates a git tag - Packagist Webhook: Packagist is configured to auto-update when new tags are pushed
- 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
- Check webhook is configured: GitHub repo → Settings → Webhooks
- Verify tag was pushed:
git ls-remote --tags origin - 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
Related Packages
This package works with:
- craft-starterkit - The Laravel starter template
- waymaker - Route generation from controller attributes
- laravel-toolbar - Development toolbar