release-skill 0.6.2 → 0.7.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 (112) 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 +48 -0
  7. package/CONTRIBUTING.md +1 -1
  8. package/INSTALL.md +47 -2
  9. package/INSTALL.zh-CN.md +29 -2
  10. package/README.md +137 -12
  11. package/README.zh-CN.md +110 -9
  12. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  13. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  14. package/adapters/claude/bin/error-codes.json +1 -1
  15. package/adapters/claude/bin/kernel-protocol.json +1 -1
  16. package/adapters/claude/bin/license-texts/Apache-2.0.txt +201 -0
  17. package/adapters/claude/bin/license-texts/MIT.txt +21 -0
  18. package/adapters/claude/bin/registry.json +64 -1
  19. package/adapters/claude/bin/release-skill.bundle.mjs +50570 -42208
  20. package/adapters/claude/bin/rules.json +1 -1
  21. package/adapters/claude/schemas/.render-manifest.json +10 -6
  22. package/adapters/claude/schemas/postpublish-approval-record.schema.json +47 -0
  23. package/adapters/claude/schemas/release-plan.schema.json +200 -4
  24. package/adapters/claude/schemas/release-project.schema.json +86 -5
  25. package/adapters/claude/schemas/release-run.schema.json +11 -6
  26. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  27. package/adapters/codex/bin/error-codes.json +1 -1
  28. package/adapters/codex/bin/kernel-protocol.json +1 -1
  29. package/adapters/codex/bin/license-texts/Apache-2.0.txt +201 -0
  30. package/adapters/codex/bin/license-texts/MIT.txt +21 -0
  31. package/adapters/codex/bin/registry.json +64 -1
  32. package/adapters/codex/bin/release-skill.bundle.mjs +50570 -42208
  33. package/adapters/codex/bin/rules.json +1 -1
  34. package/adapters/codex/schemas/.render-manifest.json +10 -6
  35. package/adapters/codex/schemas/postpublish-approval-record.schema.json +47 -0
  36. package/adapters/codex/schemas/release-plan.schema.json +200 -4
  37. package/adapters/codex/schemas/release-project.schema.json +86 -5
  38. package/adapters/codex/schemas/release-run.schema.json +11 -6
  39. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  40. package/adapters/kimi/bin/error-codes.json +1 -1
  41. package/adapters/kimi/bin/kernel-protocol.json +1 -1
  42. package/adapters/kimi/bin/license-texts/Apache-2.0.txt +201 -0
  43. package/adapters/kimi/bin/license-texts/MIT.txt +21 -0
  44. package/adapters/kimi/bin/registry.json +64 -1
  45. package/adapters/kimi/bin/release-skill.bundle.mjs +50570 -42208
  46. package/adapters/kimi/bin/rules.json +1 -1
  47. package/adapters/kimi/schemas/.render-manifest.json +10 -6
  48. package/adapters/kimi/schemas/postpublish-approval-record.schema.json +47 -0
  49. package/adapters/kimi/schemas/release-plan.schema.json +200 -4
  50. package/adapters/kimi/schemas/release-project.schema.json +86 -5
  51. package/adapters/kimi/schemas/release-run.schema.json +11 -6
  52. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  53. package/adapters/workbuddy/bin/error-codes.json +1 -1
  54. package/adapters/workbuddy/bin/kernel-protocol.json +1 -1
  55. package/adapters/workbuddy/bin/license-texts/Apache-2.0.txt +201 -0
  56. package/adapters/workbuddy/bin/license-texts/MIT.txt +21 -0
  57. package/adapters/workbuddy/bin/registry.json +64 -1
  58. package/adapters/workbuddy/bin/release-skill.bundle.mjs +50570 -42208
  59. package/adapters/workbuddy/bin/rules.json +1 -1
  60. package/adapters/workbuddy/schemas/.render-manifest.json +10 -6
  61. package/adapters/workbuddy/schemas/postpublish-approval-record.schema.json +47 -0
  62. package/adapters/workbuddy/schemas/release-plan.schema.json +200 -4
  63. package/adapters/workbuddy/schemas/release-project.schema.json +86 -5
  64. package/adapters/workbuddy/schemas/release-run.schema.json +11 -6
  65. package/bin/error-codes.json +1 -1
  66. package/bin/kernel-protocol.json +1 -1
  67. package/bin/license-texts/Apache-2.0.txt +201 -0
  68. package/bin/license-texts/MIT.txt +21 -0
  69. package/bin/registry.json +64 -1
  70. package/bin/release-skill-cli.mjs +187 -9
  71. package/bin/release-skill.bundle.mjs +50570 -42208
  72. package/bin/rules.json +1 -1
  73. package/package.json +6 -4
  74. package/platform-manifest.json +4 -4
  75. package/references/.render-manifest.json +5 -5
  76. package/references/01-state-machine.md +22 -2
  77. package/references/02-project-config.md +1 -1
  78. package/references/06-adapter-contract.md +6 -3
  79. package/schemas/.render-manifest.json +10 -6
  80. package/schemas/postpublish-approval-record.schema.json +47 -0
  81. package/schemas/release-plan.schema.json +200 -4
  82. package/schemas/release-project.schema.json +86 -5
  83. package/schemas/release-run.schema.json +11 -6
  84. package/src/adapters/distribute-git.mjs +17 -11
  85. package/src/commands/approve.mjs +163 -1
  86. package/src/commands/distribute.mjs +649 -89
  87. package/src/commands/postverify.mjs +808 -0
  88. package/src/commands/prepare.mjs +456 -45
  89. package/src/commands/setup.mjs +715 -0
  90. package/src/commands/ship.mjs +152 -5
  91. package/src/commands/verify.mjs +92 -15
  92. package/src/core/approval.mjs +93 -68
  93. package/src/core/bounded-output.mjs +46 -0
  94. package/src/core/derived-artifact-gates.mjs +258 -0
  95. package/src/core/docs-refresh-preset.mjs +171 -0
  96. package/src/core/errors.mjs +4 -0
  97. package/src/core/evidence.mjs +8 -1
  98. package/src/core/git-url-policy.mjs +214 -0
  99. package/src/core/hooks.mjs +28 -0
  100. package/src/core/marketplace-registry-entry.mjs +175 -0
  101. package/src/core/notify-handoff.mjs +76 -0
  102. package/src/core/postpublish-approval.mjs +241 -0
  103. package/src/core/postpublish-bundle.mjs +342 -0
  104. package/src/core/postpublish-projection.mjs +210 -0
  105. package/src/core/postpublish.mjs +449 -25
  106. package/src/core/preset-executor.mjs +175 -0
  107. package/src/core/preset-gitwrite.mjs +484 -0
  108. package/src/core/presets.mjs +754 -0
  109. package/src/core/proposal-inbox.mjs +646 -0
  110. package/src/core/redact.mjs +16 -3
  111. package/src/core/run.mjs +91 -6
  112. package/src/producers/build-adapters.mjs +28 -14
