release-skill 0.3.0 → 0.4.1

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.
Files changed (81) hide show
  1. package/.claude-plugin/marketplace.json +6 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codebuddy-plugin/plugin.json +2 -2
  4. package/.codex-plugin/plugin.json +4 -4
  5. package/.kimi-plugin/plugin.json +3 -3
  6. package/CHANGELOG.md +36 -3
  7. package/INSTALL.md +34 -110
  8. package/INSTALL.zh-CN.md +17 -83
  9. package/LICENSE +183 -18
  10. package/NOTICE +4 -2
  11. package/README.md +61 -75
  12. package/README.zh-CN.md +48 -63
  13. package/adapters/claude/.claude-plugin/marketplace.json +6 -2
  14. package/adapters/claude/.claude-plugin/plugin.json +2 -2
  15. package/adapters/claude/bin/release-skill.bundle.mjs +157 -231
  16. package/adapters/claude/schemas/release-plan.schema.json +7 -0
  17. package/adapters/claude/schemas/release-run.schema.json +43 -0
  18. package/adapters/claude/skills/release-help/SKILL.md +5 -5
  19. package/adapters/claude/skills/release-prepare/SKILL.md +6 -15
  20. package/adapters/claude/skills/release-publish/SKILL.md +5 -6
  21. package/adapters/claude/skills/release-reconcile/SKILL.md +2 -2
  22. package/adapters/claude/skills/release-setup/SKILL.md +6 -0
  23. package/adapters/claude/skills/release-verify/SKILL.md +4 -6
  24. package/adapters/codex/.codex-plugin/plugin.json +4 -4
  25. package/adapters/codex/bin/release-skill.bundle.mjs +157 -231
  26. package/adapters/codex/schemas/release-plan.schema.json +7 -0
  27. package/adapters/codex/schemas/release-run.schema.json +43 -0
  28. package/adapters/codex/skills/release-help/SKILL.md +5 -5
  29. package/adapters/codex/skills/release-prepare/SKILL.md +6 -15
  30. package/adapters/codex/skills/release-publish/SKILL.md +5 -6
  31. package/adapters/codex/skills/release-reconcile/SKILL.md +2 -2
  32. package/adapters/codex/skills/release-setup/SKILL.md +6 -0
  33. package/adapters/codex/skills/release-verify/SKILL.md +4 -6
  34. package/adapters/kimi/.kimi-plugin/plugin.json +3 -3
  35. package/adapters/kimi/bin/release-skill.bundle.mjs +157 -231
  36. package/adapters/kimi/schemas/release-plan.schema.json +7 -0
  37. package/adapters/kimi/schemas/release-run.schema.json +43 -0
  38. package/adapters/kimi/skills/release-help/SKILL.md +5 -5
  39. package/adapters/kimi/skills/release-prepare/SKILL.md +6 -15
  40. package/adapters/kimi/skills/release-publish/SKILL.md +5 -6
  41. package/adapters/kimi/skills/release-reconcile/SKILL.md +2 -2
  42. package/adapters/kimi/skills/release-setup/SKILL.md +6 -0
  43. package/adapters/kimi/skills/release-verify/SKILL.md +4 -6
  44. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +2 -2
  45. package/adapters/workbuddy/bin/release-skill.bundle.mjs +157 -231
  46. package/adapters/workbuddy/schemas/release-plan.schema.json +7 -0
  47. package/adapters/workbuddy/schemas/release-run.schema.json +43 -0
  48. package/adapters/workbuddy/skills/release-help/SKILL.md +5 -5
  49. package/adapters/workbuddy/skills/release-prepare/SKILL.md +6 -15
  50. package/adapters/workbuddy/skills/release-publish/SKILL.md +5 -6
  51. package/adapters/workbuddy/skills/release-reconcile/SKILL.md +2 -2
  52. package/adapters/workbuddy/skills/release-setup/SKILL.md +6 -0
  53. package/adapters/workbuddy/skills/release-verify/SKILL.md +4 -6
  54. package/bin/release-skill-cli.mjs +45 -48
  55. package/bin/release-skill.bundle.mjs +157 -231
  56. package/package.json +2 -2
  57. package/references/01-state-machine.md +1 -1
  58. package/references/06-adapter-contract.md +6 -5
  59. package/schemas/release-plan.schema.json +7 -0
  60. package/schemas/release-run.schema.json +43 -0
  61. package/skills/release-help/SKILL.md +5 -5
  62. package/skills/release-prepare/SKILL.md +6 -15
  63. package/skills/release-publish/SKILL.md +5 -6
  64. package/skills/release-reconcile/SKILL.md +2 -2
  65. package/skills/release-setup/SKILL.md +6 -0
  66. package/skills/release-verify/SKILL.md +4 -6
  67. package/skills-src/release-help/SKILL.md +5 -5
  68. package/skills-src/release-prepare/SKILL.md +6 -15
  69. package/skills-src/release-publish/SKILL.md +5 -6
  70. package/skills-src/release-reconcile/SKILL.md +2 -2
  71. package/skills-src/release-setup/SKILL.md +6 -0
  72. package/skills-src/release-verify/SKILL.md +4 -6
  73. package/src/adapters/npm.mjs +31 -0
  74. package/src/commands/approve.mjs +8 -6
  75. package/src/commands/hooks.mjs +4 -8
  76. package/src/commands/prepare.mjs +13 -50
  77. package/src/commands/publish.mjs +0 -8
  78. package/src/commands/reconcile.mjs +3 -37
  79. package/src/commands/ship.mjs +55 -77
  80. package/src/commands/verify.mjs +56 -19
  81. package/src/core/skill-resource-closure.mjs +7 -1
