release-skill 0.9.33 → 0.9.35

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/plugin.json +1 -1
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.cursor-plugin/plugin.json +1 -1
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/.qoder-plugin/plugin.json +1 -1
  7. package/CHANGELOG.md +48 -0
  8. package/INSTALL.md +2 -2
  9. package/INSTALL.zh-CN.md +2 -2
  10. package/README.md +25 -15
  11. package/README.zh-CN.md +11 -15
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/release-skill.bundle.mjs +5878 -4056
  14. package/adapters/claude/schemas/.render-manifest.json +8 -4
  15. package/adapters/claude/schemas/release-plan.schema.json +85 -0
  16. package/adapters/claude/schemas/release-project.schema.json +18 -0
  17. package/adapters/claude/schemas/test-intake.schema.json +217 -0
  18. package/adapters/claude/skills/release-finish/SKILL.md +5 -1
  19. package/adapters/claude/skills/release-help/SKILL.md +4 -1
  20. package/adapters/claude/skills/release-prepare/SKILL.md +9 -2
  21. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  22. package/adapters/codex/bin/release-skill.bundle.mjs +5878 -4056
  23. package/adapters/codex/schemas/.render-manifest.json +8 -4
  24. package/adapters/codex/schemas/release-plan.schema.json +85 -0
  25. package/adapters/codex/schemas/release-project.schema.json +18 -0
  26. package/adapters/codex/schemas/test-intake.schema.json +217 -0
  27. package/adapters/codex/skills/release-finish/SKILL.md +5 -1
  28. package/adapters/codex/skills/release-help/SKILL.md +4 -1
  29. package/adapters/codex/skills/release-prepare/SKILL.md +9 -2
  30. package/adapters/cursor/.cursor-plugin/plugin.json +1 -1
  31. package/adapters/cursor/bin/release-skill.bundle.mjs +5878 -4056
  32. package/adapters/cursor/schemas/.render-manifest.json +8 -4
  33. package/adapters/cursor/schemas/release-plan.schema.json +85 -0
  34. package/adapters/cursor/schemas/release-project.schema.json +18 -0
  35. package/adapters/cursor/schemas/test-intake.schema.json +217 -0
  36. package/adapters/cursor/skills/release-finish/SKILL.md +5 -1
  37. package/adapters/cursor/skills/release-help/SKILL.md +4 -1
  38. package/adapters/cursor/skills/release-prepare/SKILL.md +9 -2
  39. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  40. package/adapters/kimi/bin/release-skill.bundle.mjs +5878 -4056
  41. package/adapters/kimi/schemas/.render-manifest.json +8 -4
  42. package/adapters/kimi/schemas/release-plan.schema.json +85 -0
  43. package/adapters/kimi/schemas/release-project.schema.json +18 -0
  44. package/adapters/kimi/schemas/test-intake.schema.json +217 -0
  45. package/adapters/kimi/skills/release-finish/SKILL.md +5 -1
  46. package/adapters/kimi/skills/release-help/SKILL.md +4 -1
  47. package/adapters/kimi/skills/release-prepare/SKILL.md +9 -2
  48. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  49. package/adapters/qoder/bin/release-skill.bundle.mjs +5878 -4056
  50. package/adapters/qoder/schemas/.render-manifest.json +8 -4
  51. package/adapters/qoder/schemas/release-plan.schema.json +85 -0
  52. package/adapters/qoder/schemas/release-project.schema.json +18 -0
  53. package/adapters/qoder/schemas/test-intake.schema.json +217 -0
  54. package/adapters/qoder/skills/release-finish/SKILL.md +5 -1
  55. package/adapters/qoder/skills/release-help/SKILL.md +4 -1
  56. package/adapters/qoder/skills/release-prepare/SKILL.md +9 -2
  57. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  58. package/adapters/workbuddy/bin/release-skill.bundle.mjs +5878 -4056
  59. package/adapters/workbuddy/schemas/.render-manifest.json +8 -4
  60. package/adapters/workbuddy/schemas/release-plan.schema.json +85 -0
  61. package/adapters/workbuddy/schemas/release-project.schema.json +18 -0
  62. package/adapters/workbuddy/schemas/test-intake.schema.json +217 -0
  63. package/adapters/workbuddy/skills/release-finish/SKILL.md +5 -1
  64. package/adapters/workbuddy/skills/release-help/SKILL.md +4 -1
  65. package/adapters/workbuddy/skills/release-prepare/SKILL.md +9 -2
  66. package/bin/release-skill-cli.mjs +37 -2
  67. package/bin/release-skill.bundle.mjs +5878 -4056
  68. package/package.json +1 -1
  69. package/platform-manifest.json +4 -4
  70. package/references/.render-manifest.json +6 -6
  71. package/references/01-state-machine.md +12 -1
  72. package/references/02-project-config.md +23 -1
  73. package/references/05-evidence-and-errors.md +30 -0
  74. package/schemas/.render-manifest.json +8 -4
  75. package/schemas/release-plan.schema.json +85 -0
  76. package/schemas/release-project.schema.json +18 -0
  77. package/schemas/test-intake.schema.json +217 -0
  78. package/skills/release-finish/SKILL.md +5 -1
  79. package/skills/release-help/SKILL.md +4 -1
  80. package/skills/release-prepare/SKILL.md +9 -2
  81. package/skills-src/release-finish/SKILL.md +5 -1
  82. package/skills-src/release-help/SKILL.md +4 -1
  83. package/skills-src/release-prepare/SKILL.md +9 -2
  84. package/src/commands/approve.mjs +13 -0
  85. package/src/commands/post-release-local.mjs +33 -15
  86. package/src/commands/prepare.mjs +501 -5
  87. package/src/commands/publish.mjs +2 -0
  88. package/src/commands/reconcile.mjs +2 -0
  89. package/src/commands/route.mjs +32 -7
  90. package/src/commands/ship.mjs +168 -5
  91. package/src/core/config.mjs +5 -0
  92. package/src/core/plan.mjs +3 -1
  93. package/src/core/test-candidate.mjs +649 -0
  94. package/src/core/test-intake.mjs +645 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "defaultPrompt": [
21
21
  "Assess this project for release readiness.",
22
- "Prepare a release plan for version 0.9.33.",
22
+ "Prepare a release plan for version 0.9.35.",
23
23
  "Help me understand the release workflow."
24
24
  ]
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.9.35 locale=en baseline=sha256:d6b5bc6f37e83b5ac692f09dc175c61441598caa2f12679a2ffb2a11593b8bca -->
4
+ ## [0.9.35] - 2026-10-22
5
+
6
+ 0.9.35 enables successful Qoder finish checks for already installed plugins using a valid Claude-compatible manifest. It detects and blocks invalid or conflicting manifest candidates. This release note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance. Foundation dependencies remain pinned to `0.25.0`.
7
+
8
+ ### Security
9
+
10
+ - The frozen snapshot is reverified before any host write operation. Existing controls—approval, Hub authorization, path containment, and complete payload validation—remain in force. Foundation dependencies are pinned to `0.25.0`. Skill Family Hub remains the unified marketplace, with publication using GitHub Git Data API and compare-and-swap bound to the observed branch head. Partial Hub publication is never rolled back or force-pushed; completed steps are not overwritten. These mechanisms and remote authorization are unchanged in 0.9.35. The checker does not perform first-time installation, add marketplaces, or generate manifests. Generic release tiers and other host update policies are unchanged.
11
+
12
+ ### Fixed
13
+
14
+ - The checker independently reads `.qoder-plugin/plugin.json` and `.claude-plugin/plugin.json` from both the frozen snapshot and the installed plugin. If the native Qoder manifest is missing, a valid Claude-compatible manifest is accepted. If either present manifest is invalid, verification fails without fallback. When both manifests exist, `name`, `version`, and `skills` must match exactly; otherwise, verification fails.
15
+ - The installed manifest selection, its associated relative path, and `skills` are compared against the frozen selection. This closes gaps caused by competing manifest additions or changes in selected relative paths. Original plugin identity and complete payload checks remain enforced.
16
+
17
+ ### Upgrade Notes
18
+
19
+ Use the updated `release-finish` entry from the public `release-skill@skill-family-hub` to finish an existing installed compatible plugin using its applicable frozen plan. Updating the checker alone does not require republishing the plugin. New plugin bytes still require a new frozen plan and matching approval. `UPDATED` or `ALREADY_CURRENT` indicates installed payload status only—not that the running host has loaded it. Preserve `reload-pending` when loading has not been observed. A local finish failure does not erase a remote `VERIFIED` result. The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub`.
20
+ <!-- release-skill:changelog:end version=0.9.35 locale=en -->
21
+
22
+
23
+ <!-- release-skill:changelog:start version=0.9.34 locale=en baseline=sha256:d00e9ecca9e64593103a20119972dbfb025fd8e73b1de2f850e3838d965170ce -->
24
+ ## [0.9.34] - 2026-10-22
25
+
26
+ 0.9.34 introduces optional test result integration. Projects declaring `testIntake` can specify test requirements and results files, enabling external test orchestration and validation against defined criteria. Foundation remains at exact version 0.25.0. This release note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
27
+
28
+ ### Security
29
+
30
+ - Skill Family Hub remains the unified market, continuing to use GitHub Git Data API. Updates are bound to observed branch heads and written via compare-and-swap. Partial Hub publication is never rolled back or force-pushed; completed steps are not overwritten. These mechanisms remain unchanged; remote authorization is not modified in this release.
31
+
32
+ ### Added
33
+
34
+ - Configurable test intake: Projects declaring `testIntake` can specify test requirements and results files via `testIntake.requirementsFile` and `testIntake.resultFile`. The first `production` `prepare` saves a non-final candidate and returns `NEEDS_INPUT` with the candidate path. Evidence must be provided before freezing; otherwise, no formal release plan is created. Subsequent `prepare --candidate <path>` resumes the same candidate without rebuilding public payloads. The candidate itself cannot be approved or published.
35
+ - Test orchestration and acceptance: The TEST skill orchestrates test execution, determines whether to reuse or re-run tests, and aggregates business-level judgment on whether requirements are met. release-skill validates submitted materials against requirements, candidate bindings, and applicable stages, but does not replace the semantic acceptance by the domain or independent validators.
36
+ - Post-freeze responsibilities: Requirements after freeze are handled by declared consumers via `consumer-verify`, `postverify`, or `finish` stages. Passing pre-freeze tests does not substitute for post-freeze validation.
37
+ - Approval and artifact verification: Test acceptance is included in the release plan summary. Actions like `approve`, `publish`, and `reconcile` verify original artifacts before execution. Changes to results, criteria, scope, or allowed constraints invalidate prior approvals.
38
+
39
+ ### Fixed
40
+
41
+ - An unreadable or unparsable formal authority now raises an explicit error rather than being silently ignored.
42
+ - `prepare` now rejects execution if `--candidate` is provided without a valid path.
43
+ - New candidate modules after packaging use existing build version information; source mode uses trusted package identities.
44
+
45
+ ### Upgrade Notes
46
+
47
+ Projects not declaring `testIntake` retain the original full gate and release path, with no requirement to adopt TEST or artifact-graph. Only `production` prepare is supported for `testIntake`-declared projects; non-production prepare is not allowed. Foundation dependencies remain at exact version 0.25.0. TEST must be invoked through the real Skill entry point. No new TEST CLI is introduced, and no automatic resolution of all domain acceptances is provided. This does not imply validation of all hosts or models. History of `PARTIAL`, `PUBLISHED`, and `VERIFIED` states is preserved even if tests are re-run. The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub` instead.
48
+ <!-- release-skill:changelog:end version=0.9.34 locale=en -->
49
+
50
+
3
51
  <!-- release-skill:changelog:start version=0.9.33 locale=en baseline=sha256:af9d9faf59d67db851b0161430803a4e2ab6752f9979f83bd0a01b0df17bbeed -->
