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