release-skill 0.2.0 → 0.2.2
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +10 -0
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +35 -0
- package/INSTALL.md +186 -4
- package/INSTALL.zh-CN.md +166 -4
- package/README.md +116 -13
- package/README.zh-CN.md +73 -13
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +1718 -600
- package/adapters/claude/schemas/release-plan.schema.json +44 -2
- package/adapters/claude/schemas/release-project.schema.json +46 -4
- package/adapters/claude/schemas/release-run.schema.json +1 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +1718 -600
- package/adapters/codex/schemas/release-plan.schema.json +44 -2
- package/adapters/codex/schemas/release-project.schema.json +46 -4
- package/adapters/codex/schemas/release-run.schema.json +1 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +1718 -600
- package/adapters/kimi/schemas/release-plan.schema.json +44 -2
- package/adapters/kimi/schemas/release-project.schema.json +46 -4
- package/adapters/kimi/schemas/release-run.schema.json +1 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +12 -0
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +86481 -0
- package/adapters/workbuddy/bin/release-skill.mjs +54 -0
- package/adapters/workbuddy/native/safe-write/binding.gyp +41 -0
- package/adapters/workbuddy/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
- package/adapters/workbuddy/native/safe-write/prebuilds.json +24 -0
- package/adapters/workbuddy/native/safe-write/src/safe_write.cc +2032 -0
- package/adapters/workbuddy/schemas/.render-manifest.json +37 -0
- package/adapters/workbuddy/schemas/approval-record.schema.json +115 -0
- package/adapters/workbuddy/schemas/artifact-lock.schema.json +111 -0
- package/adapters/workbuddy/schemas/artifact-plan.schema.json +52 -0
- package/adapters/workbuddy/schemas/artifact-policy.schema.json +76 -0
- package/adapters/workbuddy/schemas/evidence-event.schema.json +89 -0
- package/adapters/workbuddy/schemas/release-plan.schema.json +924 -0
- package/adapters/workbuddy/schemas/release-project.schema.json +951 -0
- package/adapters/workbuddy/schemas/release-run.schema.json +344 -0
- package/adapters/workbuddy/skills/release-assess/SKILL.md +51 -0
- package/adapters/workbuddy/skills/release-help/SKILL.md +77 -0
- package/adapters/workbuddy/skills/release-prepare/SKILL.md +92 -0
- package/adapters/workbuddy/skills/release-publish/SKILL.md +57 -0
- package/adapters/workbuddy/skills/release-reconcile/SKILL.md +73 -0
- package/adapters/workbuddy/skills/release-setup/SKILL.md +95 -0
- package/adapters/workbuddy/skills/release-verify/SKILL.md +70 -0
- package/bin/release-skill-cli.mjs +46 -4
- package/bin/release-skill.bundle.mjs +1718 -600
- package/package.json +2 -1
- package/references/02-project-config.md +7 -0
- package/references/06-adapter-contract.md +21 -2
- package/schemas/release-plan.schema.json +44 -2
- package/schemas/release-project.schema.json +46 -4
- package/schemas/release-run.schema.json +1 -0
- package/scripts/sync-public-files.mjs +27 -4
- package/src/adapters/contract.mjs +1 -0
- package/src/adapters/plugin-marketplace.mjs +536 -23
- package/src/commands/assess.mjs +50 -1
- package/src/commands/prepare.mjs +273 -9
- package/src/commands/publish.mjs +1 -0
- package/src/commands/reconcile.mjs +1 -0
- package/src/commands/setup.mjs +7 -3
- package/src/commands/verify.mjs +2 -0
- package/src/core/checkpoints.mjs +7 -2
- package/src/core/plan.mjs +97 -4
- package/src/core/verification-gates.mjs +1 -1
- package/src/platforms/codebuddy.mjs +618 -0
- package/src/platforms/registry.mjs +100 -5
- package/src/producers/build-adapters.mjs +48 -6
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "release-skill",
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "广州市风荷科技有限公司"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"skills": "./adapters/workbuddy/skills/"
|
|
10
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
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.2.
|
|
22
|
+
"Prepare a release plan for version 0.2.2.",
|
|
23
23
|
"Help me understand the release workflow."
|
|
24
24
|
]
|
|
25
25
|
}
|
package/.kimi-plugin/plugin.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.2.2 locale=en baseline=sha256:3208d6a99e84307e77201bb42f88030caac232a3bcbf0942e5747e1934c5c658 -->
|
|
4
|
+
## [0.2.2] - 2026-07-26
|
|
5
|
+
|
|
6
|
+
v0.2.2 closes the CodeBuddy platform distribution loop and adds the external independent marketplace distribution form. CodeBuddy/WorkBuddy joins the publish/reconcile/verify pipeline through a human attestation closed loop isomorphic to kimi: because the codebuddy CLI cannot pin a frozen ref (no ref option; installs track the default branch/latest), the execute phase writes a manual install requirement (never execs the CLI), and observe/verify consume a structured human attestation with read-only install-point validation — missing, expired, mismatched, or path-escaping attestations all fail closed, at the same severity as kimi (post-publish verification cannot be waived). The external marketplace form lets a distribution declare `marketplaceRepo` so prepare freezes the external marketplace HEAD online (codex hard-frozen to a commit sha, claude weak-frozen to its default branch name) with frozen-sha and index-entry integrity checks, and plugin-marketplace gains matching preflight/observe branches under the `external-marketplace-v1` payload contract while the inline/kimi/codebuddy/legacy branches stay byte-for-byte unchanged. Installation docs (en + zh-CN) are unified on the independent marketplace `ifoohoo/artifact-skill-set` primary path. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- **CodeBuddy platform human attestation closed loop**: CodeBuddy/WorkBuddy joins the release pipeline (`publish`/`reconcile`/`verify`) via a human attestation closed loop isomorphic to kimi. The codebuddy CLI's marketplace add/install cannot pin a frozen ref (no ref option; installs track the default branch/`latest`, measured), so the automated install checkpoint cannot guarantee frozen-artifact identity. Execute writes a manual install requirement and never execs the CLI; observe/verify consume a structured human attestation and read-only-validate the install point. Missing, expired, mismatched, or path-escaping attestations all fail closed, at the same severity as kimi (post-publish verification cannot be waived). Two measured install channels: desktop installs through the WorkBuddy desktop unified marketplace `artifact-skill-set` (`installPath` must contain the `/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/<plugin>` tail segment, segment-checked); cli runs the bundled CLI under an isolated `HOME=<authorityDir>/codebuddy-home` (`installPath` must be contained in that isolated home's marketplace plugin root). Attestations carry `installChannel` + `marketplace` fields and are validated per channel. Pipeline routing: platform id `codebuddy`, distributionType `codebuddy-plugin`, actionType `codebuddy-marketplace-install`, Tier 3 (same tier as kimi); the build adapter keeps its historical directory name `workbuddy` (`adapters/workbuddy/`, `.codebuddy-plugin/plugin.json` manifest, bytes unchanged).
|
|
11
|
+
- **External independent marketplace distribution form**: a distribution declaring `marketplaceRepo` enables the external form. The prepare production loop freezes the external marketplace HEAD online via `git ls-remote --symref` (codex hard-frozen to a commit sha, claude weak-frozen to its default branch name) and validates the external index entry via `gh api` (name match, exactly one entry, `entry.version == target version` for the claude form); declaring the external form while offline fails closed, and the external repository is strictly read-only. Frozen actions carry `repo=marketplaceRepo`, `ref=add-ref`, `marketplaceCommitSha`, `marketplaceLocation=external`, `payloadContract=external-marketplace-v1`; `snapshotPath`/`manifestDigest` still bind this unit's frozen snapshot (payload authority unchanged). Plan integrity gains an external branch (repo match, `marketplaceLocation`, 40-hex `marketplaceCommitSha`, ref structure safety); kimi/codebuddy with `marketplaceRepo` fail closed. `plugin-marketplace` gains external preflight/observe branches: `external-marketplace-v1` uses the same whole-tree containment semantics as `declared-manifest-v1` (authority is `.`, host-added paths recorded as `extraInstalledPaths` rather than failing); preflight skips the in-snapshot marketplace segment and reads the plugin manifest from the snapshot root, validating name/version and the frozen fields; observe reuses the existing strategy for install-side entry comparison (weak-frozen claude version drift fails closed). Inline/kimi/codebuddy/legacy/`declared-manifest-v1` branches are byte-for-byte unchanged.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **Installation docs unified on the marketplace primary path (en + zh-CN)**: README and INSTALL (all four documents) now route plugin installation through the independent marketplace `ifoohoo/artifact-skill-set` as the primary path, and the READMEs add a workflow overview and platform distribution description. Standards and public references (`standards/06-adapter-contract.md`, `references/06-adapter-contract.md`) are synchronized to the codebuddy attestation form and the external marketplace form with its ordering constraints.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **CodeBuddy plugin manifest `skills` field is now an array**: the `.codebuddy-plugin/plugin.json` manifest's `skills` field is emitted as an array, matching the CodeBuddy host's expected shape.
|
|
20
|
+
- **`verificationGate` scope distribution enum includes `codebuddy-plugin`**: `release-project.schema.json` adds `codebuddy-plugin` to the `verificationGate.scope.distribution` enum (mirroring the existing `kimi-plugin` rule), keeping the schema and the runtime gate whitelist consistent; the embedded schema copies in all four adapters are rebuilt to match.
|
|
21
|
+
<!-- release-skill:changelog:end version=0.2.2 locale=en -->
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<!-- release-skill:changelog:start version=0.2.1 locale=en baseline=sha256:7d616df824b1d28f9939ef181d6a5d5928d3e0f0455974bebb356c742992ac81 -->
|
|
25
|
+
## [0.2.1] - 2026-07-25
|
|
26
|
+
|
|
27
|
+
v0.2.1 adds a fourth platform adapter — workbuddy (CodeBuddy/WorkBuddy plugin) — using a build-only distribution model. The build-adapters generator and platform registry now register workbuddy alongside claude, codex, and kimi, producing a self-contained adapter directory at `adapters/workbuddy/` with a `.codebuddy-plugin/plugin.json` manifest, bundled CLI entry, native prebuilds, schemas, and skills. The sync-public-files and sync-version scripts cover the new manifest, and the adapter-contract standard documents build-only distribution. README and INSTALL (en + zh-CN) register the CodeBuddy installation entry. Installation is manual — the automated marketplace install checkpoint does not cover CodeBuddy yet.
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- **WorkBuddy/CodeBuddy build-only distribution adapter**: new fourth platform adapter `workbuddy` registered in the platform registry and build-adapters generator. The generated self-contained adapter directory (`adapters/workbuddy/`) ships a `.codebuddy-plugin/plugin.json` manifest, a bundled CLI entry (`bin/release-skill.bundle.mjs`), native safe-write prebuilds, JSON schemas, and the full skill set. Skills resolve the CLI entry via `${CODEBUDDY_PLUGIN_ROOT}`, which CodeBuddy expands inline.
|
|
32
|
+
- **Build-only distribution model in adapter-contract standard**: both the parent `standards/06-adapter-contract.md` and the public `references/06-adapter-contract.md` now document the build-only distribution scope — the adapter is generated and self-contained, installation is manual, and the automated preflight/execute/observe/verify marketplace checkpoint is not yet wired for CodeBuddy.
|
|
33
|
+
- **sync-public-files and sync-version coverage for `.codebuddy-plugin`**: the `sync-public-files.mjs` script now validates the `.codebuddy-plugin/plugin.json` manifest as a public asset, and `sync-version.mjs` propagates the package version into it. The build-adapters generator produces workbuddy artifacts alongside the existing three platforms.
|
|
34
|
+
- **README and INSTALL registration (en + zh-CN)**: all four public documents (README.md, README.zh-CN.md, INSTALL.md, INSTALL.zh-CN.md) now list the CodeBuddy/WorkBuddy adapter, its manual installation path, and the scope limitation that the automated marketplace install checkpoint does not yet cover CodeBuddy.
|
|
35
|
+
<!-- release-skill:changelog:end version=0.2.1 locale=en -->
|
|
36
|
+
|
|
37
|
+
|
|
3
38
|
<!-- release-skill:changelog:start version=0.2.0 locale=en baseline=sha256:cc9236e620cdb2d9eef6fede00c54095bf0cc0ccdfeb9c1e584f063ff3af7e23 -->
|
|
4
39
|
## [0.2.0] - 2026-07-25
|
|
5
40
|
|
package/INSTALL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.2.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.2 -->
|
|
6
6
|
## Prerequisites
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 or later
|
|
@@ -35,6 +35,80 @@ release-skill help
|
|
|
35
35
|
|
|
36
36
|
You should see the version number and the list of available commands.
|
|
37
37
|
|
|
38
|
+
## Install as a plugin (unified marketplace — recommended)
|
|
39
|
+
|
|
40
|
+
All four supported plugin hosts install release-skill from the unified
|
|
41
|
+
marketplace [ifoohoo/artifact-skill-set](https://github.com/ifoohoo/artifact-skill-set),
|
|
42
|
+
which publishes the Claude Code, CodeBuddy/WorkBuddy, Codex, and Kimi Code
|
|
43
|
+
manifests for the same release. Add the marketplace once, then install the
|
|
44
|
+
plugin:
|
|
45
|
+
|
|
46
|
+
> **External independent marketplace model.** `ifoohoo/artifact-skill-set` is an
|
|
47
|
+
> external independent marketplace: the plugin repository
|
|
48
|
+
> (`ifoohoo/release-skill`) carries only the plugin manifest
|
|
49
|
+
> (`.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, …), while the
|
|
50
|
+
> marketplace index (`marketplace.json`) is centralized in the external
|
|
51
|
+
> marketplace repository. When a release unit's plugin distribution declares
|
|
52
|
+
> `marketplaceRepo`, `prepare --online --production` freezes the external
|
|
53
|
+
> marketplace HEAD — Codex pins the commit sha (strong freeze), Claude pins the
|
|
54
|
+
> default branch name (weak freeze) — and verifies the installed payload against
|
|
55
|
+
> the unit's own frozen snapshot whole-tree (contract `external-marketplace-v1`).
|
|
56
|
+
>
|
|
57
|
+
> **Release ordering (marketplace before plugin).** Because the install targets
|
|
58
|
+
> the external marketplace, the marketplace index must be versioned and published
|
|
59
|
+
> **first** — its `release-skill` entry version must equal the target release
|
|
60
|
+
> version (the Claude form verifies this entry) — before
|
|
61
|
+
> `prepare --online --production` can freeze a marketplace sha that contains that
|
|
62
|
+
> entry. See `references/06-adapter-contract.md` §2.3/§2.4.
|
|
63
|
+
|
|
64
|
+
**Claude Code** (interactive session):
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
/plugin marketplace add ifoohoo/artifact-skill-set
|
|
68
|
+
/plugin install release-skill@artifact-skill-set
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**CodeBuddy / WorkBuddy:**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
codebuddy plugin marketplace add ifoohoo/artifact-skill-set
|
|
75
|
+
codebuddy plugin install release-skill@artifact-skill-set
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
WorkBuddy desktop installs only through a registered marketplace: after the
|
|
79
|
+
`marketplace add` above, install `release-skill` from the plugin panel.
|
|
80
|
+
|
|
81
|
+
**OpenAI Codex:**
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
codex plugin marketplace add ifoohoo/artifact-skill-set
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Then install `release-skill` from the interactive `/plugins` browser.
|
|
88
|
+
|
|
89
|
+
**Kimi Code** (interactive session):
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
/plugins marketplace https://raw.githubusercontent.com/ifoohoo/artifact-skill-set/main/kimi-marketplace.json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Or point `KIMI_CODE_PLUGIN_MARKETPLACE_URL` at the same URL before launching.
|
|
96
|
+
Then install `release-skill` from the `/plugins` panel.
|
|
97
|
+
|
|
98
|
+
### Alternative: direct repository install (advanced)
|
|
99
|
+
|
|
100
|
+
The unified marketplace above is the supported primary path. Direct
|
|
101
|
+
installation from the release repository remains available for advanced
|
|
102
|
+
scenarios:
|
|
103
|
+
|
|
104
|
+
- Claude Code: `/plugin marketplace add ifoohoo/release-skill`, then
|
|
105
|
+
`/plugin install release-skill@release-skill`.
|
|
106
|
+
- Kimi Code: the version-pinned `/plugins install <release-tag URL>` documented
|
|
107
|
+
in the [Kimi Code section](#install-as-a-kimi-code-plugin) below.
|
|
108
|
+
- CodeBuddy: single-session use directly from a source checkout via
|
|
109
|
+
`--plugin-dir <path>/adapters/workbuddy` (see the
|
|
110
|
+
[CodeBuddy/WorkBuddy section](#install-as-a-codebuddyworkbuddy-plugin)).
|
|
111
|
+
|
|
38
112
|
## Install as a Kimi Code plugin
|
|
39
113
|
|
|
40
114
|
Kimi Code is a supported plugin host alongside Claude Code and Codex. The
|
|
@@ -42,6 +116,11 @@ Kimi Code plugin manifest lives at `.kimi-plugin/plugin.json`, mirroring
|
|
|
42
116
|
`.claude-plugin/plugin.json` and `.codex-plugin/plugin.json`, and the package
|
|
43
117
|
ships `adapters/kimi/` next to `adapters/claude/` and `adapters/codex/`.
|
|
44
118
|
|
|
119
|
+
For day-to-day installation, prefer the
|
|
120
|
+
[unified marketplace path](#install-as-a-plugin-unified-marketplace--recommended)
|
|
121
|
+
above. The remainder of this section documents the version-pinned manual
|
|
122
|
+
closed loop that release-skill's own publish/verify pipeline relies on.
|
|
123
|
+
|
|
45
124
|
Kimi Code has an interactive plugin marketplace but **no scriptable,
|
|
46
125
|
non-interactive install API**. release-skill therefore models Kimi installation
|
|
47
126
|
as a version-pinned **manual** install plus trusted observation/attestation:
|
|
@@ -68,7 +147,7 @@ as a version-pinned **manual** install plus trusted observation/attestation:
|
|
|
68
147
|
default branch), confirm the trust prompt, then reload:
|
|
69
148
|
|
|
70
149
|
```
|
|
71
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.
|
|
150
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.2
|
|
72
151
|
/plugins reload
|
|
73
152
|
```
|
|
74
153
|
|
|
@@ -83,10 +162,10 @@ as a version-pinned **manual** install plus trusted observation/attestation:
|
|
|
83
162
|
{
|
|
84
163
|
"consumer": "kimi",
|
|
85
164
|
"plugin": "release-skill",
|
|
86
|
-
"version": "0.2.
|
|
165
|
+
"version": "0.2.2",
|
|
87
166
|
"entrySkill": "release-help",
|
|
88
167
|
"repo": "ifoohoo/release-skill",
|
|
89
|
-
"ref": "release-skill-v0.2.
|
|
168
|
+
"ref": "release-skill-v0.2.2",
|
|
90
169
|
"installPath": "<kimiCodeHome>/plugins/managed/release-skill",
|
|
91
170
|
"planDigest": "<64-hex frozen plan digest>",
|
|
92
171
|
"payloadDigest": "<64-hex frozen snapshot payload digest>",
|
|
@@ -106,6 +185,109 @@ attested `installPath` must resolve inside the requirement's isolated
|
|
|
106
185
|
`KIMI_CODE_HOME` managed root, otherwise verification fails closed and the Kimi
|
|
107
186
|
unit never reaches `VERIFIED`.
|
|
108
187
|
|
|
188
|
+
## Install as a CodeBuddy/WorkBuddy plugin
|
|
189
|
+
|
|
190
|
+
CodeBuddy (desktop product WorkBuddy) is a supported plugin host alongside
|
|
191
|
+
Claude Code, Codex, and Kimi Code. The package ships a generated, self-contained
|
|
192
|
+
CodeBuddy/WorkBuddy adapter at `adapters/workbuddy/`, next to `adapters/claude/`,
|
|
193
|
+
`adapters/codex/`, and `adapters/kimi/`. Its manifest lives at
|
|
194
|
+
`.codebuddy-plugin/plugin.json` (the components — `skills/`, `bin/`, `schemas/`,
|
|
195
|
+
`native/` — sit at the plugin root, per the CodeBuddy plugin reference), and its
|
|
196
|
+
skills resolve the CLI entry via `${CODEBUDDY_PLUGIN_ROOT}`, which CodeBuddy
|
|
197
|
+
expands inline like Claude Code expands `${CLAUDE_PLUGIN_ROOT}`. The build
|
|
198
|
+
adapter directory is named `workbuddy` while the platform / distribution id is
|
|
199
|
+
`codebuddy`; the two names refer to the same target.
|
|
200
|
+
|
|
201
|
+
For day-to-day installation, prefer the
|
|
202
|
+
[unified marketplace path](#install-as-a-plugin-unified-marketplace--recommended)
|
|
203
|
+
above. The remainder of this section documents the manual attestation closed loop
|
|
204
|
+
that release-skill's own publish/verify pipeline relies on.
|
|
205
|
+
|
|
206
|
+
The codebuddy CLI can add a marketplace and install a plugin, but **neither
|
|
207
|
+
`plugin marketplace add` nor `plugin install` accepts a ref option** — the install
|
|
208
|
+
tracks the marketplace default branch / latest. An automated install checkpoint
|
|
209
|
+
therefore cannot guarantee the frozen artifact's identity, so release-skill models
|
|
210
|
+
CodeBuddy installation as a **manual** install plus trusted observation/
|
|
211
|
+
attestation (the same capability gap and closed loop as Kimi Code):
|
|
212
|
+
`publish`/`verify` never auto-install CodeBuddy plugins. The closed loop is:
|
|
213
|
+
|
|
214
|
+
1. `publish` performs the automated writes (Git branch/tag, npm, GitHub
|
|
215
|
+
Release), then reaches the `codebuddy-marketplace-install` checkpoint. Because
|
|
216
|
+
the install cannot pin a frozen ref, that checkpoint **fails closed** and the
|
|
217
|
+
run lands in `PARTIAL` — the successful automated writes are NOT undone. The
|
|
218
|
+
checkpoint observation (and the requirement file below) names both install
|
|
219
|
+
channels, the unified marketplace, the isolated CLI home, and the attestation
|
|
220
|
+
path.
|
|
221
|
+
2. Read the requirement at
|
|
222
|
+
`<root>/.release-skill/codebuddy-attestations/<planDigest>/<plugin>/release-skill-codebuddy-manual-install.json`.
|
|
223
|
+
3. Install release-skill from the unified marketplace `artifact-skill-set`
|
|
224
|
+
(https://github.com/ifoohoo/artifact-skill-set) through ONE of two channels:
|
|
225
|
+
|
|
226
|
+
**Primary path (WorkBuddy desktop):** install release-skill from the plugin
|
|
227
|
+
panel, then confirm `~/.workbuddy/settings.json` `enabledPlugins` contains
|
|
228
|
+
`"release-skill@artifact-skill-set": true`. The plugin lands at
|
|
229
|
+
`~/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill/`.
|
|
230
|
+
|
|
231
|
+
**Alternate path (bundled codebuddy CLI, isolatable):** run the CLI with the
|
|
232
|
+
**isolated** home from the requirement so the clone lands inside it (do not use
|
|
233
|
+
your ordinary `~/.codebuddy`):
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
HOME="<codebuddyHome>" <codebuddy binary> plugin marketplace add https://github.com/ifoohoo/artifact-skill-set
|
|
237
|
+
HOME="<codebuddyHome>" <codebuddy binary> plugin install release-skill@artifact-skill-set
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
The CLI ships with WorkBuddy.app (macOS known path
|
|
241
|
+
`/Applications/WorkBuddy.app/Contents/Resources/app.asar.unpacked/cli/bin/codebuddy`).
|
|
242
|
+
The plugin lands at
|
|
243
|
+
`<codebuddyHome>/.codebuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill/`.
|
|
244
|
+
4. **Ref limitation warning:** a codebuddy install tracks the marketplace default
|
|
245
|
+
branch and CANNOT be pinned to the frozen ref. Before writing the attestation
|
|
246
|
+
you MUST confirm the installed plugin manifest version equals the frozen
|
|
247
|
+
version `0.2.1`; otherwise do NOT issue an attestation.
|
|
248
|
+
5. Write the attestation JSON to
|
|
249
|
+
`<root>/.release-skill/codebuddy-attestations/<planDigest>/<plugin>/release-skill-codebuddy-attestation.json`.
|
|
250
|
+
`planDigest` MUST be the frozen **plan** digest; `payloadDigest` MUST be the
|
|
251
|
+
frozen snapshot **payload** digest; `installChannel` MUST be `"desktop"` or
|
|
252
|
+
`"cli"`; `marketplace` MUST be `artifact-skill-set`; `installPath` MUST be the
|
|
253
|
+
actual installed plugin directory for the chosen channel; `attestedAt` must not
|
|
254
|
+
be in the future and `expiresAt` must be within 24 hours of `attestedAt`.
|
|
255
|
+
Example:
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"consumer": "codebuddy",
|
|
260
|
+
"plugin": "release-skill",
|
|
261
|
+
"version": "0.2.2",
|
|
262
|
+
"entrySkill": "release-help",
|
|
263
|
+
"repo": "ifoohoo/release-skill",
|
|
264
|
+
"ref": "release-skill-v0.2.2",
|
|
265
|
+
"marketplace": "artifact-skill-set",
|
|
266
|
+
"installChannel": "desktop",
|
|
267
|
+
"installPath": "~/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill",
|
|
268
|
+
"planDigest": "<64-hex frozen plan digest>",
|
|
269
|
+
"payloadDigest": "<64-hex frozen snapshot payload digest>",
|
|
270
|
+
"attestedBy": "<person responsible>",
|
|
271
|
+
"attestedAt": "2026-07-23T00:00:00.000Z",
|
|
272
|
+
"expiresAt": "2026-07-23T12:00:00.000Z"
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
6. Run `release-skill reconcile --run <publish-run>` (promotes `PARTIAL` →
|
|
277
|
+
`PUBLISHED`) and then `release-skill verify --run <reconcile-run>` (→
|
|
278
|
+
`VERIFIED`). Both read the attestation from the same plan-digest-keyed
|
|
279
|
+
directory, so their fresh run directories do not lose the proof.
|
|
280
|
+
|
|
281
|
+
For the cli channel, installing into the ordinary `~/.codebuddy` is **not**
|
|
282
|
+
acceptable proof: the attested `installPath` must resolve inside the requirement's
|
|
283
|
+
isolated `<codebuddyHome>` managed root, otherwise verification fails closed and
|
|
284
|
+
the CodeBuddy unit never reaches `VERIFIED`. (The desktop channel uses the real
|
|
285
|
+
`~/.workbuddy` marketplace layout above, which IS the well-known proof layout.)
|
|
286
|
+
|
|
287
|
+
For a single session from a source checkout you can also point CodeBuddy at the
|
|
288
|
+
generated plugin directory with `--plugin-dir <path>/adapters/workbuddy`; the
|
|
289
|
+
adapter never references files outside its own directory.
|
|
290
|
+
|
|
109
291
|
## Development Install (Local Checkout)
|
|
110
292
|
|
|
111
293
|
For development or when working from source:
|
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.2.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.2 -->
|
|
6
6
|
## 前置条件
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 或更高版本
|
|
@@ -32,6 +32,73 @@ release-skill help
|
|
|
32
32
|
|
|
33
33
|
输出中应包含版本号和可用命令列表。
|
|
34
34
|
|
|
35
|
+
## 安装为插件(统一市场——推荐)
|
|
36
|
+
|
|
37
|
+
四种受支持的插件宿主都从统一市场
|
|
38
|
+
[ifoohoo/artifact-skill-set](https://github.com/ifoohoo/artifact-skill-set)
|
|
39
|
+
安装 release-skill;该市场为同一发布版本提供 Claude Code、
|
|
40
|
+
CodeBuddy/WorkBuddy、Codex 与 Kimi Code 四份清单。先添加一次市场,再安装
|
|
41
|
+
插件:
|
|
42
|
+
|
|
43
|
+
> **外部独立市场形态。** `ifoohoo/artifact-skill-set` 是一个外部独立市场:
|
|
44
|
+
> 插件仓库(`ifoohoo/release-skill`)只含 plugin 清单
|
|
45
|
+
>(`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 等),marketplace
|
|
46
|
+
> 索引(`marketplace.json`)则集中于外部市场仓库。当发布单元的插件 distribution
|
|
47
|
+
> 声明 `marketplaceRepo` 时,`prepare --online --production` 会冻结外部市场
|
|
48
|
+
> HEAD——Codex 钉 commit sha(强冻结)、Claude 钉默认分支名(弱冻结)——并以
|
|
49
|
+
> 本单元自身冻结快照整树校验安装载荷(契约 `external-marketplace-v1`)。
|
|
50
|
+
>
|
|
51
|
+
> **发布时序(先市场后插件)。** 由于安装目标是外部市场,marketplace 索引必须
|
|
52
|
+
> **先**定版并发布——其 `release-skill` 条目版本须等于目标发布版本(claude 形态
|
|
53
|
+
> 会校验该条目)——之后 `prepare --online --production` 才能冻结到含该条目的市场
|
|
54
|
+
> sha。详见 `references/06-adapter-contract.md` §2.3/§2.4。
|
|
55
|
+
|
|
56
|
+
**Claude Code**(交互会话中):
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
/plugin marketplace add ifoohoo/artifact-skill-set
|
|
60
|
+
/plugin install release-skill@artifact-skill-set
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**CodeBuddy / WorkBuddy:**
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
codebuddy plugin marketplace add ifoohoo/artifact-skill-set
|
|
67
|
+
codebuddy plugin install release-skill@artifact-skill-set
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
WorkBuddy 桌面端只能通过已注册的市场安装:执行上面的 `marketplace add`
|
|
71
|
+
之后,在插件面板中安装 `release-skill`。
|
|
72
|
+
|
|
73
|
+
**OpenAI Codex:**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
codex plugin marketplace add ifoohoo/artifact-skill-set
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
然后在交互式 `/plugins` 浏览器中安装 `release-skill`。
|
|
80
|
+
|
|
81
|
+
**Kimi Code**(交互会话中):
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
/plugins marketplace https://raw.githubusercontent.com/ifoohoo/artifact-skill-set/main/kimi-marketplace.json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
或在启动前把 `KIMI_CODE_PLUGIN_MARKETPLACE_URL` 指向同一 URL。然后在
|
|
88
|
+
`/plugins` 面板中安装 `release-skill`。
|
|
89
|
+
|
|
90
|
+
### 备选:直接从仓库安装(进阶)
|
|
91
|
+
|
|
92
|
+
上面的统一市场是受支持的主路径。直接从发布仓库安装仍可用于进阶场景:
|
|
93
|
+
|
|
94
|
+
- Claude Code:`/plugin marketplace add ifoohoo/release-skill`,然后
|
|
95
|
+
`/plugin install release-skill@release-skill`。
|
|
96
|
+
- Kimi Code:下文 [Kimi Code 小节](#安装为-kimi-code-插件)中版本钉死的
|
|
97
|
+
`/plugins install <release-tag URL>`。
|
|
98
|
+
- CodeBuddy:源码检出后通过 `--plugin-dir <path>/adapters/workbuddy`
|
|
99
|
+
单会话使用(见
|
|
100
|
+
[CodeBuddy/WorkBuddy 小节](#安装为-codebuddyworkbuddy-插件))。
|
|
101
|
+
|
|
35
102
|
## 安装为 Kimi Code 插件
|
|
36
103
|
|
|
37
104
|
Kimi Code 是与 Claude Code 和 Codex 并列的受支持插件宿主。Kimi Code 插件
|
|
@@ -39,6 +106,10 @@ Kimi Code 是与 Claude Code 和 Codex 并列的受支持插件宿主。Kimi Cod
|
|
|
39
106
|
`.codex-plugin/plugin.json` 对应;包内同时提供 `adapters/kimi/`,与
|
|
40
107
|
`adapters/claude/`、`adapters/codex/` 并列。
|
|
41
108
|
|
|
109
|
+
日常安装请优先使用上文的
|
|
110
|
+
[统一市场路径](#安装为插件统一市场推荐)。本节其余部分记录的是
|
|
111
|
+
release-skill 自身 publish/verify 流水线所依赖的“版本钉死手动闭环”。
|
|
112
|
+
|
|
42
113
|
Kimi Code 有交互式插件市场,但**没有可脚本化的非交互安装接口**。因此
|
|
43
114
|
release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观测/人工证明”:
|
|
44
115
|
`publish`/`verify` 从不对 Kimi 执行自动安装。完整闭环如下:
|
|
@@ -62,7 +133,7 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
62
133
|
它会安装最新 release 或默认分支),确认信任提示后重新加载:
|
|
63
134
|
|
|
64
135
|
```
|
|
65
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.
|
|
136
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.2
|
|
66
137
|
/plugins reload
|
|
67
138
|
```
|
|
68
139
|
|
|
@@ -76,10 +147,10 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
76
147
|
{
|
|
77
148
|
"consumer": "kimi",
|
|
78
149
|
"plugin": "release-skill",
|
|
79
|
-
"version": "0.2.
|
|
150
|
+
"version": "0.2.2",
|
|
80
151
|
"entrySkill": "release-help",
|
|
81
152
|
"repo": "ifoohoo/release-skill",
|
|
82
|
-
"ref": "release-skill-v0.2.
|
|
153
|
+
"ref": "release-skill-v0.2.2",
|
|
83
154
|
"installPath": "<kimiCodeHome>/plugins/managed/release-skill",
|
|
84
155
|
"planDigest": "<64 位十六进制冻结计划摘要>",
|
|
85
156
|
"payloadDigest": "<64 位十六进制冻结快照载荷摘要>",
|
|
@@ -98,6 +169,97 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
98
169
|
必须解析到 requirement 给出的隔离 `KIMI_CODE_HOME` managed 根之内,否则验证
|
|
99
170
|
失败关闭,Kimi 单元绝不进入 `VERIFIED`。
|
|
100
171
|
|
|
172
|
+
## 安装为 CodeBuddy/WorkBuddy 插件
|
|
173
|
+
|
|
174
|
+
CodeBuddy(桌面端产品 WorkBuddy)是与 Claude Code、Codex、Kimi Code 并列的受支持
|
|
175
|
+
插件宿主。本包随 `adapters/claude/`、`adapters/codex/`、`adapters/kimi/` 一并提供
|
|
176
|
+
生成的自包含 CodeBuddy/WorkBuddy 适配器 `adapters/workbuddy/`。其清单位于
|
|
177
|
+
`.codebuddy-plugin/plugin.json`(组件——`skills/`、`bin/`、`schemas/`、
|
|
178
|
+
`native/`——按 CodeBuddy 插件规范位于插件根目录),技能通过
|
|
179
|
+
`${CODEBUDDY_PLUGIN_ROOT}` 解析 CLI 入口;CodeBuddy 会像 Claude Code 展开
|
|
180
|
+
`${CLAUDE_PLUGIN_ROOT}` 一样内联展开该变量。build adapter 目录名为 `workbuddy`,
|
|
181
|
+
而平台 / 分发 id 为 `codebuddy`,两个名字指向同一目标。
|
|
182
|
+
|
|
183
|
+
日常安装请优先使用上文的
|
|
184
|
+
[统一市场路径](#安装为插件统一市场推荐)。本节其余部分记录的是
|
|
185
|
+
release-skill 自身 publish/verify 流水线所依赖的“手动安装 + 可信证明闭环”。
|
|
186
|
+
|
|
187
|
+
codebuddy CLI 可以添加市场并安装插件,但 **`plugin marketplace add` 与
|
|
188
|
+
`plugin install` 均无 ref 选项**——安装会跟踪市场默认分支 / latest。因此自动化
|
|
189
|
+
安装检查点无法保证冻结产物的同一性,release-skill 把 CodeBuddy 安装建模为
|
|
190
|
+
“**手动**安装 + 可信观测/人工证明”(与 Kimi Code 相同的能力缺口与闭环):
|
|
191
|
+
`publish`/`verify` 从不对 CodeBuddy 执行自动安装。完整闭环如下:
|
|
192
|
+
|
|
193
|
+
1. `publish` 先完成自动化写入(Git branch/tag、npm、GitHub Release),随后
|
|
194
|
+
到达 `codebuddy-marketplace-install` 检查点。由于安装无法钉死冻结 ref,该
|
|
195
|
+
检查点**失败关闭**,整个 run 落入 `PARTIAL`——已成功的自动化写入**不会**被撤销。
|
|
196
|
+
检查点输出(以及下面的 requirement 文件)会给出两个安装通道、统一市场、
|
|
197
|
+
隔离的 CLI home 与证明写入路径。
|
|
198
|
+
2. 读取 requirement:
|
|
199
|
+
`<root>/.release-skill/codebuddy-attestations/<planDigest>/<plugin>/release-skill-codebuddy-manual-install.json`。
|
|
200
|
+
3. 经**两个通道之一**从统一市场 `artifact-skill-set`
|
|
201
|
+
(https://github.com/ifoohoo/artifact-skill-set)安装 release-skill:
|
|
202
|
+
|
|
203
|
+
**主路径(WorkBuddy 桌面端):** 从插件面板安装 release-skill,然后确认
|
|
204
|
+
`~/.workbuddy/settings.json` 的 `enabledPlugins` 含
|
|
205
|
+
`"release-skill@artifact-skill-set": true`。插件落点为
|
|
206
|
+
`~/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill/`。
|
|
207
|
+
|
|
208
|
+
**备选路径(捆绑的 codebuddy CLI,可隔离):** 用 requirement 给出的**隔离**
|
|
209
|
+
home 运行 CLI,使克隆落在其中(不要使用你日常的 `~/.codebuddy`):
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
HOME="<codebuddyHome>" <codebuddy 二进制> plugin marketplace add https://github.com/ifoohoo/artifact-skill-set
|
|
213
|
+
HOME="<codebuddyHome>" <codebuddy 二进制> plugin install release-skill@artifact-skill-set
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
CLI 随 WorkBuddy.app 捆绑(macOS 已知路径
|
|
217
|
+
`/Applications/WorkBuddy.app/Contents/Resources/app.asar.unpacked/cli/bin/codebuddy`)。
|
|
218
|
+
插件落点为
|
|
219
|
+
`<codebuddyHome>/.codebuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill/`。
|
|
220
|
+
4. **ref 限制警告:** codebuddy 安装跟踪市场默认分支,**无法**钉死到冻结 ref。
|
|
221
|
+
写出证明之前,必须核实已安装插件清单版本等于冻结版本 `0.2.1`;否则**不得**
|
|
222
|
+
出具证明。
|
|
223
|
+
5. 把证明 JSON 写入
|
|
224
|
+
`<root>/.release-skill/codebuddy-attestations/<planDigest>/<plugin>/release-skill-codebuddy-attestation.json`。
|
|
225
|
+
`planDigest` 必须是冻结**计划**摘要;`payloadDigest` 必须是冻结快照**载荷**
|
|
226
|
+
摘要;`installChannel` 必须是 `"desktop"` 或 `"cli"`;`marketplace` 必须是
|
|
227
|
+
`artifact-skill-set`;`installPath` 必须是所选通道的实际安装目录;
|
|
228
|
+
`attestedAt` 不得为未来时间,`expiresAt` 必须在 `attestedAt` 之后 24 小时内。
|
|
229
|
+
示例:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"consumer": "codebuddy",
|
|
234
|
+
"plugin": "release-skill",
|
|
235
|
+
"version": "0.2.2",
|
|
236
|
+
"entrySkill": "release-help",
|
|
237
|
+
"repo": "ifoohoo/release-skill",
|
|
238
|
+
"ref": "release-skill-v0.2.2",
|
|
239
|
+
"marketplace": "artifact-skill-set",
|
|
240
|
+
"installChannel": "desktop",
|
|
241
|
+
"installPath": "~/.workbuddy/plugins/marketplaces/artifact-skill-set/plugins/release-skill",
|
|
242
|
+
"planDigest": "<64 位十六进制冻结计划摘要>",
|
|
243
|
+
"payloadDigest": "<64 位十六进制冻结快照载荷摘要>",
|
|
244
|
+
"attestedBy": "<责任人>",
|
|
245
|
+
"attestedAt": "2026-07-23T00:00:00.000Z",
|
|
246
|
+
"expiresAt": "2026-07-23T12:00:00.000Z"
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
6. 运行 `release-skill reconcile --run <publish-run>`(把 `PARTIAL` 提升为
|
|
251
|
+
`PUBLISHED`),再运行 `release-skill verify --run <reconcile-run>`(→
|
|
252
|
+
`VERIFIED`)。两者都从同一个按计划摘要命名的目录读取证明,因此它们各自的
|
|
253
|
+
新 run 目录不会丢失该证明。
|
|
254
|
+
|
|
255
|
+
对 cli 通道而言,把插件安装到日常的 `~/.codebuddy` **不**构成有效证明:证明中的
|
|
256
|
+
`installPath` 必须解析到 requirement 给出的隔离 `<codebuddyHome>` managed 根之内,
|
|
257
|
+
否则验证失败关闭,CodeBuddy 单元绝不进入 `VERIFIED`。(desktop 通道使用上文真实的
|
|
258
|
+
`~/.workbuddy` 市场布局,那本身就是公认的有效证明布局。)
|
|
259
|
+
|
|
260
|
+
源码检出后也可以用 `--plugin-dir <path>/adapters/workbuddy` 把 CodeBuddy 指向
|
|
261
|
+
生成的插件目录做单会话使用;适配器不引用自身目录之外的任何文件。
|
|
262
|
+
|
|
101
263
|
## 开发安装(本地源码)
|
|
102
264
|
|
|
103
265
|
用于开发或尚未公开发布的源码候选:
|