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
package/bin/rules.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.rules",
4
- "contractsVersion": "1.4.0",
4
+ "contractsVersion": "1.5.0",
5
5
  "budget": {
6
6
  "firstVersionMax": 20,
7
7
  "absoluteMax": 30,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -35,6 +35,7 @@
35
35
  "adapters/",
36
36
  "references/",
37
37
  "schemas/",
38
+ "platform-manifest.json",
38
39
  "native/",
39
40
  "!native/safe-write/build/",
40
41
  "scripts/build-bundle.mjs",
@@ -52,7 +53,7 @@
52
53
  ],
53
54
  "scripts": {
54
55
  "build": "node --check src/**/*.mjs && node scripts/build-bundle.mjs",
55
- "test": "node --test test/*.test.mjs",
56
+ "test": "node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')",
56
57
  "test:no-dogfood": "node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')",
57
58
  "test:cli-contract": "node --test test/cli-contract.test.mjs",
58
59
  "typecheck": "node --check src/**/*.mjs bin/*.mjs",
@@ -76,8 +77,8 @@
76
77
  "ajv-formats": "3.0.1",
77
78
  "libnpmpublish": "11.1.0",
78
79
  "npm-registry-fetch": "18.0.2",
79
- "skill-family-contracts": "0.4.0",
80
- "skill-family-harness-node": "0.4.0",
80
+ "skill-family-contracts": "0.5.0",
81
+ "skill-family-harness-node": "0.5.0",
81
82
  "yaml": "2.9.0"
82
83
  },
