release-skill 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +21 -0
- package/INSTALL.md +32 -8
- package/INSTALL.zh-CN.md +28 -6
- package/README.md +26 -14
- package/README.zh-CN.md +24 -14
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +1340 -614
- package/adapters/claude/schemas/.render-manifest.json +6 -6
- package/adapters/claude/schemas/release-plan.schema.json +67 -0
- package/adapters/claude/schemas/release-project.schema.json +6 -0
- package/adapters/claude/schemas/release-run.schema.json +65 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +1340 -614
- package/adapters/codex/schemas/.render-manifest.json +6 -6
- package/adapters/codex/schemas/release-plan.schema.json +67 -0
- package/adapters/codex/schemas/release-project.schema.json +6 -0
- package/adapters/codex/schemas/release-run.schema.json +65 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +1340 -614
- package/adapters/kimi/schemas/.render-manifest.json +6 -6
- package/adapters/kimi/schemas/release-plan.schema.json +67 -0
- package/adapters/kimi/schemas/release-project.schema.json +6 -0
- package/adapters/kimi/schemas/release-run.schema.json +65 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +1340 -614
- package/adapters/workbuddy/schemas/.render-manifest.json +6 -6
- package/adapters/workbuddy/schemas/release-plan.schema.json +67 -0
- package/adapters/workbuddy/schemas/release-project.schema.json +6 -0
- package/adapters/workbuddy/schemas/release-run.schema.json +65 -0
- package/bin/release-skill.bundle.mjs +1340 -614
- package/package.json +1 -1
- package/references/.render-manifest.json +4 -4
- package/references/02-project-config.md +28 -2
- package/references/05-evidence-and-errors.md +6 -0
- package/schemas/.render-manifest.json +6 -6
- package/schemas/release-plan.schema.json +67 -0
- package/schemas/release-project.schema.json +6 -0
- package/schemas/release-run.schema.json +65 -0
- package/src/commands/prepare.mjs +158 -1
- package/src/commands/publish.mjs +72 -0
- package/src/commands/reconcile.mjs +19 -0
- package/src/commands/setup.mjs +26 -0
- package/src/commands/verify.mjs +32 -0
- package/src/core/errors.mjs +12 -0
- package/src/core/source-authority.mjs +547 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "广州市风荷科技有限公司"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"defaultPrompt": [
|
|
21
21
|
"Assess this project for release readiness.",
|
|
22
|
-
"Prepare a release plan for version 0.2.
|
|
22
|
+
"Prepare a release plan for version 0.2.6.",
|
|
23
23
|
"Help me understand the release workflow."
|
|
24
24
|
]
|
|
25
25
|
}
|
package/.kimi-plugin/plugin.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.2.6 locale=en baseline=sha256:ba7fe1d8cbae8ea3a539016c1231acd066f6dbf30b6e1ebb9db50e7c04e69253 -->
|
|
4
|
+
## [0.2.6] - 2026-07-29
|
|
5
|
+
|
|
6
|
+
v0.2.6 adds a source-authority content gate so a production release cannot succeed while the project workspace's real default branch still exposes stale public files.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- **Source-authority content closure**: prepare freezes the exact public input paths and executable modes that must exist on the configured source repository's actual default branch.
|
|
11
|
+
- **Pre-publish remote proof**: publish compares the frozen closure with the remote default branch before any external write and records a digest-bound receipt that verify requires.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **Branch topology tolerance**: projects may develop directly on the default branch or use release branches; compliance is based on final content, not merge ancestry or a hard-coded branch name.
|
|
16
|
+
- **Minimal conflict policy**: divergent or conflicting source state fails closed with diagnostics; Release Skill does not auto-merge, rebase, force-push, or create a replacement branch workflow.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **Stale workspace README after release**: production publishing now blocks when the source workspace's real default branch does not contain the frozen public README and other declared source inputs.
|
|
21
|
+
<!-- release-skill:changelog:end version=0.2.6 locale=en -->
|
|
22
|
+
|
|
23
|
+
|
|
3
24
|
<!-- release-skill:changelog:start version=0.2.5 locale=en baseline=sha256:8bd4c268f65c72efeb3866ef4bcae7d1fa902e02833e622ca66670b633b124b1 -->
|
|
4
25
|
## [0.2.5] - 2026-07-28
|
|
5
26
|
|
package/INSTALL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.2.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.6 -->
|
|
6
6
|
## Prerequisites
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 or later
|
|
@@ -128,7 +128,7 @@ as a version-pinned **manual** install plus trusted observation/attestation:
|
|
|
128
128
|
frozen version; otherwise do NOT issue an attestation.
|
|
129
129
|
|
|
130
130
|
```
|
|
131
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.
|
|
131
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.6
|
|
132
132
|
/plugins reload
|
|
133
133
|
```
|
|
134
134
|
|
|
@@ -140,7 +140,7 @@ as a version-pinned **manual** install plus trusted observation/attestation:
|
|
|
140
140
|
```json
|
|
141
141
|
{
|
|
142
142
|
"platform": "kimi",
|
|
143
|
-
"version": "0.2.
|
|
143
|
+
"version": "0.2.6",
|
|
144
144
|
"planDigest": "<64-hex frozen plan digest>",
|
|
145
145
|
"result": "passed",
|
|
146
146
|
"actor": "<person who confirmed>",
|
|
@@ -204,7 +204,7 @@ attestation (the same capability gap and closed loop as Kimi Code):
|
|
|
204
204
|
```json
|
|
205
205
|
{
|
|
206
206
|
"platform": "codebuddy",
|
|
207
|
-
"version": "0.2.
|
|
207
|
+
"version": "0.2.6",
|
|
208
208
|
"planDigest": "<64-hex frozen plan digest>",
|
|
209
209
|
"result": "passed",
|
|
210
210
|
"actor": "<person who confirmed>",
|
|
@@ -345,7 +345,11 @@ setup; use the mechanically extracted `recommendedAnswers`.
|
|
|
345
345
|
"projectConfig": {
|
|
346
346
|
"apiVersion": "release-skill/v1",
|
|
347
347
|
"kind": "ReleaseProject",
|
|
348
|
-
"project": {
|
|
348
|
+
"project": {
|
|
349
|
+
"name": "my-project",
|
|
350
|
+
"defaultBranch": "main",
|
|
351
|
+
"sourceRepository": "owner/my-workspace"
|
|
352
|
+
},
|
|
349
353
|
"releaseUnits": [{
|
|
350
354
|
"id": "my-project",
|
|
351
355
|
"source": ".",
|
|
@@ -428,6 +432,7 @@ kind: ReleaseProject
|
|
|
428
432
|
project:
|
|
429
433
|
name: my-project
|
|
430
434
|
defaultBranch: main
|
|
435
|
+
sourceRepository: owner/my-workspace
|
|
431
436
|
|
|
432
437
|
releaseUnits:
|
|
433
438
|
- id: my-project
|
|
@@ -643,6 +648,23 @@ The last two strategies require online production prepare. Any mismatch stops
|
|
|
643
648
|
for review; update the human-owned config only after inspecting real remote
|
|
644
649
|
state, and never force-push or weaken the baseline.
|
|
645
650
|
|
|
651
|
+
### Workspace source authority
|
|
652
|
+
|
|
653
|
+
`project.sourceRepository` is the GitHub `owner/repo` of the workspace that
|
|
654
|
+
owns the human source files; it may differ from every release unit's
|
|
655
|
+
`publicRepo`. `project.defaultBranch` is that repository's actual remote
|
|
656
|
+
default branch and is not assumed to be `main`.
|
|
657
|
+
|
|
658
|
+
Production prepare freezes a content-and-mode closure of every expanded
|
|
659
|
+
`publicFiles.from` input and each unit's `version.source`. It rejects only
|
|
660
|
+
uncommitted changes inside that closure. Before any publish adapter executes,
|
|
661
|
+
release-skill verifies the same closure on the remote default branch. Commit
|
|
662
|
+
ancestry is intentionally irrelevant: merge, squash, and rebase are accepted
|
|
663
|
+
when the bytes still match, while a reverted or conflict-lost README is
|
|
664
|
+
blocked by path. Resolve differences manually and put the accepted content on
|
|
665
|
+
the default branch; release-skill never merges, switches branches, pushes, or
|
|
666
|
+
creates a PR.
|
|
667
|
+
|
|
646
668
|
## Protect Human-Owned Content
|
|
647
669
|
|
|
648
670
|
README text, slogans, examples, layout, and other manually curated source files
|
|
@@ -673,10 +695,12 @@ When an existing public copy has drifted, choose explicitly:
|
|
|
673
695
|
a release plan.
|
|
674
696
|
- Before production, configure every unit's `previousPublicBaseline`. Use
|
|
675
697
|
`mode: bound` with the exact `repo`, `ref`, and `commit` for an existing
|
|
676
|
-
public version
|
|
698
|
+
public version. Also configure the workspace `project.sourceRepository` and
|
|
699
|
+
its real `project.defaultBranch`, then run
|
|
700
|
+
`"${CLI[@]}" prepare --root <your-project> --online --production`.
|
|
677
701
|
The default observer proves only the ref-to-commit mapping; remote content is
|
|
678
|
-
not downloaded
|
|
679
|
-
|
|
702
|
+
not downloaded during prepare. Source content authority and target
|
|
703
|
+
branch/tag/Release/npm uniqueness are checked by publish before any execute.
|
|
680
704
|
- For production commands, use only the immutable `planPath` returned by
|
|
681
705
|
`prepare --json` and immutable `approvalPath` returned by `approve --json`.
|
|
682
706
|
Mutable latest aliases are for convenience and are not production authority.
|
package/INSTALL.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.2.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.6 -->
|
|
6
6
|
## 前置条件
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 或更高版本
|
|
@@ -112,7 +112,7 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
112
112
|
必须核实已安装插件清单版本等于冻结版本;否则**不得**出具证明。
|
|
113
113
|
|
|
114
114
|
```
|
|
115
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.
|
|
115
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.6
|
|
116
116
|
/plugins reload
|
|
117
117
|
```
|
|
118
118
|
|
|
@@ -124,7 +124,7 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
124
124
|
```json
|
|
125
125
|
{
|
|
126
126
|
"platform": "kimi",
|
|
127
|
-
"version": "0.2.
|
|
127
|
+
"version": "0.2.6",
|
|
128
128
|
"planDigest": "<64 位十六进制冻结计划摘要>",
|
|
129
129
|
"result": "passed",
|
|
130
130
|
"actor": "<确认人>",
|
|
@@ -178,7 +178,7 @@ codebuddy CLI 可以添加市场并安装插件,但 **`plugin marketplace add`
|
|
|
178
178
|
```json
|
|
179
179
|
{
|
|
180
180
|
"platform": "codebuddy",
|
|
181
|
-
"version": "0.2.
|
|
181
|
+
"version": "0.2.6",
|
|
182
182
|
"planDigest": "<64 位十六进制冻结计划摘要>",
|
|
183
183
|
"result": "passed",
|
|
184
184
|
"actor": "<确认人>",
|
|
@@ -297,7 +297,11 @@ node -e 'require("node:fs").rmSync(process.argv[1],{recursive:true,force:false})
|
|
|
297
297
|
"projectConfig": {
|
|
298
298
|
"apiVersion": "release-skill/v1",
|
|
299
299
|
"kind": "ReleaseProject",
|
|
300
|
-
"project": {
|
|
300
|
+
"project": {
|
|
301
|
+
"name": "my-project",
|
|
302
|
+
"defaultBranch": "main",
|
|
303
|
+
"sourceRepository": "owner/my-workspace"
|
|
304
|
+
},
|
|
301
305
|
"releaseUnits": [{
|
|
302
306
|
"id": "my-project",
|
|
303
307
|
"source": ".",
|
|
@@ -362,6 +366,7 @@ kind: ReleaseProject
|
|
|
362
366
|
project:
|
|
363
367
|
name: my-project
|
|
364
368
|
defaultBranch: main
|
|
369
|
+
sourceRepository: owner/my-workspace
|
|
365
370
|
|
|
366
371
|
releaseUnits:
|
|
367
372
|
- id: my-project
|
|
@@ -512,6 +517,19 @@ production:
|
|
|
512
517
|
|
|
513
518
|
后两种策略必须在线执行 production prepare。任何不一致都应停止并审阅;只有检查真实远端状态后才能人工更新权威配置,禁止 force push 或弱化基线。
|
|
514
519
|
|
|
520
|
+
### Workspace 源码权威
|
|
521
|
+
|
|
522
|
+
`project.sourceRepository` 是承载人工源文件的 workspace GitHub
|
|
523
|
+
`owner/repo`,可以与各 release unit 的 `publicRepo` 不同。
|
|
524
|
+
`project.defaultBranch` 是该仓库真实的远端默认分支,不假设一定为 `main`。
|
|
525
|
+
|
|
526
|
+
生产 prepare 冻结所有 `publicFiles.from` 展开输入和各 unit
|
|
527
|
+
`version.source` 的内容与 Git mode,只拒绝这个闭包内的未提交变化。publish 在任何
|
|
528
|
+
adapter execute 前从远端默认分支比较同一闭包。判定不依赖 commit ancestry,因此
|
|
529
|
+
merge、squash、rebase 后字节仍一致即可通过;README 被 revert 或冲突解决丢失时按路径
|
|
530
|
+
阻断。差异必须由人工处理并把接受内容放入默认分支;release-skill 不自动 merge、切分支、
|
|
531
|
+
push 或创建 PR。
|
|
532
|
+
|
|
515
533
|
## 保护人工维护内容
|
|
516
534
|
|
|
517
535
|
README 文案、slogan、示例、排版及其他人工源文件始终是权威。release-skill 只按 `publicFiles` 映射做快照,不重新生成或覆盖源 README。每次人工编辑后重新 prepare,并批准新的不可变计划;不得编辑冻结快照或复用旧批准绕过变化。
|
|
@@ -528,5 +546,9 @@ README 文案、slogan、示例、排版及其他人工源文件始终是权威
|
|
|
528
546
|
- 缺少配置时运行 `"${CLI[@]}" setup --root <your-project> --json`,在人工决策完成前保持默认 dry-run。
|
|
529
547
|
- 运行 `"${CLI[@]}" assess --root <your-project> --offline` 检查发布就绪度。
|
|
530
548
|
- 运行 `"${CLI[@]}" prepare --root <your-project> --offline` 生成发布计划;release-skill 自身只做本地写入,但项目 hook 可能执行远端操作。
|
|
531
|
-
- 生产前为每个 unit 配置 `previousPublicBaseline`。已有公开版本必须使用 `mode: bound
|
|
549
|
+
- 生产前为每个 unit 配置 `previousPublicBaseline`。已有公开版本必须使用 `mode: bound`,
|
|
550
|
+
绑定精确 `repo`、`ref` 和 `commit`;同时配置 workspace 的
|
|
551
|
+
`project.sourceRepository` 与真实 `project.defaultBranch`,再运行
|
|
552
|
+
`"${CLI[@]}" prepare --root <your-project> --online --production`。prepare 不下载源码
|
|
553
|
+
内容;publish 会在任何 execute 前检查源码权威闭包与目标唯一性。
|
|
532
554
|
- 生产命令只使用 `prepare --json` 返回的不可变 `planPath`,以及 `approve --json` 返回的不可变 `approvalPath`。
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.2.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.6 -->
|
|
6
6
|
Release preparation for Claude Code, CodeBuddy, WorkBuddy, Codex, and Kimi Code, with human-edited files kept intact.
|
|
7
7
|
|
|
8
8
|
release-skill helps a maintainer answer three questions: what will be released,
|
|
@@ -14,30 +14,27 @@ Setup surfaces only the deterministic `compactSummary` review view; the full
|
|
|
14
14
|
report stays in a temporary session directory.
|
|
15
15
|
|
|
16
16
|
<!-- release-skill:managed:start id=latest-release -->
|
|
17
|
-
**0.2.
|
|
17
|
+
**0.2.6** (2026-07-29)
|
|
18
18
|
|
|
19
|
-
v0.2.
|
|
19
|
+
v0.2.6 adds a source-authority content gate so a production release cannot succeed while the project workspace's real default branch still exposes stale public files.
|
|
20
20
|
|
|
21
21
|
**Added**
|
|
22
22
|
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
- **Adversarial path checks**: rejects current-working-directory fallbacks, source-tree backjumps, absolute machine paths, path escape, symbolic links, and non-regular resource targets.
|
|
23
|
+
- **Source-authority content closure**: prepare freezes the exact public input paths and executable modes that must exist on the configured source repository's actual default branch.
|
|
24
|
+
- **Pre-publish remote proof**: publish compares the frozen closure with the remote default branch before any external write and records a digest-bound receipt that verify requires.
|
|
26
25
|
|
|
27
26
|
**Changed**
|
|
28
27
|
|
|
29
|
-
- **
|
|
30
|
-
- **
|
|
31
|
-
- **Legacy plan compatibility preserved**: existing frozen plans remain readable, while newly prepared plans require resource-closure evidence.
|
|
28
|
+
- **Branch topology tolerance**: projects may develop directly on the default branch or use release branches; compliance is based on final content, not merge ancestry or a hard-coded branch name.
|
|
29
|
+
- **Minimal conflict policy**: divergent or conflicting source state fails closed with diagnostics; Release Skill does not auto-merge, rebase, force-push, or create a replacement branch workflow.
|
|
32
30
|
|
|
33
31
|
**Fixed**
|
|
34
32
|
|
|
35
|
-
- **
|
|
36
|
-
- **Public baseline tests synchronized**: migration invariants now track the configured v0.2.4 public baseline commit.
|
|
33
|
+
- **Stale workspace README after release**: production publishing now blocks when the source workspace's real default branch does not contain the frozen public README and other declared source inputs.
|
|
37
34
|
<!-- release-skill:managed:end id=latest-release -->
|
|
38
35
|
|
|
39
36
|
<!-- release-skill:capability:external-write-boundary -->
|
|
40
|
-
> **Current boundary:** v0.2.
|
|
37
|
+
> **Current boundary:** v0.2.6 is the current release (v0.2.2 previously held
|
|
41
38
|
> published status before the platform verification convergence fix was added).
|
|
42
39
|
> v0.1.1 completed a real production release to GitHub and npm — the first
|
|
43
40
|
> production-verified milestone — followed by
|
|
@@ -55,7 +52,7 @@ v0.2.5 adds a built-in skill resource-closure release gate. Release Skill now va
|
|
|
55
52
|
> publish global preflight.
|
|
56
53
|
|
|
57
54
|
<!-- release-skill:capability:safe-first-command -->
|
|
58
|
-
> **Production path verified since the v0.1.1 milestone; v0.2.
|
|
55
|
+
> **Production path verified since the v0.1.1 milestone; v0.2.6 is the current
|
|
59
56
|
> release.** The npm-installed CLI is the supported user entry. Source checkout
|
|
60
57
|
> is the development/contributor fallback.
|
|
61
58
|
>
|
|
@@ -263,6 +260,15 @@ again; it never rebuilds from a template. Only files listed in `publicFiles` are
|
|
|
263
260
|
copied. `prepare` never refreshes or rewrites human docs — maintainers update
|
|
264
261
|
README, INSTALL, and CHANGELOG first, then prepare, review, and approve.
|
|
265
262
|
|
|
263
|
+
**Workspace source authority:** production config names the workspace source
|
|
264
|
+
repository with `project.sourceRepository` and its real remote default branch
|
|
265
|
+
with `project.defaultBranch`. Prepare binds the content and Git mode of every
|
|
266
|
+
expanded `publicFiles.from` input plus each `version.source`; publish compares
|
|
267
|
+
that frozen closure with the remote default branch before the first adapter
|
|
268
|
+
write. The check accepts merge, squash, and rebase when the bytes still match,
|
|
269
|
+
but blocks a lost or reverted README by path. It never merges, switches
|
|
270
|
+
branches, pushes, or creates a PR.
|
|
271
|
+
|
|
266
272
|
**Write safety:** `setup` is read-only by default (create-once after digest
|
|
267
273
|
confirmation). `prepare` writes only under `.release-skill/`. `publish` is the
|
|
268
274
|
production write entry, requiring both approval and the current plan digest.
|
|
@@ -293,6 +299,7 @@ kind: ReleaseProject
|
|
|
293
299
|
project:
|
|
294
300
|
name: my-project
|
|
295
301
|
defaultBranch: main
|
|
302
|
+
sourceRepository: owner/my-workspace
|
|
296
303
|
releaseUnits:
|
|
297
304
|
- id: my-project
|
|
298
305
|
source: .
|
|
@@ -333,6 +340,7 @@ kind: ReleaseProject
|
|
|
333
340
|
project:
|
|
334
341
|
name: my-workspace
|
|
335
342
|
defaultBranch: main
|
|
343
|
+
sourceRepository: owner/my-workspace
|
|
336
344
|
releaseUnits:
|
|
337
345
|
- id: my-app
|
|
338
346
|
source: packages/app
|
|
@@ -390,7 +398,11 @@ and binding the same id in `selectedGateIds`:
|
|
|
390
398
|
"projectConfig": {
|
|
391
399
|
"apiVersion": "release-skill/v1",
|
|
392
400
|
"kind": "ReleaseProject",
|
|
393
|
-
"project": {
|
|
401
|
+
"project": {
|
|
402
|
+
"name": "my-project",
|
|
403
|
+
"defaultBranch": "main",
|
|
404
|
+
"sourceRepository": "owner/my-workspace"
|
|
405
|
+
},
|
|
394
406
|
"releaseUnits": [{
|
|
395
407
|
"id": "my-project",
|
|
396
408
|
"source": ".",
|
package/README.zh-CN.md
CHANGED
|
@@ -2,36 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.2.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.6 -->
|
|
6
6
|
面向 Claude Code、CodeBuddy、WorkBuddy、Codex 和 Kimi Code 的发布准备工具,完整保留人工维护的文件内容。
|
|
7
7
|
|
|
8
8
|
release-skill 帮助维护者回答三个问题:准备发布什么、还有哪些检查未通过、最终发布的内容是什么。它不重新生成、也不回写项目源文件。`prepare` 把每个配置的公开文件复制到隔离快照并验证字节——先冻结并供人工审阅,再从同一份冻结产物发布。`setup` 只显示确定性的 `compactSummary` 审阅视图,完整报告保留在临时会话目录中。
|
|
9
9
|
|
|
10
10
|
<!-- release-skill:managed:start id=latest-release -->
|
|
11
|
-
**0.2.
|
|
11
|
+
**0.2.6** (2026-07-29)
|
|
12
12
|
|
|
13
|
-
v0.2.
|
|
13
|
+
v0.2.6 新增源码权威内容门,避免生产发布完成后,项目工作区的真实默认分支仍对外展示旧 README 等公开文件。
|
|
14
14
|
|
|
15
15
|
**新增**
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
- **对抗性路径检查**:拒绝依赖当前工作目录、回跳源码树、机器绝对路径、路径逃逸、符号链接和非普通文件资源。
|
|
17
|
+
- **源码权威内容闭包**:prepare 冻结必须出现在所配置源码仓真实默认分支上的公开输入路径、内容与可执行位。
|
|
18
|
+
- **发布前远端证明**:publish 在任何外部写入前对比冻结闭包与远端默认分支,并生成摘要绑定的收据;verify 必须消费该收据。
|
|
20
19
|
|
|
21
20
|
**变更**
|
|
22
21
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- **保留旧计划兼容性**:既有冻结计划仍可读取,新生成计划必须包含资源闭包证据。
|
|
22
|
+
- **兼容不同分支拓扑**:项目既可直接在默认分支迭代,也可使用发布分支;是否合规只看最终内容,不依赖合并祖先关系或写死的分支名。
|
|
23
|
+
- **最小冲突策略**:分叉或冲突状态失败关闭并给出诊断;Release Skill 不自动 merge、rebase、force-push,也不引入替代性的分支工作流。
|
|
26
24
|
|
|
27
25
|
**修复**
|
|
28
26
|
|
|
29
|
-
-
|
|
30
|
-
- **同步公开基线测试**:迁移不变量现与配置中的 v0.2.4 公开基线提交一致。
|
|
27
|
+
- **修复发布后工作区 README 陈旧**:当源码工作区真实默认分支缺少冻结后的 README 或其他声明输入时,生产发布会在外部写入前阻断。
|
|
31
28
|
<!-- release-skill:managed:end id=latest-release -->
|
|
32
29
|
|
|
33
30
|
<!-- release-skill:capability:external-write-boundary -->
|
|
34
|
-
> **当前边界:** v0.2.
|
|
31
|
+
> **当前边界:** v0.2.6 是当前发布版本(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
|
|
35
32
|
> v0.1.1 已完成 GitHub 与 npm 的
|
|
36
33
|
> 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
|
|
37
34
|
> 安装及 Claude/Codex 消费者安装验证;"当前发布版本"与"首次生产验证里程碑"
|
|
@@ -44,7 +41,7 @@ v0.2.5 新增内置的技能资源闭包发布门禁。Release Skill 现在检
|
|
|
44
41
|
> 远端唯一性检查在 `publish` 全局预检执行。
|
|
45
42
|
|
|
46
43
|
<!-- release-skill:capability:safe-first-command -->
|
|
47
|
-
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.2.
|
|
44
|
+
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.2.6 是当前发布版本。**
|
|
48
45
|
> npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
|
|
49
46
|
>
|
|
50
47
|
> **第一条命令:**
|
|
@@ -235,6 +232,13 @@ DISCOVERED -> ASSESSED -> PREPARED -> APPROVED -> PUBLISHING -> PUBLISHED -> VER
|
|
|
235
232
|
|
|
236
233
|
**写入安全:** `setup` 默认只读(摘要确认后仅首次创建配置)。`prepare` 只写 `.release-skill/`。`publish` 是生产写入入口,需要同时提供批准和当前计划摘要。项目 hook 和 gate 是已确认的本地进程,没有操作系统沙箱。
|
|
237
234
|
|
|
235
|
+
**Workspace 源码权威:** 生产配置使用 `project.sourceRepository` 指定 workspace
|
|
236
|
+
源仓库,并用 `project.defaultBranch` 指定其真实远端默认分支。prepare 冻结所有
|
|
237
|
+
`publicFiles.from` 展开文件及各 `version.source` 的内容与 Git mode;publish 在第一个
|
|
238
|
+
adapter 写入前与远端默认分支比较。普通 merge、squash、rebase 后内容仍一致即可通过;
|
|
239
|
+
README 被冲突解决或 revert 丢失时会精确到路径阻断。系统不会自动合并、切分支、push
|
|
240
|
+
或创建 PR。
|
|
241
|
+
|
|
238
242
|
## 文档导航
|
|
239
243
|
|
|
240
244
|
| 文档 | 说明 |
|
|
@@ -259,6 +263,7 @@ kind: ReleaseProject
|
|
|
259
263
|
project:
|
|
260
264
|
name: my-project
|
|
261
265
|
defaultBranch: main
|
|
266
|
+
sourceRepository: owner/my-workspace
|
|
262
267
|
releaseUnits:
|
|
263
268
|
- id: my-project
|
|
264
269
|
source: .
|
|
@@ -297,6 +302,7 @@ kind: ReleaseProject
|
|
|
297
302
|
project:
|
|
298
303
|
name: my-workspace
|
|
299
304
|
defaultBranch: main
|
|
305
|
+
sourceRepository: owner/my-workspace
|
|
300
306
|
releaseUnits:
|
|
301
307
|
- id: my-app
|
|
302
308
|
source: packages/app
|
|
@@ -353,7 +359,11 @@ releaseUnits:
|
|
|
353
359
|
"projectConfig": {
|
|
354
360
|
"apiVersion": "release-skill/v1",
|
|
355
361
|
"kind": "ReleaseProject",
|
|
356
|
-
"project": {
|
|
362
|
+
"project": {
|
|
363
|
+
"name": "my-project",
|
|
364
|
+
"defaultBranch": "main",
|
|
365
|
+
"sourceRepository": "owner/my-workspace"
|
|
366
|
+
},
|
|
357
367
|
"releaseUnits": [{
|
|
358
368
|
"id": "my-project",
|
|
359
369
|
"source": ".",
|