release
npx machina-cli add skill guillempuche/ai-standards/release --openclawRelease Workflow
Detect changes, bump versions, and deploy individual plugin repos.
Step 1: Generate dist-repos
./scripts/generate-individual-repos.sh
Step 2: Detect changes
Compare each generated repo against the last deployed state in .repo-cache/:
for repo_dir in dist-repos/*/; do
repo_name=$(basename "$repo_dir")
cache_dir=".repo-cache/$repo_name"
if [ -d "$cache_dir" ]; then
changes=$(diff -rq --exclude='.git' "$cache_dir" "$repo_dir" 2>/dev/null)
if [ -n "$changes" ]; then
echo "CHANGED: $repo_name"
echo "$changes"
fi
else
echo "NEW: $repo_name"
fi
done
If no repos have changes, tell the user "Nothing to release" and stop.
Step 3: Show change summary
For each changed repo, show a brief summary of what changed (files added/modified/removed).
Step 4: Ask about version bumps
For each changed repo, use AskUserQuestion to ask the user what kind of version bump to apply:
- patch (1.0.0 -> 1.0.1): Bug fixes, minor content updates
- minor (1.0.0 -> 1.1.0): New content, features, or significant updates
- major (1.0.0 -> 2.0.0): Breaking changes or complete rewrites
Step 5: Update source frontmatter
For each repo that needs a bump, update the version field in the source file:
- Skills:
skills/<name>/SKILL.md - Agents:
agents/<name>.md
Use the Edit tool to change the version: line in the YAML frontmatter.
Compute the new version by parsing the current version: X.Y.Z and incrementing the appropriate part:
- patch: increment Z
- minor: increment Y, reset Z to 0
- major: increment X, reset Y and Z to 0
Step 6: Bump main plugin.json
Ask the user if they want to bump the main .claude-plugin/plugin.json version too (patch/minor/major/skip). Update the "version" field if they choose to bump.
Step 7: Regenerate dist-repos
Run the generate script again so dist-repos picks up the new versions:
./scripts/generate-individual-repos.sh
Step 8: Commit version bumps
Stage and commit all version changes in the main repo:
git add skills/ agents/ .claude-plugin/plugin.json
git commit -m "Bump versions for release
Co-Authored-By: Claude <noreply@anthropic.com>"
Step 9: Deploy
Run the deploy script to push individual repos to GitHub:
./scripts/deploy-individual-repos.sh
Step 10: Push main repo
git push origin main
Show the user a summary of what was released with the new version numbers.
Source
git clone https://github.com/guillempuche/ai-standards/blob/main/.claude/skills/release/SKILL.mdView on GitHub Overview
Release automates the end-to-end process of identifying changes in skills and agents, prompting for version bumps, and updating frontmatter versions. It then deploys individual plugin repositories to GitHub, keeping every repo in sync with release history.
How This Skill Works
It generates dist-repos, compares them to the last deployed state, and lists changes. For each changed repo, it prompts for a semantic version bump (patch, minor, or major), updates the corresponding frontmatter version in skills/<name>/SKILL.md or agents/<name>.md, optionally bumps the main plugin.json, regenerates dist-repos, commits the changes, deploys to GitHub, and finally pushes the main repository.
When to Use It
- After updating a skill or agent and needing a formal release
- When multiple repos have changed since the last deployment
- When you want a consistent, automated version bump process (patch/minor/major)
- When you need to deploy individual repos to GitHub without touching the main repo
- When preparing a production release that includes frontmatter and plugin.json updates
Quick Start
- Step 1: ./scripts/generate-individual-repos.sh
- Step 2: Review diffs against .repo-cache and decide on version bumps
- Step 3: Update frontmatter, regenerate dist-repos, commit, deploy, and push
Best Practices
- Review change diffs before choosing a version bump
- Follow semantic versioning: patch for fixes, minor for features, major for breaking changes
- Keep frontmatter versions in the skills/agents areas in sync with exports
- Include Co-Authored-By in commit messages for traceability
- Test in a staging branch or dry-run when possible before pushing to main
Example Use Cases
- Changed files in skills/quiz/SKILL.md; patched to 1.0.1 and deployed the quiz skill repo
- Agent improvements added; minor bump to 1.2.0 and per-repo deployment
- Breaking API changes in a skill require a major bump to 2.0.0 and full re-deploy
- New skill repository added and released as a new GitHub repo after generation
- Release cycle detects no changes and outputs 'Nothing to release'