Agent skill
release
Create a new version release with git tag and GitHub Release. Use when user asks to release, publish, create a new version, or ship a release. (project)
Install this agent skill to your Project
npx add-skill https://github.com/aiskillstore/marketplace/tree/main/skills/codename-11/release
SKILL.md
Release Skill
Create a new version release using prefixed tag-based workflow for monorepo plugins.
When to Use
- User explicitly asks to "release" or "create a release"
- User asks to "publish" or "ship" a new version
- User asks to "tag" a version
- User says "let's release v0.2.0" or similar
Plugin Identification
This is a monorepo with multiple plugins. First, identify which plugin to release:
| Plugin | Version File | Tag Format | Example |
|---|---|---|---|
| Stash Downloader | plugins/stash-downloader/package.json |
downloader-vX.Y.Z |
downloader-v0.5.2 |
| Stash Browser | plugins/stash-browser/package.json |
browser-vX.Y.Z |
browser-v0.1.0 |
If the user doesn't specify, ask which plugin to release. If both changed, release each separately.
Pre-Release Checklist
Before creating a release, verify:
- On dev branch:
git branch --show-current - No uncommitted changes:
git status - Type-check passes:
npm run type-check - Lint passes:
npm run lint - Tests pass:
npm test -- --run - Build succeeds:
npm run build
Release Process (Tag-Based)
Step 1: Determine Version Bump
- Check current version: Read the plugin's
package.jsonversion field - Review commits since last tag:
git log $(git describe --tags --match "downloader-v*" --abbrev=0)..HEAD --oneline(orbrowser-v*for Browser) - Determine bump type:
| Commit Types | Bump | Example |
|---|---|---|
Breaking changes (feat!:, BREAKING CHANGE) |
MAJOR | 0.1.0 → 1.0.0 |
New features (feat:) |
MINOR | 0.1.0 → 0.2.0 |
Bug fixes, patches (fix:, docs:, chore:) |
PATCH | 0.1.0 → 0.1.1 |
Step 2: Merge dev to main and Release
For Stash Downloader:
# From dev branch, checkout main and merge
git checkout main
git merge dev
# Update version in plugin's package.json
cd plugins/stash-downloader
npm version patch # or minor/major
# Commit the version bump
git add .
git commit -m "$(cat <<'COMMIT'
🔖 chore: release downloader-vX.Y.Z
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
COMMIT
)"
# Create and push tag (with downloader- prefix!)
git tag downloader-vX.Y.Z
git push origin main --tags
For Stash Browser:
# From dev branch, checkout main and merge
git checkout main
git merge dev
# Update version in plugin's package.json
cd plugins/stash-browser
npm version patch # or minor/major
# Commit the version bump
git add .
git commit -m "$(cat <<'COMMIT'
🔖 chore: release browser-vX.Y.Z
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
COMMIT
)"
# Create and push tag (with browser- prefix!)
git tag browser-vX.Y.Z
git push origin main --tags
Step 3: Wait and Sync Dev
⚠️ CRITICAL: Do NOT push to dev immediately!
GitHub Pages uses a concurrency group. If you push to dev before the stable workflow finishes, the stable deploy gets CANCELLED.
# 1. Wait for workflow to complete
# Check: https://github.com/Codename-11/Stash-Downloader/actions
# 2. AFTER workflow completes, sync dev with main
git checkout dev
git merge main
git push origin dev
What Happens After Tag Push
GitHub Actions automatically:
- Runs CI (type-check, lint, tests)
- Builds the plugin
- Updates GitHub Pages (Stash plugin index)
- Generates AI release notes (if GOOGLE_API_KEY configured)
- Creates GitHub Release with:
- Auto-generated changelog
- Installation instructions
- ZIP file attached
If Release Was Cancelled
If you accidentally pushed to dev too early and cancelled the stable deploy:
# Re-push the tag to trigger the workflow again
git push origin --delete downloader-vX.Y.Z # or browser-vX.Y.Z
git push origin downloader-vX.Y.Z
PR-Based Release (Optional)
For significant releases where you want Claude review before merging:
# Create release branch from dev
git checkout -b release/downloader-vX.Y.Z dev
# Update version in plugin's package.json, commit
cd plugins/stash-downloader
npm version patch
git add .
git commit -m "🔖 chore: release downloader-vX.Y.Z"
# Push and create PR to main
git push -u origin release/downloader-vX.Y.Z
gh pr create --base main --title "🔖 Release downloader-vX.Y.Z" --body "Release notes..."
# After PR merge, checkout main and tag
git checkout main
git pull origin main
git tag downloader-vX.Y.Z
git push origin downloader-vX.Y.Z
Important Notes
- Tag format MUST include plugin prefix:
downloader-vX.Y.Zorbrowser-vX.Y.Z - Version in the plugin's
package.jsonmust match tag version (without prefix) - Always start from dev branch - never commit directly to main
- Wait for workflow to complete before syncing dev
- Push to
mainwithout a tag triggers NOTHING - Verify release succeeded in GitHub Actions after pushing tag
- Release plugins separately - if both plugins changed, create separate tags
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
perigon-backend
Perigon ASP.NET Core + EF Core + Aspire conventions
perigon-agent
Pointers for Copilot/agents to apply Perigon conventions
perigon-angular
Angular 21+ standalone/Material/signal conventions for Perigon WebApp
fastapi-mastery
Comprehensive FastAPI development skill covering REST API creation, routing, request/response handling, validation, authentication, database integration, middleware, and deployment. Use when working with FastAPI projects, building APIs, implementing CRUD operations, setting up authentication/authorization, integrating databases (SQL/NoSQL), adding middleware, handling WebSockets, or deploying FastAPI applications. Triggered by requests involving .py files with FastAPI code, API endpoint creation, Pydantic models, or FastAPI-specific features.
context7-efficient
Token-efficient library documentation fetcher using Context7 MCP with 86.8% token savings through intelligent shell pipeline filtering. Fetches code examples, API references, and best practices for JavaScript, Python, Go, Rust, and other libraries. Use when users ask about library documentation, need code examples, want API usage patterns, are learning a new framework, need syntax reference, or troubleshooting with library-specific information. Triggers include questions like "Show me React hooks", "How do I use Prisma", "What's the Next.js routing syntax", or any request for library/framework documentation.
browser-use
Browser automation using Playwright MCP. Navigate websites, fill forms, click elements, take screenshots, and extract data. Use when tasks require web browsing, form submission, web scraping, UI testing, or any browser interaction.
Didn't find tool you were looking for?