-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path.releaserc.yml
More file actions
109 lines (108 loc) · 5.9 KB
/
Copy path.releaserc.yml
File metadata and controls
109 lines (108 loc) · 5.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
branches:
- main
plugins:
# Preflight: Block release if working directory is dirty
# ADR: 2025-12-23-semantic-release-preflight-guard
- - "@semantic-release/exec"
- verifyConditionsCmd: "./scripts/release-preflight.sh"
- - "@semantic-release/commit-analyzer"
- releaseRules:
# Marketplace plugins require version bump for ANY change
# Default: feat=minor, fix=patch, perf=patch, revert=patch
# Added: all other types trigger patch release
- { type: "docs", release: "patch" }
- { type: "chore", release: "patch" }
- { type: "style", release: "patch" }
- { type: "refactor", release: "patch" }
- { type: "test", release: "patch" }
- { type: "build", release: "patch" }
- { type: "ci", release: "patch" }
- { type: "revert", release: "patch" }
- "@semantic-release/release-notes-generator"
# ADR/Design Spec links + version sync via @semantic-release/exec
# ADR: 2025-12-06-release-notes-adr-linking
# ADR: 2025-12-05-centralized-version-management
- - "@semantic-release/exec"
# Version sync only. The previous generateNotesCmd pointed at a
# script in the now-removed itp:semantic-release skill; default
# release notes are generated by @semantic-release/release-notes-generator above.
- prepareCmd: "node scripts/sync-versions.mjs ${nextRelease.version}"
- "@semantic-release/changelog"
# marketplace.json-only versioning: no individual plugin.json files
# Hook files (hooks.json) explicitly listed for release asset tracking
- - "@semantic-release/git"
- assets:
- CHANGELOG.md
- plugin.json
- package.json
- .claude-plugin/plugin.json
- .claude-plugin/marketplace.json
- plugins/itp-hooks/plugin.json
# Hook definition files (ensures hooks.json changes are tracked)
- plugins/itp-hooks/hooks/hooks.json
- plugins/link-tools/hooks/hooks.json
- plugins/dotfiles-tools/hooks/hooks.json
- plugins/statusline-tools/hooks/hooks.json
- plugins/gh-tools/hooks/hooks.json
# Skill definition files (ensures skill changes are tracked)
- plugins/mise/skills/run-full-release/SKILL.md
- plugins/mise/skills/show-env-status/SKILL.md
- plugins/mise/skills/list-repo-tasks/SKILL.md
message: "chore(release): ${nextRelease.version} [skip ci]"
# Push commit and tags after @semantic-release/git creates them
# Belt-and-suspenders: ensures push happens even in --no-ci mode
- - "@semantic-release/exec"
- successCmd: "/usr/bin/env bash -c 'git push --follow-tags origin main && git update-index --refresh && echo ✓ Git index refreshed'"
# Iter-143: explicit @semantic-release/github config to skip the four
# community-documented bottleneck features that target cc-skills's non-use-cases:
#
# 1. successComment:false — disables the per-resolved-commit
# `GET /search/issues?q=repo:...+type:pr+is:merged+<sha>` API storm
# that the plugin runs to comment on PRs/issues fixed by the release.
# cc-skills uses tag-driven releases with iter-N descriptive commits
# (not PR-driven), so there are no resolved PRs/issues to comment on.
# This is the documented dominant slow-down in the success step
# (semantic-release/github#542, #867, #2204) — disabling it skips
# the search-issues API path entirely.
#
# 2. failComment:false — disables auto-opening a GitHub issue when the
# release fails. cc-skills surfaces failures via local release-pipeline
# logs + the iter-139 RELEASE_TIMING_PROFILE ranking instead.
#
# 3. releasedLabels:false — disables applying a `released` label to
# resolved PRs/issues. cc-skills doesn't use issue-tagging for release
# tracking — the tag itself + GitHub release page is the SSoT.
#
# 4. addReleases:false — disables injecting "previous releases" link
# block into each release notes page. With v21.58.x semver climbing
# monotonically and CHANGELOG.md already linking inter-version diffs,
# this back-reference list adds noise without information value.
#
# All four flags are LOAD-BEARING for performance; reintroducing any of them
# would re-add API-call cost. iter-143 regression test pins their presence
# to forbid silent revert in future config edits.
- - "@semantic-release/github"
- successComment: false
failComment: false
releasedLabels: false
addReleases: false
# Post-release: Auto-update local plugin and verify cache
# Fully automated - no manual intervention required
#
# Iter-142: EXTRACTED the previous 200+ line bash heredoc into an external
# script to resolve the lodash-template-vs-bash-parameter-expansion syntax
# conflict that broke v21.58.2's post-release verification.
# @semantic-release/exec runs lodash-es template() on the successCmd
# string BEFORE invoking the shell; lodash interprets `${name}` as a
# JavaScript template expression. Iter-140's bash `${VAR:-default}` syntax
# (RELEASE_TIMING_PROFILE default-value) collided with lodash's JS-eval
# → `SyntaxError: Unexpected token ':'` → the entire post-release
# verification block silently never ran (marketplace stale, hooks unsynced,
# plugin cache unverified, jsDelivr CDN not purged).
# By moving the bash body into a real .sh file and passing the version as
# argv[1], lodash sees only one well-formed `${nextRelease.version}` token,
# bash sees a normal script with all its own parameter-expansion semantics
# intact, and the script is also shellcheck-clean / bash-syntax-checked /
# source-controlled / unit-testable in a way the YAML heredoc never was.
- - "@semantic-release/exec"
- successCmd: "./scripts/iter142-post-release-verification-with-iter140-per-step-timing-instrumentation-extracted-from-releaserc-yml-yaml-literal-to-avoid-lodash-template-versus-bash-parameter-expansion-syntax-conflict.sh ${nextRelease.version}"