release-skill 0.9.14 → 0.9.15
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/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 +27 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +24 -18
- package/README.zh-CN.md +23 -18
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +56 -2
- package/adapters/claude/skills/release-prepare/SKILL.md +34 -8
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +56 -2
- package/adapters/codex/skills/release-prepare/SKILL.md +34 -8
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +56 -2
- package/adapters/kimi/skills/release-prepare/SKILL.md +34 -8
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +56 -2
- package/adapters/workbuddy/skills/release-prepare/SKILL.md +34 -8
- package/bin/release-skill-cli.mjs +59 -0
- package/bin/release-skill.bundle.mjs +56 -2
- package/package.json +1 -1
- package/platform-manifest.json +4 -4
- package/skills/release-prepare/SKILL.md +34 -8
- package/skills-src/release-prepare/SKILL.md +34 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.15",
|
|
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.9.
|
|
22
|
+
"Prepare a release plan for version 0.9.15.",
|
|
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,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.9.15 locale=en baseline=sha256:caaa3680d940673edb3421512224623f618d8bff4ab159be60c797620ea3851f -->
|
|
4
|
+
## [0.9.15] - 2026-09-07
|
|
5
|
+
|
|
6
|
+
0.9.15 is a local source candidate that makes release preparation use the project's existing assessment, refresh, focused-check, and formal prepare entry points, and makes prepare help return before business execution. The three Foundation dependencies remain pinned to the exact 0.17.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
|
|
7
|
+
|
|
8
|
+
### Security
|
|
9
|
+
|
|
10
|
+
- The orchestration change adds no execution engine, Hook type, cache key, approval state, or external write. Environment allowlists still forward only values already present in the invoking environment, and invalid lowercase names remain configuration errors.
|
|
11
|
+
- Frozen candidates keep their existing acceptance boundary. A newly generated candidate requires validation against its own bytes; earlier acceptance evidence is not reused for changed output.
|
|
12
|
+
- Skill Family Hub updates continue to use compare-and-swap against the observed branch head through GitHub's Git Data API. A partial Hub publication is never rolled back or force-pushed, and existing remote state is never overwritten.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- The release-prepare Skill now reads the current project contract and authorization, resolves required release-document and generated-artifact freshness work through existing project entry points, runs focused checks after repairs, and leaves complete validation to the formal prepare Hook path.
|
|
17
|
+
- After a failure, release-prepare groups directly related fixes before retrying and does not add a same-purpose full test run by default. Explicitly requested independent full acceptance remains part of the workflow, and projects without valid cache evidence still execute their complete Hooks.
|
|
18
|
+
- Existing 0.9.14 production-run retention and Hub-backed post-verification host guidance remain available. The project-private postVerify Hook continues to publish the verified release-skill entry and public snapshot to Skill Family Hub through GitHub's Git Data API.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- `prepare --help` and `prepare -h` now return before project-root resolution, configuration loading, lock acquisition, run cleanup, Hook execution, snapshot construction, or plan writes. JSON help returns `command: prepare` with `status: HELP`; prepare without a help flag keeps its existing business path.
|
|
23
|
+
|
|
24
|
+
### Upgrade Notes
|
|
25
|
+
|
|
26
|
+
Upgrade from 0.9.14 to use the consolidated release-prepare workflow and side-effect-free prepare help. No project configuration migration is required. Keep project-specific generation and prerequisite checks in their existing reviewed entry points. Remove any release-skill standalone marketplace registration, add or update `ifoohoo/skill-family-hub`, and use `release-skill@skill-family-hub`. Existing executable `externalActions` targets retain their current update path; Hub-backed targets remain manual in 0.9.15.
|
|
27
|
+
<!-- release-skill:changelog:end version=0.9.15 locale=en -->
|
|
28
|
+
|
|
29
|
+
|
|
3
30
|
<!-- release-skill:changelog:start version=0.9.14 locale=en baseline=sha256:48b2f41bd292f3357b3cf7433de1a2191b84d86a5074c9786ac952f62d4279be -->
|
|
4
31
|
## [0.9.14] - 2026-09-05
|
|
5
32
|
|
package/INSTALL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.9.
|
|
5
|
+
<!-- release-skill:release-version: 0.9.15 -->
|
|
6
6
|
## Prerequisites
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 or later
|
|
@@ -110,7 +110,7 @@ tag pinned to the exact version (never the bare repository URL, which installs
|
|
|
110
110
|
the latest release or default branch), confirm the trust prompt, then reload:
|
|
111
111
|
|
|
112
112
|
```
|
|
113
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.
|
|
113
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.15
|
|
114
114
|
/plugins reload
|
|
115
115
|
```
|
|
116
116
|
|
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.9.
|
|
5
|
+
<!-- release-skill:release-version: 0.9.15 -->
|
|
6
6
|
## 前置条件
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 或更高版本
|
|
@@ -101,7 +101,7 @@ release-skill 当前只采用并验证 Kimi Code 的交互式 TUI 路径,**无
|
|
|
101
101
|
(切勿使用裸仓库地址,它会安装最新 release 或默认分支),确认信任提示后重新加载:
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.
|
|
104
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.15
|
|
105
105
|
/plugins reload
|
|
106
106
|
```
|
|
107
107
|
|
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.9.
|
|
5
|
+
<!-- release-skill:release-version: 0.9.15 -->
|
|
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,33 @@ 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.9.
|
|
17
|
+
**0.9.15** (2026-09-07)
|
|
18
18
|
|
|
19
|
-
0.9.
|
|
19
|
+
0.9.15 is a local source candidate that makes release preparation use the project's existing assessment, refresh, focused-check, and formal prepare entry points, and makes prepare help return before business execution. The three Foundation dependencies remain pinned to the exact 0.17.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
|
|
20
20
|
|
|
21
21
|
**Security**
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- Skill Family Hub updates
|
|
23
|
+
- The orchestration change adds no execution engine, Hook type, cache key, approval state, or external write. Environment allowlists still forward only values already present in the invoking environment, and invalid lowercase names remain configuration errors.
|
|
24
|
+
- Frozen candidates keep their existing acceptance boundary. A newly generated candidate requires validation against its own bytes; earlier acceptance evidence is not reused for changed output.
|
|
25
|
+
- Skill Family Hub updates continue to use compare-and-swap against the observed branch head through GitHub's Git Data API. A partial Hub publication is never rolled back or force-pushed, and existing remote state is never overwritten.
|
|
26
26
|
|
|
27
|
-
**
|
|
27
|
+
**Changed**
|
|
28
28
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
29
|
+
- The release-prepare Skill now reads the current project contract and authorization, resolves required release-document and generated-artifact freshness work through existing project entry points, runs focused checks after repairs, and leaves complete validation to the formal prepare Hook path.
|
|
30
|
+
- After a failure, release-prepare groups directly related fixes before retrying and does not add a same-purpose full test run by default. Explicitly requested independent full acceptance remains part of the workflow, and projects without valid cache evidence still execute their complete Hooks.
|
|
31
|
+
- Existing 0.9.14 production-run retention and Hub-backed post-verification host guidance remain available. The project-private postVerify Hook continues to publish the verified release-skill entry and public snapshot to Skill Family Hub through GitHub's Git Data API.
|
|
32
|
+
|
|
33
|
+
**Fixed**
|
|
34
|
+
|
|
35
|
+
- `prepare --help` and `prepare -h` now return before project-root resolution, configuration loading, lock acquisition, run cleanup, Hook execution, snapshot construction, or plan writes. JSON help returns `command: prepare` with `status: HELP`; prepare without a help flag keeps its existing business path.
|
|
33
36
|
|
|
34
37
|
**Upgrade Notes**
|
|
35
38
|
|
|
36
|
-
Upgrade from 0.9.
|
|
39
|
+
Upgrade from 0.9.14 to use the consolidated release-prepare workflow and side-effect-free prepare help. No project configuration migration is required. Keep project-specific generation and prerequisite checks in their existing reviewed entry points. Remove any release-skill standalone marketplace registration, add or update `ifoohoo/skill-family-hub`, and use `release-skill@skill-family-hub`. Existing executable `externalActions` targets retain their current update path; Hub-backed targets remain manual in 0.9.15.
|
|
37
40
|
<!-- release-skill:managed:end id=latest-release -->
|
|
38
41
|
|
|
39
42
|
<!-- release-skill:capability:external-write-boundary -->
|
|
40
|
-
> **Current boundary:** v0.9.
|
|
43
|
+
> **Current boundary:** v0.9.15 is the current source candidate. This README
|
|
41
44
|
> records intended scope and verification boundaries; it is not evidence of
|
|
42
45
|
> publication, consumer-installation verification, or independent acceptance.
|
|
43
46
|
> Release availability must be established from the corresponding release records
|
|
@@ -61,7 +64,7 @@ Upgrade from 0.9.13 to bound completed production run history and receive post-v
|
|
|
61
64
|
> publish global preflight.
|
|
62
65
|
|
|
63
66
|
<!-- release-skill:capability:safe-first-command -->
|
|
64
|
-
> **Production path verified since the v0.1.1 milestone; v0.9.
|
|
67
|
+
> **Production path verified since the v0.1.1 milestone; v0.9.15 is the current
|
|
65
68
|
> source candidate. Its README does not establish publication,
|
|
66
69
|
> consumer-installation verification, or independent acceptance.**
|
|
67
70
|
> The npm-installed CLI is the supported user entry. Source checkout
|
|
@@ -90,10 +93,13 @@ checkpoints remain intact and use matching-version recovery. Evidence v1 stays
|
|
|
90
93
|
read-only; v2 uses a closed top level with phase extensions in `details`.
|
|
91
94
|
Summaries and recovery suggestions are diagnostic, never publication authority.
|
|
92
95
|
|
|
93
|
-
The current 0.9.
|
|
96
|
+
The current 0.9.15 candidate includes the narrow R-05 Hook cache v2 consumer
|
|
94
97
|
path, the public `postverify` path, and the stable isolated install-tree record
|
|
95
|
-
path (A2/A3). It
|
|
96
|
-
|
|
98
|
+
path (A2/A3). It keeps Skill Family Hub as the single marketplace source. It
|
|
99
|
+
also makes the `release-prepare` Skill organize existing assessment, refresh,
|
|
100
|
+
focused-check, and prepare entry points without adding another execution
|
|
101
|
+
engine. `prepare --help` and `prepare -h` now return before configuration,
|
|
102
|
+
locks, runs, or hooks can observe the request. This candidate still
|
|
97
103
|
excludes R-02 safe full-tree inventory, R-10 historical-release verification
|
|
98
104
|
implementation, real Kimi/WorkBuddy public-marketplace installation and
|
|
99
105
|
invocation gates, and an Audit public offline release-record verifier.
|
|
@@ -743,7 +749,7 @@ append-only incremental flow is described in the setup step above and in
|
|
|
743
749
|
- `release-help`: environment check and next-step guidance.
|
|
744
750
|
- `release-setup`: read-only discovery, human calibration, create-once configuration, and read-only adoption assessment (`setup --assess-adoption`).
|
|
745
751
|
- `release-assess`: read-only release readiness report.
|
|
746
|
-
- `release-prepare`: local snapshot and reviewable release plan.
|
|
752
|
+
- `release-prepare`: organizes existing project prerequisites and focused repairs, then freezes a local snapshot and reviewable release plan through the formal prepare entry.
|
|
747
753
|
- `release-publish`: approved frozen GitHub+npm publishing; the internal digest is checked automatically.
|
|
748
754
|
- `release-reconcile`: evidence-based PARTIAL recovery with human intervention on conflicts.
|
|
749
755
|
- `release-verify`: post-publish verification; only `VERIFIED` is the happy end.
|
package/README.zh-CN.md
CHANGED
|
@@ -2,36 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.9.
|
|
5
|
+
<!-- release-skill:release-version: 0.9.15 -->
|
|
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.9.
|
|
11
|
+
**0.9.15** (2026-09-07)
|
|
12
12
|
|
|
13
|
-
0.9.
|
|
13
|
+
0.9.15 是一个本地源码候选。本版本让发布准备复用项目已有评估、刷新、聚焦检查和正式 prepare 入口,并让 prepare 帮助在业务执行前返回。三项 Foundation 依赖仍精确固定在已发布的 0.17.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
|
|
14
14
|
|
|
15
15
|
**安全**
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
- Skill Family Hub
|
|
17
|
+
- 本次编排调整不新增执行引擎、Hook 类型、缓存键、批准状态或外部写入。环境变量白名单仍只转发调用环境中已存在的同名值,非法的小写名称继续按配置错误处理。
|
|
18
|
+
- 已冻结候选保留原有验收边界。新生成的候选必须针对自身字节验证,不得复用变更前的验收证据。
|
|
19
|
+
- Skill Family Hub 更新继续通过 GitHub Git Data API,根据已观察的分支头比较后写入。Hub 局部发布不回滚、不覆盖,也不强推。
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**变更**
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- postVerify
|
|
26
|
-
|
|
23
|
+
- release-prepare Skill 现在先读取项目合同和授权,通过项目已有入口处理发布文档与生成物新鲜度,修复后运行聚焦检查,并把完整验证交给正式 prepare Hook 路径。
|
|
24
|
+
- 一次失败后,release-prepare 会集中处理直接相关的修复再重试,默认不增加同目的的完整测试。用户明确要求的独立完整验收仍保留;项目没有有效缓存证据时,完整 Hook 仍会执行。
|
|
25
|
+
- 0.9.14 的 production run 保留策略和 Hub-backed 发布后验证宿主提示继续可用。项目私有的 postVerify Hook 继续通过 GitHub Git Data API,把已验证的 release-skill 条目和公开快照发布到 Skill Family Hub。
|
|
26
|
+
|
|
27
|
+
**修复**
|
|
28
|
+
|
|
29
|
+
- `prepare --help` 和 `prepare -h` 现在会在项目根目录解析、配置读取、锁获取、run 清理、Hook 执行、快照构建或计划写入前返回。JSON 帮助返回 `command: prepare` 和 `status: HELP`;没有帮助参数的 prepare 保留原有业务路径。
|
|
27
30
|
|
|
28
31
|
**升级说明**
|
|
29
32
|
|
|
30
|
-
从 0.9.
|
|
33
|
+
从 0.9.14 升级后,可使用收敛后的 release-prepare 流程和无业务副作用的 prepare 帮助。项目配置无需迁移;项目专属的生成和前提检查仍通过已审阅入口执行。删除各宿主中独立的 `release-skill` 市场登记,添加或更新 `ifoohoo/skill-family-hub`,并使用 `release-skill@skill-family-hub`。现有 `externalActions` 可执行目标继续使用原更新路径;0.9.15 的 Hub-backed 目标仍由维护者人工处理。
|
|
31
34
|
<!-- release-skill:managed:end id=latest-release -->
|
|
32
35
|
|
|
33
36
|
<!-- release-skill:capability:external-write-boundary -->
|
|
34
|
-
> **当前边界:** v0.9.
|
|
37
|
+
> **当前边界:** v0.9.15 只是当前源码候选。本 README 记录预期范围与验证边界,
|
|
35
38
|
> 不代表已经发布、完成消费者安装验证或通过独立验收。
|
|
36
39
|
> 版本可用性以对应发布记录及发布后验证结果为准。
|
|
37
40
|
> v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
|
|
@@ -47,7 +50,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
|
|
|
47
50
|
> 远端唯一性检查在 `publish` 全局预检执行。
|
|
48
51
|
|
|
49
52
|
<!-- release-skill:capability:safe-first-command -->
|
|
50
|
-
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.
|
|
53
|
+
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.15 是当前源码候选,本 README 不证明该候选已经发布、完成消费者安装验证或通过独立验收。**
|
|
51
54
|
> npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
|
|
52
55
|
>
|
|
53
56
|
> **第一条命令:**
|
|
@@ -65,9 +68,11 @@ marketplace 委托目标工作区发布的边界不变。
|
|
|
65
68
|
|
|
66
69
|
旧 production 计划缺少 `sourceAuthority` 时,在外部写入前拒绝。未发生外部写入的计划必须重新 prepare 并批准新摘要,不能补写旧计划或迁移批准。已有 `PARTIAL` 保留检查点,走匹配版本的恢复路径。evidence v1 只读;v2 顶层封闭,阶段扩展放在 `details`。摘要和恢复建议只作诊断,不构成发布权威。
|
|
67
70
|
|
|
68
|
-
当前 0.9.
|
|
69
|
-
路径和稳定隔离安装树记录路径(A2/A3
|
|
70
|
-
Skill
|
|
71
|
+
当前 0.9.15 候选包含窄范围的 R-05 Hook cache v2 消费路径、公开 `postverify`
|
|
72
|
+
路径和稳定隔离安装树记录路径(A2/A3),继续以 Skill Family Hub 为唯一市场来源。
|
|
73
|
+
`release-prepare` Skill 现在会组织项目已有的评估、刷新、聚焦检查和 prepare 入口,不新增执行引擎。
|
|
74
|
+
`prepare --help` 和 `prepare -h` 会在配置、锁、run 或 Hook 观察请求之前返回。当前仍不包含
|
|
75
|
+
R-02 安全整树盘点、R-10 历史发布验证
|
|
71
76
|
的产品实现、真实 Kimi/WorkBuddy 公开市场安装与调用门禁或 Audit 公开离线发布记录
|
|
72
77
|
验证器。本范围说明不构成远端发布记录或消费者升级指引。
|
|
73
78
|
|
|
@@ -636,7 +641,7 @@ release-skill ship --root "$PROJECT" --hook-approval "$HOOK_APPROVAL_PATH" --jso
|
|
|
636
641
|
- `release-help`:环境检查和下一步引导。
|
|
637
642
|
- `release-setup`:首次接入的只读发现、人工校准、create-once 配置创建和只读接入评估(`setup --assess-adoption`)。
|
|
638
643
|
- `release-assess`:只读发布就绪度报告。
|
|
639
|
-
- `release-prepare
|
|
644
|
+
- `release-prepare`:组织项目已有前提和聚焦修复,再通过正式 prepare 入口冻结本地快照和可审阅发布计划。
|
|
640
645
|
- `release-publish`:经批准的冻结 GitHub+npm 发布;内部摘要由系统自动校验。
|
|
641
646
|
- `release-reconcile`:基于证据恢复 PARTIAL;冲突时人工介入。
|
|
642
647
|
- `release-verify`:发布后验证;只有 `VERIFIED` 才是 happy end。
|
|
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
|
|
|
9
9
|
// Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
|
|
10
10
|
const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
|
|
11
11
|
// Package identity injected at build time — closure-independent --version probe.
|
|
12
|
-
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.
|
|
12
|
+
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.15"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "e47969ed810fa0edbed7073f13df855be95feed7ffecc40f72dd887cab52ff97";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -147154,6 +147154,60 @@ if (!COMMANDS.has(command)) {
|
|
|
147154
147154
|
}
|
|
147155
147155
|
await exitAfterFlush(2);
|
|
147156
147156
|
}
|
|
147157
|
+
if (command === "prepare" && (args.includes("--help") || args.includes("-h"))) {
|
|
147158
|
+
const helpText = `release-skill prepare - Freeze a release plan
|
|
147159
|
+
|
|
147160
|
+
Usage:
|
|
147161
|
+
release-skill prepare [--root <path>] [--target-version <version>] [options]
|
|
147162
|
+
|
|
147163
|
+
Options:
|
|
147164
|
+
--root <path> Project root directory (default: cwd)
|
|
147165
|
+
--target-version <version> Specify the target version (--version is an alias)
|
|
147166
|
+
--unit <id> Select a release unit (repeatable)
|
|
147167
|
+
--workflow <full|docs|config|marketplace> Workflow profile (default: full)
|
|
147168
|
+
--production Freeze immutable production artifacts
|
|
147169
|
+
--offline Do not query remote state (default)
|
|
147170
|
+
--online Observe the configured previous public baseline
|
|
147171
|
+
--output <path> Override the plan path (non-production only)
|
|
147172
|
+
--run-dir <path> Override the prepare run directory
|
|
147173
|
+
--test-selection <full|incremental> Freeze-time test selection (only full is accepted)
|
|
147174
|
+
--no-hook-cache Run declared hooks without cache reuse
|
|
147175
|
+
--acknowledge-hook-side-effects Deprecated no-op compatibility input
|
|
147176
|
+
--acknowledge-gate-side-effects Deprecated no-op compatibility input
|
|
147177
|
+
--json Output results as JSON
|
|
147178
|
+
-h, --help Show this help message and exit
|
|
147179
|
+
|
|
147180
|
+
Invoking prepare authorizes configured hook and gate execution; the deprecated
|
|
147181
|
+
acknowledgement flags do not add a separate authorization step.`;
|
|
147182
|
+
if (hasJson) {
|
|
147183
|
+
console.log(JSON.stringify({
|
|
147184
|
+
command: "prepare",
|
|
147185
|
+
status: "HELP",
|
|
147186
|
+
usage: "release-skill prepare [--root <path>] [--target-version <version>] [options]",
|
|
147187
|
+
options: {
|
|
147188
|
+
"--root": "Project root directory (default: cwd)",
|
|
147189
|
+
"--target-version": "Specify the target version (--version is an alias)",
|
|
147190
|
+
"--unit": "Select a release unit (repeatable)",
|
|
147191
|
+
"--workflow": "Workflow profile: full, docs, config, or marketplace (default: full)",
|
|
147192
|
+
"--production": "Freeze immutable production artifacts",
|
|
147193
|
+
"--offline": "Do not query remote state (default)",
|
|
147194
|
+
"--online": "Observe the configured previous public baseline",
|
|
147195
|
+
"--output": "Override the plan path (non-production only)",
|
|
147196
|
+
"--run-dir": "Override the prepare run directory",
|
|
147197
|
+
"--test-selection": "Freeze-time test selection: only full is accepted",
|
|
147198
|
+
"--no-hook-cache": "Run declared hooks without cache reuse",
|
|
147199
|
+
"--acknowledge-hook-side-effects": "Deprecated no-op compatibility input",
|
|
147200
|
+
"--acknowledge-gate-side-effects": "Deprecated no-op compatibility input",
|
|
147201
|
+
"--json": "Output results as JSON",
|
|
147202
|
+
"-h, --help": "Show this help message and exit"
|
|
147203
|
+
},
|
|
147204
|
+
message: "Invoking prepare authorizes configured hook and gate execution; deprecated acknowledgement flags do not add a separate authorization step."
|
|
147205
|
+
}, null, 2));
|
|
147206
|
+
} else {
|
|
147207
|
+
console.log(helpText);
|
|
147208
|
+
}
|
|
147209
|
+
await exitAfterFlush(0);
|
|
147210
|
+
}
|
|
147157
147211
|
if (command === "ship" && (args.includes("--help") || args.includes("-h"))) {
|
|
147158
147212
|
if (hasJson) {
|
|
147159
147213
|
console.log(JSON.stringify({
|
|
@@ -25,17 +25,45 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
25
25
|
|
|
26
26
|
**不确定性停止**: 遇到无法确定的配置项或版本冲突时,Agent 必须停止并上报用户。
|
|
27
27
|
|
|
28
|
+
**候选与授权边界**: 先确认本轮操作的是未冻结工作树,还是已经冻结并取得验收的候选。候选已经冻结时,未经授权不得运行会改写候选的生成命令或 Hook。保留原候选时,原有验收继续绑定原候选。若要生成新候选,先说明哪些计划、批准和验收需要重新绑定;禁止把旧候选的验收用于新候选。
|
|
29
|
+
|
|
30
|
+
**项目事实来源**: 依赖关系、生成入口、聚焦检查和环境前提只能来自用户请求、项目权威指引、配置及现有脚本。Skill 必须在授权范围内实际执行已确认的入口,不能只建议主会话“统一刷新”。现有事实不足以证明顺序或副作用时,报告缺少的具体事实并停止,不创建通用依赖图、前提检查脚本或配置迁移。
|
|
31
|
+
|
|
28
32
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
29
33
|
|
|
30
34
|
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才把这些 ID 逐个传给 `--unit`。release-skill 不根据失败自动排除单元。选择命中 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须包含收据声明的完整单元闭包;缺少单元时按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
31
35
|
|
|
32
36
|
## 正向执行路径
|
|
33
37
|
|
|
34
|
-
1. 使用插件根相对路径运行 CLI:`CLI="node ${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs"
|
|
35
|
-
2.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
1. 使用插件根相对路径运行 CLI:`CLI="node ${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs"`。读取用户请求、项目权威指引和 `.release-skill/project.yaml`,固定目标版本、单元范围、候选状态和本轮写入授权。
|
|
39
|
+
2. 配置首次接入或本轮发生变化时,运行只读评估 `${CLI} assess --root <path> --offline --json`;配置未变且已有对应检查证据时不重复评估。读取 `status` 和 `gaps[]` 并逐项分类,不能把整体 `ASSESSED` 当作生成前置,也不能只凭退出码宣布发布条件齐备:
|
|
40
|
+
- `CONFIG_INVALID` 必须先按结构化错误定位字段。只有已知合法值和本轮授权同时具备时才修复,随后复跑 assess;在此之前不得生成或运行完整测试,也不得放宽 schema 或猜值。
|
|
41
|
+
- 明确发布范围内的 missing/stale gap,如果能由项目已有且获授权的生成入口或发布文档协议解决,保留原 gap 并进入后续刷新链。配置本身未变时,使用刷新和聚焦检查的新证据继续,不为形式完整重复 assess。
|
|
42
|
+
- gap 需要用户输入,或缺少写入授权、权威入口或必要项目事实时,停在 `NEEDS_INPUT`,报告缺少的具体条件。
|
|
43
|
+
- 按发布单元保留 gap 归属。延期单元的问题不能证明已选单元通过,也不能据此自动增删范围。assess 的整体状态也不能单独阻断已选范围;最终结果由正式 prepare 的完整配置、新鲜度和 Hook 门禁裁决。
|
|
44
|
+
3. 配置含 `releaseDocuments` 时,运行只读演练 `${CLI} docs refresh --unit <id> --json`。`status: "changes"` 时展示逐文件路径、语种、版本和 `refreshDigest`;取得“本地发布文档写入”明确授权后才执行 `nextCommand.argv`。审阅并提交刷新结果后再继续;`status: "clean"` 时进入下一步。
|
|
45
|
+
4. 根据项目权威指引列出从配置到最终派生物的完整依赖链,并确认唯一生成责任。此时只选择现有入口,不开始生成:
|
|
46
|
+
- 项目已有外部完整生成入口时,记录该入口及对应聚焦检查。后续 build Hook 不得重复生成同一批输出。
|
|
47
|
+
- 可达的 `hooks.build` 已承担完整生成流程时,不在 prepare 外重复生成。必须从现有 Hook 命令确认它会刷新完整依赖链并执行所需聚焦检查;前置新鲜度门会先阻断时,不能期待 build Hook 修复输入。
|
|
48
|
+
- `releaseDocuments` 仍按上一步的专用刷新协议处理,不能改由 build Hook 绕过。
|
|
49
|
+
5. 在首次生成、写候选或完整验证之前,核对项目合同中已知的环境前提。`envAllowlist` 只转发调用环境中已经存在的同名变量,不会生成值或证明值正确:
|
|
50
|
+
- 项目已有廉价前提检查时,先在当前环境原样运行同一入口。检查失败后保留原始错误,且不得开始生成、Hook 或昂贵测试。
|
|
51
|
+
- 只有项目合同给出合法值且本轮已经授权修正时,才修正后续命令环境;随后复跑同一廉价检查。没有值或授权时停在 `NEEDS_INPUT`。
|
|
52
|
+
- 项目没有廉价入口时,说明尚未验证的前提,再由正式 Hook 的实际结果裁决。不得临时编写检查脚本或把 assess 当成环境值检查。
|
|
53
|
+
6. 外部生成入口承担责任时,在授权写集内运行一次该入口,再运行一次项目指定的聚焦检查。build Hook 承担责任时跳过本步,留给 prepare 执行;不得先手工调用同一生成流程。
|
|
54
|
+
7. 普通路径不额外运行手动完整测试或 `hooks validate`。直接运行 `${CLI} prepare --root <path> --offline --json`,由 prepare 执行已声明 Hook 和完整验证;用户已明确选择范围时,为每个单元追加一个 `--unit <id>`。用户明确要求独立完整验收时保留该要求,即使正式 prepare 会再次运行完整 Hook。
|
|
55
|
+
8. 检查 CLI exit code 0 和结构化状态 `PREPARED`。读取返回的不可变 `planPath=plans/<planDigest>.json`,再从该文件读取 `status`、`units` 和 `externalActions`。build Hook 承担生成时,还要从 Hook 输出及 evidence 确认完整依赖链和聚焦检查各执行一次。聚焦检查通过、Hook 通过和 `PREPARED` 是不同结果,不得互相代替。
|
|
56
|
+
9. 向用户展示可读的 `approvalSummary`:版本、公开仓库、分支策略、branch/tag、npm 与 GitHub Release 目标、全部外部动作、例外,以及需要独立 checkpoint 批准的 postPublish hook。`planDigest` 仅作为内部绑定字段,不要求用户复制或确认。后续 approve/publish 只能使用该 immutable planPath,等待确认后再 approve。计划批准不包含受限 postPublish hook 的 checkpoint 批准。
|
|
57
|
+
|
|
58
|
+
报告调用次数时,以本轮请求开始到取得结果或停止为计数窗口。分别列出生成命令、聚焦检查、正式 Hook 前提检查和昂贵测试。`prepare` 不是生成命令;一次 Hook 启动也不能证明昂贵测试已经进入测试体。优先使用工具转录、项目夹具输出和 CLI evidence,不能用模型自报替代实际记录。
|
|
59
|
+
|
|
60
|
+
## 修复与重试
|
|
61
|
+
|
|
62
|
+
一次失败后,集中核对该失败及其直接依赖。统一完成已授权修复,再运行现有聚焦检查;修复收敛后才重新尝试 prepare,不用完整门禁逐项寻找下一项问题。
|
|
63
|
+
|
|
64
|
+
命令、目录、参数或环境错误由当前职责修正。环境改变后重新验证受影响的廉价入口和正式入口,过去的手动成功不能证明新环境。需要单独诊断 Hook 时可以使用 `hooks validate`,但须说明它会执行全部已声明 Hook,并可能写文件或访问网络。它不是每次 prepare 的固定前置步骤;缺少有效 cache 时,随后 prepare 会再次执行 Hook。
|
|
65
|
+
|
|
66
|
+
同类产品失败连续两次时停止原样重试,检查依赖和入口是否选错。保留原始错误和输出;新诊断替换旧猜测,但不得覆盖已有日志或另建整改状态。
|
|
39
67
|
|
|
40
68
|
若用户明确要求 GitHub+npm 生产发布,加入 `--production`。该模式还会封存独立
|
|
41
69
|
Git commit/tree 和 npm tarball,并把路径、SHA/integrity、branch/tag 写入计划。
|
|
@@ -93,9 +121,7 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" prepare --root <path> --onlin
|
|
|
93
121
|
| RELEASE_DOCS_STALE | 文档相对说明源已陈旧;按详情运行只读演练,展示文件/语种/版本/摘要,经用户授权“本地发布文档写入”后执行写入,审阅提交再重新 prepare |
|
|
94
122
|
| RELEASE_DOCS_INVALID / TRANSLATION_MISSING / CONFLICT / REFRESH_STALE | 修复配置/说明源/目标或重新演练取得新 `refreshDigest`;不得扩大写入范围绕过 |
|
|
95
123
|
| SECRET_DETECTED | 移除密钥并更新 allowlist |
|
|
96
|
-
| CONFIG_INVALID |
|
|
97
|
-
|
|
98
|
-
重试时只保留最新结构化错误码和失败门,不沿用早期猜测;重跑确定性命令获得新证据。
|
|
124
|
+
| CONFIG_INVALID | 先用 assess 定位结构化配置错误;检查 version.source、package.json、环境白名单是否为合法大写名称,以及 `--unit` 是否为空、重复或不在 `releaseUnits[]` 中。修复须使用已知合法值和明确写入授权 |
|
|
99
125
|
|
|
100
126
|
## 后续引导
|
|
101
127
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.15",
|
|
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.9.
|
|
22
|
+
"Prepare a release plan for version 0.9.15.",
|
|
23
23
|
"Help me understand the release workflow."
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
|
|
|
9
9
|
// Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
|
|
10
10
|
const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
|
|
11
11
|
// Package identity injected at build time — closure-independent --version probe.
|
|
12
|
-
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.
|
|
12
|
+
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.15"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "e47969ed810fa0edbed7073f13df855be95feed7ffecc40f72dd887cab52ff97";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -147154,6 +147154,60 @@ if (!COMMANDS.has(command)) {
|
|
|
147154
147154
|
}
|
|
147155
147155
|
await exitAfterFlush(2);
|
|
147156
147156
|
}
|
|
147157
|
+
if (command === "prepare" && (args.includes("--help") || args.includes("-h"))) {
|
|
147158
|
+
const helpText = `release-skill prepare - Freeze a release plan
|
|
147159
|
+
|
|
147160
|
+
Usage:
|
|
147161
|
+
release-skill prepare [--root <path>] [--target-version <version>] [options]
|
|
147162
|
+
|
|
147163
|
+
Options:
|
|
147164
|
+
--root <path> Project root directory (default: cwd)
|
|
147165
|
+
--target-version <version> Specify the target version (--version is an alias)
|
|
147166
|
+
--unit <id> Select a release unit (repeatable)
|
|
147167
|
+
--workflow <full|docs|config|marketplace> Workflow profile (default: full)
|
|
147168
|
+
--production Freeze immutable production artifacts
|
|
147169
|
+
--offline Do not query remote state (default)
|
|
147170
|
+
--online Observe the configured previous public baseline
|
|
147171
|
+
--output <path> Override the plan path (non-production only)
|
|
147172
|
+
--run-dir <path> Override the prepare run directory
|
|
147173
|
+
--test-selection <full|incremental> Freeze-time test selection (only full is accepted)
|
|
147174
|
+
--no-hook-cache Run declared hooks without cache reuse
|
|
147175
|
+
--acknowledge-hook-side-effects Deprecated no-op compatibility input
|
|
147176
|
+
--acknowledge-gate-side-effects Deprecated no-op compatibility input
|
|
147177
|
+
--json Output results as JSON
|
|
147178
|
+
-h, --help Show this help message and exit
|
|
147179
|
+
|
|
147180
|
+
Invoking prepare authorizes configured hook and gate execution; the deprecated
|
|
147181
|
+
acknowledgement flags do not add a separate authorization step.`;
|
|
147182
|
+
if (hasJson) {
|
|
147183
|
+
console.log(JSON.stringify({
|
|
147184
|
+
command: "prepare",
|
|
147185
|
+
status: "HELP",
|
|
147186
|
+
usage: "release-skill prepare [--root <path>] [--target-version <version>] [options]",
|
|
147187
|
+
options: {
|
|
147188
|
+
"--root": "Project root directory (default: cwd)",
|
|
147189
|
+
"--target-version": "Specify the target version (--version is an alias)",
|
|
147190
|
+
"--unit": "Select a release unit (repeatable)",
|
|
147191
|
+
"--workflow": "Workflow profile: full, docs, config, or marketplace (default: full)",
|
|
147192
|
+
"--production": "Freeze immutable production artifacts",
|
|
147193
|
+
"--offline": "Do not query remote state (default)",
|
|
147194
|
+
"--online": "Observe the configured previous public baseline",
|
|
147195
|
+
"--output": "Override the plan path (non-production only)",
|
|
147196
|
+
"--run-dir": "Override the prepare run directory",
|
|
147197
|
+
"--test-selection": "Freeze-time test selection: only full is accepted",
|
|
147198
|
+
"--no-hook-cache": "Run declared hooks without cache reuse",
|
|
147199
|
+
"--acknowledge-hook-side-effects": "Deprecated no-op compatibility input",
|
|
147200
|
+
"--acknowledge-gate-side-effects": "Deprecated no-op compatibility input",
|
|
147201
|
+
"--json": "Output results as JSON",
|
|
147202
|
+
"-h, --help": "Show this help message and exit"
|
|
147203
|
+
},
|
|
147204
|
+
message: "Invoking prepare authorizes configured hook and gate execution; deprecated acknowledgement flags do not add a separate authorization step."
|
|
147205
|
+
}, null, 2));
|
|
147206
|
+
} else {
|
|
147207
|
+
console.log(helpText);
|
|
147208
|
+
}
|
|
147209
|
+
await exitAfterFlush(0);
|
|
147210
|
+
}
|
|
147157
147211
|
if (command === "ship" && (args.includes("--help") || args.includes("-h"))) {
|
|
147158
147212
|
if (hasJson) {
|
|
147159
147213
|
console.log(JSON.stringify({
|