release-skill 0.5.1 → 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 (94) 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 +13 -0
  7. package/INSTALL.md +2 -2
  8. package/INSTALL.zh-CN.md +2 -2
  9. package/README.md +14 -14
  10. package/README.zh-CN.md +15 -15
  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/release-skill.bundle.mjs +3226 -565
  14. package/adapters/claude/schemas/.render-manifest.json +6 -6
  15. package/adapters/claude/schemas/release-plan.schema.json +401 -2
  16. package/adapters/claude/schemas/release-project.schema.json +291 -0
  17. package/adapters/claude/schemas/release-run.schema.json +59 -6
  18. package/adapters/claude/skills/release-config/SKILL.md +140 -0
  19. package/adapters/claude/skills/release-docs/SKILL.md +106 -0
  20. package/adapters/claude/skills/release-help/SKILL.md +39 -0
  21. package/adapters/claude/skills/release-marketplace/SKILL.md +147 -0
  22. package/adapters/claude/skills/release-publish/SKILL.md +25 -6
  23. package/adapters/claude/skills/release-verify/SKILL.md +10 -0
  24. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  25. package/adapters/codex/bin/release-skill.bundle.mjs +3226 -565
  26. package/adapters/codex/schemas/.render-manifest.json +6 -6
  27. package/adapters/codex/schemas/release-plan.schema.json +401 -2
  28. package/adapters/codex/schemas/release-project.schema.json +291 -0
  29. package/adapters/codex/schemas/release-run.schema.json +59 -6
  30. package/adapters/codex/skills/release-config/SKILL.md +147 -0
  31. package/adapters/codex/skills/release-docs/SKILL.md +113 -0
  32. package/adapters/codex/skills/release-help/SKILL.md +39 -0
  33. package/adapters/codex/skills/release-marketplace/SKILL.md +154 -0
  34. package/adapters/codex/skills/release-publish/SKILL.md +25 -6
  35. package/adapters/codex/skills/release-verify/SKILL.md +10 -0
  36. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  37. package/adapters/kimi/bin/release-skill.bundle.mjs +3226 -565
  38. package/adapters/kimi/schemas/.render-manifest.json +6 -6
  39. package/adapters/kimi/schemas/release-plan.schema.json +401 -2
  40. package/adapters/kimi/schemas/release-project.schema.json +291 -0
  41. package/adapters/kimi/schemas/release-run.schema.json +59 -6
  42. package/adapters/kimi/skills/release-config/SKILL.md +147 -0
  43. package/adapters/kimi/skills/release-docs/SKILL.md +113 -0
  44. package/adapters/kimi/skills/release-help/SKILL.md +39 -0
  45. package/adapters/kimi/skills/release-marketplace/SKILL.md +154 -0
  46. package/adapters/kimi/skills/release-publish/SKILL.md +25 -6
  47. package/adapters/kimi/skills/release-verify/SKILL.md +10 -0
  48. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  49. package/adapters/workbuddy/bin/release-skill.bundle.mjs +3226 -565
  50. package/adapters/workbuddy/schemas/.render-manifest.json +6 -6
  51. package/adapters/workbuddy/schemas/release-plan.schema.json +401 -2
  52. package/adapters/workbuddy/schemas/release-project.schema.json +291 -0
  53. package/adapters/workbuddy/schemas/release-run.schema.json +59 -6
  54. package/adapters/workbuddy/skills/release-config/SKILL.md +140 -0
  55. package/adapters/workbuddy/skills/release-docs/SKILL.md +106 -0
  56. package/adapters/workbuddy/skills/release-help/SKILL.md +39 -0
  57. package/adapters/workbuddy/skills/release-marketplace/SKILL.md +147 -0
  58. package/adapters/workbuddy/skills/release-publish/SKILL.md +25 -6
  59. package/adapters/workbuddy/skills/release-verify/SKILL.md +10 -0
  60. package/bin/release-skill-cli.mjs +235 -7
  61. package/bin/release-skill.bundle.mjs +3226 -565
  62. package/package.json +3 -2
  63. package/platform-manifest.json +359 -0
  64. package/references/.render-manifest.json +9 -9
  65. package/references/02-project-config.md +35 -0
  66. package/references/05-evidence-and-errors.md +44 -0
  67. package/references/06-adapter-contract.md +13 -0
  68. package/schemas/.render-manifest.json +6 -6
  69. package/schemas/release-plan.schema.json +401 -2
  70. package/schemas/release-project.schema.json +291 -0
  71. package/schemas/release-run.schema.json +59 -6
  72. package/skills/release-config/SKILL.md +140 -0
  73. package/skills/release-docs/SKILL.md +106 -0
  74. package/skills/release-help/SKILL.md +39 -0
  75. package/skills/release-marketplace/SKILL.md +147 -0
  76. package/skills/release-publish/SKILL.md +25 -6
  77. package/skills/release-verify/SKILL.md +10 -0
  78. package/skills-src/release-config/SKILL.md +140 -0
  79. package/skills-src/release-docs/SKILL.md +106 -0
  80. package/skills-src/release-help/SKILL.md +39 -0
  81. package/skills-src/release-marketplace/SKILL.md +147 -0
  82. package/skills-src/release-publish/SKILL.md +25 -6
  83. package/skills-src/release-verify/SKILL.md +10 -0
  84. package/src/adapters/contract.mjs +5 -0
  85. package/src/adapters/distribute-git.mjs +625 -0
  86. package/src/commands/distribute.mjs +1078 -0
  87. package/src/commands/lineage.mjs +616 -0
  88. package/src/commands/prepare.mjs +335 -76
  89. package/src/commands/route.mjs +686 -0
  90. package/src/commands/ship.mjs +45 -1
  91. package/src/commands/verify.mjs +176 -0
  92. package/src/core/baseline-advance.mjs +185 -0
  93. package/src/core/checkpoints.mjs +25 -0
  94. package/src/core/postpublish.mjs +315 -0
