release-skill 0.5.0 → 0.6.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.
Files changed (121) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +31 -0
  7. package/INSTALL.md +2 -2
  8. package/INSTALL.zh-CN.md +2 -2
  9. package/README.md +13 -21
  10. package/README.zh-CN.md +14 -22
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/error-codes.json +1 -1
  14. package/adapters/claude/bin/kernel-protocol.json +1 -1
  15. package/adapters/claude/bin/registry.json +15 -1
  16. package/adapters/claude/bin/release-skill.bundle.mjs +38147 -23284
  17. package/adapters/claude/bin/rules.json +1 -1
  18. package/adapters/claude/schemas/.render-manifest.json +6 -6
  19. package/adapters/claude/schemas/release-plan.schema.json +401 -2
  20. package/adapters/claude/schemas/release-project.schema.json +291 -0
  21. package/adapters/claude/schemas/release-run.schema.json +59 -6
  22. package/adapters/claude/skills/release-config/SKILL.md +140 -0
  23. package/adapters/claude/skills/release-docs/SKILL.md +106 -0
  24. package/adapters/claude/skills/release-help/SKILL.md +39 -0
  25. package/adapters/claude/skills/release-marketplace/SKILL.md +147 -0
  26. package/adapters/claude/skills/release-publish/SKILL.md +25 -6
  27. package/adapters/claude/skills/release-verify/SKILL.md +10 -0
  28. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  29. package/adapters/codex/bin/error-codes.json +1 -1
  30. package/adapters/codex/bin/kernel-protocol.json +1 -1
  31. package/adapters/codex/bin/registry.json +15 -1
  32. package/adapters/codex/bin/release-skill.bundle.mjs +38147 -23284
  33. package/adapters/codex/bin/rules.json +1 -1
  34. package/adapters/codex/schemas/.render-manifest.json +6 -6
  35. package/adapters/codex/schemas/release-plan.schema.json +401 -2
  36. package/adapters/codex/schemas/release-project.schema.json +291 -0
  37. package/adapters/codex/schemas/release-run.schema.json +59 -6
  38. package/adapters/codex/skills/release-config/SKILL.md +147 -0
  39. package/adapters/codex/skills/release-docs/SKILL.md +113 -0
  40. package/adapters/codex/skills/release-help/SKILL.md +39 -0
  41. package/adapters/codex/skills/release-marketplace/SKILL.md +154 -0
  42. package/adapters/codex/skills/release-publish/SKILL.md +25 -6
  43. package/adapters/codex/skills/release-verify/SKILL.md +10 -0
  44. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  45. package/adapters/kimi/bin/error-codes.json +1 -1
  46. package/adapters/kimi/bin/kernel-protocol.json +1 -1
  47. package/adapters/kimi/bin/registry.json +15 -1
  48. package/adapters/kimi/bin/release-skill.bundle.mjs +38147 -23284
  49. package/adapters/kimi/bin/rules.json +1 -1
  50. package/adapters/kimi/schemas/.render-manifest.json +6 -6
  51. package/adapters/kimi/schemas/release-plan.schema.json +401 -2
  52. package/adapters/kimi/schemas/release-project.schema.json +291 -0
  53. package/adapters/kimi/schemas/release-run.schema.json +59 -6
  54. package/adapters/kimi/skills/release-config/SKILL.md +147 -0
  55. package/adapters/kimi/skills/release-docs/SKILL.md +113 -0
  56. package/adapters/kimi/skills/release-help/SKILL.md +39 -0
  57. package/adapters/kimi/skills/release-marketplace/SKILL.md +154 -0
  58. package/adapters/kimi/skills/release-publish/SKILL.md +25 -6
  59. package/adapters/kimi/skills/release-verify/SKILL.md +10 -0
  60. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  61. package/adapters/workbuddy/bin/error-codes.json +1 -1
  62. package/adapters/workbuddy/bin/kernel-protocol.json +1 -1
  63. package/adapters/workbuddy/bin/registry.json +15 -1
  64. package/adapters/workbuddy/bin/release-skill.bundle.mjs +38147 -23284
  65. package/adapters/workbuddy/bin/rules.json +1 -1
  66. package/adapters/workbuddy/schemas/.render-manifest.json +6 -6
  67. package/adapters/workbuddy/schemas/release-plan.schema.json +401 -2
  68. package/adapters/workbuddy/schemas/release-project.schema.json +291 -0
  69. package/adapters/workbuddy/schemas/release-run.schema.json +59 -6
  70. package/adapters/workbuddy/skills/release-config/SKILL.md +140 -0
  71. package/adapters/workbuddy/skills/release-docs/SKILL.md +106 -0
  72. package/adapters/workbuddy/skills/release-help/SKILL.md +39 -0
  73. package/adapters/workbuddy/skills/release-marketplace/SKILL.md +147 -0
  74. package/adapters/workbuddy/skills/release-publish/SKILL.md +25 -6
  75. package/adapters/workbuddy/skills/release-verify/SKILL.md +10 -0
  76. package/bin/error-codes.json +1 -1
  77. package/bin/kernel-protocol.json +1 -1
  78. package/bin/registry.json +15 -1
  79. package/bin/release-skill-cli.mjs +235 -7
  80. package/bin/release-skill.bundle.mjs +38147 -23284
  81. package/bin/rules.json +1 -1
  82. package/package.json +5 -4
  83. package/platform-manifest.json +359 -0
  84. package/references/.render-manifest.json +9 -9
  85. package/references/02-project-config.md +35 -0
  86. package/references/05-evidence-and-errors.md +44 -0
  87. package/references/06-adapter-contract.md +13 -0
  88. package/schemas/.render-manifest.json +6 -6
  89. package/schemas/release-plan.schema.json +401 -2
  90. package/schemas/release-project.schema.json +291 -0
  91. package/schemas/release-run.schema.json +59 -6
  92. package/skills/release-config/SKILL.md +140 -0
  93. package/skills/release-docs/SKILL.md +106 -0
  94. package/skills/release-help/SKILL.md +39 -0
  95. package/skills/release-marketplace/SKILL.md +147 -0
  96. package/skills/release-publish/SKILL.md +25 -6
  97. package/skills/release-verify/SKILL.md +10 -0
  98. package/skills-src/release-config/SKILL.md +140 -0
  99. package/skills-src/release-docs/SKILL.md +106 -0
  100. package/skills-src/release-help/SKILL.md +39 -0
  101. package/skills-src/release-marketplace/SKILL.md +147 -0
  102. package/skills-src/release-publish/SKILL.md +25 -6
  103. package/skills-src/release-verify/SKILL.md +10 -0
  104. package/src/adapters/contract.mjs +5 -0
  105. package/src/adapters/distribute-git.mjs +625 -0
  106. package/src/adapters/plugin-marketplace.mjs +48 -4
  107. package/src/adapters/push-snapshot.mjs +12 -4
  108. package/src/commands/assess.mjs +171 -0
  109. package/src/commands/distribute.mjs +1078 -0
  110. package/src/commands/hooks.mjs +6 -1
  111. package/src/commands/lineage.mjs +616 -0
  112. package/src/commands/prepare.mjs +413 -72
  113. package/src/commands/route.mjs +686 -0
  114. package/src/commands/ship.mjs +45 -1
  115. package/src/commands/verify.mjs +176 -0
  116. package/src/core/baseline-advance.mjs +185 -0
  117. package/src/core/baseline.mjs +11 -1
  118. package/src/core/checkpoints.mjs +25 -0
  119. package/src/core/foundation-inflight.mjs +7 -0
  120. package/src/core/plan.mjs +12 -2
  121. package/src/core/postpublish.mjs +315 -0
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: release-marketplace
3
+ description: "Marketplace-only workflow profile: route confirms marketplace-only diff (plugins.mjs/public-snapshot), update plugins.mjs entry (manual review), regenerate public-snapshot via workspace generator, prepare --workflow marketplace (code-class gates trimmed), then delegate publish to the target workspace's own marketplace release skill"
4
+ ---
5
+
6
+ # release-marketplace
7
+
8
+ ## 触发
9
+
10
+ 用户询问或执行纯 marketplace 变更的发布流程。包含 `plugins.mjs` 入口文件、`public-snapshot/` 制品目录的修改,且无代码、文档或配置变更。
11
+
12
+ ## 当前状态
13
+
14
+ `release-marketplace` 是工作流配置文件 (§4) 定义的独立工作流之一,专门处理仅 marketplace 索引变更的场景。
15
+
16
+ **机械实现**: `prepare --workflow marketplace` 确定性地裁剪代码类门禁(H5),plan
17
+ 记录 `workflowKind: 'marketplace'` 与 `workflowDecision`。**本工作流不执行发布**:
18
+ 发布委托给目标 workspace 的**专属发布技能**(各 marketplace workspace 有独立的
19
+ `publish-marketplace` 流程,如 artifact-skill-set-workspace、glaf4-skill-set-workspace
20
+ 等)。release-skill 的 CLI 没有 `sync` 命令,也没有 `exclusive-release.mjs`——
21
+ 这些接口不存在,不得调用。
22
+
23
+ **边界**: plugin source unmodified(不修改 plugin 源码)。市场索引一致性、snapshot
24
+ byte、platform manifest 是核心 gate,由 workspace 自己的生成器与
25
+ `generate-platform-manifest.mjs --check` 机械保证。
26
+
27
+ ## 职责与边界
28
+
29
+ - **步骤① diff 确认 marketplace-only**: 调用 `release-skill route` command 确认仅有 marketplace 变更(`plugins.mjs` / `public-snapshot/` 归 marketplace 类)
30
+ - **步骤② workspace plugins.mjs 更新**: 手动审查更新入口文件(entry 是唯一 truth source,`plugins.mjs` 属 marketplace 类而非 code 类)
31
+ - **步骤③ 再生成 public-snapshot**: 调用 workspace 自己的快照生成器
32
+ - **步骤④ 一致性验证**: 快照字节 + `generate-platform-manifest.mjs --check`(平台清单漂移检测)
33
+ - **步骤⑤ prepare --workflow marketplace**: 冻结计划,记录 workflow 裁剪决策
34
+ - **步骤⑥ 委托发布**: 调用目标 workspace 的专属 `publish-marketplace` 技能执行发布
35
+
36
+ **授权边界**:
37
+ - Step②需要人工确认(entry 是唯一 truth source)
38
+ - Step③–④自动验证,不允许不一致状态通过
39
+ - Step⑥依赖外部 workspace 的发布技能,不直接控制其执行
40
+
41
+ **阶段通过规则**:
42
+ - Steps①–⑤完成且一致:plan `workflowKind === 'marketplace'` 冻结
43
+ - Step⑥成功:以目标 workspace 的发布技能验收标准为准(通常 `status === 'VERIFIED'`)
44
+
45
+ ## 正向执行路径
46
+
47
+ 1. 运行 `release-skill route --root <path> --json` 获取 diff 分类
48
+ 2. 若推荐 `workflowKind === 'marketplace-only'`,则使用本技能
49
+ 3. 执行步骤②:手动审查并更新 `plugins.mjs`(唯一 truth source)
50
+ 4. 执行步骤③:调用 workspace 自己的生成器再生成 `public-snapshot/`
51
+ 5. 执行步骤④:运行 `generate-platform-manifest.mjs --check` 验证平台清单与快照字节无漂移
52
+ 6. 执行步骤⑤:运行 `release-skill prepare --offline --workflow marketplace --target-version <ver>` 冻结计划
53
+ 7. 执行步骤⑥:调用目标 workspace 的专属发布技能(如 `publish-marketplace`)执行发布
54
+ 8. (Step⑥续) 汇总目标 workspace 流程的最终状态
55
+
56
+ ## 确定性脚本调用
57
+
58
+ ```bash
59
+ # Step 1: Diff classification confirmation (marketplace-only)
60
+ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" route \
61
+ --root <workspace-root> --json
62
+
63
+ # Step 2: Manual review and update plugins.mjs
64
+ # Human-in-the-loop: entry is the sole truth source
65
+ # Edit: <workspace>/plugins.mjs (add/remove/update plugin entries)
66
+
67
+ # Step 3: Regenerate public-snapshot (workspace's own generator)
68
+ cd <workspace-root>
69
+ node <workspace-root>/scripts/regenerate-public-snapshot.mjs
70
+
71
+ # Step 4: Consistency check (snapshot bytes + platform manifest drift)
72
+ node <workspace-root>/scripts/generate-platform-manifest.mjs --check
73
+
74
+ # Step 5: Freeze the marketplace workflow plan
75
+ node "${CLAUDE_PLUGIN_ROOT}/bin/release-skill.mjs" prepare --offline \
76
+ --workflow marketplace --target-version <version> --json
77
+
78
+ # Step 6: Delegate publish to the target workspace's own marketplace release
79
+ # skill (each marketplace workspace ships its own publish-marketplace flow;
80
+ # release-skill does NOT publish marketplace indexes itself)
81
+ ```
82
+
83
+ ## 故障路由
84
+
85
+ | 场景 | 状态 | 处理 |
86
+ |------|------|------|
87
+ | 非纯 marketplace 变更 | full-happy-end | 路由到 `release-skill ship` 完整工作流 |
88
+ | plugins.mjs 语法错误 | MARKETPLACE_INDEX_INVALID | 修正语法后重试 step② |
89
+ | plugins.mjs 重复 entry | MARKETPLACE_DUPLICATE_ENTRY | 删除重复项后重试 step② |
90
+ | plugins.mjs entry 缺少必需字段 | MARKETPLACE_ENTRY_INVALID | 补充 required fields(id/name/version)后重试 step② |
91
+ | snapshot byte 不一致 | SNAPSHOT_BYTE_MISMATCH | 重新执行 step③ 再生成快照 |
92
+ | platform manifest 漂移 | PLATFORM_MANIFEST_DRIFT | 重新生成 platform manifest 后重试 step④ |
93
+ | snapshot ≠ manifest | SNAPSHOT_MANIFEST_CONFLICT | 人工决策:以哪个为准后继续 |
94
+ | workspace 发布技能不可用 | WORKSPACE_SKILL_NOT_FOUND | 检查 workspace 发布流程路径,不绕过其安全门禁 |
95
+
96
+ ## 一致性验证 (Step 4)
97
+
98
+ ```
99
+ ┌──────────────────────────────────────┐
100
+ │ regenerate public-snapshot completed │
101
+ └──────────────┬───────────────────────┘
102
+
103
+ ┌───────┴────────┐
104
+ │ │
105
+ ▼ ▼
106
+ ┌──────────────┐ ┌──────────────────┐
107
+ │ snapshot │ │ platform │
108
+ │ byte hash │ │ manifest digest │
109
+ └──────┬───────┘ └────────┬─────────┘
110
+ │ │
111
+ └────────┬───────────┘
112
+
113
+ ┌───────┴────────┐
114
+ │ │
115
+ ▼ ▼
116
+ ══ CONSISTENT ══ ══ MISMATCH ══
117
+ │ │
118
+ ▼ ▼
119
+ Continue → Step 5 Retry Step 3 or
120
+ human decision
121
+ ```
122
+
123
+ ## 与其他工作流的关系
124
+
125
+ - **docs-only**: 若 marketplace 更新伴随文档变更,使用 `marketplace-docs` 组合推荐
126
+ - **config-only**: 若同时修改 project.yaml,使用 `marketplace-config` 组合推荐
127
+ - **full-happy-end**: 多类型混合变更(code+marketplace)时降级到此路径
128
+
129
+ ## 关联技能
130
+
131
+ - `release-skill route`: 快速入门决策路由(§4.3)
132
+ - `release-prepare`: 冻结计划(`--workflow marketplace`)
133
+ - 各 workspace 的专属发布技能(`publish-marketplace`,如 artifact-skill-set-workspace、
134
+ glaf4-skill-set-workspace、skill-family-hub-workspace 等)
135
+ - `generate-platform-manifest.mjs`: 平台清单漂移检测(--check)
136
+
137
+ ## Workspace Coordination Notes
138
+
139
+ 每个 workspace 管理自己的 marketplace 入口和制品,并通过其专属发布技能发布:
140
+ - `artifact-skill-set-workspace`: `plugins.mjs` 是条目唯一事实源,`publish-marketplace`
141
+ 技能执行发布
142
+ - `glaf4-skill-set-workspace`: 同上,项目专属 `publish-marketplace` 技能
143
+ - `skill-family-hub-workspace`: `plugins.mjs` 只记录已满足公开收录条件的插件
144
+
145
+ 本技能作为协调器,确认 route 分类并冻结 marketplace 工作流计划,但发布动作必须
146
+ 委托给目标 workspace 自己的发布技能执行,release-skill 不直接操作其他 workspace
147
+ 的代码库。
@@ -1,15 +1,11 @@
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
  # release-publish
