| name | release-management |
| description | Version, changelog, and marketplace workflow for ORS skills. Semver discipline, breaking-change protocol, marketplace.json update, README refresh, and the v0.X.Y → v1.0.0 graduation criteria. Use when bumping a skill version, publishing a release, or upgrading the ORS package version. |
| license | MIT |
Release Management
The ORS release workflow — when and how to bump versions, what goes in
changelogs, how the marketplace.json is updated, and the criteria for
graduating a skill from beta to stable.
When to use
- Bumping a skill's
version field after an edit.
- Releasing a new ORS package version (v0.X.Y).
- Updating the marketplace manifest.
- Deciding whether a change is a patch, minor, or major bump.
- Closing out a milestone that spans many skills.
When NOT to use
- Adding a new skill from scratch (use
meta/roadmap-author).
- Auditing a skill for content issues (use
meta/integrity-audit).
- Validating the local tree (use
scripts/validate-skills.py).
Hard rules
- No fabricated citations. Every cited work must resolve to a verifiable
record (DOI, PMID, arXiv ID, ISBN, URL with retrieval date, or stable
identifier). If a source cannot be resolved, the skill must say so
explicitly rather than presenting the claim as established.
- No claim without provenance. Every quantitative or factual claim
must point to a file, line, table, figure, dataset, or external source
the agent can show. "Trust me" is not provenance.
- No silent failure. Every script invocation, API call, or tool use
must declare its exit status and what to do on non-zero. A skill that
silently swallows errors is a violation.
Semver for skills
ORS uses Semantic Versioning per-skill AND for the
package as a whole.
Per-skill semver (in <!-- metadata --> block)
| Bump | When |
|---|
| patch (1.0.X) | Typos, broken links, single-line clarifications, no content change |
| minor (1.X.0) | New domain rule, new code pattern, new tool, new section |
| major (X.0.0) | Incompatible change — slug rename, schema change, removed feature |
Rule: A change to the description field is always at least a minor
bump, because it changes the trigger surface that Claude uses to decide
whether to load the skill.
Rule: A change to the category field is always major — it moves
the skill in the catalog and breaks cross-references that hardcoded the
category.
Package semver (root marketplace.json)
| Bump | When |
|---|
| patch (0.0.X) | Bug fixes, validation-script fixes, doc clarifications |
| minor (0.X.0) | New skill added, meta skill added, schema extension (additive only) |
| major (X.0.0) | Schema break, removed skill, mandatory migration of existing skills |
The release workflow
For each release:
- Identify the changes. Run
git diff --stat <previous-tag>..HEAD to
see what changed. Group changes by skill.
- Decide the bumps. Apply the semver table above to each skill. Decide
the package bump from the highest individual bump plus the overall
schema impact.
- Update each affected SKILL.md. Bump
version in the metadata block,
prepend an entry to ## Changelog. The changelog entry must be
one-line and concrete: "Added ## Pitfalls section listing 5 common
errors", not "Various improvements".
- Update
marketplace.json. Bump version at the package level. Add
the new/changed skills to the plugins array. Verify the JSON schema
matches the latest Claude Code marketplace spec.
- Run the full validator.
python scripts/validate-skills.py skills/
must exit 0 across the entire repo. If it fails, the release is blocked.
- Run the integrity audit. Load
meta/integrity-audit and run it on
every changed SKILL.md. Any FAIL blocks the release.
- Tag the release.
git tag -a v0.X.Y -m "<summary>". Push tags:
git push origin v0.X.Y.
- Refresh the README. If the package version, total skill count, or
top-level structure changed, update the README counts and the
"What's new" section.
Changelog discipline
Changelog entries must be:
- Concrete — "Added
## Pitfalls section with 5 entries" not "Improvements".
- One line per change — easier to scan, easier to bisect.
- In past tense — "Added", "Fixed", "Changed", "Removed".
- Tagged with category — optional but recommended for package-level
changelogs (skill, schema, validator, docs).
Bad:
- 1.1.0 — Various improvements
Good:
- **1.1.0** (2026-06-17) — Added `## Pitfalls` section with 5 entries;
fixed broken DOI for Smith 2023; clarified `oversight` guidance.
Graduation criteria (v0.X.Y → v1.0.0)
ORS graduates to v1.0.0 when:
Breaking-change protocol
If a release requires existing skills to change (e.g. a schema extension
that mandates new fields):
- Co-write the migration script. Add
scripts/migrate-vX-to-vY.py.
- Run on a copy first. Verify the script is idempotent and produces
no regressions in
python scripts/validate-skills.py.
- Document in the changelog. "BREAKING: X changed; run
python scripts/migrate-vX-to-vY.py skills/ to upgrade."
- Run on main. Commit the migration + the schema change in a single
atomic commit so users can bisect.
- Tag clearly.
git tag -a vX.Y.0 -m "BREAKING: ...".
Cross-references
- roadmap-author — produces new skills; use this skill to release them.
- integrity-audit — final-pass check before any release.
- cross-reference-mapper — verify xref slugs before tagging.
Changelog
- 1.0.0 (2026-06-17) — Initial release. Distilled from the v0.2.0 → v0.4.0
migration experience and the ARS-comparison release workflow.