@@ -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
  }
@@ -919,7 +919,6 @@
919
919
  },
920
920
  "externalActions": {
921
921
  "type": "array",
922
- "minItems": 1,
923
922
  "items": {
924
923
  "type": "object",
925
924
  "required": [
@@ -1000,6 +999,73 @@
1000
999
  ],
1001
1000
  "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)."
1002
1001
  },
1002
+ "workflowKind": {
1003
+ "type": "string",
1004
+ "enum": [
1005
+ "full",
1006
+ "docs",
1007
+ "config",
1008
+ "marketplace"
1009
+ ],
1010
+ "description": "Workflow profile (H5). 'full' runs the complete gate set; 'docs'/'config'/'marketplace' deterministically trim code-class gates (declared hooks, snapshot-verify gates, source-authority closure, skill-resource-closure) and record the trim in workflowDecision. Binding-layer field: included in the plan digest."
1011
+ },
1012
+ "workflowDecision": {
1013
+ "type": "object",
1014
+ "description": "Workflow trim decision bound into the plan digest. Present when workflowKind != 'full'. For config workflows it also reports whether the public bytes are unchanged (no publish path) or changed/indeterminable (publish needed, fail-safe).",
1015
+ "required": [
1016
+ "workflowKind",
1017
+ "decision",
1018
+ "publishPath",
1019
+ "trimmedGates"
1020
+ ],
1021
+ "additionalProperties": false,
1022
+ "properties": {
1023
+ "workflowKind": {
1024
+ "type": "string",
1025
+ "enum": [
1026
+ "docs",
1027
+ "config",
1028
+ "marketplace"
1029
+ ]
1030
+ },
1031
+ "decision": {
1032
+ "type": "string",
1033
+ "enum": [
1034
+ "code-gates-trimmed",
1035
+ "public-bytes-unchanged",
1036
+ "public-bytes-changed",
1037
+ "indeterminable"
1038
+ ]
1039
+ },
1040
+ "publishPath": {
1041
+ "type": "string",
1042
+ "enum": [
1043
+ "publish-needed",
1044
+ "no-publish-needed"
1045
+ ]
1046
+ },
1047
+ "trimmedGates": {
1048
+ "type": "array",
1049
+ "items": {
1050
+ "type": "string",
1051
+ "enum": [
1052
+ "declared-hooks",
1053
+ "snapshot-verify-gates",
1054
+ "source-authority-closure",
1055
+ "skill-resource-closure"
1056
+ ]
1057
+ }
1058
+ },
1059
+ "comparedPlan": {
1060
+ "type": "string",
1061
+ "minLength": 1,
1062
+ "description": "Digest-addressed immutable plan file compared for the config publish-path decision"
1063
+ }
1064
+ }
1065
+ },
1066
+ "postPublish": {
1067
+ "$ref": "#/definitions/planPostPublish"
1068
+ },
1003
1069
  "digest": {
1004
1070
  "type": "string",
1005
1071
  "minLength": 1
@@ -1226,6 +1292,339 @@
1226
1292
  }
1227
1293
  }