package/README.zh-CN.md CHANGED
@@ -2,29 +2,37 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.6.2 -->
5
+ <!-- release-skill:release-version: 0.7.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.6.2** (2026-08-19)
11
+ **0.7.0** (2026-08-22)
12
12
 
13
- v0.6.2 把技能资源闭包检查器升级为贯穿 prepare、publish、verify 的失败关闭发布门禁,收口逐条审计确认的五项缺口(G1–G5),并修复 lineage 重建提交时的身份解析错误:缺失或漂移的技能资源、主目录搜索路径、未声明的 host 面从此在计划冻结前即阻断发布;提交身份改用锚定正则解析,解析失败即失败关闭,绝不伪造身份字段。
13
+ v0.7.0 收口了 v0.6.3 之后识别出的发布架构缺口:postPublish 私有执行输入随批准计划冻结,检查点批准只能从不可变权威路径消费,下游投影直接复用已发布的 Skill Family Foundation 0.8.0 合同,不再依赖工作区本地替代实现。
14
14
 
15
15
  **新增**
16
16
 
17
- - **skill-resource-closure v2 发布门禁**:闭包检查器升级为贯穿三个阶段的失败关闭门禁——prepare 扫描冻结快照,任何 finding 即以 `GATE_FAILED`(错误码 13)阻断计划冻结;publish Gate 2c 对 production 计划按已验证的冻结快照重算闭包;verify 以逐 host 收据校验真实 npm 安装树与 marketplace 安装目录。收据新增 `unitId`、host/surface 明细、摘要、`checkerVersion`(`skill-resource-closure-v2`)与计数字段;平台注册表以显式 adapter 目录名声明各 host 面;收据 schema 在全部六份 release-plan schema 副本中绑定。旧冻结计划与新 checker 版本不一致即失败关闭。
18
- - **闭包门禁缺口收口(G1–G5)**:source-only(`SOURCE_ONLY_NOT_SHIPPED`)豁免逐条列入收据投影与 prepare 证据——可审计、非阻断;code span/fence/link 目标中的 `~/`、`$HOME/`、`${HOME}/` 搜索路径以 `HOME_DIRECTORY_SEARCH` 失败关闭;同名相对路径资源跨 surface 内容不一致以 `RESOURCE_DRIFT` 失败关闭并给出跨 surface 引用定位;adapter 技能闭包目录内未被引用的常规文件以 `STALE_RESOURCE` 失败关闭;每个声明的插件分发必须有 skillCount ≥ 1 的收据 host 面背书(declared-host 对账)——publicFiles 漏收 adapter 时该 host 面不再静默缺席;冻结收据绑定确定性 `preparedAt` 冻结时间戳(绝不采样墙钟)与 `exitCode: 0`,同输入重复 prepare 冻结字节一致的收据。
17
+ - **冻结 postPublish 执行包**:发布单元可以声明私有 `executionFiles`;prepare 把精确字节及资源闭包冻结进不可变计划,distribute postVerify 只把复验通过的执行包安装到隔离执行工作树。批准后的实时工作区改动无法改变实际执行命令。
18
+ - **从权威路径消费检查点批准**:postPublish 批准只接受由计划摘要和 hook id 推导出的规范路径。任何 hook 或外部写入开始前,消费端都会复核计划摘要、批准摘要、严格读取的文件字节,以及整条权威路径不存在符号链接。
19
+ - **由 Foundation 托管下游投影**:postPublish 载荷投影改用已发布的 `skill-family-engineering-kit` 投影编译器和运行器,并通过 `skill-family-harness-node` 完成严格读取与资源闭包复验。
20
+
21
+ **变更**
22
+
23
+ - **区分两类工作区**:预设执行明确区分维护者的 `releaseWorkspaceRoot` 与隔离的 `executionWorktreeRoot`;拒绝含义模糊的旧 `root` 回退,也不允许预设把发布工作区自身作为目标。
24
+ - **精确采用 Foundation 0.8.0**:`skill-family-contracts`、`skill-family-harness-node` 与 `skill-family-engineering-kit` 均钉扎 0.8.0;包运行时钉扎 Node.js `>=22.22.2 <23`。
25
+ - **显式 distribute 权威**:`distribute` 必须取得与计划绑定的发布批准记录;postPublish hook 批准继续使用独立的检查点记录。
19
26
 
