releasing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited releasing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Orchestrate the complete release workflow for a bundle-plugin: verify quality, scan for security risks, check documentation consistency, review change coherence, test locally, bump versions, update documentation, and publish to target platforms.
Core principle: Release is a checkpoint, not a formality. Every release deserves the full pipeline — even "minor" version bumps can introduce drift or break platform installs. Users should complete all agent, skill, and workflow development before invoking this skill.
Skill type: Rigid — follow every step exactly. Releases have no room for improvisation.
For version management infrastructure details (.version-bump.json schema, script usage, version setup for new projects), read references/version-infrastructure.md. For distribution strategy options, read references/distribution-strategy.md.
Announce at start: "I'm using the releasing skill to prepare this project for release."
| Context | Path |
|---|---|
| User wants to release a version, provides a project directory | Path 1: Standard release — run the full pipeline below |
| Urgent fix with small changes | Path 2: Hotfix release — run the abbreviated pipeline (see Hotfix Releases) |
| Project needs version infrastructure for the first time | Path 3: Version setup — read references/version-infrastructure.md § Version Setup |
0. Prerequisites → 1. Pre-flight Checks → 2. Address Findings
→ 3. Change Review & Doc Sync → 4. Local Testing
→ 5. Version Bump → 6. Release Notes
→ 7. Final Verification → 8. PublishVerify all conditions before entering the pipeline. Hard requirements block the pipeline; soft requirements trigger warnings.
Hard requirements (must pass):
skills/ directory and package.json)git status shows no uncommitted or unstaged changes. All development work (agents, skills, workflows) must be committed before releasing.Soft requirements (warn if missing):
.bundles-forge/audits/ — if not, releasing runs a full audit in Step 1main or master — if not, warn the user and ask for confirmation before proceedinggit tag -l v<version> to verifygit status
git tag -l v<version>
git branch --show-currentIf the working tree is dirty, instruct the user to commit all development work first. If the tag already exists, ask the user to choose a different version. If on a non-main branch, warn and ask for confirmation.
Run all automated checks. If any critical issues are found, resolve them before continuing.
bundles-forge bump-version <target-dir> --check
bundles-forge audit-docs <target-dir>Plugin validation (Claude Code only): If running in a Claude Code environment, run claude plugin validate (or /plugin validate in a session) to verify plugin.json schema, skill/agent/command frontmatter, and hooks/hooks.json validity. Skip this step on other platforms — the inspector agent covers equivalent structural checks.
Full audit: Invoke bundles-forge:auditing (preferred — includes qualitative assessment via auditor subagent with 10-category scoring). Fallback: bundles-forge audit-plugin <target-dir> (automated checks only, no qualitative scoring).
If audit status is FAIL, resolve critical issues before releasing. If security findings are critical, block the release.
Present all findings to the user grouped by severity:
For fixes, invoke bundles-forge:optimizing for quality issues.
This step requires AI judgment — it cannot be fully automated.
Change coherence review:
Read the diff from the last release tag to HEAD:
git diff $(git describe --tags --abbrev=0)..HEAD --stat
git diff $(git describe --tags --abbrev=0)..HEADIf no prior tags exist, use git log --oneline to identify the scope of changes.
Review all changed files for:
| Check | What to Look For | Severity |
|---|---|---|
| Contradictions | File A says "supports 5 platforms", file B says "supports 4 platforms" | Critical |
| Redundancy | Two SKILL.md files with large duplicated sections | Warning |
| Over-engineering | Complex abstraction for a simple feature, unnecessary indirection layers | Warning |
| Missing registrations | New skill added but not in bootstrap routing, AGENTS.md, or README tables | Critical |
| Stale references | Renamed skill but old name still used in prose | Critical |
Present findings as a blocking report using the same Critical/Warning/Info severity model as Step 2. Critical items must be resolved before proceeding.
Documentation update:
After resolving coherence issues, sync project documentation:
skills/ directory.Use bundles-forge audit-docs output from Step 1 as a guide for what needs updating. After making fixes, re-run bundles-forge audit-docs to confirm all documentation is consistent.
Before bumping the version, invoke bundles-forge:testing to verify the plugin works correctly in a real installation scenario:
If testing reveals critical issues, resolve them before proceeding to version bump.
For abbreviated hotfix releases, this step may be reduced to hook smoke tests only.
Help the user choose the right version increment:
| Change Type | Version Bump | Example |
|---|---|---|
| Breaking changes to skill behavior or structure | Major (X.0.0) | Renamed skills, changed workflow chain |
| New skills, new platform support, significant improvements | Minor (0.X.0) | Added a skill, added Gemini support |
| Bug fixes, description improvements, doc updates | Patch (0.0.X) | Fixed description, updated README |
| Testing a major release before stabilizing | Pre-release (X.Y.Z-beta.N) | 2.0.0-beta.1, 2.0.0-rc.1 |
Pre-release versions follow semver pre-release syntax. The bump script accepts any valid version string — pre-release versions work the same as stable ones across all manifests.
bundles-forge bump-version <target-dir> <new-version>This updates all declared files and runs an audit to catch any missed files. For the full command reference, read references/version-infrastructure.md.
CHANGELOG.md — Add an entry for the new version using Keep a Changelog format:
## [X.Y.Z] - YYYY-MM-DD
### Added
- New skill: `bundles-forge:authoring` for skill authoring guidance
### Changed
- Improved descriptions for better triggering accuracy
### Fixed
- Version drift in Cursor manifestCHANGELOG validation — After writing the entry, verify:
README.md — Update if the release adds/removes skills, changes the workflow, or adds platform support.
After all changes, re-run verification to confirm nothing broke:
bundles-forge bump-version <target-dir> --check
bundles-forge bump-version <target-dir> --audit
bundles-forge audit-docs <target-dir>Git + GitHub Release:
git add -A
git commit -m "release: v<version>"
git tag v<version>
git push origin main --tagsAfter pushing the tag, create a GitHub Release so the /releases page has release notes and notifies watchers:
gh release create v<version> --title "v<version>" --notes-file CHANGELOG-EXCERPT.mdGenerate CHANGELOG-EXCERPT.md from the current version's CHANGELOG.md section (the ## [X.Y.Z] block written in Step 6). Delete the excerpt file after gh release create succeeds. If gh CLI is unavailable, instruct the user to create the release manually from the GitHub web UI at https://github.com/<owner>/<repo>/releases/new?tag=v<version>.
Platform-specific publishing:
| Platform | Command |
|---|---|
| Claude Code | claude plugin publish (if marketplace-ready) |
| Cursor | Submit through Cursor plugin marketplace |
| Codex | Users pull from git — GitHub Release is sufficient |
| OpenCode | Users pull from git — GitHub Release is sufficient |
| Gemini CLI | Users install from git URL — GitHub Release is sufficient |
For urgent fixes between planned releases:
### Fixed section| Mistake | Fix |
|---|---|
| Releasing with uncommitted changes | Always verify git status is clean before starting the pipeline |
| Releasing without running audit | Always run full pipeline — "it's just a small change" is how drift happens |
| Skipping documentation consistency check | bundles-forge audit-docs catches skill list drift, broken cross-refs, README desync |
| Not reviewing changes for coherence | Read the full diff since last tag — contradictions and missing registrations are invisible to automated checks |
| Forgetting to tag the release | Tags are how git-based platforms identify versions |
| Only pushing a tag without creating a GitHub Release | Tags appear on /tags but not /releases — use gh release create to publish release notes and notify watchers |
| Bumping version before fixing issues | Fix first, bump second — avoid releasing a known-broken version |
| Skipping CHANGELOG update | Users need to know what changed, especially for breaking changes |
| Not re-verifying after fixes | Changes to fix issues can introduce new drift |
| Forgetting marketplace.json entry | plugins.0.version field needs tracking too |
| Manual editing without bump command | Always use bundles-forge bump-version — it runs audit after |
| Releasing from non-main branch without awareness | Not blocked, but should be an explicit decision |
project-directory (required) — bundle-plugin project root with committed skill content ready for releaseversion-tag — git tag (v<version>) for the releasechangelog-entry — CHANGELOG.md update with categorized changes (Added, Changed, Fixed)github-release (optional) — GitHub Release with release notes, created via gh release createCalls:
project-directory → project-directory (direct match — releasing passes the project root for audit)project-directory → project-directory (direct match)project-directory → audit-report (indirect — releasing passes audit findings, optimizing consumes them as audit-report)Pairs with:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.