83
84
  "devDependencies": {
@@ -0,0 +1,359 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "platformId": "release-skill",
4
+ "platformName": "release-skill Plugin Platform",
5
+ "version": "0.6.0",
6
+ "logicalRoot": "skills-src/",
7
+ "logicalRootDigest": "6d504094e1bf7d38beb6d886ff48ea442e7563b6061a7145a14c2d71a60292f5",
8
+ "projectionDigest": "2ca5c5d0b71e10622911426d3abf9c0dfae72237ee6001d4eaaada90acb7a0d7",
9
+ "projectionId": "release-skill:platform:0.6.0",
10
+ "manifestRequired": true,
11
+ "projectionSources": {
12
+ "skills-src-root": {
13
+ "type": "logical-source",
14
+ "path": "skills-src/",
15
+ "description": "Unique logical source for all skills. All SKILL.md files and associated resources originate here.",
16
+ "generator": null,
17
+ "artifacts": [
18
+ "skills-src/release-assess/SKILL.md",
19
+ "skills-src/release-config/SKILL.md",
20
+ "skills-src/release-docs/SKILL.md",
21
+ "skills-src/release-help/SKILL.md",
22
+ "skills-src/release-marketplace/SKILL.md",
23
+ "skills-src/release-prepare/SKILL.md",
24
+ "skills-src/release-publish/SKILL.md",
25
+ "skills-src/release-reconcile/SKILL.md",
26
+ "skills-src/release-setup/SKILL.md",
27
+ "skills-src/release-verify/SKILL.md"
28
+ ]
29
+ }
30
+ },
31
+ "projectedArtifacts": [
32
+ {
33
+ "name": "skills-projected",
34
+ "type": "skill-projection",
35
+ "targetPath": "skills",
36
+ "generator": "scripts/sync-skills.mjs",
37
+ "generatorDescription": "Deterministic sync from skills-src/ to skills/ (SKILL.md byte-identical projection).",
38
+ "relationship": "projection",
39
+ "projectionNotes": "skills/ 是 skills-src/ 的逐字节投影,由 sync-skills 产出;修改必须回到 skills-src/。",
40
+ "artifacts": [
41
+ "skills/release-assess/SKILL.md",
42
+ "skills/release-config/SKILL.md",
43
+ "skills/release-docs/SKILL.md",
44
+ "skills/release-help/SKILL.md",
45
+ "skills/release-marketplace/SKILL.md",
46
+ "skills/release-prepare/SKILL.md",
47
+ "skills/release-publish/SKILL.md",
48
+ "skills/release-reconcile/SKILL.md",
49
+ "skills/release-setup/SKILL.md",
50
+ "skills/release-verify/SKILL.md"
51
+ ]
52
+ },
53
+ {
54
+ "name": "adapters-claude-skills",
55
+ "type": "adapter-skill-projection",
56
+ "targetPath": "adapters/claude/skills",
57
+ "generator": "scripts/build-adapters.mjs",
58
+ "generatorDescription": "Claude 平台适配器投影:由 skills-src/ 经 build-adapters 产出。",
59
+ "relationship": "projection",
60
+ "projectionNotes": "adapters/*/skills/ 是各平台适配投影,由 build-adapters 产出;修改必须回到 skills-src/。",
61
+ "artifacts": [
62
+ "adapters/claude/skills/release-assess/SKILL.md",
63
+ "adapters/claude/skills/release-config/SKILL.md",
64
+ "adapters/claude/skills/release-docs/SKILL.md",
65
+ "adapters/claude/skills/release-help/SKILL.md",
66
+ "adapters/claude/skills/release-marketplace/SKILL.md",
67
+ "adapters/claude/skills/release-prepare/SKILL.md",
68
+ "adapters/claude/skills/release-publish/SKILL.md",
69
+ "adapters/claude/skills/release-reconcile/SKILL.md",
70
+ "adapters/claude/skills/release-setup/SKILL.md",
71
+ "adapters/claude/skills/release-verify/SKILL.md"
72
+ ]
73
+ },
74
+ {
75
+ "name": "adapters-codex-skills",
76
+ "type": "adapter-skill-projection",
77
+ "targetPath": "adapters/codex/skills",
78
+ "generator": "scripts/build-adapters.mjs",
79
+ "generatorDescription": "Codex 平台适配器投影:由 skills-src/ 经 build-adapters 产出。",
80
+ "relationship": "projection",
81
+ "projectionNotes": "adapters/*/skills/ 是各平台适配投影,由 build-adapters 产出;修改必须回到 skills-src/。",
82
+ "artifacts": [
83
+ "adapters/codex/skills/release-assess/SKILL.md",
84
+ "adapters/codex/skills/release-config/SKILL.md",
85
+ "adapters/codex/skills/release-docs/SKILL.md",
86
+ "adapters/codex/skills/release-help/SKILL.md",
87
+ "adapters/codex/skills/release-marketplace/SKILL.md",
88
+ "adapters/codex/skills/release-prepare/SKILL.md",
89
+ "adapters/codex/skills/release-publish/SKILL.md",
90
+ "adapters/codex/skills/release-reconcile/SKILL.md",
91
+ "adapters/codex/skills/release-setup/SKILL.md",
92
+ "adapters/codex/skills/release-verify/SKILL.md"
93
+ ]
94
+ },
95
+ {
96
+ "name": "adapters-kimi-skills",
97
+ "type": "adapter-skill-projection",
98
+ "targetPath": "adapters/kimi/skills",
99
+ "generator": "scripts/build-adapters.mjs",
100
+ "generatorDescription": "Kimi 平台适配器投影:由 skills-src/ 经 build-adapters 产出。",
101
+ "relationship": "projection",
102
+ "projectionNotes": "adapters/*/skills/ 是各平台适配投影,由 build-adapters 产出;修改必须回到 skills-src/。",
103
+ "artifacts": [
104
+ "adapters/kimi/skills/release-assess/SKILL.md",
105
+ "adapters/kimi/skills/release-config/SKILL.md",
106
+ "adapters/kimi/skills/release-docs/SKILL.md",
107
+ "adapters/kimi/skills/release-help/SKILL.md",
108
+ "adapters/kimi/skills/release-marketplace/SKILL.md",
109
+ "adapters/kimi/skills/release-prepare/SKILL.md",
110
+ "adapters/kimi/skills/release-publish/SKILL.md",
111
+ "adapters/kimi/skills/release-reconcile/SKILL.md",
112
+ "adapters/kimi/skills/release-setup/SKILL.md",
113
+ "adapters/kimi/skills/release-verify/SKILL.md"
114
+ ]
115
+ },
116
+ {
117
+ "name": "adapters-workbuddy-skills",
118
+ "type": "adapter-skill-projection",
119
+ "targetPath": "adapters/workbuddy/skills",
120
+ "generator": "scripts/build-adapters.mjs",
121
+ "generatorDescription": "Workbuddy 平台适配器投影(build-only):由 skills-src/ 经 build-adapters 产出。",
122
+ "relationship": "projection",
123
+ "projectionNotes": "adapters/*/skills/ 是各平台适配投影,由 build-adapters 产出;修改必须回到 skills-src/。",
124
+ "artifacts": [
125
+ "adapters/workbuddy/skills/release-assess/SKILL.md",
126
+ "adapters/workbuddy/skills/release-config/SKILL.md",
127
+ "adapters/workbuddy/skills/release-docs/SKILL.md",
128
+ "adapters/workbuddy/skills/release-help/SKILL.md",
129
+ "adapters/workbuddy/skills/release-marketplace/SKILL.md",
130
+ "adapters/workbuddy/skills/release-prepare/SKILL.md",
131
+ "adapters/workbuddy/skills/release-publish/SKILL.md",
132
+ "adapters/workbuddy/skills/release-reconcile/SKILL.md",
133
+ "adapters/workbuddy/skills/release-setup/SKILL.md",
134
+ "adapters/workbuddy/skills/release-verify/SKILL.md"
135
+ ]
136
+ }
137
+ ],
138
+ "logicalMappings": [
139
+ {
140
+ "logicalName": "release-assess",
141
+ "path": "adapters/claude/skills/release-assess/SKILL.md"
142
+ },
143
+ {
144
+ "logicalName": "release-assess",
145
+ "path": "adapters/codex/skills/release-assess/SKILL.md"
146
+ },
147
+ {
148
+ "logicalName": "release-assess",
149
+ "path": "adapters/kimi/skills/release-assess/SKILL.md"
150
+ },
151
+ {
152
+ "logicalName": "release-assess",
153
+ "path": "adapters/workbuddy/skills/release-assess/SKILL.md"
154
+ },
155
+ {
156
+ "logicalName": "release-assess",
157
+ "path": "skills/release-assess/SKILL.md"
158
+ },
159
+ {
160
+ "logicalName": "release-config",
161
+ "path": "adapters/claude/skills/release-config/SKILL.md"
162
+ },
163
+ {
164
+ "logicalName": "release-config",
165
+ "path": "adapters/codex/skills/release-config/SKILL.md"
166
+ },
167
+ {
168
+ "logicalName": "release-config",
169
+ "path": "adapters/kimi/skills/release-config/SKILL.md"
170
+ },
171
+ {
172
+ "logicalName": "release-config",
173
+ "path": "adapters/workbuddy/skills/release-config/SKILL.md"
174
+ },
175
+ {
176
+ "logicalName": "release-config",
177
+ "path": "skills/release-config/SKILL.md"
178
+ },
179
+ {
180
+ "logicalName": "release-docs",
181
+ "path": "adapters/claude/skills/release-docs/SKILL.md"
182
+ },
183
+ {
184
+ "logicalName": "release-docs",
185
+ "path": "adapters/codex/skills/release-docs/SKILL.md"
186
+ },
187
+ {
188
+ "logicalName": "release-docs",
189
+ "path": "adapters/kimi/skills/release-docs/SKILL.md"
190
+ },
191
+ {
192
+ "logicalName": "release-docs",
193
+ "path": "adapters/workbuddy/skills/release-docs/SKILL.md"
194
+ },
195
+ {
196
+ "logicalName": "release-docs",
197
+ "path": "skills/release-docs/SKILL.md"
198
+ },
199
+ {
200
+ "logicalName": "release-help",
201
+ "path": "adapters/claude/skills/release-help/SKILL.md"
202
+ },
203
+ {
204
+ "logicalName": "release-help",
205
+ "path": "adapters/codex/skills/release-help/SKILL.md"
206
+ },
207
+ {
208
+ "logicalName": "release-help",
209
+ "path": "adapters/kimi/skills/release-help/SKILL.md"
210
+ },
211
+ {
212
+ "logicalName": "release-help",
213
+ "path": "adapters/workbuddy/skills/release-help/SKILL.md"
214
+ },
215
+ {
216
+ "logicalName": "release-help",
217
+ "path": "skills/release-help/SKILL.md"
218
+ },
219
+ {
220
+ "logicalName": "release-marketplace",
221
+ "path": "adapters/claude/skills/release-marketplace/SKILL.md"
222
+ },
223
+ {
224
+ "logicalName": "release-marketplace",
225
+ "path": "adapters/codex/skills/release-marketplace/SKILL.md"
226
+ },
227
+ {
228
+ "logicalName": "release-marketplace",
229
+ "path": "adapters/kimi/skills/release-marketplace/SKILL.md"
230
+ },
231
+ {
232
+ "logicalName": "release-marketplace",
233
+ "path": "adapters/workbuddy/skills/release-marketplace/SKILL.md"
234
+ },
235
+ {
236
+ "logicalName": "release-marketplace",
237
+ "path": "skills/release-marketplace/SKILL.md"
238
+ },
239
+ {
240
+ "logicalName": "release-prepare",
241
+ "path": "adapters/claude/skills/release-prepare/SKILL.md"
242
+ },
243
+ {
244
+ "logicalName": "release-prepare",
245
+ "path": "adapters/codex/skills/release-prepare/SKILL.md"
246
+ },
247
+ {
248
+ "logicalName": "release-prepare",
249
+ "path": "adapters/kimi/skills/release-prepare/SKILL.md"
250
+ },
251
+ {
252
+ "logicalName": "release-prepare",
253
+ "path": "adapters/workbuddy/skills/release-prepare/SKILL.md"
254
+ },
255
+ {
256
+ "logicalName": "release-prepare",
257
+ "path": "skills/release-prepare/SKILL.md"
258
+ },
259
+ {
260
+ "logicalName": "release-publish",
261
+ "path": "adapters/claude/skills/release-publish/SKILL.md"
262
+ },
263
+ {
264
+ "logicalName": "release-publish",
265
+ "path": "adapters/codex/skills/release-publish/SKILL.md"
266
+ },
267
+ {
268
+ "logicalName": "release-publish",
269
+ "path": "adapters/kimi/skills/release-publish/SKILL.md"
270
+ },
271
+ {
272
+ "logicalName": "release-publish",
273
+ "path": "adapters/workbuddy/skills/release-publish/SKILL.md"
274
+ },
275
+ {
276
+ "logicalName": "release-publish",
277
+ "path": "skills/release-publish/SKILL.md"
278
+ },
279
+ {
280
+ "logicalName": "release-reconcile",
281
+ "path": "adapters/claude/skills/release-reconcile/SKILL.md"
282
+ },
283
+ {
284
+ "logicalName": "release-reconcile",
285
+ "path": "adapters/codex/skills/release-reconcile/SKILL.md"
286
+ },
287
+ {
288
+ "logicalName": "release-reconcile",
289
+ "path": "adapters/kimi/skills/release-reconcile/SKILL.md"
290
+ },
291
+ {
292
+ "logicalName": "release-reconcile",
293
+ "path": "adapters/workbuddy/skills/release-reconcile/SKILL.md"
294
+ },
295
+ {
296
+ "logicalName": "release-reconcile",
297
+ "path": "skills/release-reconcile/SKILL.md"
298
+ },
299
+ {
300
+ "logicalName": "release-setup",
301
+ "path": "adapters/claude/skills/release-setup/SKILL.md"
302
+ },
303
+ {
304
+ "logicalName": "release-setup",
305
+ "path": "adapters/codex/skills/release-setup/SKILL.md"
306
+ },
307
+ {
308
+ "logicalName": "release-setup",
309
+ "path": "adapters/kimi/skills/release-setup/SKILL.md"
310
+ },
311
+ {
312
+ "logicalName": "release-setup",
313
+ "path": "adapters/workbuddy/skills/release-setup/SKILL.md"
314
+ },
315
+ {
316
+ "logicalName": "release-setup",
317
+ "path": "skills/release-setup/SKILL.md"
318
+ },
319
+ {
320
+ "logicalName": "release-verify",
321
+ "path": "adapters/claude/skills/release-verify/SKILL.md"
322
+ },
323
+ {
324
+ "logicalName": "release-verify",
325
+ "path": "adapters/codex/skills/release-verify/SKILL.md"
326
+ },
327
+ {
328
+ "logicalName": "release-verify",
329
+ "path": "adapters/kimi/skills/release-verify/SKILL.md"
330
+ },
331
+ {
332
+ "logicalName": "release-verify",
333
+ "path": "adapters/workbuddy/skills/release-verify/SKILL.md"
334
+ },
335
+ {
336
+ "logicalName": "release-verify",
337
+ "path": "skills/release-verify/SKILL.md"
338
+ }
339
+ ],
340
+ "governanceNotes": {
341
+ "duplicatePrevention": "This platform-manifest.json eliminates DUPLICATE_LOGICAL_SKILL_ID audit blocking by providing an authoritative claim of projection vs original. Each projected SKILL.md is listed in logicalMappings and is therefore excluded from the family_source logical-skill scan; only skills-src/ is scanned as logical source.",
342
+ "auditCompliance": "The manifest declares skills-src/ as the unique logical root. All other skill locations (skills/, adapters/*/skills/) are projected artifacts derived via documented generators.",
343
+ "versionOwnership": "本文件 version 与 package.json 版本字段确定性对齐(生成时读取)。0.6.0 特性(route/lineage/workflow profiles/三新技能)当前在 version 0.5.1 下开发;版本边界归属待用户裁决后统一,不得擅自 bump。",
344
+ "projectionInvariants": [
345
+ "Skills defined in skills-src/ cannot be manually modified; modifications must occur in skills-src/ and propagate via generators",
346
+ "Generator scripts are deterministic; --check mode verifies no drift between source and projection",
347
+ "Adapter projections include platform-specific metadata but preserve core skill semantics"
348
+ ]
349
+ },
350
+ "managedBy": {
351
+ "generator": "scripts/generate-platform-manifest.mjs",
352
+ "entry": "node scripts/generate-platform-manifest.mjs [--check]",
353
+ "note": "受管生成物:本文件由生成器从当前工作树字节(skills-src/ 逻辑源与 skills/、adapters/*/skills/ 投影位置的实际文件)确定性产出。skills-src/ 或任一投影位置新增/删除/改名技能后,必须重跑生成器(写模式)或 --check 验证,不得手工编辑。"
354
+ },
355
+ "status": "active",
356
+ "specLifecycle": "production",
357
+ "familyId": "release-skill",
358
+ "owner": "广州市风荷科技有限公司"
359
+ }
@@ -1,17 +1,17 @@
1
1
  {
2
- "source": "standards",
2
+ "source": "references",
3
3
  "files": {
4
4
  "00-target-state.md": {
5
5
  "digest": "d66f8c33b2df2bbcb235ce123f786c18c19b3a797197495793d9af566618099d",
6
6
  "bytes": 6335
7
7
  },
8
8
  "01-state-machine.md": {
9
- "digest": "f09a91b69cd7ba27bf5fe5d57deafb58aeb2edc3f69637020f573b06e190a0dd",
10
- "bytes": 8840
9
+ "digest": "4698e3763f76774798e269ae163fcf87ba8ca358a9638c5bff693f5921455f9f",
10
+ "bytes": 9114
11
11
  },
12
12
  "02-project-config.md": {
13
- "digest": "0cff13ebb270f3515290e0ce60b91303143777d1a4948db28cf2c69612ceff8e",
14
- "bytes": 19029
13
+ "digest": "f866490d5897c2baf38fd3a6770964c052bea4418f034b75965ecfe49c2f4387",
14
+ "bytes": 21212
15
15
  },
16
16
  "03-readme-quality.md": {
17
17
  "digest": "d74e41052592443ebbd450d0ace5f9b9b19c7a94db50f952b17c1c5a4c5dc230",
@@ -22,12 +22,12 @@
22
22
  "bytes": 4682
23
23
  },
24
24
  "05-evidence-and-errors.md": {
25
- "digest": "ebcb4940ff2a25ce6945c3b11cfcafe751f4a1f515276b7e021717ea5844eebf",
26
- "bytes": 9688
25
+ "digest": "3df7644a6db614ee5f67689834f97227752834cf6c27762dee66650675c34168",
26
+ "bytes": 11592
27
27
  },
28
28
  "06-adapter-contract.md": {
29
- "digest": "39f0271bc06eae38dade518ece8f7e16a18f53099a433e3ae07e9d20ff7a142e",
30
- "bytes": 8716
29
+ "digest": "4b1ec9ba843345df47c1d133a8bf1aa644bf12a4ecf760cb1d566a43f1e9a9d2",
30
+ "bytes": 17282
31
31
  }
32
32
  }
33
33
  }