4
52
  ## [0.9.33] - 2026-10-20
5
53
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.33 -->
5
+ <!-- release-skill:release-version: 0.9.35 -->
6
6
  ## Prerequisites
7
7
 
8
8
  - Node.js `>=22.22.2 <23` (22.22.2 or newer, and below 23)
@@ -125,7 +125,7 @@ tag pinned to the exact version (never the bare repository URL, which installs
125
125
  the latest release or default branch), confirm the trust prompt, then reload:
126
126
 
127
127
  ```
128
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.33
128
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.35
129
129
  /plugins reload
130
130
  ```
131
131
 
package/INSTALL.zh-CN.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.33 -->
5
+ <!-- release-skill:release-version: 0.9.35 -->
6
6
  ## 前置条件
7
7
 
8
8
  - Node.js `>=22.22.2 <23`(22.22.2 及以上,且低于 23)
@@ -113,7 +113,7 @@ release-skill 当前只采用并验证 Kimi Code 的交互式 TUI 路径,**无
113
113
  (切勿使用裸仓库地址,它会安装最新 release 或默认分支),确认信任提示后重新加载:
114
114
 
115
115
  ```
116
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.33
116
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.35
117
117
  /plugins reload
118
118
  ```
119
119
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.33 -->
5
+ <!-- release-skill:release-version: 0.9.35 -->
6
6
  Release preparation for Claude Code, CodeBuddy, WorkBuddy, Codex, and Kimi Code, with human-edited files kept intact.