7
7
 
8
- ## 触发
9
-
10
- 用户明确要求执行已经人工审阅的 GitHub+npm 生产计划。
11
-
12
- ## 成熟度与边界
8
+ ## 生产边界
13
9
 
14
10
  冻结 Git branch/tag、GitHub Release、npm tarball 路径已通过本地生产等价沙箱(协议级 fake),
15
11
  测试没有提供 OS 级网络隔离。
@@ -23,6 +19,29 @@ description: 从已批准的生产计划发布冻结 Git branch/tag、npm tarbal
23
19
  认证失败或摘要漂移时,在全局预检阶段停止并交给人工。禁止覆盖、删除和自动回滚;
24
20
  新建 ref 的 create-only CAS(`--force-with-lease=<ref>:`)只断言目标不存在,不授权覆盖。
25
21
 
22
+ ## 前置条件:工作流选择
23
+
24
+ 在运行 `release-publish` 之前,必须先完成快速入门决策路由(§4.3 Workflow Profile Support):
25
+
26
+ 1. 使用 `release-skill route --root <path> --json` 确定变更类型
27
+ 2. 根据推荐的 `workflowKind` 选择对应路径:
28
+ - `docs-only` → 先执行 `release-docs` 完整流程
29
+ - `config-only` → 先执行 `release-config`,仅在 public surface 变化时进入 publish
30
+ - `marketplace-only` → 先执行 `release-marketplace`,然后由 workspace exclusive skill 接管
31
+ - `full-happy-end` → 直接进入标准完整流程:`prepare → approve → publish → verify`
32
+ - `reconcile` → 先执行 `release-reconcile` 恢复 PARTIAL 状态
33
+ - `help` → 无变更,无需 publish
34
+
35
+ **注意**: `release-publish` 是标准工作流中的第⑦步,必须在以下步骤之后:
36
+ - 步骤⑤: `release-prepare` (或轻量级 prepare)
37
+ - 步骤⑥: `release-approve` (非过期 approval record)
38
+
39
+ 决策表链接:参见 [`release-help`](../release-help/SKILL.md) 的 Routing Suggestions 章节。
40
+
41
+ ## 触发
42
+
43
+ 用户明确要求执行已经人工审阅的 GitHub+npm 生产计划。
44
+
26
45
  ## 授权门