1228
1294
  ]
1295
+ },
1296
+ "planPostPublish": {
1297
+ "type": "object",
1298
+ "description": "冻结的发布后分发块:声明本身 + tag/tagCommit/unitId/payloadSource 绑定。整体参与 plan digest(planVersion 2 记录层剥离不包含该块),任何配置变更都会改变 planDigest。tagCommit 仅在 prepare 能冻结 create-tag 预期 commit 时存在(production 资产);缺省时 distribute fail-closed。",
1299
+ "required": [
1300
+ "materialize",
1301
+ "targets",
1302
+ "commitIdentity",
1303
+ "tag",
1304
+ "unitId",
1305
+ "payloadSource"
1306
+ ],
1307
+ "additionalProperties": false,
1308
+ "properties": {
1309
+ "materialize": {
1310
+ "$ref": "#/definitions/planPostPublishMaterialize"
1311
+ },
1312
+ "targets": {
1313
+ "type": "array",
1314
+ "minItems": 1,
1315
+ "items": {
1316
+ "$ref": "#/definitions/planPostPublishTarget"
1317
+ }
1318
+ },
1319
+ "commitIdentity": {
1320
+ "type": "object",
1321
+ "required": [
1322
+ "name",
1323
+ "email"
1324
+ ],
1325
+ "additionalProperties": false,
1326
+ "properties": {
1327
+ "name": {
1328
+ "type": "string",
1329
+ "minLength": 1
1330
+ },
1331
+ "email": {
1332
+ "type": "string",
1333
+ "minLength": 1
1334
+ }
1335
+ }
1336
+ },
1337
+ "steps": {
1338
+ "type": "array",
1339
+ "items": {
1340
+ "$ref": "#/definitions/planPostPublishStep"
1341
+ }
1342
+ },
1343
+ "assertMainVersionAhead": {
1344
+ "type": "boolean"
1345
+ },
1346
+ "tag": {
1347
+ "type": "string",
1348
+ "minLength": 1,
1349
+ "description": "冻结的分发 tag(tagTemplate 以 targetVersion 渲染)"
1350
+ },
1351
+ "tagCommit": {
1352
+ "type": "string",
1353
+ "pattern": "^[a-f0-9]{40}$",
1354
+ "description": "create-tag 预期 commit(production prepare 冻结);distribute 以 git rev-parse --verify <tag>^{commit} 校验相等"
1355
+ },
1356
+ "unitId": {
1357
+ "type": "string",
1358
+ "pattern": "^(?!\\.{1,2}$)[A-Za-z0-9][A-Za-z0-9._-]*$",
1359
+ "description": "声明该 postPublish 的发布单元 id"
1360
+ },
1361
+ "payloadSource": {
1362
+ "const": "tag-worktree",
1363
+ "description": "时序契约:载荷只能来自 tagCommit 处的 detached worktree,绝不读取工作区状态"
1364
+ }
1365
+ }
1366
+ },
1367
+ "planPostPublishMaterialize": {
1368
+ "type": "object",
1369
+ "required": [
1370
+ "command",
1371
+ "outputMarker"
1372
+ ],
1373
+ "additionalProperties": false,
1374
+ "properties": {
1375
+ "command": {
1376
+ "type": "array",
1377
+ "minItems": 1,
1378
+ "items": {
1379
+ "type": "string"
1380
+ }
1381
+ },
1382
+ "cwd": {
1383
+ "type": "string",
1384
+ "pattern": "^(?:\\.$|(?!\\/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(?:\\/|$))(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/\\/$)(?!.*\\/$).*)$"
1385
+ },
1386
+ "timeoutMs": {
1387
+ "type": "integer",
1388
+ "minimum": 1000,
1389
+ "maximum": 7200000
1390
+ },
1391
+ "envAllowlist": {
1392
+ "type": "array",
1393
+ "items": {
1394
+ "type": "string",
1395
+ "pattern": "^(?!.*(?:TOKEN|SECRET|PASSWORD|PASSPHRASE|API_KEY|CREDENTIAL))[A-Z_][A-Z0-9_]*$"
1396
+ },
1397
+ "uniqueItems": true
1398
+ },
1399
+ "outputMarker": {
1400
+ "type": "string",
1401
+ "minLength": 1
1402
+ },
1403
+ "requireReport": {
1404
+ "type": "object",
1405
+ "required": [
1406
+ "parse"
1407
+ ],
1408
+ "additionalProperties": false,
1409
+ "properties": {
1410
+ "parse": {
1411
+ "const": "stdout-first-json"
1412
+ },
1413
+ "equals": {
1414
+ "type": "object"
1415
+ }
1416
+ }
1417
+ }
1418
+ }
1419
+ },
1420
+ "planPostPublishStep": {
1421
+ "type": "object",
1422
+ "required": [
1423
+ "name",
1424
+ "command"
1425
+ ],
1426
+ "additionalProperties": false,
1427
+ "properties": {
1428
+ "name": {
1429
+ "type": "string",
1430
+ "pattern": "^[a-z0-9][a-z0-9._-]*$"
1431
+ },
1432
+ "command": {
1433
+ "type": "array",
1434
+ "minItems": 1,
1435
+ "items": {
1436
+ "type": "string"
1437
+ }
1438
+ },
1439
+ "cwd": {
1440
+ "type": "string",
1441
+ "pattern": "^(?:\\.$|(?!\\/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(?:\\/|$))(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/\\/$)(?!.*\\/$).*)$"
1442
+ },
1443
+ "timeoutMs": {
1444
+ "type": "integer",
1445
+ "minimum": 1000,
1446
+ "maximum": 7200000
1447
+ },
1448
+ "envAllowlist": {
1449
+ "type": "array",
1450
+ "items": {
1451
+ "type": "string",
1452
+ "pattern": "^(?!.*(?:TOKEN|SECRET|PASSWORD|PASSPHRASE|API_KEY|CREDENTIAL))[A-Z_][A-Z0-9_]*$"
1453
+ },
1454
+ "uniqueItems": true
1455
+ }
1456
+ }
1457
+ },
1458
+ "planPostPublishTarget": {
1459
+ "type": "object",
1460
+ "required": [
1461
+ "id",
1462
+ "kind",
1463
+ "remoteUrl",
1464
+ "visibility",
1465
+ "branch"
1466
+ ],
1467
+ "additionalProperties": false,
1468
+ "properties": {
1469
+ "id": {
1470
+ "type": "string",
1471
+ "pattern": "^[a-z0-9][a-z0-9._-]*$"
1472
+ },
1473
+ "kind": {
1474
+ "type": "string",
1475
+ "enum": [
1476
+ "payload-mirror",
1477
+ "marketplace-index"
1478
+ ]
1479
+ },
1480
+ "remoteUrl": {
1481
+ "type": "string",
1482
+ "pattern": "^(?:https?|file)://.+\\.git$"
1483
+ },
1484
+ "visibility": {
1485
+ "type": "string",
1486
+ "enum": [
1487
+ "internal",
1488
+ "public"
1489
+ ]
1490
+ },
1491
+ "branch": {
1492
+ "type": "string",
1493
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]*$"
1494
+ },
1495
+ "dependsOn": {
1496
+ "type": "string",
1497
+ "pattern": "^[a-z0-9][a-z0-9._-]*$"
1498
+ },
1499
+ "marketplace": {
1500
+ "type": "object",
1501
+ "required": [
1502
+ "form",
1503
+ "name",
1504
+ "owner"
1505
+ ],
1506
+ "additionalProperties": false,
1507
+ "properties": {
1508
+ "form": {
1509
+ "type": "string",
1510
+ "enum": [
1511
+ "github",
1512
+ "url"
1513
+ ]
1514
+ },
1515
+ "name": {
1516
+ "type": "string",
1517
+ "minLength": 1
1518
+ },
1519
+ "owner": {
1520
+ "type": "string",
1521
+ "minLength": 1
1522
+ },
1523
+ "sourceRepo": {
1524
+ "type": "string",
1525
+ "pattern": "^[a-zA-Z0-9._-]+/[a-zA-Z0-9._-]+$"
1526
+ }
1527
+ }
1528
+ },
1529
+ "staticFiles": {
1530
+ "type": "array",
1531
+ "items": {
1532
+ "type": "object",
1533
+ "required": [
1534
+ "from",
1535
+ "to"
1536
+ ],
1537
+ "additionalProperties": false,
1538
+ "properties": {
1539
+ "from": {
1540
+ "type": "string",
1541
+ "minLength": 1,
1542
+ "pattern": "^(?!/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(/|$))(?!\\.$)(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/$).*$"
1543
+ },
1544
+ "to": {
1545
+ "type": "string",
1546
+ "minLength": 1,
1547
+ "pattern": "^(?!/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(/|$))(?!\\.$)(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/$).*$"
1548
+ }
1549
+ }
1550
+ }
1551
+ }
1552
+ },
1553
+ "allOf": [
1554
+ {
1555
+ "if": {
1556
+ "properties": {
1557
+ "kind": {
1558
+ "const": "marketplace-index"
1559
+ }
1560
+ },
1561
+ "required": [
1562
+ "kind"
1563
+ ]
1564
+ },
1565
+ "then": {
1566
+ "required": [
1567
+ "marketplace"
1568
+ ]
1569
+ }
1570
+ },
1571
+ {
1572
+ "if": {
1573
+ "properties": {
1574
+ "kind": {
1575
+ "const": "payload-mirror"
1576
+ }
1577
+ },
1578
+ "required": [
1579
+ "kind"
1580
+ ]
1581
+ },
1582
+ "then": {
1583
+ "not": {
1584
+ "required": [
1585
+ "marketplace"
1586
+ ]
1587
+ }
1588
+ }
1589
+ }
1590
+ ]
1591
+ }
1592
+ },
1593
+ "allOf": [
1594
+ {
1595
+ "if": {
1596
+ "properties": {
1597
+ "workflowDecision": {
1598
+ "properties": {
1599
+ "decision": {
1600
+ "const": "public-bytes-unchanged"
1601
+ }
1602
+ },
1603
+ "required": [
1604
+ "decision"
1605
+ ]
1606
+ }
1607
+ },
1608
+ "required": [
1609
+ "workflowDecision"
1610
+ ]
1611
+ },
1612
+ "then": {
1613
+ "properties": {
1614
+ "externalActions": {
1615
+ "type": "array",
1616
+ "minItems": 0
1617
+ }
1618
+ }
1619
+ },
1620
+ "else": {
1621
+ "properties": {
1622
+ "externalActions": {
1623
+ "type": "array",
1624
+ "minItems": 1
1625
+ }
1626
+ }
1627
+ }
1229
1628
  }
1230
- }
1629
+ ]
1231
1630
  }