release-skill 0.9.15 → 0.9.16
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 +31 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +31 -16
- package/README.zh-CN.md +27 -15
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +30 -2
- package/adapters/claude/schemas/release-project.schema.json +18 -0
- package/adapters/claude/skills/release-finish/SKILL.md +58 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +30 -2
- package/adapters/codex/schemas/release-project.schema.json +18 -0
- package/adapters/codex/skills/release-finish/SKILL.md +58 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +30 -2
- package/adapters/kimi/schemas/release-project.schema.json +18 -0
- package/adapters/kimi/skills/release-finish/SKILL.md +58 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +30 -2
- package/adapters/workbuddy/schemas/release-project.schema.json +18 -0
- package/adapters/workbuddy/skills/release-finish/SKILL.md +58 -0
- package/bin/release-skill-cli.mjs +28 -0
- package/bin/release-skill.bundle.mjs +30 -2
- package/package.json +1 -1
- package/platform-manifest.json +4 -4
- package/references/02-project-config.md +16 -0
- package/schemas/release-project.schema.json +18 -0
- package/skills/release-finish/SKILL.md +58 -0
- package/skills-src/release-finish/SKILL.md +58 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.16",
|
|
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.16.",
|
|
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,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.9.16 locale=en baseline=sha256:ea8288d2ffcedf02008eb0bc10280d52bc6ddd2e383f072913340eb64cb7ca63 -->
|
|
4
|
+
## [0.9.16] - 2026-09-09
|
|
5
|
+
|
|
6
|
+
0.9.16 is a local source candidate that connects verified releases to explicit source-branch checks, host-aware setup continuation, and postVerify finish guidance. 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 source-branch reminder runs only `git branch --show-current` and `git status --short --branch`; it never fetches, switches, merges, rebases, stashes, resets, cleans, or pushes. Setup names are matched as skill metadata and are never executed as shell text.
|
|
11
|
+
- Skill Family Hub updates bind the observed branch head with compare-and-swap semantics. Partial Hub publication is never rolled back or force-pushed, and remote state is never overwritten.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Projects may configure `releaseFinish.sourceBranchCheck` as `remind` or `skip` and may name a loaded setup entry through `releaseFinish.setupSkill`. The release-finish workflow keeps the publishing workspace separate from an explicitly selected consumer project and reports setup as pending when the target directory, loaded plugin version, or callable host is not established.
|
|
16
|
+
- Source checks use read-only Git commands and report the current branch, worktree changes, upstream summary, and any decision that still belongs to the maintainer. A project can select `release-setup` when it wants the release-finish workflow to continue into release-skill setup.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- After a successful postVerify run reaches `DISTRIBUTED`, both JSON and text CLI output now expose the same Hub-backed local-host finish guidance used by the release-finish workflow. The guidance remains diagnostic and never invokes a host command on its own.
|
|
21
|
+
- Host updates and setup checks remain local follow-up work and do not change the immutable release plan or the `VERIFIED` publication result. Shared project readiness may be checked once only when the plugin version, consumer directory, and runtime environment are the same; host-specific installation and loading remain separate checks.
|
|
22
|
+
- Skill Family Hub publication continues through the project-private postVerify hook and GitHub Git Data API. The Hub update remains a separately approved compare-and-swap write against the observed branch head.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- A completed postVerify delivery now keeps `DISTRIBUTED` even when the optional finish checklist cannot reread its plan. The CLI returns an explicit unavailable diagnostic without rewriting the successful delivery checkpoint.
|
|
27
|
+
|
|
28
|
+
### Upgrade Notes
|
|
29
|
+
|
|
30
|
+
Upgrade from 0.9.15 to receive postVerify finish guidance and optional source-branch and setup continuation. Add a top-level `releaseFinish` block only when the project wants to select a setup entry or change the default reminder policy. Remove any release-skill standalone marketplace registration, add or update `ifoohoo/skill-family-hub`, and use `release-skill@skill-family-hub`. Restart an updated host before treating the new plugin version or setup entry as loaded.
|
|
31
|
+
<!-- release-skill:changelog:end version=0.9.16 locale=en -->
|
|
32
|
+
|
|
33
|
+
|
|
3
34
|
<!-- release-skill:changelog:start version=0.9.15 locale=en baseline=sha256:caaa3680d940673edb3421512224623f618d8bff4ab159be60c797620ea3851f -->
|
|
4
35
|
## [0.9.15] - 2026-09-07
|
|
5
36
|
|
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.16 -->
|
|
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.16
|
|
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.16 -->
|
|
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.16
|
|
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.16 -->
|
|
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,33 +14,37 @@ 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.16** (2026-09-09)
|
|
18
18
|
|
|
19
|
-
0.9.
|
|
19
|
+
0.9.16 is a local source candidate that connects verified releases to explicit source-branch checks, host-aware setup continuation, and postVerify finish guidance. 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
|
-
- The
|
|
24
|
-
-
|
|
25
|
-
|
|
23
|
+
- The source-branch reminder runs only `git branch --show-current` and `git status --short --branch`; it never fetches, switches, merges, rebases, stashes, resets, cleans, or pushes. Setup names are matched as skill metadata and are never executed as shell text.
|
|
24
|
+
- Skill Family Hub updates bind the observed branch head with compare-and-swap semantics. Partial Hub publication is never rolled back or force-pushed, and remote state is never overwritten.
|
|
25
|
+
|
|
26
|
+
**Added**
|
|
27
|
+
|
|
28
|
+
- Projects may configure `releaseFinish.sourceBranchCheck` as `remind` or `skip` and may name a loaded setup entry through `releaseFinish.setupSkill`. The release-finish workflow keeps the publishing workspace separate from an explicitly selected consumer project and reports setup as pending when the target directory, loaded plugin version, or callable host is not established.
|
|
29
|
+
- Source checks use read-only Git commands and report the current branch, worktree changes, upstream summary, and any decision that still belongs to the maintainer. A project can select `release-setup` when it wants the release-finish workflow to continue into release-skill setup.
|
|
26
30
|
|
|
27
31
|
**Changed**
|
|
28
32
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
33
|
+
- After a successful postVerify run reaches `DISTRIBUTED`, both JSON and text CLI output now expose the same Hub-backed local-host finish guidance used by the release-finish workflow. The guidance remains diagnostic and never invokes a host command on its own.
|
|
34
|
+
- Host updates and setup checks remain local follow-up work and do not change the immutable release plan or the `VERIFIED` publication result. Shared project readiness may be checked once only when the plugin version, consumer directory, and runtime environment are the same; host-specific installation and loading remain separate checks.
|
|
35
|
+
- Skill Family Hub publication continues through the project-private postVerify hook and GitHub Git Data API. The Hub update remains a separately approved compare-and-swap write against the observed branch head.
|
|
32
36
|
|
|
33
37
|
**Fixed**
|
|
34
38
|
|
|
35
|
-
-
|
|
39
|
+
- A completed postVerify delivery now keeps `DISTRIBUTED` even when the optional finish checklist cannot reread its plan. The CLI returns an explicit unavailable diagnostic without rewriting the successful delivery checkpoint.
|
|
36
40
|
|
|
37
41
|
**Upgrade Notes**
|
|
38
42
|
|
|
39
|
-
Upgrade from 0.9.
|
|
43
|
+
Upgrade from 0.9.15 to receive postVerify finish guidance and optional source-branch and setup continuation. Add a top-level `releaseFinish` block only when the project wants to select a setup entry or change the default reminder policy. Remove any release-skill standalone marketplace registration, add or update `ifoohoo/skill-family-hub`, and use `release-skill@skill-family-hub`. Restart an updated host before treating the new plugin version or setup entry as loaded.
|
|
40
44
|
<!-- release-skill:managed:end id=latest-release -->
|
|
41
45
|
|
|
42
46
|
<!-- release-skill:capability:external-write-boundary -->
|
|
43
|
-
> **Current boundary:** v0.9.
|
|
47
|
+
> **Current boundary:** v0.9.16 is the current source candidate. This README
|
|
44
48
|
> records intended scope and verification boundaries; it is not evidence of
|
|
45
49
|
> publication, consumer-installation verification, or independent acceptance.
|
|
46
50
|
> Release availability must be established from the corresponding release records
|
|
@@ -64,7 +68,7 @@ Upgrade from 0.9.14 to use the consolidated release-prepare workflow and side-ef
|
|
|
64
68
|
> publish global preflight.
|
|
65
69
|
|
|
66
70
|
<!-- release-skill:capability:safe-first-command -->
|
|
67
|
-
> **Production path verified since the v0.1.1 milestone; v0.9.
|
|
71
|
+
> **Production path verified since the v0.1.1 milestone; v0.9.16 is the current
|
|
68
72
|
> source candidate. Its README does not establish publication,
|
|
69
73
|
> consumer-installation verification, or independent acceptance.**
|
|
70
74
|
> The npm-installed CLI is the supported user entry. Source checkout
|
|
@@ -93,13 +97,15 @@ checkpoints remain intact and use matching-version recovery. Evidence v1 stays
|
|
|
93
97
|
read-only; v2 uses a closed top level with phase extensions in `details`.
|
|
94
98
|
Summaries and recovery suggestions are diagnostic, never publication authority.
|
|
95
99
|
|
|
96
|
-
The current 0.9.
|
|
100
|
+
The current 0.9.16 candidate includes the narrow R-05 Hook cache v2 consumer
|
|
97
101
|
path, the public `postverify` path, and the stable isolated install-tree record
|
|
98
102
|
path (A2/A3). It keeps Skill Family Hub as the single marketplace source. It
|
|
99
103
|
also makes the `release-prepare` Skill organize existing assessment, refresh,
|
|
100
104
|
focused-check, and prepare entry points without adding another execution
|
|
101
105
|
engine. `prepare --help` and `prepare -h` now return before configuration,
|
|
102
|
-
locks, runs, or hooks can observe the request.
|
|
106
|
+
locks, runs, or hooks can observe the request. The `release-finish` Skill can
|
|
107
|
+
also report the source branch and continue into a configured setup entry after
|
|
108
|
+
the selected host has loaded the released plugin. This candidate still
|
|
103
109
|
excludes R-02 safe full-tree inventory, R-10 historical-release verification
|
|
104
110
|
implementation, real Kimi/WorkBuddy public-marketplace installation and
|
|
105
111
|
invocation gates, and an Audit public offline release-record verifier.
|
|
@@ -496,6 +502,9 @@ project:
|
|
|
496
502
|
name: my-project
|
|
497
503
|
defaultBranch: main
|
|
498
504
|
sourceRepository: owner/my-workspace
|
|
505
|
+
releaseFinish:
|
|
506
|
+
sourceBranchCheck: remind
|
|
507
|
+
setupSkill: release-setup
|
|
499
508
|
releaseUnits:
|
|
500
509
|
- id: my-project
|
|
501
510
|
source: .
|
|
@@ -526,6 +535,12 @@ releaseUnits:
|
|
|
526
535
|
branchStrategy: create-release-branch
|
|
527
536
|
```
|
|
528
537
|
|
|
538
|
+
`releaseFinish` controls only local post-release work. `sourceBranchCheck`
|
|
539
|
+
defaults to `remind`; set it to `skip` to suppress the read-only source-branch
|
|
540
|
+
reminder. `setupSkill` is optional and names an already installed and loaded
|
|
541
|
+
setup entry such as `release-setup` or `plugin:skill`; it is never executed as
|
|
542
|
+
a shell command. The two settings are independent.
|
|
543
|
+
|
|
529
544
|
`distributions` is required but may be an explicit empty array. Use
|
|
530
545
|
`distributions: []` when release-skill should publish only the unit's GitHub
|
|
531
546
|
snapshot, tag, and GitHub Release, with no npm publish or marketplace consumer
|
|
@@ -797,7 +812,7 @@ A release unit may also declare `postPublish.localHostUpdate` for a plugin that
|
|
|
797
812
|
is delivered through a project-selected Hub by a `postVerify` hook. After that
|
|
798
813
|
hook reaches `DISTRIBUTED`, `ship`, `verify`, `post-release`, and
|
|
799
814
|
`release-finish` display the declared Hub, plugin, and hosts. These Hub-backed
|
|
800
|
-
targets are manual in 0.9.
|
|
815
|
+
targets are manual in 0.9.16 (`promptRequired: true`, `available: false`): the
|
|
801
816
|
prompt does not query the Hub, inspect the host, or run host commands. Claude
|
|
802
817
|
and Codex use their existing marketplace management entry; Kimi uses the
|
|
803
818
|
frozen GitHub Release and its existing confirmation path; CodeBuddy and
|
package/README.zh-CN.md
CHANGED
|
@@ -2,39 +2,43 @@
|
|
|
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.16 -->
|
|
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.16** (2026-09-09)
|
|
12
12
|
|
|
13
|
-
0.9.
|
|
13
|
+
0.9.16 是把已验证发布衔接到显式源码分支检查、宿主感知 setup 续接和 postVerify 收尾提示的本地源码候选。三项 Foundation 依赖仍精确固定在已发布的 0.17.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
|
|
14
14
|
|
|
15
15
|
**安全**
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
17
|
+
- 源码分支提醒只运行 `git branch --show-current` 和 `git status --short --branch`,不会 fetch、切换、合并、rebase、stash、reset、clean 或 push。setup 名只作为技能元数据匹配,不会按 shell 文本执行。
|
|
18
|
+
- Skill Family Hub 更新以已观察的分支头为基础比较后写入。Hub 局部发布不回滚、不覆盖,也不强推。
|
|
19
|
+
|
|
20
|
+
**新增**
|
|
21
|
+
|
|
22
|
+
- 项目可以把 `releaseFinish.sourceBranchCheck` 配置为 `remind` 或 `skip`,并通过 `releaseFinish.setupSkill` 指定已加载的 setup 入口。release-finish 会区分发布工作区和用户明确选择的消费项目;目标目录、新版插件加载状态或可调用宿主不能确认时,只报告 setup 待执行。
|
|
23
|
+
- 源码检查只运行只读 Git 命令,报告当前分支、工作区改动、上游摘要,以及仍需维护者决定的事项。项目需要让 release-finish 继续进入 release-skill setup 时,可以选择 `release-setup`。
|
|
20
24
|
|
|
21
25
|
**变更**
|
|
22
26
|
|
|
23
|
-
- release-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
27
|
+
- postVerify 成功进入 `DISTRIBUTED` 后,JSON 和文本 CLI 输出都会显示与 release-finish 一致的 Hub-backed 本机宿主收尾提示。提示只用于诊断,不会自行调用宿主命令。
|
|
28
|
+
- 宿主更新和 setup 检查仍属于本地后续工作,不改写不可变发布计划,也不改变 `VERIFIED` 发布结果。只有插件版本、消费目录和运行环境都相同时,才可复用一次项目就绪检查;各宿主仍分别检查安装与加载状态。
|
|
29
|
+
- Skill Family Hub 继续通过项目私有的 postVerify hook 和 GitHub Git Data API 发布。Hub 更新仍需单独批准,并根据已观察的分支头比较后写入。
|
|
26
30
|
|
|
27
31
|
**修复**
|
|
28
32
|
|
|
29
|
-
-
|
|
33
|
+
- postVerify 已完成分发后,即使可选收尾清单无法重新读取计划,也会保留 `DISTRIBUTED`。CLI 会返回明确的不可用诊断,不会改写已成功的分发检查点。
|
|
30
34
|
|
|
31
35
|
**升级说明**
|
|
32
36
|
|
|
33
|
-
从 0.9.
|
|
37
|
+
从 0.9.15 升级后,可获得 postVerify 收尾提示,以及可选的源码分支与 setup 续接。只有需要指定 setup 入口或修改默认提醒策略时,才增加顶层 `releaseFinish` 配置。删除各宿主中独立的 `release-skill` 市场登记,添加或更新 `ifoohoo/skill-family-hub`,并使用 `release-skill@skill-family-hub`。宿主更新后需先重启,才能把新版插件或 setup 入口视为已加载。
|
|
34
38
|
<!-- release-skill:managed:end id=latest-release -->
|
|
35
39
|
|
|
36
40
|
<!-- release-skill:capability:external-write-boundary -->
|
|
37
|
-
> **当前边界:** v0.9.
|
|
41
|
+
> **当前边界:** v0.9.16 只是当前源码候选。本 README 记录预期范围与验证边界,
|
|
38
42
|
> 不代表已经发布、完成消费者安装验证或通过独立验收。
|
|
39
43
|
> 版本可用性以对应发布记录及发布后验证结果为准。
|
|
40
44
|
> v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
|
|
@@ -50,7 +54,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
|
|
|
50
54
|
> 远端唯一性检查在 `publish` 全局预检执行。
|
|
51
55
|
|
|
52
56
|
<!-- release-skill:capability:safe-first-command -->
|
|
53
|
-
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.
|
|
57
|
+
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.16 是当前源码候选,本 README 不证明该候选已经发布、完成消费者安装验证或通过独立验收。**
|
|
54
58
|
> npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
|
|
55
59
|
>
|
|
56
60
|
> **第一条命令:**
|
|
@@ -68,10 +72,11 @@ marketplace 委托目标工作区发布的边界不变。
|
|
|
68
72
|
|
|
69
73
|
旧 production 计划缺少 `sourceAuthority` 时,在外部写入前拒绝。未发生外部写入的计划必须重新 prepare 并批准新摘要,不能补写旧计划或迁移批准。已有 `PARTIAL` 保留检查点,走匹配版本的恢复路径。evidence v1 只读;v2 顶层封闭,阶段扩展放在 `details`。摘要和恢复建议只作诊断,不构成发布权威。
|
|
70
74
|
|
|
71
|
-
当前 0.9.
|
|
75
|
+
当前 0.9.16 候选包含窄范围的 R-05 Hook cache v2 消费路径、公开 `postverify`
|
|
72
76
|
路径和稳定隔离安装树记录路径(A2/A3),继续以 Skill Family Hub 为唯一市场来源。
|
|
73
77
|
`release-prepare` Skill 现在会组织项目已有的评估、刷新、聚焦检查和 prepare 入口,不新增执行引擎。
|
|
74
|
-
`prepare --help` 和 `prepare -h` 会在配置、锁、run 或 Hook
|
|
78
|
+
`prepare --help` 和 `prepare -h` 会在配置、锁、run 或 Hook 观察请求之前返回。
|
|
79
|
+
所选宿主加载已发布插件后,`release-finish` Skill 还可以报告源码分支,并继续执行已配置的 setup 入口。当前仍不包含
|
|
75
80
|
R-02 安全整树盘点、R-10 历史发布验证
|
|
76
81
|
的产品实现、真实 Kimi/WorkBuddy 公开市场安装与调用门禁或 Audit 公开离线发布记录
|
|
77
82
|
验证器。本范围说明不构成远端发布记录或消费者升级指引。
|
|
@@ -415,6 +420,9 @@ project:
|
|
|
415
420
|
name: my-project
|
|
416
421
|
defaultBranch: main
|
|
417
422
|
sourceRepository: owner/my-workspace
|
|
423
|
+
releaseFinish:
|
|
424
|
+
sourceBranchCheck: remind
|
|
425
|
+
setupSkill: release-setup
|
|
418
426
|
releaseUnits:
|
|
419
427
|
- id: my-project
|
|
420
428
|
source: .
|
|
@@ -445,6 +453,10 @@ releaseUnits:
|
|
|
445
453
|
branchStrategy: create-release-branch
|
|
446
454
|
```
|
|
447
455
|
|
|
456
|
+
`releaseFinish` 只控制本地发布收尾。`sourceBranchCheck` 缺省为 `remind`;设为
|
|
457
|
+
`skip` 时关闭只读源码分支提醒。`setupSkill` 可省略,填写时指定已经安装并加载的 setup
|
|
458
|
+
入口,例如 `release-setup` 或 `plugin:skill`;它不会作为 shell 命令执行。两个配置彼此独立。
|
|
459
|
+
|
|
448
460
|
`distributions` 是必填字段,但可以显式设为空数组。使用
|
|
449
461
|
`distributions: []` 时,release-skill 只发布该单元的 GitHub 快照、标签和
|
|
450
462
|
GitHub Release,不生成 npm 发布或市场消费者动作。单元的 `postPublish` 声明仍会
|
|
@@ -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.16"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "ba44ad70cebc1cc077887bdf71bf36d78b9073c8aeabd0074aac2eb0d5caffea";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -148166,6 +148166,23 @@ This command creates an independent postVerify run and never reads or writes shi
|
|
|
148166
148166
|
root,
|
|
148167
148167
|
...postpublishApprovalPaths.length > 0 ? { postpublishApprovalPaths } : {}
|
|
148168
148168
|
});
|
|
148169
|
+
if (result2.status === "DISTRIBUTED") {
|
|
148170
|
+
const {
|
|
148171
|
+
derivePostReleaseChecklist: derivePostReleaseChecklist2,
|
|
148172
|
+
unavailablePostReleaseChecklist: unavailablePostReleaseChecklist2
|
|
148173
|
+
} = await init_post_release_local().then(() => post_release_local_exports);
|
|
148174
|
+
let plan;
|
|
148175
|
+
try {
|
|
148176
|
+
plan = JSON.parse(await readFile57(resolve42(planPath), "utf8"));
|
|
148177
|
+
result2.postRelease = derivePostReleaseChecklist2(plan, {
|
|
148178
|
+
root,
|
|
148179
|
+
runPath: result2.runPath,
|
|
148180
|
+
postVerifyComplete: true
|
|
148181
|
+
});
|
|
148182
|
+
} catch (error) {
|
|
148183
|
+
result2.postRelease = unavailablePostReleaseChecklist2(plan, error);
|
|
148184
|
+
}
|
|
148185
|
+
}
|
|
148169
148186
|
if (hasJson) {
|
|
148170
148187
|
console.log(JSON.stringify(result2, null, 2));
|
|
148171
148188
|
} else {
|
|
@@ -148174,6 +148191,17 @@ This command creates an independent postVerify run and never reads or writes shi
|
|
|
148174
148191
|
console.log(` ${cp4.actionId}: ${cp4.status}`);
|
|
148175
148192
|
}
|
|
148176
148193
|
if (result2.runPath) console.log(`PostVerify run: ${result2.runPath}`);
|
|
148194
|
+
if (result2.postRelease?.status === "UNAVAILABLE") {
|
|
148195
|
+
console.warn(`Post-release checklist unavailable: ${result2.postRelease.diagnostic?.message ?? "unknown error"}`);
|
|
148196
|
+
} else if (result2.postRelease?.localHostUpdate?.promptRequired === true) {
|
|
148197
|
+
const localHostUpdate = result2.postRelease.localHostUpdate;
|
|
148198
|
+
console.log(`Post-release: ask whether to update local host plugins (${localHostUpdate.hosts.join(", ")}).`);
|
|
148199
|
+
if (localHostUpdate.available === true && typeof localHostUpdate.runPath === "string") {
|
|
148200
|
+
console.log(`Post-release command: release-skill post-release --plan ${resolve42(planPath)} --run ${localHostUpdate.runPath}`);
|
|
148201
|
+
console.log("Choose --hosts before adding --update-local-hosts to perform a local update.");
|
|
148202
|
+
}
|
|
148203
|
+
printHubManualTargets(localHostUpdate.targets);
|
|
148204
|
+
}
|
|
148177
148205
|
}
|
|
148178
148206
|
await exitAfterFlush(result2.status === "DISTRIBUTED" ? 0 : 1);
|
|
148179
148207
|
} catch (err) {
|
|
@@ -44,6 +44,24 @@
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
|
+
"releaseFinish": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"description": "Optional local post-release finish settings. Omitted sourceBranchCheck defaults to remind.",
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"properties": {
|
|
52
|
+
"sourceBranchCheck": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"enum": [
|
|
55
|
+
"remind",
|
|
56
|
+
"skip"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"setupSkill": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"pattern": "^[a-z0-9][a-z0-9-]*(?::[a-z0-9][a-z0-9-]*)?$"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
47
65
|
"publicSourceAuthorityReceipt": {
|
|
48
66
|
"type": "object",
|
|
49
67
|
"description": "Optional public source-authority receipt uploaded to one coordinator GitHub Release after all subject npm tarballs are frozen.",
|
|
@@ -70,6 +70,64 @@ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill-local-finish.mjs" \
|
|
|
70
70
|
|
|
71
71
|
完成后报告每个宿主的状态,并提醒用户重启已更新的宿主。本机结果只记录收尾事实,不改变发布状态。
|
|
72
72
|
|
|
73
|
+
## 配置与目录
|
|
74
|
+
|
|
75
|
+
从发布项目目录的 `.release-skill/project.yaml` 读取 `releaseFinish` 和 `project.defaultBranch`。
|
|
76
|
+
文件缺失或无法解析时,报告具体配置问题,不猜默认分支或 setup,也不得把文件缺失当作字段合法缺省;
|
|
77
|
+
已经取得的发布结果仍保留。只有配置文件有效时,整个 `releaseFinish` 或其中字段缺省才按各自合同默认。
|
|
78
|
+
|
|
79
|
+
发布项目目录用于读取配置和执行源码 Git 检查。setup 使用用户明确指定的消费项目目录或已明确的使用
|
|
80
|
+
上下文。只有用户明确把发布源码仓库作为消费项目时,才能在那里执行 setup;同时提供两个目录时不得混用。
|
|
81
|
+
|
|
82
|
+
## 更新后 setup
|
|
83
|
+
|
|
84
|
+
完成现有清单及已授权的宿主处理后,读取发布项目 `.release-skill/project.yaml` 的
|
|
85
|
+
`releaseFinish.setupSkill`。未配置时不增加 setup 提示。配置的技能名只用于匹配入口,不作为 shell 命令执行,
|
|
86
|
+
也不授权安装同名插件。
|
|
87
|
+
|
|
88
|
+
只有本次所选宿主已经成功更新,或现有检查确认它已是目标版本时,才衔接 setup。通过宿主实际技能
|
|
89
|
+
元数据核对目标插件身份、版本和入口;不能从开发仓库、旧会话缓存或同名技能推断新版已加载。当前宿主
|
|
90
|
+
不满足时,可以使用同次更新中另一个已安装并加载目标版本和入口的宿主。
|
|
91
|
+
|
|
92
|
+
目标目录来自用户本次明确指定的消费项目或已明确的使用上下文。目录不明确、宿主需要重启、当前环境
|
|
93
|
+
不能调用可用宿主、入口不存在或归属有歧义时,标为“待执行”,并给出插件与版本、技能名、目标目录和
|
|
94
|
+
已有授权的续接提示。发出提示不代表 setup 已完成。
|
|
95
|
+
|
|
96
|
+
对同一插件版本、同一项目目录和相同共享运行环境,项目级依赖、项目配置和 Git hooks 由一个已加载
|
|
97
|
+
新版插件的宿主检查一次。其余宿主分别核对自身安装、加载和宿主专属配置。不同运行环境不得无条件
|
|
98
|
+
复用项目就绪结论;按目标 setup 的实际合同补查差异。release-finish 不保存去重键、收据或新的状态。
|
|
99
|
+
|
|
100
|
+
调用 setup 前完整读取目标技能及其必读引用,并传入目标项目、插件版本、只读检查意图和已有授权范围。
|
|
101
|
+
已有具体修复授权应传递给 setup;未覆盖的写入不能执行。只读检查、安装结果和配置修复结果分别报告。
|
|
102
|
+
最终自然语言回复列出执行宿主、插件版本、消费项目路径、实际结果和未完成项。任何 setup 结果都不改变
|
|
103
|
+
`VERIFIED`,也不影响其他宿主已经完成的结果。
|
|
104
|
+
|
|
105
|
+
## 源码分支检查
|
|
106
|
+
|
|
107
|
+
宿主更新和 setup 不影响本项检查。读取 `releaseFinish.sourceBranchCheck`;字段或整个
|
|
108
|
+
`releaseFinish` 缺省时按 `remind` 处理。配置为 `skip` 时不运行 Git 命令,只说明项目已关闭
|
|
109
|
+
源码分支检查。
|
|
110
|
+
|
|
111
|
+
`remind` 时,在发布项目目录依次运行两条只读命令:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
git branch --show-current
|
|
115
|
+
git status --short --branch
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
第一条命令取得当前分支。第二条命令读取工作区改动和现有上游跟踪摘要;不得增加会写入或访问网络的
|
|
119
|
+
参数。当前分支等于 `project.defaultBranch` 且没有文件改动时,说明本地已位于目标分支;输出含
|
|
120
|
+
ahead 或 behind 等跟踪信息时,仍原样概括。分支不一致时说明两个准确名称,并询问用户是否需要处理。
|
|
121
|
+
第一条命令输出为空时,说明处于 detached HEAD,不猜测目标操作。工作区存在改动时说明不建议直接
|
|
122
|
+
切换或清理。任一命令失败时,报告命令、退出结果和无法完成检查的事实。
|
|
123
|
+
|
|
124
|
+
最终自然语言回复至少列出提醒策略、目标分支、当前分支或无法取得的事实、工作区是否有改动、Git
|
|
125
|
+
上游跟踪摘要,以及是否需要用户决定下一步。没有上游信息时,明确说明命令输出未显示上游信息。
|
|
126
|
+
|
|
127
|
+
本项检查不从宿主更新推导出 Git 写入授权,不自动执行 fetch、switch、checkout、merge、rebase、stash、
|
|
128
|
+
reset、clean 或 push。用户跳过宿主更新仍执行默认分支检查。用户已经明确授权同一仓库、分支和操作时,
|
|
129
|
+
按项目 Git 纪律继续,不重复询问相同授权;检查本身不改变 `VERIFIED`,不保存结果,也不产生新的 run。
|
|
130
|
+
|
|
73
131
|
## 临时归属
|
|
74
132
|
|
|
75
133
|
本能力目前只服务发布后的本机收尾,因此保留在 release-skill。第二个技能族需要复用宿主更新或 TUI 驱动,或 Foundation 发布等价公共入口时,再把通用机制上收 Foundation并删除这里的通用部分。release-skill 只保留发布计划到宿主更新输入的领域映射。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.16",
|
|
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.16.",
|
|
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.16"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "ba44ad70cebc1cc077887bdf71bf36d78b9073c8aeabd0074aac2eb0d5caffea";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -148166,6 +148166,23 @@ This command creates an independent postVerify run and never reads or writes shi
|
|
|
148166
148166
|
root,
|
|
148167
148167
|
...postpublishApprovalPaths.length > 0 ? { postpublishApprovalPaths } : {}
|
|
148168
148168
|
});
|
|
148169
|
+
if (result2.status === "DISTRIBUTED") {
|
|
148170
|
+
const {
|
|
148171
|
+
derivePostReleaseChecklist: derivePostReleaseChecklist2,
|
|
148172
|
+
unavailablePostReleaseChecklist: unavailablePostReleaseChecklist2
|
|
148173
|
+
} = await init_post_release_local().then(() => post_release_local_exports);
|
|
148174
|
+
let plan;
|
|
148175
|
+
try {
|
|
148176
|
+
plan = JSON.parse(await readFile57(resolve42(planPath), "utf8"));
|
|
148177
|
+
result2.postRelease = derivePostReleaseChecklist2(plan, {
|
|
148178
|
+
root,
|
|
148179
|
+
runPath: result2.runPath,
|
|
148180
|
+
postVerifyComplete: true
|
|
148181
|
+
});
|
|
148182
|
+
} catch (error) {
|
|
148183
|
+
result2.postRelease = unavailablePostReleaseChecklist2(plan, error);
|
|
148184
|
+
}
|
|
148185
|
+
}
|
|
148169
148186
|
if (hasJson) {
|
|
148170
148187
|
console.log(JSON.stringify(result2, null, 2));
|
|
148171
148188
|
} else {
|
|
@@ -148174,6 +148191,17 @@ This command creates an independent postVerify run and never reads or writes shi
|
|
|
148174
148191
|
console.log(` ${cp4.actionId}: ${cp4.status}`);
|
|
148175
148192
|
}
|
|
148176
148193
|
if (result2.runPath) console.log(`PostVerify run: ${result2.runPath}`);
|
|
148194
|
+
if (result2.postRelease?.status === "UNAVAILABLE") {
|
|
148195
|
+
console.warn(`Post-release checklist unavailable: ${result2.postRelease.diagnostic?.message ?? "unknown error"}`);
|
|
148196
|
+
} else if (result2.postRelease?.localHostUpdate?.promptRequired === true) {
|
|
148197
|
+
const localHostUpdate = result2.postRelease.localHostUpdate;
|
|
148198
|
+
console.log(`Post-release: ask whether to update local host plugins (${localHostUpdate.hosts.join(", ")}).`);
|
|
148199
|
+
if (localHostUpdate.available === true && typeof localHostUpdate.runPath === "string") {
|
|
148200
|
+
console.log(`Post-release command: release-skill post-release --plan ${resolve42(planPath)} --run ${localHostUpdate.runPath}`);
|
|
148201
|
+
console.log("Choose --hosts before adding --update-local-hosts to perform a local update.");
|
|
148202
|
+
}
|
|
148203
|
+
printHubManualTargets(localHostUpdate.targets);
|
|
148204
|
+
}
|
|
148177
148205
|
}
|
|
148178
148206
|
await exitAfterFlush(result2.status === "DISTRIBUTED" ? 0 : 1);
|
|
148179
148207
|
} catch (err) {
|
|
@@ -44,6 +44,24 @@
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
|
+
"releaseFinish": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"description": "Optional local post-release finish settings. Omitted sourceBranchCheck defaults to remind.",
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"properties": {
|
|
52
|
+
"sourceBranchCheck": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"enum": [
|
|
55
|
+
"remind",
|
|
56
|
+
"skip"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"setupSkill": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"pattern": "^[a-z0-9][a-z0-9-]*(?::[a-z0-9][a-z0-9-]*)?$"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
47
65
|
"publicSourceAuthorityReceipt": {
|
|
48
66
|
"type": "object",
|
|
49
67
|
"description": "Optional public source-authority receipt uploaded to one coordinator GitHub Release after all subject npm tarballs are frozen.",
|