7
7
 
8
8
  release-skill helps a maintainer answer three questions: what will be released,
@@ -14,32 +14,26 @@ Setup surfaces only the deterministic `compactSummary` review view; the full
14
14
  report stays in a temporary session directory.
15
15
 
16
16
  <!-- release-skill:managed:start id=latest-release -->
17
- **0.9.33** (2026-10-20)
17
+ **0.9.35** (2026-10-22)
18
18
 
19
- 0.9.33 maps four engineering material roles onto existing release-project fields, distinguishes first-time setup from incremental wiring, and checks payload channels through those fields while retaining exact Foundation 0.25.0 dependencies. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
19
+ 0.9.35 enables successful Qoder finish checks for already installed plugins using a valid Claude-compatible manifest. It detects and blocks invalid or conflicting manifest candidates. This release note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance. Foundation dependencies remain pinned to `0.25.0`.
20
20
 
21
21
  **Security**
22
22
 
23
- - This round does not change remote-write authorization. Existing confirmation boundaries and frozen install URL/ref/sha remain in force. Hub gate failure prevents GitHub Git Data API write. Writes bind the observed branch head through `compare-and-swap`. Partial Hub publication is never rolled back or force-pushed; completed steps are not overwritten. Independent checkpoint approval, no replay of historical frozen plans, and `ALREADY_CURRENT` remain enforced.
24
-
25
- **Changed**
26
-
27
- - Public formal materials are written to `publicFiles` (`sourceScope` / `from` / `to` / `mode`). Runtime-required resources are written to `requiredPublicFiles` and must be covered exactly by the same unit's `publicFiles[].to`. Private formal materials and informal runtime materials are omitted from `publicFiles`; when they must be blocked, use `forbiddenPaths` / `forbiddenContentPatterns`. Formal does not mean public. Whether a formal artifact enters the public snapshot is decided by whether it is listed in `publicFiles`. npm is a payload channel. `package.json` `files` and entry closure apply together with the public map. `delivery.include` / `delivery.exclude` select hosts and are not file include or exclude rules. Exclusion must not drop required resources. Conflicting configuration fails closed.
28
- - First-time wiring uses `release-setup`. An existing `.release-skill/project.yaml` returns `ALREADY_CONFIGURED` / `CONFIG_EXISTS` and is not overwritten. Incremental changes are diagnosed by `release-assess` and handled by the existing `release-config` skill; `release-config` is not a new CLI. Route first, then run `prepare --workflow config` only when the actual workflow is `config-only`; `full-happy-end` or mixed changes follow the ordinary full path. Do not unconditionally trigger `prepare --workflow config`.
29
- - Skill guidance for setup, assess, config, prepare, and verify now describes these material roles through the existing fields. `REQUIRED_PUBLIC_FILE_MISSING` belongs only to `setup --assess-adoption`. Ordinary `assess` and `verify-records` do not use that code. prepare keeps its native errors such as `PUBLIC_FILE_MISSING` and `CONFIG_INVALID`. `LICENSE_MISSING` does not substitute for required runtime resources. Foundation suggestions cannot serve as publication approval.
30
- - Skill Family Hub remains the unified market. GitHub Git Data API integration continues with `compare-and-swap` write semantics; no automatic rollback or overwrite of completed steps. This is the existing mechanism, not a new Hub implementation in this version, and it is not evidence that publication has completed.
23
+ - The frozen snapshot is reverified before any host write operation. Existing controls—approval, Hub authorization, path containment, and complete payload validation—remain in force. Foundation dependencies are pinned to `0.25.0`. Skill Family Hub remains the unified marketplace, with publication using GitHub Git Data API and compare-and-swap bound to the observed branch head. Partial Hub publication is never rolled back or force-pushed; completed steps are not overwritten. These mechanisms and remote authorization are unchanged in 0.9.35. The checker does not perform first-time installation, add marketplaces, or generate manifests. Generic release tiers and other host update policies are unchanged.
31
24
 
