release-skill 0.1.6 → 0.1.8

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 (65) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codex-plugin/plugin.json +4 -4
  4. package/.kimi-plugin/plugin.json +27 -0
  5. package/CHANGELOG.md +53 -0
  6. package/INSTALL.md +73 -2
  7. package/INSTALL.zh-CN.md +94 -99
  8. package/LICENSE +1 -0
  9. package/NOTICE +10 -0
  10. package/README.md +53 -81
  11. package/README.zh-CN.md +86 -352
  12. package/adapters/claude/.claude-plugin/marketplace.json +3 -3
  13. package/adapters/claude/.claude-plugin/plugin.json +2 -2
  14. package/adapters/claude/bin/release-skill.bundle.mjs +1061 -182
  15. package/adapters/claude/schemas/.render-manifest.json +4 -4
  16. package/adapters/claude/schemas/release-plan.schema.json +20 -2
  17. package/adapters/claude/schemas/release-project.schema.json +22 -4
  18. package/adapters/claude/schemas/release-run.schema.json +1 -0
  19. package/adapters/codex/.codex-plugin/plugin.json +4 -4
  20. package/adapters/codex/bin/release-skill.bundle.mjs +1061 -182
  21. package/adapters/codex/schemas/.render-manifest.json +4 -4
  22. package/adapters/codex/schemas/release-plan.schema.json +20 -2
  23. package/adapters/codex/schemas/release-project.schema.json +22 -4
  24. package/adapters/codex/schemas/release-run.schema.json +1 -0
  25. package/adapters/kimi/.kimi-plugin/plugin.json +27 -0
  26. package/adapters/kimi/bin/release-skill.bundle.mjs +84415 -0
  27. package/adapters/kimi/bin/release-skill.mjs +54 -0
  28. package/adapters/kimi/native/safe-write/binding.gyp +41 -0
  29. package/adapters/kimi/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  30. package/adapters/kimi/native/safe-write/prebuilds.json +24 -0
  31. package/adapters/kimi/native/safe-write/src/safe_write.cc +2032 -0
  32. package/adapters/kimi/schemas/.render-manifest.json +37 -0
  33. package/adapters/kimi/schemas/approval-record.schema.json +115 -0
  34. package/adapters/kimi/schemas/artifact-lock.schema.json +111 -0
  35. package/adapters/kimi/schemas/artifact-plan.schema.json +52 -0
  36. package/adapters/kimi/schemas/artifact-policy.schema.json +76 -0
  37. package/adapters/kimi/schemas/evidence-event.schema.json +89 -0
  38. package/adapters/kimi/schemas/release-plan.schema.json +878 -0
  39. package/adapters/kimi/schemas/release-project.schema.json +895 -0
  40. package/adapters/kimi/schemas/release-run.schema.json +343 -0
  41. package/adapters/kimi/skills/release-assess/SKILL.md +58 -0
  42. package/adapters/kimi/skills/release-help/SKILL.md +84 -0
  43. package/adapters/kimi/skills/release-prepare/SKILL.md +99 -0
  44. package/adapters/kimi/skills/release-publish/SKILL.md +64 -0
  45. package/adapters/kimi/skills/release-reconcile/SKILL.md +80 -0
  46. package/adapters/kimi/skills/release-setup/SKILL.md +102 -0
  47. package/adapters/kimi/skills/release-verify/SKILL.md +77 -0
  48. package/bin/release-skill-cli.mjs +16 -4
  49. package/bin/release-skill.bundle.mjs +1061 -182
  50. package/package.json +15 -5
  51. package/schemas/.render-manifest.json +4 -4
  52. package/schemas/release-plan.schema.json +20 -2
  53. package/schemas/release-project.schema.json +22 -4
  54. package/schemas/release-run.schema.json +1 -0
  55. package/src/adapters/contract.mjs +1 -0
  56. package/src/adapters/plugin-marketplace.mjs +990 -30
  57. package/src/commands/assess.mjs +50 -1
  58. package/src/commands/prepare.mjs +65 -0
  59. package/src/commands/publish.mjs +3 -0
  60. package/src/commands/reconcile.mjs +3 -0
  61. package/src/commands/setup.mjs +10 -5
  62. package/src/commands/verify.mjs +16 -6
  63. package/src/core/plan.mjs +118 -0
  64. package/src/core/verification-gates.mjs +1 -1
  65. package/src/producers/build-adapters.mjs +38 -8
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.6 -->
6
- Release preparation for Claude Code and Codex, with human-edited files kept intact.
5
+ <!-- release-skill:release-version: 0.1.8 -->
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,80 +11,29 @@ 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.6** (2026-07-22)
15
-
16
- v0.1.6 is a release-preparation snapshot that closes the release-docs automation loop. A single structured release-notes source drives deterministic, multilingual CHANGELOG and README refresh behind a two-phase, digest-bound write protocol and a prepare-time documentation freshness gate, while terminal transaction receipts are bounded and the CLI lifecycle, path safety, and error-output redaction are hardened.
17
-
18
- **Added**
19
-
20
- - **Structured release-notes-driven document refresh (`docs refresh`)**: a single
21
- structured release-notes source (`release-notes/0.1.6.yaml`) now drives
22
- deterministic, multilingual refresh of the managed CHANGELOG and README
23
- regions. Refresh runs as a two-phase protocol: a read-only planning phase
24
- renders every candidate and freezes an `inputDigest` (binding the canonical
25
- notes and the notes-source bytes) plus a `refreshDigest` (binding the protocol
26
- version, unit, version, configuration projection, and per-file old/new
27
- digests), and a separate write phase commits the changed targets only when all
28
- three authorizations are present (`--write`, an exact `--confirm-refresh
29
- <refreshDigest>` match, and `--ack-local-document-write`). The write phase
30
- re-plans under the exclusive lock; a diverging digest converges to
31
- `RELEASE_DOCS_REFRESH_STALE` with zero writes, and a clean plan is a zero-write
32
- no-op. A prepare-time documentation freshness gate makes version drift between
33
- the package version and the public docs fail closed before a release plan is
34
- frozen.
35
- - **Bounded terminal transaction receipts with recovery safety**: terminal
36
- (committed / rolled-back) transactions now persist a summary-only receipt
37
- instead of full payload, capped at 256 KB per receipt
38
- (`TERMINAL_RECEIPT_SIZE_CAP`), under a retention cap of 50 terminal records
39
- (`DEFAULT_TRANSACTION_RETENTION_MAX`). Retention pruning only ever removes
40
- terminal records and never prunes `RECOVERY_CONFLICT` records or any
41
- non-terminal (recovery-relevant) record, so recovery evidence is preserved even
42
- when the count cap is reached; a retention failure never aborts an in-flight
43
- commit.
44
- - **Strict `docs refresh` parameter validation (fail closed)**: the `docs`
45
- command validates every parameter before invoking the refresh service, so
46
- precise stable parameter errors surface even without project configuration or a
47
- safe-fs backend. The `--flag=value` equals form routes through exactly the same
48
- validation as the space-separated form; duplicated flags fail closed with
49
- `DUPLICATE_PARAMETER` before any service call, config read, lock, or
50
- transaction; and bare positional arguments and single-dash flags (such as `-w`)
51
- are rejected as unrecognized. Write-authorization flags supplied without
52
- `--write`, or `--write` without its full authorizations, fail closed with
53
- precise reasons rather than silently proceeding.
54
-
55
- **Fixed**
56
-
57
- - **Bundle entry lifecycle settles with real exit codes**: the self-contained
58
- bundle now owns the command lifecycle. Its entry awaits command completion and
59
- exits with the real business exit code for success, business errors, handled
60
- async rejections, and unknown commands, so the launcher no longer leaves an
61
- unsettled top-level await (Node exit code 13). When the bundle is missing or
62
- cannot be evaluated, the launcher fails closed with static text only and never
63
- interpolates machine-specific paths, usernames, or host layout, because
64
- module-load failure messages carry absolute paths.
65
- - **Fail-closed path canonicalization with stable diagnostics**: artifact path
66
- canonicalization requires POSIX separators and rejects absolute paths in POSIX
67
- (`/`), Windows drive-letter, and UNC spellings, along with traversal, Windows
68
- reserved device names, and colons, failing closed with `PATH_UNSAFE` rather
69
- than normalizing an unsafe spelling into a different public path. Error-output
70
- redaction now distinguishes real filesystem paths from strict RFC 6901 JSON
71
- Pointer diagnostic coordinates (such as `/units/0/version`): absolute
72
- POSIX/Windows/UNC paths collapse to a stable `<redacted-path>` placeholder
73
- while diagnostic pointers are preserved verbatim, keeping failures diagnosable
74
- without leaking host paths.
75
- - **Self public-boundary redaction**: the centralized redaction authority
76
- (`core/redact.mjs`) now closes the self public boundary so runtime error
77
- outputs and detail structures never carry the release-skill workspace's own
78
- absolute path, nor the macOS `Users`, Linux home, macOS `private`/`var` alias,
79
- temp, or CI checkout realms. Redaction runs fail-closed through the
80
- `ReleaseError` choke point: any two-or-more-segment `/`-led token that is not a
81
- strict diagnostic JSON Pointer is replaced with `<redacted-path>`, so
82
- self-releasing never leaks private filesystem layout into public outputs.
14
+ **0.1.8** (2026-07-23)
15
+
16
+ v0.1.8 adds Kimi Code as a first-class plugin host without rewriting the already-published v0.1.7 artifacts. Kimi delivery uses a generated self-contained adapter and a fail-closed, plan-bound manual installation attestation because Kimi Code has no scriptable non-interactive plugin installation interface. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
17
+
18
+ **Changed**
19
+
20
+ - **Kimi Code plugin delivery and verification**: v0.1.8 adds the root
21
+ `.kimi-plugin/plugin.json`, a generated self-contained `adapters/kimi/` bundle,
22
+ and public installation guidance. Because Kimi Code exposes no scriptable
23
+ non-interactive plugin installation interface, production publish emits a
24
+ version-pinned manual installation requirement and enters `PARTIAL`; an
25
+ isolated `KIMI_CODE_HOME` installation and a trusted attestation bound
26
+ independently to the frozen plan digest and payload digest are required before
27
+ `reconcile` can reach `PUBLISHED` and `verify` can reach `VERIFIED`.
28
+ - **Immutable v0.1.7 history preserved**: the existing v0.1.7 Git tag,
29
+ GitHub Release, npm version, and public commit remain untouched. The v0.1.8
30
+ production plan binds the published v0.1.7 commit
31
+ `fe5897456d4166a2ec60e99405836b122562b80d` as its previous public baseline.
83
32
  <!-- release-skill:managed:end id=latest-release -->
84
33
 
85
34
  <!-- release-skill:capability:external-write-boundary -->
86
- > **Current boundary:** v0.1.6 is the current release (v0.1.5 previously held
87
- > this status after completing real production verification).
35
+ > **Current boundary:** v0.1.8 is the current release (v0.1.7 previously held
36
+ > published status before the Kimi Code distribution was added).
88
37
  > v0.1.1 completed a real production release to GitHub and npm — the first
89
38
  > production-verified milestone — followed by
90
39
  > exact npm installation and Claude/Codex consumer installation verification
@@ -101,7 +50,7 @@ v0.1.6 is a release-preparation snapshot that closes the release-docs automation
101
50
  > publish global preflight.
102
51
 
103
52
  <!-- release-skill:capability:safe-first-command -->
104
- > **Production path verified since the v0.1.1 milestone; v0.1.6 is the current
53
+ > **Production path verified since the v0.1.1 milestone; v0.1.8 is the current
105
54
  > release.** The npm-installed CLI is the supported user entry. Source checkout
106
55
  > is the development/contributor fallback.
107
56
  >
@@ -632,7 +581,18 @@ syntax.
632
581
  Production prepare seals a standalone Git commit/tree for every public snapshot
633
582
  and creates a fixed tarball for every npm unit. Publish globally preflights all
634
583
  actions, then executes and observes public branch, tag, npm, GitHub Release,
635
- and configured Claude/Codex marketplace installation checkpoints. `verify`
584
+ and configured Claude/Codex marketplace installation checkpoints. Kimi Code has
585
+ no scriptable install API, so its checkpoint **fails closed** and `publish`
586
+ lands in `PARTIAL` after the automated writes, emitting a version-pinned manual
587
+ install requirement. The operator then launches Kimi Code with the requirement's
588
+ isolated `KIMI_CODE_HOME`, runs the pinned `/plugins install <release-tag URL>`,
589
+ writes a trusted attestation (binding the frozen **plan** digest and the
590
+ snapshot **payload** digest) into the plan-digest-keyed directory
591
+ `.release-skill/kimi-attestations/<planDigest>/<plugin>/`, and re-runs
592
+ `reconcile` (→ `PUBLISHED`) and `verify` (→ `VERIFIED`); both read the
593
+ attestation from that same stable location. An install into the ordinary
594
+ `~/.kimi-code` is not accepted. See `INSTALL.md` for the full procedure and the
595
+ attestation JSON fields. `verify`
636
596
  installs every exact npm `package@version` in an isolated directory; when
637
597
  `smokeBin` is configured it also runs the CLI and validates output. Only when
638
598
  all evidence matches does the run reach `VERIFIED`.
@@ -747,8 +707,8 @@ target first; never widen the write scope to resolve them.
747
707
 
748
708
  ### Parent workspace with npm + plugin sub-units
749
709
 
750
- When a monorepo produces both an npm package and a Claude/Codex plugin from
751
- different directories, define separate release units. Only add a plugin
710
+ When a monorepo produces both an npm package and a Claude/Codex/Kimi Code
711
+ plugin from different directories, define separate release units. Only add a plugin
752
712
  distribution when the unit actually ships a plugin with manifest, marketplace,
753
713
  and entry Skill:
754
714
 
@@ -824,6 +784,10 @@ releaseUnits:
824
784
  marketplace: my-plugin
825
785
  entrySkill: my-plugin-help
826
786
  timeoutMs: 300000 # optional; range 30000-900000; default 300000
787
+ - type: kimi-plugin
788
+ plugin: my-plugin
789
+ entrySkill: my-plugin-help
790
+ timeoutMs: 300000 # optional; range 30000-900000; default 300000 (Kimi has no install command; bounds read-only verification)
827
791
  publicFiles:
828
792
  - from: packages/plugin/.claude-plugin/plugin.json
829
793
  to: .claude-plugin/plugin.json
@@ -834,6 +798,9 @@ releaseUnits:
834
798
  - from: packages/plugin/.codex-plugin/plugin.json
835
799
  to: .codex-plugin/plugin.json
836
800
  mode: preserve
801
+ - from: packages/plugin/.kimi-plugin/plugin.json
802
+ to: .kimi-plugin/plugin.json
803
+ mode: preserve
837
804
  - from: packages/plugin/.agents/plugins/marketplace.json
838
805
  to: .agents/plugins/marketplace.json
839
806
  mode: preserve
@@ -853,6 +820,7 @@ releaseUnits:
853
820
  - .claude-plugin/plugin.json
854
821
  - .claude-plugin/marketplace.json
855
822
  - .codex-plugin/plugin.json
823
+ - .kimi-plugin/plugin.json
856
824
  - .agents/plugins/marketplace.json
857
825
  - skills/my-plugin-help/SKILL.md
858
826
  - README.md
@@ -865,7 +833,8 @@ releaseUnits:
865
833
  releaseTitleTemplate: "{unit} {version}"
866
834
  ```
867
835
 
868
- Each plugin unit **must** list its Claude/Codex `plugin.json`, `marketplace.json`,
836
+ Each plugin unit **must** list its Claude/Codex/Kimi Code `plugin.json`, the
837
+ Claude/Codex `marketplace.json` files (Kimi Code has no marketplace manifest),
869
838
  the entry Skill, and all required public files. A CLI smoke (`smokeBin`) is
870
839
  optional for plugin units and only applies when the published npm package
871
840
  exposes a CLI binary.
@@ -929,7 +898,10 @@ Successful reconcile returns `PUBLISHED`, not `VERIFIED`; only the fresh
929
898
  - publishes only frozen Git objects and npm tarballs, then checks remote
930
899
  commit/tree/tag/integrity;
931
900
  - installs configured Claude/Codex plugins from the frozen Git ref and proves
932
- the entry Skill and payload digest in fresh isolated consumer homes;
901
+ the entry Skill and payload digest in fresh isolated consumer homes; for Kimi
902
+ Code (no scriptable install API) it emits a version-pinned manual install
903
+ requirement and proves the entry Skill and payload digest only from a trusted
904
+ attestation bound to the frozen plan digest;
933
905
  - distinguishes `PUBLISHED` (writes completed) from `VERIFIED` (remote and
934
906
  consumer installation evidence completed);
935
907
  - stops subsequent checkpoints on failure and writes a separate run record
@@ -996,8 +968,8 @@ the exact installed distribution; gates cannot borrow tests, development
996
968
  dependencies, or `node_modules` from the parent workspace.
997
969
 
998
970
  `snapshot-verify` runs in a disposable writable copy of the frozen public
999
- snapshot. `consumer-verify` runs from an exact isolated npm/Claude/Codex install
1000
- root. Both use executable arrays instead of shell strings; definitions and
971
+ snapshot. `consumer-verify` runs from an exact isolated npm/Claude/Codex/Kimi
972
+ Code install root. Both use executable arrays instead of shell strings; definitions and
1001
973
  results enter digest-bound evidence, and prepare/verify require
1002
974
  `--acknowledge-gate-side-effects`. Gates are still project processes without a
1003
975
  network sandbox, so release-skill cannot promise that they will not write files