27
46
 
28
47
  1. 展示可读的 `approvalSummary`:版本、仓库/包名、branch/tag、全部 actions 和例外。
@@ -15,6 +15,16 @@ verify 是发布流程的最终验证阶段,是唯一能将状态提升到 `VE
15
15
  它执行远端状态重检、精确 npm 安装烟雾测试和消费者插件安装验证。
16
16
  verify 只接受 `PUBLISHED` 状态的源 run;`VERIFIED` 是终态,不会再次派生运行。
17
17
 
18
+ **注意**: distribute gate (W1) 已经实现并集成在标准 verify 流程中。verify 现在会检查 postPublish 分发状态(git mirror + marketplace index),只有当所有外部动作都完成并通过验证时才达到 VERIFIED。
19
+
20
+ **工作流兼容性**:
21
+ - `docs-only`: consumer-verify preserved (步骤⑧)
22
+ - `config-only`: scene B completes full chain including verify
23
+ - `marketplace-only`: delegates to workspace's exclusive skill for final verification
24
+ - `full-happy-end`: standard complete path with all gates
25
+
26
+ 所有工作流 profile 最终都路由到此 verify 命令作为终态验证门。
27
+
18
28
  ## 职责与边界
19
29
 
20
30
  验证远端所有自动化 action 的实际状态与冻结计划一致。执行精确 `<package>@<version>` npm 安装到隔离目录,验证包名、版本、静态入口闭包,并在配置时验证 bin 路径安全和 CLI 烟雾输出。对 Claude/Codex marketplace distribution 执行全新隔离消费者安装验证。新计划中的 Kimi/CodeBuddy 安装只返回 `manualFollowUps`,明确标记 `verifiedBySystem: false`,不阻塞 `VERIFIED`;缺少该策略字段的旧冻结计划继续走历史 attestation 兼容路径。
@@ -30,6 +30,7 @@ export const ActionStatus = Object.freeze({
30
30
  EXECUTING: 'EXECUTING',
31
31
  EXECUTED: 'EXECUTED',
32
32
  EXECUTE_FAILED: 'EXECUTE_FAILED',
33
+ NO_CHANGE: 'NO_CHANGE',
33
34
  OBSERVED: 'OBSERVED',
34
35
  OBSERVE_MISMATCH: 'OBSERVE_MISMATCH',
35
36
  VERIFIED: 'VERIFIED',
@@ -66,6 +67,10 @@ export const ActionType = Object.freeze({
66
67
 
67
68
  // default branch management
68
69
  SET_DEFAULT_BRANCH: 'set-default-branch',
70
+
71
+ // post-publish distribution (distribute-git adapter)
72
+ DISTRIBUTE_PROBE: 'distribute-probe',
73
+ DISTRIBUTE_MIRROR: 'distribute-mirror',
69
74
  });
70
75
 
71
76
  /**