32
25
  **Fixed**
33
26
 
34
- - On `setup --assess-adoption`, adoption assessment locates the `publicFiles[].to` that covers each `requiredPublicFiles` snapshot target, then checks that the repository-relative `from` exists. Absence is recorded as `REQUIRED_PUBLIC_FILE_MISSING`. That code does not enter ordinary `assess`, `verify-records`, or prepare.
27
+ - The checker independently reads `.qoder-plugin/plugin.json` and `.claude-plugin/plugin.json` from both the frozen snapshot and the installed plugin. If the native Qoder manifest is missing, a valid Claude-compatible manifest is accepted. If either present manifest is invalid, verification fails without fallback. When both manifests exist, `name`, `version`, and `skills` must match exactly; otherwise, verification fails.
28
+ - The installed manifest selection, its associated relative path, and `skills` are compared against the frozen selection. This closes gaps caused by competing manifest additions or changes in selected relative paths. Original plugin identity and complete payload checks remain enforced.
35
29
 
36
30
  **Upgrade Notes**
37
31
 
38
- Keep exact Foundation 0.25.0 dependencies; do not upgrade because a sibling workspace is newer. Blank projects use `release-setup`. Configured projects keep their legal fields and use `release-assess` / `release-config` for increments. Route first; do not unconditionally run `prepare --workflow config`. A forbidden-path-only `config-only` increment may finish offline non-production prepare as `PREPARED` with `workflowDecision` `indeterminable` / `publish-needed`; that result is legal. npm is a payload channel; a missing entry fails closed with `GATE_FAILED` / `npm-entry-closure` / `entry_missing`. The old release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub`.
32
+ Use the updated `release-finish` entry from the public `release-skill@skill-family-hub` to finish an existing installed compatible plugin using its applicable frozen plan. Updating the checker alone does not require republishing the plugin. New plugin bytes still require a new frozen plan and matching approval. `UPDATED` or `ALREADY_CURRENT` indicates installed payload status only—not that the running host has loaded it. Preserve `reload-pending` when loading has not been observed. A local finish failure does not erase a remote `VERIFIED` result. The release-skill standalone marketplace is deprecated; use `ifoohoo/skill-family-hub` and `release-skill@skill-family-hub`.
39
33
  <!-- release-skill:managed:end id=latest-release -->
40
34
 
41
35
  <!-- release-skill:capability:external-write-boundary -->
42
- > **Current boundary:** v0.9.33: this README records capabilities and verification boundaries;
36
+ > **Current boundary:** v0.9.35: this README records capabilities and verification boundaries;
43
37
  > it is not evidence of
44
38
  > publication, consumer-installation verification, or independent acceptance.
45
39
  > Release availability must be established from the corresponding release records
@@ -63,7 +57,7 @@ Keep exact Foundation 0.25.0 dependencies; do not upgrade because a sibling work
63
57
  > publish global preflight.
64
58
 
65
59
  <!-- release-skill:capability:safe-first-command -->
66
- > **Production path verified since the v0.1.1 milestone; for v0.9.33,
60
+ > **Production path verified since the v0.1.1 milestone; for v0.9.35,
67
61
  > publication, consumer-installation verification, and independent acceptance
68
62
  > require version-specific release records and verification results.**
69
63
  > The npm-installed CLI is the supported user entry. Source checkout
@@ -604,6 +598,22 @@ a shell command. After host updates, release-finish runs that setup entry
604
598
  against the current release project root passed through `--root`; it does not
605
599
  request a separate project directory. The two settings are independent.
606
600
 
601
+ Optional `testIntake` names a requirements file and a result file. It is
602
+ accepted only by production prepare. The first production prepare stores one
603
+ non-plan candidate and returns `NEEDS_INPUT` (`GATE_FAILED`, exit 13) with
604
+ `candidatePath`, `candidateSha256`, and `subjectDigest`. It does not write a
605
+ formal plan. Reattach that same candidate with `prepare --candidate <path>`;
606
+ the formal plan and `PREPARED` are written only after the applicable pre-freeze
607
+ requirements pass. A candidate cannot be approved or published, and it cannot
608
+ clear `PARTIAL`, `PUBLISHED`, or `VERIFIED`. A project that does not declare
609
+ `testIntake` keeps its existing hooks, full gate, and publish path. A docs,
610
+ config, or marketplace workflow, a unit selection, or a no-publish-needed
611
+ config does not waive project-level requirements. Non-production prepare
612
+ rejects `testIntake` with `CONFIG_INVALID`. Optional `testAcceptance` is part
613
+ of the current plan digest. Replacing the result, criterion, scope, or allowed
614
+ limitation invalidates the previous approval. Approve, publish, and reconcile
615
+ re-check those originals before acting.
616
+
607
617
  Use `release-skill post-release --finish` for the complete local finish. It
608
618
  always reports merge, host update, actual host loading, setup, and source-branch
609
619
  steps. Exit 0 means every applicable step completed or was explicitly skipped;
package/README.zh-CN.md CHANGED
@@ -2,38 +2,32 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.33 -->
5
+ <!-- release-skill:release-version: 0.9.35 -->
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.9.33** (2026-10-20)
11
+ **0.9.35** (2026-10-22)
12
12
 
13
- 0.9.33 将四类工程材料接入现有 `release-project` 字段,区分首次接线与存量增量,并依据现有字段核对载荷渠道,继续采用精确的 Foundation 0.25.0 依赖。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
13
+ 0.9.35 修复 Qoder 收尾检查逻辑,使已安装的、使用有效 Claude 兼容清单的插件可通过检查;同时识别并阻止无效或冲突的候选清单。本发布说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。Foundation 依赖保持精确锁定为 `0.25.0`。
14
14
 
15
15
  **安全**
16
16
 
17
- - 本轮未变更远端写入授权。确认边界、冻结安装 URL/ref/sha 仍有效。Hub 门禁失败将阻止 GitHub Git Data API 写入。写入采用 `compare-and-swap`,绑定已观察的分支头并比较后写入;部分发布不回滚、不覆盖已完成步骤、不自动强推。独立检查点批准、历史冻结计划不重放、`ALREADY_CURRENT` 门禁仍强制执行。
18
-
19
- **变更**
20
-
21
- - 公开正式材料写入 `publicFiles`(字段合同 `sourceScope` / `from` / `to` / `mode`);运行必需资源写入 `requiredPublicFiles`,必须被同一单元 `publicFiles[].to` 精确覆盖;私有正式材料与非正式运行材料不列入 `publicFiles`,需要挡住时使用 `forbiddenPaths` / `forbiddenContentPatterns`。正式不等于公开。是否进入公开快照由 `publicFiles` 是否列出决定。npm 是载荷渠道。`package.json` 的 `files` 与入口闭包和公开映射同时约束。`delivery.include` / `delivery.exclude` 只选择宿主,不是文件包含或排除。排除不得拿掉运行必需资源。互相冲突的配置必须失败关闭。
22
- - 首次接线使用 `release-setup`。目录中已有 `.release-skill/project.yaml` 时返回 `ALREADY_CONFIGURED` / `CONFIG_EXISTS`,不覆盖原配置。存量增量由 `release-assess` 诊断,再由已有 `release-config` Skill 处理。`release-config` 不是新增 CLI。执行时必须先 `route`:实际工作流为 `config-only` 才执行 `prepare --workflow config`;`full-happy-end` 或混合变更走普通 full。不得无条件触发 `prepare --workflow config`。
23
- - setup、assess、config、prepare、verify 的技能说明改为按现有字段描述上述材料角色。`REQUIRED_PUBLIC_FILE_MISSING` 只属于 `setup --assess-adoption`。普通 `assess` 与 `verify-records` 不使用该码。`prepare` 仍使用自身原生错误,例如 `PUBLIC_FILE_MISSING`、`CONFIG_INVALID`。`LICENSE_MISSING` 不能代替运行必需资源。Foundation 建议不能作为发布批准。
24
- - Skill Family Hub 保持统一市场。GitHub Git Data API 机制延续,写入采用 `compare-and-swap` 语义;不自动回滚或覆盖已完成步骤。这是已有机制,不是本轮新实现的 Hub,也不表示已经完成发布。
17
+ - 在写入宿主前重新核验冻结快照;既有批准、Hub 授权、路径收容与完整载荷边界检查机制保持不变。Foundation 依赖精确锁定为 `0.25.0`。Skill Family Hub 仍为统一市场,沿用 GitHub Git Data API,更新操作绑定已观察分支头并比较后写入(compare-and-swap)。部分发布不回滚、不覆盖已完成步骤、不自动强推;本轮未修改这些机制与远端授权。检查器不执行首次安装、新增市场或伪造清单,通用发布层级和其他宿主更新策略保持不变。
25
18
 
26
19
  **修复**
27
20
 
28
- - 接入评估在 `setup --assess-adoption` 中,按 `requiredPublicFiles` 的快照目标找到对应 `publicFiles[].to`,再检查仓根相对 `from` 是否存在;缺失时记为 `REQUIRED_PUBLIC_FILE_MISSING`。该码不进入普通 `assess`、`verify-records` 或 `prepare`。
21
+ - 检查器分别读取冻结快照与已安装插件中的 `.qoder-plugin/plugin.json` 和 `.claude-plugin/plugin.json`。若原生 Qoder 清单不存在,可接受有效的 Claude 兼容清单;清单存在但无效时,不降级接受。当两份清单均存在时,`name`、`version`、`skills` 必须完全一致,否则验证失败。
22
+ - 安装侧选定的清单及其相对路径与 `skills`,与冻结侧对应项进行比对,补上额外候选清单和所选路径变化的检查缺口。原有插件身份与完整载荷检查机制持续生效。
29
23
 
30
24
  **升级说明**
31
25
 
32
- 继续采用 Foundation 0.25.0 精确依赖,不能因为邻仓版本较新就升级。空白项目走 `release-setup`;已有配置保留合法字段,用 `release-assess` / `release-config` 做增量。先 `route`,不要无条件执行 `prepare --workflow config`。仅禁路径一类的 `config-only` 增量,离线非生产 `prepare` 可为 `PREPARED`,`workflowDecision` 为 `indeterminable` / `publish-needed`,这是合法结果。npm 是载荷渠道,入口缺失时失败关闭,错误为 `GATE_FAILED` / `npm-entry-closure` / `entry_missing`。旧版独立的 `release-skill` 市场已弃用,使用 `ifoohoo/skill-family-hub` 与 `release-skill@skill-family-hub`。
26
+ 使用 `release-skill@skill-family-hub` 提供的更新版 `release-finish` 入口,配合适用的冻结计划完成已有兼容插件的收尾。仅升级检查器无需重新发布该插件;若插件内容变更,仍需新冻结计划与匹配批准。`UPDATED` 或 `ALREADY_CURRENT` 仅表示安装载荷已通过检查,不表示运行中的宿主已加载。未观察到加载时,保留 `reload-pending` 状态。本机收尾失败不覆盖远端 `VERIFIED` 结果。旧版独立的 `release-skill` 市场已弃用,使用 `ifoohoo/skill-family-hub` 与 `release-skill@skill-family-hub`。
33
27
  <!-- release-skill:managed:end id=latest-release -->
34
28
 
35
29
  <!-- release-skill:capability:external-write-boundary -->
36
- > **当前边界:** v0.9.33 的能力范围与验证边界见本 README,
30
+ > **当前边界:** v0.9.35 的能力范围与验证边界见本 README,
37
31
  > 不代表已经发布、完成消费者安装验证或通过独立验收。
38
32
  > 版本可用性以对应发布记录及发布后验证结果为准。
39
33
  > v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
@@ -49,7 +43,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
49
43
  > 远端唯一性检查在 `publish` 全局预检执行。
50
44
 
51
45
  <!-- release-skill:capability:safe-first-command -->
52
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.33 的发布、消费者安装验证和独立验收状态须由该版本的发布记录及验证结果确认。**
46
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.35 的发布、消费者安装验证和独立验收状态须由该版本的发布记录及验证结果确认。**
53
47
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
54
48
  >
55
49
  > **第一条命令:**
@@ -507,6 +501,8 @@ releaseUnits:
507
501
  release-finish 在 `--root` 指定的当前发布项目根目录调用该入口,不再要求另行提供项目目录。
508
502
  两个配置彼此独立。
509
503
 
504
+ 可选的 `testIntake` 只声明要求文件和结果文件,并且只在生产 prepare 中生效。首次生产 prepare 保存一份非正式候选,返回 `NEEDS_INPUT`(`GATE_FAILED`,退出码 13),并给出 `candidatePath`、`candidateSha256` 和 `subjectDigest`,此时不写正式计划。用 `prepare --candidate <path>` 续接同一候选;适用的冻结前要求通过后才写入正式计划和 `PREPARED`。候选不能用于批准或发布,也不能清除 `PARTIAL`、`PUBLISHED` 或 `VERIFIED`。未声明 `testIntake` 的项目保持原有 hook、完整门和发布路径。docs、config、marketplace 工作流、单元选择和无需发布的配置都不免除项目级要求。非生产 prepare 拒绝 `testIntake`,错误码为 `CONFIG_INVALID`。可选的 `testAcceptance` 进入当前计划摘要。替换结果、准则、范围或允许的限制会使原批准失效。approve、publish 和 reconcile 在动作前复核这些原件。
505
+
510
506
  完整的本地收尾使用 `release-skill post-release --finish`。命令固定报告分支决定、宿主更新、实际加载、setup 和源码分支检查:全部适用步骤完成或明确跳过时退出 0,仍有待办时退出 2,确定失败时退出 1。智能体通过绝对路径的 `--finish-feedback` JSON 文件回传观察,文件必须绑定当前计划摘要、配置摘要和规范项目根目录。反馈只作为数据:脚本不执行其中字符串,也不把反馈当成新的写入授权。`--skip-local-hosts` 显示跳过宿主更新、加载和 setup,不得与 `--hosts` 或 `--update-local-hosts` 同时使用。
511
507
 
512
508
  `distributions` 是必填字段,但可以显式设为空数组。使用
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.33",
3
+ "version": "0.9.35",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"