20
27
  **修复**
21
28
 
22
- - **lineage 提交身份解析(lineage-ident)**:`lineage rebuild` 原先用 `split(/\s+>/)` 解析 author/committer ident 行——该切分对合法 ident 从不匹配,写进重建提交的身份因此损坏(名字含空格或 `>` 时同样错乱)。现改用锚定正则解析,贪婪名字捕获使行尾最后一个 `<email> ts tz` 组生效;无法解析即失败关闭,绝不伪造身份字段。提交消息改经 `commit-tree -F -` stdin 喂入,取自不裁剪的 `cat-file` 输出——任意消息字节(含尾部空白与空行)原样保留。
23
- - **assess npm-transport 测试稳定性(仅测试)**:npm 生命周期向子进程环境注入静默日志级别设置与环境代理变量,导致 npm stderr 被清空、释放后的本地临时端口被劫持,测试间歇性失败。现剥离环境中的 npm-config 族环境键与代理变量(`isolateNpmTransportEnv`),整个测试期间持有本地端口(`startConnectionResetRegistry`),并确定性断言 `ECONNRESET|ECONNREFUSED`。生产行为无变化。
29
+ - **拒绝并脱敏携带凭证的 Git URL**:配置中的 Git 远端在 schema 与运行时两层拒绝 URL userinfo。错误、证据和摘要统一经过共享脱敏路径,避免持久化嵌入式凭证。
30
+ - **生产门禁失败关闭**:`NODE_TEST_CONTEXT` 不再能够豁免派生产物门禁;adapter 按计划版本明确处理语义;兼容 Node.js 22 的测试报告格式,同时不放宽断言。
31
+ - **公开打包与许可证收口**:工作区说明与公开包统一采用 Apache-2.0,公开 bundle 同时携带所需的 Apache-2.0 与 MIT 许可证正文。
24
32
  <!-- release-skill:managed:end id=latest-release -->
