Skip to content

release v6.0.0: absorb release-flow into git-workflow, add merge-flow - #83

Merged
cheneeheng merged 2 commits into
mainfrom
refactor/merge-release-flow-into-git-workflow
Aug 30, 2026
Merged

release v6.0.0: absorb release-flow into git-workflow, add merge-flow#83
cheneeheng merged 2 commits into
mainfrom
refactor/merge-release-flow-into-git-workflow

Conversation

@cheneeheng

Copy link
Copy Markdown
Owner

What

Dissolves the ceh-release-flow plugin into ceh-git-workflow, adds merge-flow, and moves
update-changelog (with check-semver.py) from ceh-documentation to ceh-git-workflow. Cut as
repo tag v6.0.0.

Change Detail
Removed ceh-release-flow plugin, including direct-release-flow
Moved release-flow -> ceh-git-workflow; update-changelog + scripts/check-semver.py -> ceh-git-workflow
Added ceh-git-workflow:merge-flow; an Unreleased mode in update-changelog
Changed open-pr and merge descriptions; four scenario bundles; patch-built-version hand-off

Why

ceh-release-flow sequenced ceh-git-workflow skills and dispatched ceh-git-workflow subagents.
Its only original content was the ordering and the gates, and adding a flow that does not release
anything made the plugin name false.

merge-flow exists because the release pipeline answered a question most branches do not ask. A
finished branch still needs a changelog trace, a commit, a PR and a merge — folding that into
release-flow meant bolting a bump onto work with nothing to release. It starts on the branch you
are already on; ten DECISION_LOG entries record release-flow's fresh-branch step being deviated
from for exactly that reason.

update-changelog moved because the merge would otherwise force ceh-git-workflow ->
ceh-documentation, breaking "a cross-cutting plugin may depend only on other cross-cutting
plugins"
. Every input that skill reads is git plumbing (git describe --tags, git log,
git tag, git remote), so it was a git moment filed under a topic label. ceh-git-workflow keeps
zero declared dependencies.

update-readme deliberately did not move: git appears in it once as one of two ways to see what
changed, its gate asks about install steps and public API, both flows call it conditionally, and
ceh-seo:text-discoverability routes to it as a sibling.

How

  • The update-readme call in both flows is prose, not an Invoke the Skill tool instruction —
    that is load-bearing, since validate.py rejects an invocation target outside a declared
    dependency.
  • update-changelog gained an Unreleased mode so an invoked run does not demand a version its
    caller forbids.
  • open-pr and merge both claimed "create a PR, merge it, delete the branch" — verbatim
    merge-flow's moment, which they would have out-matched. Both now route it to merge-flow.
  • ceh-scenario-editorial gains ceh-git-workflow so it does not silently lose changelog
    capability.
  • PLUGIN_DEPENDENCY_PLAN.md sections 5-7 are left as the dated 2026-08-23 audit snapshot; section
    4 records D19 and says so.

Testing

  • python tools/validate-plugins/validate.py — green (28 plugins, manifests mirrored).
  • python plugins/ceh-git-workflow/scripts/check-semver.py CHANGELOG.md — green from its new
    location, 76 versioned entries, none unreleased.
  • No repo-wide reference to ceh-release-flow or ceh-documentation:update-changelog outside the
    historical records (CHANGELOG, DECISION_LOG, the dated audit sections).

Breaking

Two invoke paths change for existing installs:

  • /ceh-release-flow:release-flow -> /ceh-git-workflow:release-flow
  • /ceh-documentation:update-changelog -> /ceh-git-workflow:update-changelog

Decision record: DECISION_LOG Entry 85, PLUGIN_DEPENDENCY_PLAN D19.

Generated with Claude Code by CEH

…ate-changelog

Dissolve `ceh-release-flow` into `ceh-git-workflow` and add `merge-flow`, the
sibling that lands a branch without releasing it.

`ceh-release-flow` was sequencing git skills and dispatching git subagents that
all live in `ceh-git-workflow`; once a non-release flow joins it, the plugin name
is false. Merging turns every cross-plugin reference into a local one.