@@ -89,6 +89,32 @@ hooks: # 可选,命令 hooks
89
89
  typecheck: <hook>
90
90
  lint: <hook>
91
91
 
92
+ postPublish: # 可选;发布后分发配置(W2 closure)
93
+ distribute: # 分发行动数组
94
+ - actionType: <string> # "distribute-mirror" | "distribute-marketplace-index"
95
+ adapter: <string> # "distribute-git" | "distribute-marketplace"
96
+ kind: <string> # "payload-mirror" | "marketplace-index-form"
97
+ targetId: <string> # 目标标识
98
+ remoteUrl: <string> # file:// 或 https://;禁止 ssh
99
+ branch: <string> # 分支名,不得以 '-' 开头
100
+ tag: <string> # tag 模板,用于版本验证
101
+ commitIdentity: # 冻结提交身份
102
+ name: <string> # 禁止以 '-' 开头
103
+ email: <string> # RFC 5322 valid
104
+ payloadDir: <string> # 相对路径
105
+ dryRun?: boolean # 可选;只本地执行
106
+ materialize?: { # 可选;分发前钩子
107
+ command: <string> # 可执行文件
108
+ args: [<string>] # 参数数组,禁止 shell 字符串
109
+ outputMarker?: <string> # 输出标记,用于验证
110
+ requireReport: {} # 前置报告要求
111
+ urlDependsOn: [<string>]> # 依赖动作完成
112
+ onConflict?: <string> # "FAIL" (默认) | "RETRY"
113
+ retryPolicy?: { # 可选;重试策略
114
+ maxAttempts: number
115
+ backoffMs: number
116
+ }
117
+
92
118
  policy: # 可选,安全策略
93
119
  forbiddenPaths: [<string>]
94
120
  forbiddenContentPatterns: [<string>]
@@ -114,6 +140,15 @@ policy: # 可选,安全策略
114
140
  `commit`。生产 prepare 必须使用 `--online --production`,逐 unit 观察
115
141
  ref→commit mapping;offline production 不得冻结未观察的 bound 基线。
116
142
 
143
+ 发布到达 `VERIFIED` 后,`verify` 会把每个 `mode: bound` unit 的
144
+ `previousPublicBaseline` 自动推进到本次已发布并验证通过的提交(commit、tree、
145
+ manifestDigest),数值一律取自冻结计划里该 unit 的 `push-snapshot` 绑定,绝不从
146
+ 工作区状态重新计算,从而保证推进值与公开仓库一致。该推进只写本地 `project.yaml`,
147
+ 不产生任何远端写入;写回后会重新走一遍配置校验,校验失败则原样还原。若写回前该
148
+ 文件在工作区中是干净的,`verify` 会用单独一次提交只包含该文件的改动;否则只落盘、
149
+ 留给人工提交,绝不把在途改动卷进自动提交。推进失败不会降级 `VERIFIED`,只在证据
150
+ 中记录并提示人工处理。
151
+
117
152
  本地 human-owned 文件是下一轮发布内容的权威源;前序公开基线是冲突检测输入;
118
153
  冻结 snapshot 是本轮审批和发布的唯一字节来源。默认 Git observer 只调用
119
154
  `git ls-remote` 取得 ref→commit 映射,因此 commit 不一致时可提供 mapping diff,
@@ -33,6 +33,14 @@
33
33
  | `CONTENT_MISMATCH` | 远端默认分支缺少冻结源码内容 | README、版本源、公开映射输入的内容或 mode 不一致 | 人工 merge/adopt/reject;接受的内容进入默认分支后重试 publish |
34
34
  | `DIRTY_SOURCE_INPUT` | 源码输入闭包存在未提交变化 | `publicFiles.from` 或 `version.source` 有 staged、unstaged、untracked 变化 | 提交或撤销这些具体输入的变化后重新 prepare;无关 dirty 不受影响 |
35
35
 
36
+ **动作状态码** (adapter execute/observe/verify):
37
+
38
+ - `NO_CHANGE`: 幂等时 payload 无差异,不创建 commit/tag/push。
39
+ - `PENDING`: 预检查阶段等待前置动作完成。
40
+ - `DISTRIBUTING`: 分发执行中。
41
+ - `DISTRIBUTED`: 分发已完成检查点(commit+tag+push)。
42
+ - `VERIFIED`: 分发的 verify 阶段通过最终验证。
43
+
36
44
  ---
37
45
 
38
46
  ## 2. JSON/JSONL 事件格式
@@ -169,6 +177,42 @@
169
177
  - 事件和摘要中通过相对路径引用命令记录文件。
170
178
  - 存储的输出内容经过第 4 节脱敏规则处理。
171
179
 
180
+ ### 5.3 分发证据
181
+
182
+ postPublish 阶段的 distribute action 产生独立的证据目录:
183
+
184
+ ```text
185
+ .runs/<runId>/
186
+ └── distribute/
187
+ ├── <actionId>-preflight.json # preflight 验证结果
188
+ ├── <actionId>-execute.json # execute 观察结果
189
+ ├── <actionId>-observe.json # observe 状态确认
190
+ └── <actionId>-verify.json # verify 最终验证
191
+ ```
192
+
193
+ 每个 JSON 文件包含:
194
+
195
+ | 字段 | 类型 | 说明 |
196
+ |---|---|---|
197
+ | `actionId` | 字符串 | 动作唯一标识 |
198
+ | `actionType` | 字符串 | "distribute-mirror" / "distribute-marketplace-index" |
199
+ | `status` | 字符串 | NO_CHANGE / PENDING / DISTRIBUTING / DISTRIBUTED / VERIFIED / EXECUTE_FAILED |
200
+ | `observation` | 对象 | 阶段特定观察数据(pushedCommit, tagOid, payloadFileCount 等) |
201
+ | `details.code` | 字符串 | 失败时包含错误码(REMOTE_CONFLICT, AUTH_MISSING 等) |
202
+ | `timestamp` | 字符串 | ISO 8601 UTC 时间戳 |
203
+
204
+ checkpoint 状态语义:
205
+
206
+ - `NO_CHANGE`: payload tree 与当前分支 tip 相同,不创建任何 git ref。
207
+ - `DISTRIBUTED`: commit+tag+push 已成功,branchTip === pushedCommit && tagOid === pushedCommit。
208
+ - `VERIFIED`: observe + content diff 验证全部通过。
209
+
210
+ 计划变更后的恢复流程:
211
+
212
+ - PARTIAL 状态下 reconcile 读取已有的 distribute/*.json 文件重建状态。
213
+ - 对于已成功的 checkpoint (DISTRIBUTED),跳过该步骤;仅重试未完成或未达标的检查点。
214
+ - remote state 冲突(如 tag move)必须人工决策,不得自动修复。
215
+
172
216
  ---
173
217
 
174
218
  ## 6. 跨标准引用
@@ -90,6 +90,19 @@
90
90
 
91
91
  工具:`git` CLI 和 `gh` CLI,使用 `execFile` 参数数组调用。
92
92
 
93
+ ### 2.4.1 Distribute Adapter(postPublish)
94
+
95
+ | 操作 | 方法 | 说明 | 幂等规则 |
96
+ |---|---|---|---|
97
+ | 预检远端分支 | preflight | 检查 branch 存在性、协议合法性 | 禁止 SSH URL,必须 file:// 或 https:// |
98
+ | 克隆→wipe→write→commit | execute | 写入 payload,创建 bot identity 提交 + tag | NO_CHANGE 若 tree 相同;REMOTE_CONFLICT 若 tag move |
99
+ | 观察远端 refs | observe | 检查 branch tip 与 tag OID 一致性 | CONSISTENT / MISSING / CONFLICTING |
100
+ | 验证 content diff | verify | 二次 fetch 确认 payload 字节一致 | VERIFIED / FAILED |
101
+
102
+ **never-force rule**: distribute adapter **永远不使用 force push**。即使是在追加模式,也仅允许普通快进;tag 移动视为冲突,要求人工决策。
103
+
104
+ 工具:`git` CLI via `distribute-git.mjs` adapter,参数数组调用。
105
+
93
106
  ### 2.2 npm Adapter
94
107
 
95
108
  | 操作 | 方法 | 说明 |
@@ -22,16 +22,16 @@
22
22
  "bytes": 2390
23
23
  },
24
24
  "release-plan.schema.json": {
25
- "digest": "01c96659223918b5ce0e2d0d01d1ce5095baeb056de401babb8928add4d2a221",
26
- "bytes": 35256
25
+ "digest": "5e988a5301b89b3d3260154ffae12669af0e4d6ec7f9db8c44df21037ea0eaf6",
26
+ "bytes": 46948
27
27
  },
28
28
  "release-project.schema.json": {
29
- "digest": "7ac18070ac41327a330ca35e32f466e3f2a8eb2b7df3a5755568e00f991ffdc1",
30
- "bytes": 32497
29
+ "digest": "546e05845cd83a3b1db0a54036f9555081420337e9df961d783d2d2630800ef7",
30
+ "bytes": 41898
31
31
  },
32
32
  "release-run.schema.json": {
33
- "digest": "bf3c8fb4ca2fc078272a45a6ee6bf663fd2420a722b2f995dbaabf2635e2179e",
34
- "bytes": 14824
33
+ "digest": "6dd239c59f7045df11d13d6ba2027610d3c55c27a6af5bc87676b0eaad9600fd",
34
+ "bytes": 17663
35
35
  }
36
36
  }
37
37
  }