25
33
 
26
34
  <!-- release-skill:capability:external-write-boundary -->
27
- > **当前边界:** v0.6.2 是当前源码候选,v0.4.1 仍是最新已发布版本(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
35
+ > **当前边界:** v0.7.0 是当前源码候选,v0.6.3 是最新已发布版本。v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
28
36
  > v0.1.1 已完成 GitHub 与 npm 的
29
37
  > 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
30
38
  > 安装及 Claude/Codex 消费者安装验证;"当前发布版本"与"首次生产验证里程碑"
@@ -37,7 +45,7 @@ v0.6.2 把技能资源闭包检查器升级为贯穿 prepare、publish、verify
37
45
  > 远端唯一性检查在 `publish` 全局预检执行。
38
46
 
39
47
  <!-- release-skill:capability:safe-first-command -->
40
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.6.2 是当前源码候选,v0.4.1 是最新已发布版本。**
48
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.7.0 是当前源码候选,v0.6.3 是最新已发布版本。**
41
49
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
42
50
  >
43
51
  > **第一条命令:**
@@ -49,6 +57,45 @@ v0.6.2 把技能资源闭包检查器升级为贯穿 prepare、publish、verify
49
57
  > **分发能力 v1.0(W2 完成):** postPublish 分发作为独立的 `distribute` 命令可用,支持镜像和 Marketplace 索引动作。`publish` 达到 PUBLISHED 状态后,可运行 `ship distribute` 或手动调用 `release-skill distribute --plan <path> --approval <path> --json`。分发动作实现 fail-closed 语义:空差异时 NO_CHANGE(不创建 commit/tag/push),tag 移动尝试时 REMOTE_CONFLICT(永不 force-push),外部写未授权时 AUTH_MISSING。支持的模式:`--dry-run`(仅本地提交+tag)、`--json`(结构化输出)、`--help`(命令参考)。标签承诺保证版本一致性——分发的 plugin.json.version 必须与输入 tag 匹配。详见 [docs/design/2026-08-17-postpublish-distribution.md](../../docs/design/2026-08-17-postpublish-distribution.md) 中的架构说明。
50
58
  <!-- release-skill:capability:distribute -->
51
59
 
60
+ <!-- release-skill:maturity:postpublish-hooks-v2 -->
61
+ <!-- release-skill:capability:postpublish-hooks -->
62
+ > **postPublish hooks v2:** `releaseUnit.postPublish` 在既有 `targets` 之外接受
63
+ > 声明式 `hooks` 数组。每个 hook 要么是命名预设,要么是自定义 command hook;
64
+ > 自定义 command hook 遵循与 prepare hooks 相同的规则——可执行文件/参数数组、
65
+ > 相对 cwd、timeout 与环境变量白名单,拒绝 shell 字符串——并与其他配置的
66
+ > hook 和 gate 一样是无操作系统沙箱的进程。所有声明归一化进冻结计划,因此
67
+ > hook 变化即 plan digest 变化,既有批准随之失效。`requiresApproval: true`
68
+ > 的 hook(公开写预设缺省为 true;项目可以收紧,不得放松)执行前需要自己的
69
+ > checkpoint 级批准:用
70
+ > `release-skill approve --plan <plan> --hook <hookId> --actor <name>`
71
+ > 铸造批准记录,再由 `distribute --hook-approval <record>` 或
72
+ > `ship --hook-approval <record>` 消费(24 小时有效期,绑定 plan digest
73
+ > 与 hook id)。Git 凭证只来自宿主 credential helper / OS keychain;
74
+ > release-skill 绝不读取、存储或打印凭证。
75
+ <!-- release-skill:capability:postpublish-hooks -->
76
+
77
+ <!-- release-skill:capability:postpublish-presets -->
78
+ > **postPublish 预设:** 六个内置预设随 bundle 分发,由
79
+ > `release-skill distribute --list-presets` 枚举:`git-mirror` 与
80
+ > `marketplace-index-render`(以 `targets` 形态声明),以及
81
+ > `proposal-inbox`、`marketplace-registry-entry`、`docs-refresh`、
82
+ > `notify-handoff`(以 `hooks` 形态声明)。`proposal-inbox` 通过 git-push 或
83
+ > local-file 传输投递机器可读更新提案,供下游自治消费;未声明 target 时
84
+ > 退化为 `notify-handoff` 行为而非报错。`notify-handoff` 是零写地板:
85
+ > 只渲染确定性的人工同步清单。release-skill 自己也在使用该能力:本仓库的
86
+ > 项目配置声明了一个 `proposal-inbox`(git-push)hub 提案,指向公开仓
87
+ > `skill-family-hub`,将在 v0.7.0 发布的 postVerify 阶段经自身的
88
+ > checkpoint 批准投递。
89
+ <!-- release-skill:capability:postpublish-presets -->
90
+
91
+ <!-- release-skill:capability:postverify-stage -->
92
+ > **postVerify 阶段:** 声明 `phase: postVerify` 的 hook 只在主 run 到达
93
+ > VERIFIED 之后执行;`ship` 把它们路由进一个独立的 postVerify run,其 hook
94
+ > 上下文携带验证证据(`verifyEvidence` 仅该阶段存在)。postVerify run 失败
95
+ > 即保持 PARTIAL、可 reconcile,但绝不把主 run 从 VERIFIED 回退——失败在
96
+ > evidence 中显著记录,绝不静默。
97
+ <!-- release-skill:capability:postverify-stage -->
98
+
52
99
  <!-- release-skill:maturity:v0.1-boundary -->
53
100
  <!-- release-skill:maturity:boundary -->
54
101
  > **安全默认路径:** 推荐 `help → assess → prepare --offline → 人工审阅`。
@@ -180,6 +227,15 @@ ACTOR=your-name
180
227
  `requiredPublicFiles`。只有在人工审阅之后才添加项目专属 hook 或 gate:
181
228
  编辑 `projectConfig.hooks`,或编辑 `verificationGates` 并把同一个 id 加入
182
229
  `selectedGateIds`,然后重新运行绑定 dry-run。配置已存在时跳过。
230
+ 下游 postPublish 引导在确认前同样只读:`setup --discover-downstream`
231
+ 枚举下游候选(git remote、邻近的 marketplace/docs 仓、
232
+ `artifact-graph.config.yaml`,以及存在时的 foundation profile);
233
+ `setup --propose-hooks` 把这些线索转为由 `setupDigest` 绑定的 postPublish
234
+ hook 声明草案。对已接入的项目,
235
+ `setup --propose-hooks --write --confirm-setup <digest>` 只追加目标发布
236
+ 单元的 `postPublish.hooks` 段,绝不重新生成或改写配置的任何其他部分
237
+ (create-once 边界不受影响)。foundation profile 只是提案输入之一,绝不
238
+ 自动生效。
183
239
  完整多步流程见 [INSTALL.zh-CN.md](INSTALL.zh-CN.md#首次接入)。
184
240
  3. **assess** — 只读就绪评估:
185
241
  ```bash
@@ -434,6 +490,51 @@ hooks:
434
490
 
435
491
  hook 在 `prepare` 调用时运行,命令调用本身即授权执行。gate 是发布校准的受控扩展点(见 `references/02-project-config.md`)。
436
492
 
493
+ ### postPublish hook
494
+
495
+ `postPublish.hooks` 声明 `publish` 之后执行的下游投递动作。每个条目要么是命名预设,要么是自定义 command hook,遵守与上文相同的命令规则(可执行文件/参数数组,不是 shell 字符串)。预设收到冻结计划的只读投影;自定义 command hook 在冻结 tag 工作树中执行。`materialize` 钩子是可选的:缺省时,`distribute` 改为把发布单元冻结的 `publicFiles` 映射经 Foundation 托管投影物化——全新载荷根、全量预检、零写入拒绝、完整闭包回滚——计划冻结后绝不重读实时项目配置:
496
+
497
+ ```yaml
498
+ postPublish:
499
+ materialize:
500
+ command: [node, scripts/materialize-payload.mjs]
501
+ cwd: .
502
+ timeoutMs: 600000
503
+ outputMarker: "payload dir: "
504
+ commitIdentity:
505
+ name: release-bot
506
+ email: mzdbxqh@example.com
507
+ hooks:
508
+ - id: mirror-downstream
509
+ preset: git-mirror
510
+ config:
511
+ target:
512
+ remoteUrl: https://gitlab.example.internal/team/my-project.git
513
+ branch: main
514
+ - id: hub-entry-proposal
515
+ preset: proposal-inbox
516
+ phase: postVerify
517
+ requiresApproval: true
518
+ config:
519
+ delivery: git-push
520
+ target:
521
+ remoteUrl: https://github.com/example/hub.git
522
+ branch: main
523
+ - id: custom-notify
524
+ command: [node, scripts/notify-downstream.mjs]
525
+ timeoutMs: 300000
526
+ envAllowlist: [CI]
527
+ ```
528
+
529
+ `requiresApproval: true` 的 hook 停留在 `AWAITING_APPROVAL`,直到 checkpoint 批准被铸造并消费。批准记录绑定 plan digest 与 hook id,24 小时后过期:
530
+
531
+ ```bash
532
+ release-skill approve --plan "$PLAN_PATH" --hook hub-entry-proposal --actor "$ACTOR" --json
533
+ release-skill ship --root "$PROJECT" --hook-approval "$HOOK_APPROVAL_PATH" --json
534
+ ```
535
+
536
+ 对已接入的项目,`setup --discover-downstream` 与 `setup --propose-hooks` 起草这些声明供人工审阅;仅追加的增量流程见上文 setup 步骤与 [INSTALL.zh-CN.md](INSTALL.zh-CN.md#首次接入)。
537
+
437
538
  ## Skills
438
539
 
439
540
  - `release-help`:环境检查和下一步引导。
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.6.2",
12
+ "version": "0.7.0",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
14
14
  "author": {
15
15
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.error-codes",
4
- "contractsVersion": "1.5.0",
4
+ "contractsVersion": "1.7.0",
5
5
  "policy": {
6
6
  "format": "^SFC[0-9]{4}$",
7
7
  "ranges": [
@@ -4,7 +4,7 @@
4
4
  "name": "skill-family.kernel.operation",
5
5
  "version": 1,
6
6
  "status": "stable",
7
- "contractsVersion": "1.5.0",
7
+ "contractsVersion": "1.7.0",
8
8
  "description": "Frozen v1 kernel protocol: request/result envelope, operation lifecycle states, and the operation vocabulary. Extensible only by a new protocol version; v1 content is frozen.",
9
9
  "states": ["accepted", "running", "succeeded", "failed", "rejected"],
10
10
  "initialStates": ["accepted", "rejected"],
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) {{YEAR}} {{COPYRIGHT_HOLDER}}
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.registry",
4
- "contractsVersion": "1.5.0",
4
+ "contractsVersion": "1.7.0",
5
5
  "note": "Protocol-name and schema-$id registry. Registration mechanically rejects duplicate protocol name/version (SFC1004) and duplicate $id (SFC1003). This file is the single registration surface; adding an entry is a contracts change.",
6
6
  "protocols": [
7
7
  {
@@ -27,6 +27,13 @@
27
27
  "status": "stable",
28
28
  "file": "src/schemas/profile-descriptor.schema.json"
29
29
  },
30
+ {
31
+ "$id": "https://contracts.skill-family.example/v1/project-profile.json",
32
+ "object": "project-profile",
33
+ "dialect": "2020-12",
34
+ "status": "stable",
35
+ "file": "src/schemas/project-profile.schema.json"
36
+ },
30
37
  {
31
38
  "$id": "https://contracts.skill-family.example/v1/managed-file-lock.json",
32
39
  "object": "managed-file-lock",
@@ -166,6 +173,62 @@
166
173
  "dialect": "2020-12",
167
174
  "status": "stable",
168
175
  "file": "src/schemas/structured-scan-policy.schema.json"
176
+ },
177
+ {
178
+ "$id": "https://contracts.skill-family.example/v1/timeout-policy.json",
179
+ "object": "timeout-policy",
180
+ "dialect": "2020-12",
181
+ "status": "stable",
182
+ "file": "src/schemas/timeout-policy.schema.json"
183
+ },
184
+ {
185
+ "$id": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json",
186
+ "object": "watchdog-termination-envelope",
187
+ "dialect": "2020-12",
188
+ "status": "stable",
189
+ "file": "src/schemas/watchdog-termination-envelope.schema.json"
190
+ },
191
+ {
192
+ "$id": "https://contracts.skill-family.example/v1/public-boundary-declaration.json",
193
+ "object": "public-boundary-declaration",
194
+ "dialect": "2020-12",
195
+ "status": "stable",
196
+ "file": "src/schemas/public-boundary-declaration.schema.json"
197
+ },
198
+ {
199
+ "$id": "https://contracts.skill-family.example/v1/platform-difference-registry.json",
200
+ "object": "platform-difference-registry",
201
+ "dialect": "2020-12",
202
+ "status": "stable",
203
+ "file": "src/schemas/platform-difference-registry.schema.json"
204
+ },
205
+ {
206
+ "$id": "https://contracts.skill-family.example/v1/observation-scope.json",
207
+ "object": "observation-scope",
208
+ "dialect": "2020-12",
209
+ "status": "stable",
210
+ "file": "src/schemas/observation-scope.schema.json"
211
+ },
212
+ {
213
+ "$id": "https://contracts.skill-family.example/v1/profile-adoption-declaration.json",
214
+ "object": "profile-adoption-declaration",
215
+ "dialect": "2020-12",
216
+ "status": "stable",
217
+ "file": "src/schemas/profile-adoption-declaration.schema.json"
218
+ },
219
+ {
220
+ "$id": "https://contracts.skill-family.example/v1/audit-baseline-pin.json",
221
+ "object": "audit-baseline-pin",
222
+ "dialect": "2020-12",
223
+ "status": "stable",
224
+ "file": "src/schemas/audit-baseline-pin.schema.json"
225
+ },
226
+ {
227
+ "$id": "https://contracts.skill-family.example/v1/token-estimate-record.json",
228
+ "object": "token-estimate-record",
229
+ "dialect": "2020-12",
230
+ "status": "stable",
231
+ "file": "src/schemas/token-estimate-record.schema.json"
169
232
  }
170
233
  ],
171
234
  "dialects": {