Merge pull request #263 from EveryInc/docs/versioning-is-release-owned

docs: clarify that plugin versioning is release-owned
This commit is contained in:
Trevin Chow
2026-03-13 21:09:57 -07:00
committed by GitHub
4 changed files with 36 additions and 38 deletions

View File

@@ -7,7 +7,7 @@ This repository contains a Bun/TypeScript CLI that converts Claude Code plugins
- **Branching:** Create a feature branch for any non-trivial change. If already on the correct branch for the task, keep using it; do not create additional branches or worktrees unless explicitly requested. - **Branching:** Create a feature branch for any non-trivial change. If already on the correct branch for the task, keep using it; do not create additional branches or worktrees unless explicitly requested.
- **Safety:** Do not delete or overwrite user data. Avoid destructive commands. - **Safety:** Do not delete or overwrite user data. Avoid destructive commands.
- **Testing:** Run `bun test` after changes that affect parsing, conversion, or output. - **Testing:** Run `bun test` after changes that affect parsing, conversion, or output.
- **Release versioning:** The root CLI package (`package.json`, `CHANGELOG.md`, and repo `v*` tags) uses one shared release line managed by semantic-release on `main`. Do not start or maintain a separate root CLI version stream. Use conventional commits and let release automation write the next root package version. Keep the root changelog header block in sync with `.releaserc.json` `changelogTitle` so generated release entries stay under the header. Embedded marketplace plugin metadata (`plugins/compound-engineering/.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`) is a separate version surface and may differ. - **Release versioning:** The root CLI package (`package.json`, root `CHANGELOG.md`, and repo `v*` tags) uses one shared release line managed by semantic-release on `main`. Do not start or maintain a separate root CLI version stream. Use conventional commits and let release automation write the next root package version. Keep the root changelog header block in sync with `.releaserc.json` `changelogTitle` so generated release entries stay under the header. Embedded marketplace plugin metadata (`plugins/compound-engineering/.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`) is a separate version surface and may differ, but contributors should not guess or hand-bump release versions for it in normal PRs. The automated release process decides the next plugin/marketplace releases and changelog entries after deciding which merged changes ship together.
- **Output Paths:** Keep OpenCode output at `opencode.json` and `.opencode/{agents,skills,plugins}`. For OpenCode, command go to `~/.config/opencode/commands/<name>.md`; `opencode.json` is deep-merged (never overwritten wholesale). - **Output Paths:** Keep OpenCode output at `opencode.json` and `.opencode/{agents,skills,plugins}`. For OpenCode, command go to `~/.config/opencode/commands/<name>.md`; `opencode.json` is deep-merged (never overwritten wholesale).
- **ASCII-first:** Use ASCII unless the file already contains Unicode. - **ASCII-first:** Use ASCII unless the file already contains Unicode.

View File

@@ -50,7 +50,7 @@ Rules:
- Do not start a separate root CLI version stream. The root CLI follows the repo tag line. - Do not start a separate root CLI version stream. The root CLI follows the repo tag line.
- Do not hand-bump the root CLI `package.json` or root `CHANGELOG.md` for routine feature work. Use conventional commits and let semantic-release write the released root version back to git. - Do not hand-bump the root CLI `package.json` or root `CHANGELOG.md` for routine feature work. Use conventional commits and let semantic-release write the released root version back to git.
- Keep the root `CHANGELOG.md` header block aligned with `.releaserc.json` `changelogTitle`. If they drift, semantic-release will prepend release notes above the header. - Keep the root `CHANGELOG.md` header block aligned with `.releaserc.json` `changelogTitle`. If they drift, semantic-release will prepend release notes above the header.
- Continue updating embedded plugin metadata when the plugin contents themselves change. - Do not guess or hand-bump embedded plugin release versions in routine PRs. The automated release process decides the next plugin/marketplace version and generate release changelog entries after choosing which merged changes ship together.
### Adding a New Plugin ### Adding a New Plugin
@@ -93,17 +93,17 @@ The description appears in multiple places and must match everywhere:
Format: `"Includes X specialized agents, Y commands, and Z skill(s)."` Format: `"Includes X specialized agents, Y commands, and Z skill(s)."`
#### 3. Update version numbers #### 3. Do not pre-cut release versions
When adding new functionality, bump the version in: Contributors should not guess the next released plugin version in a normal PR:
- [ ] `plugins/compound-engineering/.claude-plugin/plugin.json` → `version` - [ ] No manual bump in `plugins/compound-engineering/.claude-plugin/plugin.json` → `version`
- [ ] `.claude-plugin/marketplace.json` → plugin `version` - [ ] No manual bump in `.claude-plugin/marketplace.json` → plugin `version`
#### 4. Update documentation #### 4. Update documentation
- [ ] `plugins/compound-engineering/README.md` → list all components - [ ] `plugins/compound-engineering/README.md` → list all components
- [ ] `plugins/compound-engineering/CHANGELOG.md` → document changes - [ ] Do not cut a release section in `plugins/compound-engineering/CHANGELOG.md` for a normal feature PR
- [ ] `CLAUDE.md` → update structure diagram if needed - [ ] `CLAUDE.md` → update structure diagram if needed
#### 5. Rebuild documentation site #### 5. Rebuild documentation site

View File