- Added `ceh-git-workflow:merge-flow` — changelog under `[Unreleased]` -> README
  -> commit -> PR -> merge -> cleanup, with no version bump, no tag, no release.
  It starts on the branch you are already on rather than cutting one; ten
  DECISION_LOG entries record `release-flow` step 2 being deviated from for
  exactly that reason.
- Moved `release-flow` into `ceh-git-workflow`; deleted `direct-release-flow` and
  the `ceh-release-flow` plugin.
- Moved `update-changelog` (and `scripts/check-semver.py`) from
  `ceh-documentation` to `ceh-git-workflow`. Every input it reads is git
  plumbing, so it fires on a git moment, not a documentation one. This is what
  keeps `ceh-git-workflow` at zero declared dependencies: the alternative was a
  `ceh-git-workflow` -> `ceh-documentation` edge, which breaks "a cross-cutting
  plugin may depend only on other cross-cutting plugins". `update-readme` stays
  put -- its call is conditional, so it remains prose.
- Gave `update-changelog` an Unreleased mode, so an invoked run does not demand a
  version its caller forbids.
- Stripped the "create a PR, merge it, delete the branch" claim from `open-pr`
  and `merge`; that phrase is `merge-flow`'s moment and both out-matched it.
- Bundles: the three `-iterate` drop `ceh-release-flow`; `ceh-scenario-editorial`
  gains `ceh-git-workflow` so it keeps changelog capability.

Breaking for existing installs: `/ceh-release-flow:release-flow` ->
`/ceh-git-workflow:release-flow`, and `/ceh-documentation:update-changelog` ->
`/ceh-git-workflow:update-changelog`.

Versions: ceh-git-workflow 3.3.0, ceh-documentation 1.2.0, four bundles 1.1.0.
Logged under CHANGELOG `[Unreleased]`; no repo tag (that is the release step).
Decision record: DECISION_LOG Entry 85, PLUGIN_DEPENDENCY_PLAN D19.

Validation: `validate.py` green; `check-semver.py CHANGELOG.md` green.

Generated with [Claude Code](https://claude.com/claude-code) by CEH
Dissolves `ceh-release-flow` into `ceh-git-workflow` and ships `merge-flow`, the
flow that lands a finished branch without releasing it — changelog under
`[Unreleased]`, commit, PR, merge, no version bump and no tag. Absorbing the
release pipeline would have forced a `ceh-git-workflow` -> `ceh-documentation`
dependency, so `update-changelog` moved to `ceh-git-workflow` too; every input it
reads is git plumbing. `update-readme` stayed in `ceh-documentation`.

- Bump: MAJOR — a plugin is removed and two invoke paths break
  (`/ceh-release-flow:release-flow` and `/ceh-documentation:update-changelog`).
  Precedent: v5.0.0 was cut MAJOR for renaming one plugin and removing another.
- Manifests: ceh-git-workflow 3.2.9 -> 3.3.0, ceh-documentation 1.1.7 -> 1.2.0,
  ceh-plan-build-review 1.1.5 -> 1.1.6, ceh-scenario-{service,library,webapp}-iterate
  and ceh-scenario-editorial 1.0.0 -> 1.1.0; ceh-release-flow removed from
  marketplace.json. All mirrored in .claude-plugin/marketplace.json.
- Docs: CHANGELOG `[Unreleased]` promoted to `[6.0.0]`. README.md and CLAUDE.md
  were updated in 4b1a796 and need no further change. docs/CROSS_REFERENCES.md
  and PLUGIN_DEPENDENCY_PLAN.md (D19) likewise.

Release content rides this feature branch rather than a fresh
`chore/release-v6.0.0` off main: the release *is* these changes, and a branch cut
from main would not contain them. Matches repo precedent (DECISION_LOG 509, 610,
707, 880, 911, 926, 1372, 1883, 1916).

Generated with [Claude Code](https://claude.com/claude-code) by CEH
@cheneeheng
cheneeheng merged commit c98035a into main Aug 30, 2026
1 check passed
@cheneeheng
cheneeheng deleted the refactor/merge-release-flow-into-git-workflow branch August 30, 2026 18:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant