release-skill 0.1.7 → 0.1.9

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 (64) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.kimi-plugin/plugin.json +27 -0
  5. package/CHANGELOG.md +56 -0
  6. package/INSTALL.md +73 -2
  7. package/INSTALL.zh-CN.md +94 -99
  8. package/README.md +65 -39
  9. package/README.zh-CN.md +92 -325
  10. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  11. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  12. package/adapters/claude/bin/release-skill.bundle.mjs +1114 -183
  13. package/adapters/claude/schemas/.render-manifest.json +4 -4
  14. package/adapters/claude/schemas/release-plan.schema.json +20 -2
  15. package/adapters/claude/schemas/release-project.schema.json +22 -4
  16. package/adapters/claude/schemas/release-run.schema.json +1 -0
  17. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  18. package/adapters/codex/bin/release-skill.bundle.mjs +1114 -183
  19. package/adapters/codex/schemas/.render-manifest.json +4 -4
  20. package/adapters/codex/schemas/release-plan.schema.json +20 -2
  21. package/adapters/codex/schemas/release-project.schema.json +22 -4
  22. package/adapters/codex/schemas/release-run.schema.json +1 -0
  23. package/adapters/kimi/.kimi-plugin/plugin.json +27 -0
  24. package/adapters/kimi/bin/release-skill.bundle.mjs +84467 -0
  25. package/adapters/kimi/bin/release-skill.mjs +54 -0
  26. package/adapters/kimi/native/safe-write/binding.gyp +41 -0
  27. package/adapters/kimi/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  28. package/adapters/kimi/native/safe-write/prebuilds.json +24 -0
  29. package/adapters/kimi/native/safe-write/src/safe_write.cc +2032 -0
  30. package/adapters/kimi/schemas/.render-manifest.json +37 -0
  31. package/adapters/kimi/schemas/approval-record.schema.json +115 -0
  32. package/adapters/kimi/schemas/artifact-lock.schema.json +111 -0
  33. package/adapters/kimi/schemas/artifact-plan.schema.json +52 -0
  34. package/adapters/kimi/schemas/artifact-policy.schema.json +76 -0
  35. package/adapters/kimi/schemas/evidence-event.schema.json +89 -0
  36. package/adapters/kimi/schemas/release-plan.schema.json +878 -0
  37. package/adapters/kimi/schemas/release-project.schema.json +895 -0
  38. package/adapters/kimi/schemas/release-run.schema.json +343 -0
  39. package/adapters/kimi/skills/release-assess/SKILL.md +58 -0
  40. package/adapters/kimi/skills/release-help/SKILL.md +84 -0
  41. package/adapters/kimi/skills/release-prepare/SKILL.md +99 -0
  42. package/adapters/kimi/skills/release-publish/SKILL.md +64 -0
  43. package/adapters/kimi/skills/release-reconcile/SKILL.md +80 -0
  44. package/adapters/kimi/skills/release-setup/SKILL.md +102 -0
  45. package/adapters/kimi/skills/release-verify/SKILL.md +77 -0
  46. package/bin/release-skill-cli.mjs +16 -4
  47. package/bin/release-skill.bundle.mjs +1114 -183
  48. package/package.json +4 -2
  49. package/schemas/.render-manifest.json +4 -4
  50. package/schemas/release-plan.schema.json +20 -2
  51. package/schemas/release-project.schema.json +22 -4
  52. package/schemas/release-run.schema.json +1 -0
  53. package/src/adapters/contract.mjs +1 -0
  54. package/src/adapters/plugin-marketplace.mjs +1109 -49
  55. package/src/commands/assess.mjs +50 -1
  56. package/src/commands/prepare.mjs +65 -0
  57. package/src/commands/publish.mjs +3 -0
  58. package/src/commands/reconcile.mjs +3 -0
  59. package/src/commands/setup.mjs +10 -5
  60. package/src/commands/verify.mjs +16 -6
  61. package/src/core/plan.mjs +118 -0
  62. package/src/core/verification-gates.mjs +1 -1
  63. package/src/producers/build-adapters.mjs +38 -8
  64. package/src/snapshot/frozen.mjs +4 -3
package/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  [简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.1.7 -->
6
- Release preparation for Claude Code and Codex, with human-edited files kept intact.
5
+ <!-- release-skill:release-version: 0.1.9 -->
6
+ Release preparation for Claude Code, 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,
9
9
  which checks still fail, and which exact bytes will reach users. It freezes the
@@ -11,38 +11,41 @@ reviewed artifacts first and publishes those same artifacts later; it does not
11
11
  regenerate a README or re-pack the live workspace at the last step.
12
12
 
13
13
  <!-- release-skill:managed:start id=latest-release -->
14
- **0.1.7** (2026-07-23)
15
-
16
- v0.1.7 is an organizational migration release. The public GitHub repository moves from `mzdbxqh/release-skill` to `ifoohoo/release-skill` (the repository name is unchanged and GitHub redirects the old URL), the project gains an explicit corporate maintainer and copyright holder (广州市风荷科技有限公司), and the forward-looking repository, maintainer, author, and copyright metadata across the npm package, plugin marketplace manifests, NOTICE, LICENSE, and release configuration are aligned with the new organization. The npm package name (`release-skill`) and the npm publishing identity (`publisher: mzdbxqh`) are unchanged, and the already-published v0.1.6 tag, GitHub Release, and npm version are not rewritten.
17
-
18
- **Changed**
19
-
20
- - **Public repository migrated to the `ifoohoo` organization**: the public
21
- GitHub repository is transferred from `mzdbxqh/release-skill` to
22
- `ifoohoo/release-skill` with the repository name unchanged. The default branch
23
- remains `main`, the v0.1.6 tag, release, and history are preserved, and the old
24
- URL redirects (HTTP 301) to the new location. The release configuration
25
- (`publicRepo` and the bound `previousPublicBaseline`) now points at
26
- `ifoohoo/release-skill` with the public v0.1.6 commit
27
- `48fb2a258a2786c2e32136ad67bd51f3a280b3b8` as the previous public baseline.
28
- - **Corporate maintainer and copyright**: the MIT LICENSE (root and public
29
- package) now carries a dual copyright line for the release-skill contributors
30
- and 广州市风荷科技有限公司, and the NOTICE states that the project is maintained
31
- by 广州市风荷科技有限公司 and clarifies that the GitHub repository transfer is an
32
- administrative hosting/identity change that does not by itself constitute a
33
- copyright assignment.
34
- - **Forward-looking metadata aligned with the organization**: the npm
35
- `package.json` repository, homepage, and issue tracker URLs point at
36
- `ifoohoo/release-skill`, and the package adds a corporate author while
37
- preserving the release-skill contributors. The Claude Code plugin marketplace
38
- owner now identifies the `ifoohoo` organization. The npm package name
39
- (`release-skill`) and the npm publishing identity (`publisher: mzdbxqh`) are
40
- unchanged.
14
+ **0.1.9** (2026-07-23)
15
+
16
+ v0.1.9 fixes a structural marketplace install verification failure: consumer installs that declare a plugin `source` subdirectory (e.g. `./adapters/claude`) now bind the installed payload to the declared subtree of the sealed whole-unit snapshot, and Claude's root `.in_use` marker is exempted as consumer-owned transport metadata. The sealed snapshot digest, release plan schema, and prepare-side freezing are unchanged, so already-frozen plans reconcile without re-approval. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
17
+
18
+ **Fixed**
19
+
20
+ - **Marketplace payload binding for subdirectory source layouts**: consumer
21
+ marketplaces may declare a plugin `source` subdirectory such as
22
+ `./adapters/claude`; the consumer CLI then installs only that subtree while
23
+ the sealed authority is the whole unit snapshot. Install verification now
24
+ revalidates the sealed whole-snapshot digest, re-reads the declared source
25
+ from the marketplace manifest inside the digest-verified snapshot entries,
26
+ and binds the installed payload to that prefix-stripped subtree. Root
27
+ layouts and Kimi keep the whole-tree comparison. This resolves the
28
+ flow-architect v0.4.1 and v0.5.0 PARTIAL marketplace install failures;
29
+ already-frozen plans reconcile unchanged because the sealed digest, plan
30
+ schema, and prepare-side freezing are untouched.
31
+ - **Claude `.in_use` transport marker exemption**: the Claude CLI writes an
32
+ empty `.in_use` marker into the plugin install root; it is now exempted as
33
+ consumer-owned transport metadata alongside the existing Codex/Kimi `.git`
34
+ exemption, through a single shared exclusion helper that also backs the
35
+ observe-time diagnostic fallback. Exemptions remain root-only: nested
36
+ markers, extra payload, byte tampering, and sealed authority tampering
37
+ still fail closed.
38
+ - **Regression coverage**: new protocol-level fake-CLI tests cover the
39
+ subdirectory claude cycle with `.in_use` (including byte-tamper,
40
+ extra-file, missing-file, `.git`-not-exempt, and nested-marker negatives),
41
+ fail-closed manifest anomalies (duplicate plugin entry, wrong marketplace
42
+ name, empty source projection), root-layout claude with `.in_use`, and a
43
+ codex subdirectory variant.
41
44
  <!-- release-skill:managed:end id=latest-release -->
42
45
 
43
46
  <!-- release-skill:capability:external-write-boundary -->
44
- > **Current boundary:** v0.1.7 is the current release (v0.1.6 previously held
45
- > this status after completing real production verification).
47
+ > **Current boundary:** v0.1.9 is the current release (v0.1.8 previously held
48
+ > published status before the marketplace payload binding fix was added).
46
49
  > v0.1.1 completed a real production release to GitHub and npm — the first
47
50
  > production-verified milestone — followed by
48
51
  > exact npm installation and Claude/Codex consumer installation verification
@@ -59,7 +62,7 @@ v0.1.7 is an organizational migration release. The public GitHub repository move
59
62
  > publish global preflight.
60
63
 
61
64
  <!-- release-skill:capability:safe-first-command -->
62
- > **Production path verified since the v0.1.1 milestone; v0.1.7 is the current
65
+ > **Production path verified since the v0.1.1 milestone; v0.1.9 is the current
63
66
  > release.** The npm-installed CLI is the supported user entry. Source checkout
64
67
  > is the development/contributor fallback.
65
68
  >
@@ -590,7 +593,18 @@ syntax.
590
593
  Production prepare seals a standalone Git commit/tree for every public snapshot
591
594
  and creates a fixed tarball for every npm unit. Publish globally preflights all
592
595
  actions, then executes and observes public branch, tag, npm, GitHub Release,
593
- and configured Claude/Codex marketplace installation checkpoints. `verify`
596
+ and configured Claude/Codex marketplace installation checkpoints. Kimi Code has
597
+ no scriptable install API, so its checkpoint **fails closed** and `publish`
598
+ lands in `PARTIAL` after the automated writes, emitting a version-pinned manual
599
+ install requirement. The operator then launches Kimi Code with the requirement's
600
+ isolated `KIMI_CODE_HOME`, runs the pinned `/plugins install <release-tag URL>`,
601
+ writes a trusted attestation (binding the frozen **plan** digest and the
602
+ snapshot **payload** digest) into the plan-digest-keyed directory
603
+ `.release-skill/kimi-attestations/<planDigest>/<plugin>/`, and re-runs
604
+ `reconcile` (→ `PUBLISHED`) and `verify` (→ `VERIFIED`); both read the
605
+ attestation from that same stable location. An install into the ordinary
606
+ `~/.kimi-code` is not accepted. See `INSTALL.md` for the full procedure and the
607
+ attestation JSON fields. `verify`
594
608
  installs every exact npm `package@version` in an isolated directory; when
595
609
  `smokeBin` is configured it also runs the CLI and validates output. Only when
596
610
  all evidence matches does the run reach `VERIFIED`.
@@ -705,8 +719,8 @@ target first; never widen the write scope to resolve them.
705
719
 
706
720
  ### Parent workspace with npm + plugin sub-units
707
721
 
708
- When a monorepo produces both an npm package and a Claude/Codex plugin from
709
- different directories, define separate release units. Only add a plugin
722
+ When a monorepo produces both an npm package and a Claude/Codex/Kimi Code
723
+ plugin from different directories, define separate release units. Only add a plugin
710
724
  distribution when the unit actually ships a plugin with manifest, marketplace,
711
725
  and entry Skill:
712
726
 
@@ -782,6 +796,10 @@ releaseUnits:
782
796
  marketplace: my-plugin
783
797
  entrySkill: my-plugin-help
784
798
  timeoutMs: 300000 # optional; range 30000-900000; default 300000
799
+ - type: kimi-plugin
800
+ plugin: my-plugin
801
+ entrySkill: my-plugin-help
802
+ timeoutMs: 300000 # optional; range 30000-900000; default 300000 (Kimi has no install command; bounds read-only verification)
785
803
  publicFiles:
786
804
  - from: packages/plugin/.claude-plugin/plugin.json
787
805
  to: .claude-plugin/plugin.json
@@ -792,6 +810,9 @@ releaseUnits:
792
810
  - from: packages/plugin/.codex-plugin/plugin.json
793
811
  to: .codex-plugin/plugin.json
794
812
  mode: preserve
813
+ - from: packages/plugin/.kimi-plugin/plugin.json
814
+ to: .kimi-plugin/plugin.json
815
+ mode: preserve
795
816
  - from: packages/plugin/.agents/plugins/marketplace.json
796
817
  to: .agents/plugins/marketplace.json
797
818
  mode: preserve
@@ -811,6 +832,7 @@ releaseUnits:
811
832
  - .claude-plugin/plugin.json
812
833
  - .claude-plugin/marketplace.json
813
834
  - .codex-plugin/plugin.json
835
+ - .kimi-plugin/plugin.json
814
836
  - .agents/plugins/marketplace.json
815
837
  - skills/my-plugin-help/SKILL.md
816
838
  - README.md
@@ -823,7 +845,8 @@ releaseUnits:
823
845
  releaseTitleTemplate: "{unit} {version}"
824
846
  ```
825
847
 
826
- Each plugin unit **must** list its Claude/Codex `plugin.json`, `marketplace.json`,
848
+ Each plugin unit **must** list its Claude/Codex/Kimi Code `plugin.json`, the
849
+ Claude/Codex `marketplace.json` files (Kimi Code has no marketplace manifest),
827
850
  the entry Skill, and all required public files. A CLI smoke (`smokeBin`) is
828
851
  optional for plugin units and only applies when the published npm package
829
852
  exposes a CLI binary.
@@ -887,7 +910,10 @@ Successful reconcile returns `PUBLISHED`, not `VERIFIED`; only the fresh
887
910
  - publishes only frozen Git objects and npm tarballs, then checks remote
888
911
  commit/tree/tag/integrity;
889
912
  - installs configured Claude/Codex plugins from the frozen Git ref and proves
890
- the entry Skill and payload digest in fresh isolated consumer homes;
913
+ the entry Skill and payload digest in fresh isolated consumer homes; for Kimi
914
+ Code (no scriptable install API) it emits a version-pinned manual install
915
+ requirement and proves the entry Skill and payload digest only from a trusted
916
+ attestation bound to the frozen plan digest;
891
917
  - distinguishes `PUBLISHED` (writes completed) from `VERIFIED` (remote and
892
918
  consumer installation evidence completed);
893
919
  - stops subsequent checkpoints on failure and writes a separate run record
@@ -954,8 +980,8 @@ the exact installed distribution; gates cannot borrow tests, development
954
980
  dependencies, or `node_modules` from the parent workspace.
955
981
 
956
982
  `snapshot-verify` runs in a disposable writable copy of the frozen public
957
- snapshot. `consumer-verify` runs from an exact isolated npm/Claude/Codex install
958
- root. Both use executable arrays instead of shell strings; definitions and
983
+ snapshot. `consumer-verify` runs from an exact isolated npm/Claude/Codex/Kimi
984
+ Code install root. Both use executable arrays instead of shell strings; definitions and
959
985
  results enter digest-bound evidence, and prepare/verify require
960
986
  `--acknowledge-gate-side-effects`. Gates are still project processes without a
961
987
  network sandbox, so release-skill cannot promise that they will not write files