@@ -17,20 +17,18 @@ This document applies to the embedded marketplace plugin metadata, not the root
## Solution ## Solution
**Every change to the plugin MUST include:** **Routine PRs should not cut plugin releases.**
1. **Version bump in `plugin.json`** The embedded plugin version is release-owned metadata. The maintainer uses a local slash command to choose the next version and generate release changelog entries after deciding which merged changes ship together. Because multiple PRs may merge before release, contributors should not guess release versions inside individual PRs.
- Follow semantic versioning (semver)
- MAJOR: Breaking changes or major reorganization
- MINOR: New agents, commands, or skills added
- PATCH: Bug fixes, documentation updates, minor improvements
2. **CHANGELOG.md update** Contributors should:
- Add entry under `## [Unreleased]` or new version section
- Use Keep a Changelog format
- Categories: Added, Changed, Deprecated, Removed, Fixed, Security
3. **README.md verification** 1. **Avoid release bookkeeping in normal PRs**
- Do not manually bump `.claude-plugin/plugin.json`
- Do not manually bump `.claude-plugin/marketplace.json`
- Do not cut release sections in `CHANGELOG.md`
2. **Keep substantive docs accurate**
- Verify component counts match actual files - Verify component counts match actual files
- Verify agent/command/skill tables are accurate - Verify agent/command/skill tables are accurate
- Update descriptions if functionality changed - Update descriptions if functionality changed
@@ -40,8 +38,9 @@ This document applies to the embedded marketplace plugin metadata, not the root
```markdown ```markdown
Before committing changes to compound-engineering plugin: Before committing changes to compound-engineering plugin:
- [ ] Version bumped in `.claude-plugin/plugin.json` - [ ] No manual version bump in `.claude-plugin/plugin.json`
- [ ] CHANGELOG.md updated with changes - [ ] No manual version bump in `.claude-plugin/marketplace.json`
- [ ] No manual release section added to `CHANGELOG.md`
- [ ] README.md component counts verified - [ ] README.md component counts verified
- [ ] README.md tables updated (if adding/removing/renaming) - [ ] README.md tables updated (if adding/removing/renaming)
- [ ] plugin.json description updated (if component counts changed) - [ ] plugin.json description updated (if component counts changed)
@@ -49,8 +48,8 @@ Before committing changes to compound-engineering plugin:
## File Locations ## File Locations
- Version: `.claude-plugin/plugin.json` `"version": "X.Y.Z"` - Version is release-owned: `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`
- Changelog: `CHANGELOG.md` - Changelog release sections are release-owned: `CHANGELOG.md`
- Readme: `README.md` - Readme: `README.md`
## Example Workflow ## Example Workflow
@@ -58,11 +57,10 @@ Before committing changes to compound-engineering plugin:
When adding a new agent: When adding a new agent:
1. Create the agent file in `agents/[category]/` 1. Create the agent file in `agents/[category]/`
2. Bump version in `plugin.json` (minor version for new agent) 2. Update README agent table
3. Add to CHANGELOG under `### Added` 3. Update README component count
4. Add row to README agent table 4. Update plugin metadata description with new counts if needed
5. Update README component count 5. Leave version selection and release changelog generation to the maintainer's release command
6. Update plugin.json description with new counts
## Prevention ## Prevention
@@ -70,7 +68,7 @@ This documentation serves as a reminder. When Claude Code works on this plugin,
1. Check this doc before committing changes 1. Check this doc before committing changes
2. Follow the checklist above 2. Follow the checklist above
3. Never commit partial updates (all three files must be updated together) 3. Do not guess release versions in feature PRs
## Related Files ## Related Files

View File

@@ -2,24 +2,24 @@
## Versioning Requirements ## Versioning Requirements
**IMPORTANT**: Every change to this plugin MUST include updates to all three files: **IMPORTANT**: Routine PRs should not cut releases for this plugin.
1. **`.claude-plugin/plugin.json`** - Bump version using semver The repo uses an automatied release process to prepare plugin releases, including version selection and changelog generation. Because multiple PRs may merge before the next release, contributors cannot know the final released version from within an individual PR.
2. **`CHANGELOG.md`** - Document changes using Keep a Changelog format
3. **`README.md`** - Verify/update component counts and tables
### Version Bumping Rules ### Contributor Rules
- **MAJOR** (1.0.0 → 2.0.0): Breaking changes, major reorganization - Do **not** manually bump `.claude-plugin/plugin.json` version in a normal feature PR.
- **MINOR** (1.0.0 → 1.1.0): New agents, commands, or skills - Do **not** manually bump `.claude-plugin/marketplace.json` plugin version in a normal feature PR.
- **PATCH** (1.0.0 → 1.0.1): Bug fixes, doc updates, minor improvements - Do **not** cut a release section in `CHANGELOG.md` for a normal feature PR.
- Do update substantive docs that are part of the actual change, such as `README.md`, component tables, usage instructions, or counts when they would otherwise become inaccurate.
### Pre-Commit Checklist ### Pre-Commit Checklist
Before committing ANY changes: Before committing ANY changes:
- [ ] Version bumped in `.claude-plugin/plugin.json` - [ ] No manual release-version bump in `.claude-plugin/plugin.json`
- [ ] CHANGELOG.md updated with changes - [ ] No manual release-version bump in `.claude-plugin/marketplace.json`
- [ ] No manual release entry added to `CHANGELOG.md`
- [ ] README.md component counts verified - [ ] README.md component counts verified
- [ ] README.md tables accurate (agents, commands, skills) - [ ] README.md tables accurate (agents, commands, skills)
- [ ] plugin.json description matches current counts - [ ] plugin.json description matches current counts