release-skill 0.2.9 → 0.4.0
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 +41 -0
- package/INSTALL.md +34 -110
- package/INSTALL.zh-CN.md +17 -83
- package/README.md +49 -41
- package/README.zh-CN.md +43 -34
- 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 +4131 -3180
- package/adapters/claude/schemas/release-plan.schema.json +7 -0
- package/adapters/claude/schemas/release-run.schema.json +43 -0
- package/adapters/claude/skills/release-help/SKILL.md +10 -2
- package/adapters/claude/skills/release-prepare/SKILL.md +6 -15
- package/adapters/claude/skills/release-publish/SKILL.md +5 -6
- package/adapters/claude/skills/release-reconcile/SKILL.md +2 -2
- package/adapters/claude/skills/release-verify/SKILL.md +4 -6
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +4131 -3180
- package/adapters/codex/schemas/release-plan.schema.json +7 -0
- package/adapters/codex/schemas/release-run.schema.json +43 -0
- package/adapters/codex/skills/release-help/SKILL.md +10 -2
- package/adapters/codex/skills/release-prepare/SKILL.md +6 -15
- package/adapters/codex/skills/release-publish/SKILL.md +5 -6
- package/adapters/codex/skills/release-reconcile/SKILL.md +2 -2
- package/adapters/codex/skills/release-verify/SKILL.md +4 -6
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +4131 -3180
- package/adapters/kimi/schemas/release-plan.schema.json +7 -0
- package/adapters/kimi/schemas/release-run.schema.json +43 -0
- package/adapters/kimi/skills/release-help/SKILL.md +10 -2
- package/adapters/kimi/skills/release-prepare/SKILL.md +6 -15
- package/adapters/kimi/skills/release-publish/SKILL.md +5 -6
- package/adapters/kimi/skills/release-reconcile/SKILL.md +2 -2
- package/adapters/kimi/skills/release-verify/SKILL.md +4 -6
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +4131 -3180
- package/adapters/workbuddy/schemas/release-plan.schema.json +7 -0
- package/adapters/workbuddy/schemas/release-run.schema.json +43 -0
- package/adapters/workbuddy/skills/release-help/SKILL.md +10 -2
- package/adapters/workbuddy/skills/release-prepare/SKILL.md +6 -15
- package/adapters/workbuddy/skills/release-publish/SKILL.md +5 -6
- package/adapters/workbuddy/skills/release-reconcile/SKILL.md +2 -2
- package/adapters/workbuddy/skills/release-verify/SKILL.md +4 -6
- package/bin/release-skill-cli.mjs +212 -43
- package/bin/release-skill.bundle.mjs +4131 -3180
- package/package.json +1 -1
- package/references/01-state-machine.md +1 -1
- package/references/06-adapter-contract.md +6 -5
- package/schemas/release-plan.schema.json +7 -0
- package/schemas/release-run.schema.json +43 -0
- package/skills/release-help/SKILL.md +10 -2
- package/skills/release-prepare/SKILL.md +6 -15
- package/skills/release-publish/SKILL.md +5 -6
- package/skills/release-reconcile/SKILL.md +2 -2
- package/skills/release-verify/SKILL.md +4 -6
- package/skills-src/release-help/SKILL.md +10 -2
- package/skills-src/release-prepare/SKILL.md +6 -15
- package/skills-src/release-publish/SKILL.md +5 -6
- package/skills-src/release-reconcile/SKILL.md +2 -2
- package/skills-src/release-verify/SKILL.md +4 -6
- package/src/adapters/plugin-marketplace.mjs +1 -1
- package/src/adapters/push-snapshot.mjs +3 -1
- package/src/commands/approve.mjs +8 -6
- package/src/commands/attest.mjs +195 -0
- package/src/commands/hooks.mjs +42 -0
- package/src/commands/prepare.mjs +13 -50
- package/src/commands/publish.mjs +0 -8
- package/src/commands/reconcile.mjs +3 -37
- package/src/commands/ship.mjs +334 -0
- package/src/commands/verify.mjs +195 -15
- package/src/core/git-transport.mjs +93 -0
- package/src/core/release-metadata.mjs +105 -0
- package/src/core/skill-resource-closure.mjs +7 -1
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.
|
|
5
|
+
<!-- release-skill:release-version: 0.4.0 -->
|
|
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,21 +14,26 @@ 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.
|
|
17
|
+
**0.4.0** (2026-08-02)
|
|
18
18
|
|
|
19
|
-
v0.
|
|
19
|
+
v0.4.0 simplifies the production release path to one frozen-plan approval and moves unavailable Kimi or CodeBuddy installations into non-blocking manual follow-up tasks.
|
|
20
20
|
|
|
21
21
|
**Added**
|
|
22
22
|
|
|
23
|
-
- **
|
|
23
|
+
- **Manual consumer follow-ups**: when Kimi or CodeBuddy cannot be installed automatically, the release records an installation task after publishing without requiring system attestation.
|
|
24
24
|
|
|
25
25
|
**Changed**
|
|
26
26
|
|
|
27
|
-
- **
|
|
27
|
+
- **Single release approval**: the normal production path now asks only for approval of the immutable release plan; invoking a command authorizes its configured hooks and gates.
|
|
28
|
+
- **Non-blocking human consumers**: Kimi and CodeBuddy manual installation tasks no longer prevent the automated release from reaching `VERIFIED`.
|
|
29
|
+
|
|
30
|
+
**Removed**
|
|
31
|
+
|
|
32
|
+
- **Redundant confirmation flags**: legacy plan-digest repetition, production-confirmation, hook-authorization, and manual-attestation interactions were removed from the normal release path.
|
|
28
33
|
<!-- release-skill:managed:end id=latest-release -->
|
|
29
34
|
|
|
30
35
|
<!-- release-skill:capability:external-write-boundary -->
|
|
31
|
-
> **Current boundary:** v0.
|
|
36
|
+
> **Current boundary:** v0.4.0 is the current release (v0.2.2 previously held
|
|
32
37
|
> published status before the platform verification convergence fix was added).
|
|
33
38
|
> v0.1.1 completed a real production release to GitHub and npm — the first
|
|
34
39
|
> production-verified milestone — followed by
|
|
@@ -46,7 +51,7 @@ v0.2.9 makes missing expected public-surface configuration visible during assess
|
|
|
46
51
|
> publish global preflight.
|
|
47
52
|
|
|
48
53
|
<!-- release-skill:capability:safe-first-command -->
|
|
49
|
-
> **Production path verified since the v0.1.1 milestone; v0.
|
|
54
|
+
> **Production path verified since the v0.1.1 milestone; v0.4.0 is the current
|
|
50
55
|
> release.** The npm-installed CLI is the supported user entry. Source checkout
|
|
51
56
|
> is the development/contributor fallback.
|
|
52
57
|
>
|
|
@@ -57,10 +62,9 @@ v0.2.9 makes missing expected public-surface configuration visible during assess
|
|
|
57
62
|
<!-- release-skill:maturity:v0.1-boundary -->
|
|
58
63
|
<!-- release-skill:maturity:boundary -->
|
|
59
64
|
> **Safe defaults:** the recommended path is `help → assess → prepare --offline →
|
|
60
|
-
> human review`. Production publishing
|
|
61
|
-
>
|
|
62
|
-
>
|
|
63
|
-
> no remote preflight or write starts.
|
|
65
|
+
> human review`. Production publishing uses `ship --target-version <ver> → ship --approve --actor <name>`.
|
|
66
|
+
> The `ship` command runs hooks and gates automatically; the only human gate is plan approval.
|
|
67
|
+
> Kimi/CodeBuddy installations are non-blocking manual follow-up tasks (not verified by system).
|
|
64
68
|
|
|
65
69
|
## Table of contents
|
|
66
70
|
|
|
@@ -112,6 +116,20 @@ See [INSTALL.md](INSTALL.md) for CodeBuddy, Codex, and Kimi Code commands.
|
|
|
112
116
|
|
|
113
117
|
### Main workflow
|
|
114
118
|
|
|
119
|
+
For routine releases, use the durable fast path. It persists authoritative
|
|
120
|
+
paths and resumes safely, so a normal run needs at most one human gate: the
|
|
121
|
+
frozen plan approval. `ship` runs configured hooks and verification gates
|
|
122
|
+
automatically. Kimi/CodeBuddy installations are non-blocking post-release
|
|
123
|
+
manual tasks; the system does not verify their completion.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
release-skill ship --root "$PROJECT" --target-version 1.2.3 --json
|
|
127
|
+
release-skill ship --root "$PROJECT" --approve --actor "$ACTOR" --json
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
During development, `release-skill hooks validate` runs declared hooks and
|
|
131
|
+
writes the same content-bound cache receipts that `prepare` consumes.
|
|
132
|
+
|
|
115
133
|
Run these steps in order. Steps 1-4 are safe (read-only or local-only);
|
|
116
134
|
steps 5-9 require explicit human gates.
|
|
117
135
|
|
|
@@ -177,41 +195,32 @@ ACTOR=your-name
|
|
|
177
195
|
```
|
|
178
196
|
4. **prepare** — local snapshot and plan freeze:
|
|
179
197
|
```bash
|
|
180
|
-
"${CLI[@]}" prepare --root "$PROJECT" --offline
|
|
181
|
-
--acknowledge-hook-side-effects \
|
|
182
|
-
--acknowledge-gate-side-effects --json
|
|
198
|
+
"${CLI[@]}" prepare --root "$PROJECT" --offline --json
|
|
183
199
|
```
|
|
184
|
-
Omit an acknowledgement only when that project config has no corresponding
|
|
185
|
-
hook or snapshot gate. Never grant either acknowledgement before reviewing
|
|
186
|
-
the configured executable, arguments, working directory, and side effects.
|
|
187
200
|
5. **Human review:** inspect `planPath`, `externalActions`, `targetVersion`, and `planDigest`.
|
|
188
201
|
6. **prepare --production** — freeze the production plan:
|
|
189
202
|
```bash
|
|
190
|
-
PLAN_JSON=$("${CLI[@]}" prepare --root "$PROJECT" --online --production
|
|
191
|
-
--acknowledge-hook-side-effects \
|
|
192
|
-
--acknowledge-gate-side-effects --json)
|
|
203
|
+
PLAN_JSON=$("${CLI[@]}" prepare --root "$PROJECT" --online --production --json)
|
|
193
204
|
PLAN_PATH=$(printf '%s\n' "$PLAN_JSON" | jq -r '.planPath')
|
|
194
205
|
PLAN_DIGEST=$(printf '%s\n' "$PLAN_JSON" | jq -r '.planDigest')
|
|
195
206
|
```
|
|
196
|
-
7. **approve** — human approval
|
|
207
|
+
7. **approve** — human approval (digest auto-read from plan, 24-hour expiry):
|
|
197
208
|
```bash
|
|
198
209
|
APPROVAL_JSON=$("${CLI[@]}" approve --plan "$PLAN_PATH" \
|
|
199
|
-
--
|
|
210
|
+
--actor "$ACTOR" --json)
|
|
200
211
|
APPROVAL_PATH=$(printf '%s\n' "$APPROVAL_JSON" | jq -r '.approvalPath')
|
|
201
212
|
```
|
|
202
213
|
8. **publish** — remote writes start here:
|
|
203
214
|
```bash
|
|
204
215
|
PUBLISH_JSON=$("${CLI[@]}" publish --root "$PROJECT" \
|
|
205
|
-
--plan "$PLAN_PATH" --approval "$APPROVAL_PATH"
|
|
206
|
-
--confirm-production "$PLAN_DIGEST" --json)
|
|
216
|
+
--plan "$PLAN_PATH" --approval "$APPROVAL_PATH" --json)
|
|
207
217
|
PUBLISH_RUN_PATH=$(printf '%s\n' "$PUBLISH_JSON" | jq -r '.runPath')
|
|
208
218
|
```
|
|
209
219
|
`PUBLISHED` is **not** the terminal state.
|
|
210
220
|
9. **verify** — consumer install check:
|
|
211
221
|
```bash
|
|
212
222
|
"${CLI[@]}" verify --root "$PROJECT" \
|
|
213
|
-
--plan "$PLAN_PATH" --run "$PUBLISH_RUN_PATH"
|
|
214
|
-
--acknowledge-gate-side-effects --json
|
|
223
|
+
--plan "$PLAN_PATH" --run "$PUBLISH_RUN_PATH" --json
|
|
215
224
|
```
|
|
216
225
|
|
|
217
226
|
The handoff example requires `jq`. Without it, copy the returned JSON fields
|
|
@@ -226,12 +235,10 @@ When `publish` succeeds at some checkpoints but fails at others, the run enters
|
|
|
226
235
|
RECONCILE_JSON=$("${CLI[@]}" reconcile --root "$PROJECT" \
|
|
227
236
|
--run "$PUBLISH_RUN_PATH" \
|
|
228
237
|
--plan "$PLAN_PATH" \
|
|
229
|
-
--approval "$APPROVAL_PATH"
|
|
230
|
-
--confirm-production "$PLAN_DIGEST" --json)
|
|
238
|
+
--approval "$APPROVAL_PATH" --json)
|
|
231
239
|
RECONCILE_RUN_PATH=$(printf '%s\n' "$RECONCILE_JSON" | jq -r '.runPath')
|
|
232
240
|
"${CLI[@]}" verify --root "$PROJECT" \
|
|
233
|
-
--plan "$PLAN_PATH" --run "$RECONCILE_RUN_PATH"
|
|
234
|
-
--acknowledge-gate-side-effects --json
|
|
241
|
+
--plan "$PLAN_PATH" --run "$RECONCILE_RUN_PATH" --json
|
|
235
242
|
```
|
|
236
243
|
|
|
237
244
|
`reconcile` queries the actual remote state, skips already-consistent steps,
|
|
@@ -451,9 +458,9 @@ hooks:
|
|
|
451
458
|
envAllowlist: []
|
|
452
459
|
```
|
|
453
460
|
|
|
454
|
-
Hooks run
|
|
455
|
-
|
|
456
|
-
|
|
461
|
+
Hooks run when `prepare` is invoked; the command call itself authorizes
|
|
462
|
+
execution. Gates are the controlled extension point for release calibration
|
|
463
|
+
(see `references/02-project-config.md`).
|
|
457
464
|
|
|
458
465
|
## Skills
|
|
459
466
|
|
|
@@ -461,7 +468,7 @@ point for release calibration (see `references/02-project-config.md`).
|
|
|
461
468
|
- `release-setup`: read-only discovery, human calibration, and create-once configuration.
|
|
462
469
|
- `release-assess`: read-only release readiness report.
|
|
463
470
|
- `release-prepare`: local snapshot and reviewable release plan.
|
|
464
|
-
- `release-publish`: approved
|
|
471
|
+
- `release-publish`: approved frozen GitHub+npm publishing; the internal digest is checked automatically.
|
|
465
472
|
- `release-reconcile`: evidence-based PARTIAL recovery with human intervention on conflicts.
|
|
466
473
|
- `release-verify`: post-publish verification; only `VERIFIED` is the happy end.
|
|
467
474
|
|
|
@@ -475,14 +482,15 @@ closures. A release unit declares what reaches users via `distributions`:
|
|
|
475
482
|
| `npm` | npm package with CLI entry | `npm install -g release-skill` |
|
|
476
483
|
| `claude-plugin` | self-contained closure under `adapters/claude/` | automated marketplace checkpoint |
|
|
477
484
|
| `codex-plugin` | self-contained closure under `adapters/codex/` | automated marketplace checkpoint |
|
|
478
|
-
| `kimi-plugin` | self-contained closure (no scriptable install API) |
|
|
479
|
-
| `codebuddy-plugin` | generated `adapters/workbuddy/` with `.codebuddy-plugin/plugin.json` |
|
|
485
|
+
| `kimi-plugin` | self-contained closure (no scriptable install API) | non-blocking post-release manual task |
|
|
486
|
+
| `codebuddy-plugin` | generated `adapters/workbuddy/` with `.codebuddy-plugin/plugin.json` | non-blocking post-release manual task |
|
|
480
487
|
|
|
481
488
|
Each adapter closure bundles its own CLI, skills, and schemas for zero external
|
|
482
489
|
dependency after installation. `publish` only publishes frozen Git objects and
|
|
483
490
|
npm tarballs, then checks remote commit/tree/tag integrity. Claude/Codex
|
|
484
|
-
verification is automated
|
|
485
|
-
|
|
491
|
+
verification is automated. Kimi Code and CodeBuddy/WorkBuddy are returned as
|
|
492
|
+
`manualFollowUps` with `verifiedBySystem: false`; their completion is not a
|
|
493
|
+
condition for the automated release to reach `VERIFIED`.
|
|
486
494
|
|
|
487
495
|
For every npm distribution, `prepare` statically checks the exact packed
|
|
488
496
|
tarball against concrete `package.json` entry targets. `publish` and
|
|
@@ -503,9 +511,9 @@ declaration is narrowed to concrete targets.
|
|
|
503
511
|
- no overwrite of branches/tags/releases or npm unpublish; create-only refs use
|
|
504
512
|
`--force-with-lease=<ref>:` solely as an atomic compare-and-set assertion that
|
|
505
513
|
the ref is absent, while existing branches use an ordinary non-force push;
|
|
506
|
-
- no automated CodeBuddy/WorkBuddy marketplace install checkpoint —
|
|
507
|
-
|
|
508
|
-
|
|
514
|
+
- no automated Kimi or CodeBuddy/WorkBuddy marketplace install checkpoint —
|
|
515
|
+
these installations remain explicit post-release team tasks and the system
|
|
516
|
+
does not verify their completion;
|
|
509
517
|
- no promise of Windows or broad multi-platform native write support;
|
|
510
518
|
- no hidden commit, push, tag, release, or package publication.
|
|
511
519
|
|
package/README.zh-CN.md
CHANGED
|
@@ -2,27 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.4.0 -->
|
|
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.
|
|
11
|
+
**0.4.0** (2026-08-02)
|
|
12
12
|
|
|
13
|
-
v0.
|
|
13
|
+
v0.4.0 将生产发布收敛为一次冻结计划批准,并把无法自动安装的 Kimi 或 CodeBuddy 转为不阻塞发布的人工后续任务。
|
|
14
14
|
|
|
15
15
|
**新增**
|
|
16
16
|
|
|
17
|
-
-
|
|
17
|
+
- **人工消费者后续任务**:Kimi 或 CodeBuddy 无法自动安装时,发布完成后记录人工安装待办,系统不再要求安装证明。
|
|
18
18
|
|
|
19
19
|
**变更**
|
|
20
20
|
|
|
21
|
-
-
|
|
21
|
+
- **单次发布批准**:普通生产发布只需批准一次不可变发布计划;调用命令即授权执行其配置的 hook 和 gate。
|
|
22
|
+
- **人工消费者不阻塞发布**:Kimi 和 CodeBuddy 的人工安装待办不再阻止自动发布达到 `VERIFIED`。
|
|
23
|
+
|
|
24
|
+
**移除**
|
|
25
|
+
|
|
26
|
+
- **冗余确认参数**:普通发布路径移除了重复输入 plan digest、production confirmation、hook authorization 和人工证明等交互。
|
|
22
27
|
<!-- release-skill:managed:end id=latest-release -->
|
|
23
28
|
|
|
24
29
|
<!-- release-skill:capability:external-write-boundary -->
|
|
25
|
-
> **当前边界:** v0.
|
|
30
|
+
> **当前边界:** v0.4.0 是当前发布版本(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
|
|
26
31
|
> v0.1.1 已完成 GitHub 与 npm 的
|
|
27
32
|
> 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
|
|
28
33
|
> 安装及 Claude/Codex 消费者安装验证;"当前发布版本"与"首次生产验证里程碑"
|
|
@@ -35,7 +40,7 @@ v0.2.9 会在评估和准备阶段提示缺少期望发布面配置,同时保
|
|
|
35
40
|
> 远端唯一性检查在 `publish` 全局预检执行。
|
|
36
41
|
|
|
37
42
|
<!-- release-skill:capability:safe-first-command -->
|
|
38
|
-
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.
|
|
43
|
+
> **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.4.0 是当前发布版本。**
|
|
39
44
|
> npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
|
|
40
45
|
>
|
|
41
46
|
> **第一条命令:**
|
|
@@ -45,9 +50,9 @@ v0.2.9 会在评估和准备阶段提示缺少期望发布面配置,同时保
|
|
|
45
50
|
<!-- release-skill:maturity:v0.1-boundary -->
|
|
46
51
|
<!-- release-skill:maturity:boundary -->
|
|
47
52
|
> **安全默认路径:** 推荐 `help → assess → prepare --offline → 人工审阅`;
|
|
48
|
-
>
|
|
49
|
-
>
|
|
50
|
-
>
|
|
53
|
+
> 生产发布使用 `ship --target-version <ver> → ship --approve --actor <name>`。
|
|
54
|
+
> `ship` 自动执行 hooks 和门禁,唯一的人工门禁是计划批准。
|
|
55
|
+
> Kimi/CodeBuddy 安装是非阻塞的人工后续任务(系统不核验)。
|
|
51
56
|
|
|
52
57
|
## 目录
|
|
53
58
|
|
|
@@ -99,6 +104,19 @@ CodeBuddy、Codex 和 Kimi Code 的完整命令见 [INSTALL.zh-CN.md](INSTALL.zh
|
|
|
99
104
|
|
|
100
105
|
### 主流程
|
|
101
106
|
|
|
107
|
+
日常发布优先使用可恢复的快速路径。它会持久化所有权威文件路径,正常流程只需
|
|
108
|
+
一次可读的冻结计划批准。`ship` 自动执行配置中的 hooks 和验证门禁,不进入
|
|
109
|
+
hook 授权等待态。Kimi/CodeBuddy 安装是发布完成后的非阻塞人工后续任务,
|
|
110
|
+
系统不核验其完成结果。
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
release-skill ship --root "$PROJECT" --target-version 1.2.3 --json
|
|
114
|
+
release-skill ship --root "$PROJECT" --approve --actor "$ACTOR" --json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
开发阶段可运行 `release-skill hooks validate`;它会执行声明的 hooks,并写入
|
|
118
|
+
`prepare` 可复用的内容绑定收据。
|
|
119
|
+
|
|
102
120
|
按以下顺序执行。步骤 1-4 是安全默认(只读或仅本地);步骤 5-9 需要显式人工门禁。
|
|
103
121
|
|
|
104
122
|
```bash
|
|
@@ -160,39 +178,32 @@ ACTOR=your-name
|
|
|
160
178
|
```
|
|
161
179
|
4. **prepare** — 本地快照与计划冻结:
|
|
162
180
|
```bash
|
|
163
|
-
"${CLI[@]}" prepare --root "$PROJECT" --offline
|
|
164
|
-
--acknowledge-hook-side-effects \
|
|
165
|
-
--acknowledge-gate-side-effects --json
|
|
181
|
+
"${CLI[@]}" prepare --root "$PROJECT" --offline --json
|
|
166
182
|
```
|
|
167
|
-
只有项目配置没有对应 hook 或 snapshot gate 时,才省略相应授权参数。授权前必须审阅可执行文件、参数、工作目录和副作用,不能把授权参数当固定样板。
|
|
168
183
|
5. **人工审阅:** 检查 `planPath`、`externalActions`、`targetVersion` 和 `planDigest`。
|
|
169
184
|
6. **prepare --production** — 冻结生产计划:
|
|
170
185
|
```bash
|
|
171
|
-
PLAN_JSON=$("${CLI[@]}" prepare --root "$PROJECT" --online --production
|
|
172
|
-
--acknowledge-hook-side-effects \
|
|
173
|
-
--acknowledge-gate-side-effects --json)
|
|
186
|
+
PLAN_JSON=$("${CLI[@]}" prepare --root "$PROJECT" --online --production --json)
|
|
174
187
|
PLAN_PATH=$(printf '%s\n' "$PLAN_JSON" | jq -r '.planPath')
|
|
175
188
|
PLAN_DIGEST=$(printf '%s\n' "$PLAN_JSON" | jq -r '.planDigest')
|
|
176
189
|
```
|
|
177
|
-
7. **approve** — 人工批准(24
|
|
190
|
+
7. **approve** — 人工批准(24 小时有效期,摘要从计划自动读取):
|
|
178
191
|
```bash
|
|
179
192
|
APPROVAL_JSON=$("${CLI[@]}" approve --plan "$PLAN_PATH" \
|
|
180
|
-
--
|
|
193
|
+
--actor "$ACTOR" --json)
|
|
181
194
|
APPROVAL_PATH=$(printf '%s\n' "$APPROVAL_JSON" | jq -r '.approvalPath')
|
|
182
195
|
```
|
|
183
196
|
8. **publish** — 远端写入开始:
|
|
184
197
|
```bash
|
|
185
198
|
PUBLISH_JSON=$("${CLI[@]}" publish --root "$PROJECT" \
|
|
186
|
-
--plan "$PLAN_PATH" --approval "$APPROVAL_PATH"
|
|
187
|
-
--confirm-production "$PLAN_DIGEST" --json)
|
|
199
|
+
--plan "$PLAN_PATH" --approval "$APPROVAL_PATH" --json)
|
|
188
200
|
PUBLISH_RUN_PATH=$(printf '%s\n' "$PUBLISH_JSON" | jq -r '.runPath')
|
|
189
201
|
```
|
|
190
202
|
`PUBLISHED` **不是**终态。
|
|
191
203
|
9. **verify** — 消费者安装检查:
|
|
192
204
|
```bash
|
|
193
205
|
"${CLI[@]}" verify --root "$PROJECT" \
|
|
194
|
-
--plan "$PLAN_PATH" --run "$PUBLISH_RUN_PATH"
|
|
195
|
-
--acknowledge-gate-side-effects --json
|
|
206
|
+
--plan "$PLAN_PATH" --run "$PUBLISH_RUN_PATH" --json
|
|
196
207
|
```
|
|
197
208
|
|
|
198
209
|
示例需要 `jq`。没有 jq 时,直接复制返回的 JSON 字段;不要把尖括号占位符当作 shell 语法。
|
|
@@ -205,12 +216,10 @@ ACTOR=your-name
|
|
|
205
216
|
RECONCILE_JSON=$("${CLI[@]}" reconcile --root "$PROJECT" \
|
|
206
217
|
--run "$PUBLISH_RUN_PATH" \
|
|
207
218
|
--plan "$PLAN_PATH" \
|
|
208
|
-
--approval "$APPROVAL_PATH"
|
|
209
|
-
--confirm-production "$PLAN_DIGEST" --json)
|
|
219
|
+
--approval "$APPROVAL_PATH" --json)
|
|
210
220
|
RECONCILE_RUN_PATH=$(printf '%s\n' "$RECONCILE_JSON" | jq -r '.runPath')
|
|
211
221
|
"${CLI[@]}" verify --root "$PROJECT" \
|
|
212
|
-
--plan "$PLAN_PATH" --run "$RECONCILE_RUN_PATH"
|
|
213
|
-
--acknowledge-gate-side-effects --json
|
|
222
|
+
--plan "$PLAN_PATH" --run "$RECONCILE_RUN_PATH" --json
|
|
214
223
|
```
|
|
215
224
|
|
|
216
225
|
`reconcile` 查询实际远端状态,跳过已一致步骤,只重试安全未完成的动作。远端冲突需人工决策。reconcile 成功只返回 `PUBLISHED`,不返回 `VERIFIED`。
|
|
@@ -228,7 +237,7 @@ DISCOVERED -> ASSESSED -> PREPARED -> APPROVED -> PUBLISHING -> PUBLISHED -> VER
|
|
|
228
237
|
|
|
229
238
|
**保存契约:** release-skill 不重新生成或回写项目源文件。`prepare` 把每个配置的公开文件复制到隔离快照并验证字节。后续 prepare 重新读取当前文件,不会从模板重建。只有 `publicFiles` 列出的文件会被复制。`prepare` 不会刷新或重写人工文档——维护者先更新 README、INSTALL 和 CHANGELOG,再 prepare、审阅和批准。
|
|
230
239
|
|
|
231
|
-
**写入安全:** `setup` 默认只读(摘要确认后仅首次创建配置)。`prepare` 只写 `.release-skill/`。`publish`
|
|
240
|
+
**写入安全:** `setup` 默认只读(摘要确认后仅首次创建配置)。`prepare` 只写 `.release-skill/`。`publish` 是生产写入入口,需要有效批准;内部计划摘要由系统自动绑定和校验。项目 hook 和 gate 在对应命令调用时获得授权,没有操作系统沙箱。
|
|
232
241
|
|
|
233
242
|
**Workspace 源码权威:** 生产配置使用 `project.sourceRepository` 指定 workspace
|
|
234
243
|
源仓库,并用 `project.defaultBranch` 指定其真实远端默认分支。prepare 冻结所有
|
|
@@ -409,7 +418,7 @@ hooks:
|
|
|
409
418
|
envAllowlist: []
|
|
410
419
|
```
|
|
411
420
|
|
|
412
|
-
hook
|
|
421
|
+
hook 在 `prepare` 调用时运行,命令调用本身即授权执行。gate 是发布校准的受控扩展点(见 `references/02-project-config.md`)。
|
|
413
422
|
|
|
414
423
|
## Skills
|
|
415
424
|
|
|
@@ -417,7 +426,7 @@ hook 仅在人工审阅后、以 `--acknowledge-hook-side-effects` 显式授权
|
|
|
417
426
|
- `release-setup`:首次接入的只读发现、人工校准和 create-once 配置创建。
|
|
418
427
|
- `release-assess`:只读发布就绪度报告。
|
|
419
428
|
- `release-prepare`:本地快照和可审阅发布计划。
|
|
420
|
-
- `release-publish
|
|
429
|
+
- `release-publish`:经批准的冻结 GitHub+npm 发布;内部摘要由系统自动校验。
|
|
421
430
|
- `release-reconcile`:基于证据恢复 PARTIAL;冲突时人工介入。
|
|
422
431
|
- `release-verify`:发布后验证;只有 `VERIFIED` 才是 happy end。
|
|
423
432
|
|
|
@@ -430,10 +439,10 @@ hook 仅在人工审阅后、以 `--acknowledge-hook-side-effects` 显式授权
|
|
|
430
439
|
| `npm` | 带 CLI 入口的 npm 包 | `npm install -g release-skill` |
|
|
431
440
|
| `claude-plugin` | `adapters/claude/` 下的自包含闭包 | 自动化 marketplace 检查点 |
|
|
432
441
|
| `codex-plugin` | `adapters/codex/` 下的自包含闭包 | 自动化 marketplace 检查点 |
|
|
433
|
-
| `kimi-plugin` | 自包含闭包(无可脚本化安装接口) |
|
|
434
|
-
| `codebuddy-plugin` | 生成的 `adapters/workbuddy/`,带 `.codebuddy-plugin/plugin.json` |
|
|
442
|
+
| `kimi-plugin` | 自包含闭包(无可脚本化安装接口) | 发布后非阻塞人工任务 |
|
|
443
|
+
| `codebuddy-plugin` | 生成的 `adapters/workbuddy/`,带 `.codebuddy-plugin/plugin.json` | 发布后非阻塞人工任务 |
|
|
435
444
|
|
|
436
|
-
每个适配器闭包都自带 CLI、skills 和 schemas 副本,安装后无需外部依赖即可运行。Claude/Codex 验证是自动化的;Kimi Code 和 CodeBuddy/WorkBuddy
|
|
445
|
+
每个适配器闭包都自带 CLI、skills 和 schemas 副本,安装后无需外部依赖即可运行。Claude/Codex 验证是自动化的;Kimi Code 和 CodeBuddy/WorkBuddy 以 `manualFollowUps` 返回并标记 `verifiedBySystem: false`,其完成情况不阻塞自动发布进入 `VERIFIED`。
|
|
437
446
|
|
|
438
447
|
每个 npm 分发在 `prepare` 时都会针对精确封装的 tarball 静态校验
|
|
439
448
|
`package.json` 声明的具体入口。`publish` 与 `reconcile` 在任何远端动作前对同一
|
|
@@ -448,7 +457,7 @@ hook 仅在人工审阅后、以 `--acknowledge-hook-side-effects` 显式授权
|
|
|
448
457
|
- 不声称已经替项目完成真实生产 canary,不声称已完成真实插件市场验证;
|
|
449
458
|
- `prepare --online` 只观察 bound 前序基线;目标唯一性由 publish 全局预检完成;
|
|
450
459
|
- 不覆盖已有 branch/tag/Release,不 unpublish npm;
|
|
451
|
-
-
|
|
460
|
+
- 不提供 Kimi 或 CodeBuddy/WorkBuddy marketplace 自动安装检查点——这些安装是发布后明确的团队待办,系统不核验其完成结果;
|
|
452
461
|
- 不承诺 Windows 或广泛的跨平台原生写入;
|
|
453
462
|
- 不会隐藏地 commit、push、打 tag、创建 Release 或发布包。
|
|
454
463
|
|