feat(release-candidate): orchestrator skill over gitflow release + the version tag
/release-candidate cuts a release by orchestrating the existing gitflow release mechanic (start from develop; finish fan-out main+develop+delete) and adding the one piece the lib lacks: the version tag. - skills/release-candidate/SKILL.md: thin orchestrator — preconditions → gitflow start release → prep (version.txt + CHANGELOG, breaking doc'd) → run-tests gate → human WHEN-to-release gate → gitflow finish → git tag -a vX.Y.Z (in the skill, lib untouched) → push (gated). - lib/tests/run-release-candidate.sh: throwaway-repo flow replay. RC_TAG=0 reds the tag (gitflow fans out but never tags); RC_TAG=1 → 5/5. - CLAUDE.md: Skill routing line. CHANGELOG [Unreleased]: /reconcile + /release-candidate under Added (so the eventual v4.0.0 captures them). Tag scheme vX.Y.Z continues the version.txt/CHANGELOG lineage. writing-skills TDD. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
01cf0a1a6e
commit
d3d6cede65
@@ -9,6 +9,8 @@ Format follows [Keep a Changelog](https://keepachangelog.com/).
|
||||
<!-- DRAFT (doc-syncer): grounded in commits since 3.4.0; review wording + completeness before release. -->
|
||||
|
||||
### Added
|
||||
- `/reconcile` — declared-vs-real reconciler: confronts TODO checkboxes + registry statuses (never the `## Index`) against real git/fs and surfaces the gaps in four categories + contradiction candidates, with a gated TODO write-back. Engine `lib/reconcile.sh` (body enumeration, git/fs oracles, last-block-wins status); thin skill
|
||||
- `/release-candidate` — orchestrator over the gitflow release mechanic that adds the version tag the lib doesn't: finalize `version.txt` + CHANGELOG, fan-out `develop`→`main` + back, tag `vX.Y.Z`, push (gated). Lib stays the generic mechanic; the skill owns the tag
|
||||
- Coupled-capitalize: dev flows (feat / hotfix / bugfix / commit-change, ship-feature, init-project) auto-commit their memory in the same breath, via shared `lib/capitalize-commit.md` + `lib/memory-commit.sh` (surgical — `.claude/memory` + `.claude/tasks` only, never `git add -A`)
|
||||
- Coupled doc-sync: dev flows (feat / bugfix / hotfix, ship-feature, init-project) auto-commit the public docs `doc-syncer` patches, via shared `lib/doc-commit.md` + `lib/doc-commit.sh` (surgical — only the patched files, never `git add -A`, never `.claude/` / `CLAUDE.md`; refuses an out-of-scope path loudly with exit 4). `doc-syncer` surfaces `PATCHED_FILES` (one path per line) as the handoff
|
||||
- `lib/doc-shape.sh` — deterministic MINOR-shape oracle for `doc-syncer` AUTO MODE: re-checks each LLM-classified MINOR patch (added-heading / size / new-file / non-doc envelope, thresholds env-overridable) and escalates a shape-suspect patch to the existing SIGNIFICANT gate instead of silently auto-committing it. A structural floor under the LLM's classification, not a blocking gate (genuine MINOR still auto-commits, zero friction); catches structural/size significance, not semantic
|
||||
|
||||
Reference in New Issue
Block a user