@@ -988,6 +988,13 @@
988
988
  "type": "string",
989
989
  "description": "Overall snapshot digest across all units"
990
990
  },
991
+ "humanConsumersStrategy": {
992
+ "type": "string",
993
+ "enum": [
994
+ "manualFollowUps"
995
+ ],
996
+ "description": "Human consumer strategy marker. 'manualFollowUps': Kimi/CodeBuddy installations are non-blocking post-release manual tasks; verify returns VERIFIED with manualFollowUps list and does not block on attestation. Absent: legacy attestation closed loop (backward compatibility)."
997
+ },
991
998
  "digest": {
992
999
  "type": "string",
993
1000
  "minLength": 1
@@ -432,6 +432,49 @@
432
432
  }
433
433
  }
434
434
  },
435
+ "manualFollowUps": {
436
+ "type": "array",
437
+ "description": "Non-blocking manual follow-up tasks for human consumer platforms (Kimi/CodeBuddy) when plan declares humanConsumersStrategy: 'manualFollowUps'",
438
+ "items": {
439
+ "type": "object",
440
+ "required": [
441
+ "actionId",
442
+ "platform",
443
+ "plugin",
444
+ "verifiedBySystem"
445
+ ],
446
+ "additionalProperties": false,
447
+ "properties": {
448
+ "actionId": {
449
+ "type": "string",
450
+ "minLength": 1
451
+ },
452
+ "platform": {
453
+ "type": "string",
454
+ "enum": [
455
+ "kimi",
456
+ "codebuddy"
457
+ ]
458
+ },
459
+ "plugin": {
460
+ "type": "string"
461
+ },
462
+ "version": {
463
+ "type": "string"
464
+ },
465
+ "unitId": {
466
+ "type": "string"
467
+ },
468
+ "verifiedBySystem": {
469
+ "const": false,
470
+ "description": "Always false — these tasks are not verified by the system"
471
+ },
472
+ "reason": {
473
+ "type": "string"
474
+ }
475
+ }
476
+ }
477
+ },
435
478
  "skillResourceClosureReceipts": {
436
479
  "type": "array",
437
480
  "description": "Per-surface skill resource closure verification receipts from verify phase",
@@ -42,12 +42,12 @@ description: "Discoverable entry point for release-skill: dependency and environ
42
42
  node "$RELEASE_SKILL_ENTRY" help --json
43
43
  node "$RELEASE_SKILL_ENTRY" setup --root <path> --json
44
44
  node "$RELEASE_SKILL_ENTRY" assess --root <path> --offline --json
45
- # 日常发布快速路径:最多两个授权摘要,状态文件可恢复
45
+ # 日常发布快速路径:仅在发布前确认一次可读计划摘要,状态文件可恢复
46
46
  node "$RELEASE_SKILL_ENTRY" ship --root <path> --target-version <version> --json
47
47
  # 开发阶段执行声明 hooks 并生成 prepare 可复用的内容绑定收据
48
- node "$RELEASE_SKILL_ENTRY" hooks validate --root <path> \
49
- --acknowledge-hook-side-effects --json
50
- # Kimi/CodeBuddy 安装完成后记录人工事实,不手改 JSON
48
+ # 命令调用本身即授权执行配置中的 hooks
49
+ node "$RELEASE_SKILL_ENTRY" hooks validate --root <path> --json
50
+ # 仅旧冻结计划兼容:记录历史 Kimi/CodeBuddy 人工证明
51
51
  node "$RELEASE_SKILL_ENTRY" attest --root <path> \
52
52
  --platform <kimi|codebuddy> --plugin <id> --result <passed|failed> --actor <person> --json
53
53
  # 发布文档刷新:默认只读演练
@@ -66,7 +66,7 @@ node "$RELEASE_SKILL_ENTRY" docs refresh --unit <id> \
66
66
  - **只读演练**:`docs refresh --unit <id> --json` 输出逐文件相对路径、locale、新旧摘要、`version`、`locales`、`inputDigest`、`refreshDigest` 和 `nextCommand.argv`;候选无变化时 `status: "clean"`。
67
67
  - **确认写入**:必须同时提供 `--write`、精确 `--confirm-refresh <refreshDigest>` 和 `--ack-local-document-write`,全部目标作为一个事务提交;成功后立即复演必须为 `clean`。
68
68
 
69
- **授权边界**:本地发布文档写入授权只覆盖声明的本地文档目标,不是 hook、Git 提交、push、publish 或安装的授权。写入后必须审阅、提交,再重新 prepare。
69
+ **授权边界**:本地发布文档写入授权只覆盖声明的本地文档目标,不是 Git 提交、push、publish 或安装的授权。hook/gate 由对应命令调用直接授权。写入后必须审阅、提交,再重新 prepare。
70
70
 
71
71
  ## 故障路由
72
72
 
@@ -20,9 +20,7 @@ description: Freeze an immutable release plan with local configuration, document
20
20
 
21
21
  运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。hook 是任意本地进程,不受文件系统/网络隔离,可能产生项目目录外的副作用或远端写入。
22
22
 
23
- **Hook 授权门**: 当项目配置含任何 hook 时,prepare 默认失败关闭并展示将执行的 executable/args/cwd。只有显式传入 `--acknowledge-hook-side-effects`(CLI)或 `hooksAuthorized: true`(API)才能执行。授权表示用户接受 hook 风险,不表示 hook 安全。
24
-
25
- **Gate 授权门**: 当项目含 `snapshot-verify` gate 时,prepare 同样默认失败关闭。逐项审阅后才可传入 `--acknowledge-gate-side-effects`(CLI)或 `verificationGatesAuthorized: true`(API);gate 也没有操作系统或网络沙箱。
23
+ **Hook Gate 执行**: 命令调用本身即授权执行已配置的 hook gate,不再设置额外人工授权环节。
26
24
 
27
25
  **阶段通过规则**: 本阶段的通过只能由 CLI exit code 0 和结构化状态码 `PREPARED` 确认。Agent 无权自行宣布计划冻结成功。
28
26
 
@@ -37,9 +35,8 @@ description: Freeze an immutable release plan with local configuration, document
37
35
  1. 使用插件根相对路径运行 CLI:`CLI="node $RELEASE_SKILL_ENTRY"`
38
36
  2. 配置含 `releaseDocuments` 时,先运行只读演练 `${CLI} docs refresh --unit <id> --json`;`status: "changes"` 时展示逐文件路径/语种/版本/`refreshDigest`,取得"本地发布文档写入"明确授权后才执行 `nextCommand.argv` 写入,审阅并提交刷新结果后再继续;`status: "clean"` 时直接进入 prepare
39
37
  3. 运行 `${CLI} prepare --root <path> --offline --json`
40
- 4. 若遇到 hook/gate 授权门失败,分别展示命令和风险,获取授权后只增加实际需要的 `--acknowledge-hook-side-effects` / `--acknowledge-gate-side-effects`
41
- 5. 检查 exit code 0,读取 JSON 返回的 immutable `planPath=plans/<planDigest>.json`,再从该文件读取 `status`、`units`、`externalActions`
42
- 6. 向用户展示 targetVersion、externalActions、planDigest 和 planPath;后续 approve/publish 只能使用该 immutable planPath,等待确认后再 approve
38
+ 4. 检查 exit code 0,读取 JSON 返回的 immutable `planPath=plans/<planDigest>.json`,再从该文件读取 `status`、`units`、`externalActions`
39
+ 5. 向用户展示可读的 `approvalSummary`(版本、仓库/包、branch/tag、外部动作和例外);`planDigest` 仅作为内部绑定字段,不要求用户复制或确认。后续 approve/publish 只能使用该 immutable planPath,等待确认后再 approve
43
40
 
44
41
  若用户明确要求 GitHub+npm 生产发布,加入 `--production`。该模式还会封存独立
45
42
  Git commit/tree 和 npm tarball,并把路径、SHA/integrity、branch/tag 写入计划。
@@ -70,24 +67,18 @@ node "$RELEASE_SKILL_ENTRY" docs refresh --unit <id> \
70
67
  node "$RELEASE_SKILL_ENTRY" prepare --root <path> --offline --json
71
68
  # 生产 happy end:bound 基线必须 online;远端目标唯一性仍由 publish 全局预检
72
69
  node "$RELEASE_SKILL_ENTRY" prepare --root <path> --online --production --json
73
- # 项目含 hook 时需显式授权:
74
- node "$RELEASE_SKILL_ENTRY" prepare --root <path> --offline --acknowledge-hook-side-effects --json
75
- # 项目含 snapshot gate 时另行显式授权:
76
- node "$RELEASE_SKILL_ENTRY" prepare --root <path> --offline --acknowledge-gate-side-effects --json
77
70
  ```
78
71
 
79
72
  ## 执行顺序
80
73
 
81
74
  1. 校验配置 schema → 2. 版本解析与发布文档新鲜度门(只读,RELEASE_DOCS_STALE)→
82
- 3. Hook 授权门 → 4. 运行 hooks 并复检文档新鲜度 → 5. 捕获 Git baseline →
83
- 6. 逐 unit 观察前序公开基线 → 7. 生成快照/扫描/README → 8. 原子写入 plan
75
+ 3. 运行 hooks 并复检文档新鲜度 → 4. 捕获 Git baseline →
76
+ 5. 逐 unit 观察前序公开基线 → 6. 生成快照/扫描/README → 7. 原子写入 plan
84
77
 
85
78
  ## 故障路由
86
79
 
87
80
  | 错误码 | 处理 |
88
81
  |---|---|
89
- | GATE_FAILED (hook 授权) | 向用户展示 hook 命令和风险,获得授权后加 `--acknowledge-hook-side-effects` 重试 |
90
- | GATE_FAILED (gate 授权) | 向用户展示 snapshot gate 命令和风险,获得授权后加 `--acknowledge-gate-side-effects` 重试 |
91
82
  | GATE_FAILED (bound + offline) | 改用 `--online --production`,不得把 unobserved-offline plan 交给 publish |
92
83
  | GATE_FAILED (前序基线漂移) | 先取得并比较实际远端内容;人工选择 merge/adopt/reject。merge/adopt 都必须把接受内容落回 human-owned 权威源,并把 `previousPublicBaseline` 更新为接受状态的精确 repo/ref/commit 后重新 online production prepare;reject 停止调查,禁止改 `mode: none` 绕过 |
93
84
  | GATE_FAILED (`npm-entry-closure`) | 修复打包内容或入口声明后重新 prepare;不得用 `requiredPublicFiles`/`smokeBin` 缺省绕过 |
@@ -101,4 +92,4 @@ node "$RELEASE_SKILL_ENTRY" prepare --root <path> --offline --acknowledge-gate-s
101
92
 
102
93
  ## 后续引导
103
94
 
104
- 计划冻结后,读取命令返回的 immutable `planPath` 展示给用户,等待确认后再 approve。`release-plan.json` 等 latest alias 只用于浏览,不得作为生产 authority 传递。
95
+ 计划冻结后,读取命令返回的 immutable `planPath` 和 `approvalSummary` 展示给用户,等待确认后再 approve。`planDigest` 由系统自动计算和绑定,不作为人工交互口令。`release-plan.json` 等 latest alias 只用于浏览,不得作为生产 authority 传递。
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: release-publish
3
- description: 从已批准且摘要确认的生产计划发布冻结 Git branch/tag、npm tarball 与 GitHub Release,并执行已配置的 Claude/Codex marketplace 隔离消费者安装检查以达到 PUBLISHED;随后必须路由 release-verify 才可能达到 VERIFIED;遇到冲突或不确定远端状态时失败关闭并要求人工介入
3
+ description: 从已批准的生产计划发布冻结 Git branch/tag、npm tarball 与 GitHub Release,并执行已配置的 Claude/Codex marketplace 隔离消费者安装检查以达到 PUBLISHED;随后必须路由 release-verify 才可能达到 VERIFIED;遇到冲突或不确定远端状态时失败关闭并要求人工介入
4
4
  ---
5
5
 
6
6
  > **Codex 安装入口解析协议**:在调用 CLI 前,Agent 必须从宿主当前已加载技能的元数据中取得本 `SKILL.md` 的实际绝对路径,并将该字面量记为 `SKILL_FILE`。
@@ -32,16 +32,15 @@ description: 从已批准且摘要确认的生产计划发布冻结 Git branch/t
32
32
 
33
33
  ## 授权门
34
34
 
35
- 1. 展示 `planDigest`、版本、仓库/包名、branch/tag 和全部 actions。
36
- 2. 必须存在未过期且绑定同一 digest 的 approval record
37
- 3. 用户必须明确提供 `--confirm-production <planDigest>`;Agent 不得代替用户猜测确认值。
38
- 4. 只有 CLI exit code 0 且结构化状态为 `PUBLISHED` 才算外写阶段通过;随后必须运行 verify,只有 `VERIFIED` 才是完整终态。
35
+ 1. 展示可读的 `approvalSummary`:版本、仓库/包名、branch/tag、全部 actions 和例外。
36
+ 2. 必须存在未过期且由系统绑定同一内部 digest 的 approval record;批准后不再要求用户复制摘要做二次确认。
37
+ 3. 只有 CLI exit code 0 且结构化状态为 `PUBLISHED` 才算外写阶段通过;随后必须运行 verify,只有 `VERIFIED` 才是完整终态。
39
38
 
40
39
  ## 确定性执行
41
40
 
42
41
  ```bash
43
42
  node "$RELEASE_SKILL_ENTRY" publish --root <path> --plan <plan-path> \
44
- --approval <approval-path> --confirm-production <planDigest> --json
43
+ --approval <approval-path> --json
45
44
  ```
46
45
 
47
46
  执行顺序:全局只读预检 → 配置的公开分支(按三种 `branchStrategy` 执行)→ 必要时
@@ -39,7 +39,7 @@ marketplace 隔离消费者 checkpoint,但只恢复到 `PUBLISHED`;最终 np
39
39
  1. 使用插件根相对路径运行 CLI,确认有 `--run` 路径(必需),且源 run 状态为 `PARTIAL`
40
40
  2. 运行 `node "$RELEASE_SKILL_ENTRY" reconcile --root <path> --plan <plan-path> --run <run-path> --json`
41
41
  3. 检查 exit code 和结构化状态:`PUBLISHED`(恢复完成,待 verify)/ `PARTIAL`(需重试)/ `BLOCKED`(需人工决策)
42
- 4. 若 PARTIAL 且需重试,加 `--approval`;生产计划还必须加 `--confirm-production <planDigest>`
42
+ 4. 若 PARTIAL 且需重试,加 `--approval`;批准记录由系统核验与冻结计划的内部摘要绑定,不再要求二次摘要确认
43
43
 
44
44
  ## 确定性脚本调用
45
45
 
@@ -49,7 +49,7 @@ node "$RELEASE_SKILL_ENTRY" reconcile --root <path> --plan <plan-path> --run <ru
49
49
  # verify
50
50
  node "$RELEASE_SKILL_ENTRY" verify --root <path> --plan <plan-path> --run <reconcile-run-path> --json
51
51
  # 重试(需 --approval)
52
- node "$RELEASE_SKILL_ENTRY" reconcile --root <path> --plan <plan-path> --run <run-path> --approval <approval-path> --confirm-production <planDigest> --json
52
+ node "$RELEASE_SKILL_ENTRY" reconcile --root <path> --plan <plan-path> --run <run-path> --approval <approval-path> --json
53
53
  ```
54
54
 
55
55
  ## 幂等跳过逻辑
@@ -98,6 +98,12 @@ node -e 'const fs=require("node:fs");const [c,p,a]=process.argv.slice(1).map(x=>
98
98
  node -e 'require("node:fs").rmSync(process.argv[1],{recursive:true,force:false})' "$SETUP_SESSION"
99
99
  ```
100
100
 
101
+ ## publisher 字段与个人片段泄漏策略
102
+
103
+ setup 生成的 `.release-skill/project.yaml` 中 `publisher` 是**已批准的公开发布身份**:它是人工确认的对外发布署名,属于公开面的一部分,而非需要隐藏的私有信息。
104
+
105
+ 若目标仓库用“个人片段”类泄漏策略扫描仓树,而该策略按片段匹配恰好覆盖到 `publisher` 字段,正确做法不是删除或改写策略,而是由贡献者在**本地、gitignore 的个人片段 overlay** 中为该规则声明位置豁免(如 `approvedPlacements`:限定 `publisher` 所在的确切文件路径与行键前缀)。豁免只放行已批准的放置位置,其余出现照常命中;overlay 不入库,个人片段本身不进 committed 策略。
106
+
101
107
  ## 故障路由
102
108
 
103
109
  - `NEEDS_INPUT`:审阅紧凑摘要;有冲突先修正权威事实并重跑。
@@ -24,7 +24,7 @@ verify 只接受 `PUBLISHED` 状态的源 run;`VERIFIED` 是终态,不会再
24
24
 
25
25
  ## 职责与边界
26
26
 
27
- 验证远端所有 action 的实际状态与冻结计划一致。执行精确 `<package>@<version>` npm 安装到隔离目录,验证包名、版本、静态入口闭包,并在配置时验证 bin 路径安全和 CLI 烟雾输出。对每个声明的 marketplace distribution 执行全新隔离消费者安装验证。
27
+ 验证远端所有自动化 action 的实际状态与冻结计划一致。执行精确 `<package>@<version>` npm 安装到隔离目录,验证包名、版本、静态入口闭包,并在配置时验证 bin 路径安全和 CLI 烟雾输出。对 Claude/Codex marketplace distribution 执行全新隔离消费者安装验证。新计划中的 Kimi/CodeBuddy 安装只返回 `manualFollowUps`,明确标记 `verifiedBySystem: false`,不阻塞 `VERIFIED`;缺少该策略字段的旧冻结计划继续走历史 attestation 兼容路径。
28
28
 
29
29
  **阶段通过规则**: 只有 CLI exit code 0 和结构化状态码 `VERIFIED` 才是完整终态。
30
30
 
@@ -35,7 +35,7 @@ verify 只接受 `PUBLISHED` 状态的源 run;`VERIFIED` 是终态,不会再
35
35
  ## 正向执行路径
36
36
 
37
37
  1. 确认有 `--run` 路径(必需),且源 run 状态为 PUBLISHED
38
- 2. 使用插件根相对路径运行 CLI;若存在 consumer gate npm `smokeBin`,先逐项审阅并增加 `--acknowledge-gate-side-effects`
38
+ 2. 使用插件根相对路径运行 CLI;命令调用本身即授权执行已配置的 verification gate smoke process
39
39
  3. 检查 exit code 和结构化状态:`VERIFIED`(全部通过)/ 失败(具体错误)
40
40
  4. 只有 `VERIFIED` 才是 happy end
41
41
 
@@ -44,8 +44,6 @@ verify 只接受 `PUBLISHED` 状态的源 run;`VERIFIED` 是终态,不会再
44
44
  ```bash
45
45
  # 从插件根运行
46
46
  node "$RELEASE_SKILL_ENTRY" verify --root <path> --plan <plan-path> --run <run-path> --json
47
- # 计划含 consumer gate 或 smokeBin 时:
48
- node "$RELEASE_SKILL_ENTRY" verify --root <path> --plan <plan-path> --run <run-path> --acknowledge-gate-side-effects --json
49
47
  ```
50
48
 
51
49
  ## 验证步骤
@@ -54,7 +52,7 @@ node "$RELEASE_SKILL_ENTRY" verify --root <path> --plan <plan-path> --run <run-p
54
52
  2. 加载源 run,验证 planDigest 匹配和 checkpoint 完整性
55
53
  3. 对每个 plan action 执行 adapter.verify()(远端状态重检)
56
54
  4. 对每个 npm distribution 执行隔离安装烟雾测试
57
- 5. 对每个 marketplace distribution 执行全新隔离消费者安装验证
55
+ 5. Claude/Codex marketplace distribution 执行全新隔离消费者安装验证;收集 Kimi/CodeBuddy 的非阻塞 `manualFollowUps`
58
56
  6. 全部通过 → `VERIFIED`
59
57
 
60
58
  ## 烟雾测试
@@ -76,4 +74,4 @@ node "$RELEASE_SKILL_ENTRY" verify --root <path> --plan <plan-path> --run <run-p
76
74
  | 远端状态不匹配 | POST_PUBLISH_VERIFY_FAILED | 停止 |
77
75
  | npm 安装失败 | POST_PUBLISH_VERIFY_FAILED | 停止 |
78
76
  | CLI 烟雾输出不匹配 | POST_PUBLISH_VERIFY_FAILED | 停止 |
79
- | consumer gate / smokeBin 未授权 | GATE_FAILED | 展示命令和副作用,人工确认后加 `--acknowledge-gate-side-effects` |
77
+ | consumer gate / smokeBin 执行失败 | GATE_FAILED | 检查失败原因,修复后重试 |
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
7
7
  },
8
- "license": "MIT",
8
+ "license": "Apache-2.0",
9
9
  "homepage": "https://github.com/ifoohoo/release-skill#readme",
10
10
  "keywords": [
11
11
  "release",
@@ -21,7 +21,7 @@
21
21
  "displayName": "Release Skill",
22
22
  "shortDescription": "Safe preparation and frozen GitHub/npm publishing",
23
23
  "longDescription": "Prepares byte-faithful public snapshots without rewriting project source files and publishes approved frozen GitHub/npm artifacts. Full happy end verification confirms consumer installation from frozen Git ref.",
24
- "developerName": "ifoohoo",
24
+ "developerName": "广州市风荷科技有限公司",
25
25
  "websiteURL": "https://github.com/ifoohoo/release-skill"
26
26
  }
27
27
  }