@jtf19/vibecoding-kit 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -8,6 +8,13 @@ This project follows Semantic Versioning before 1.0 with the following interpret
8
8
  - Patch versions are for fixes, documentation improvements, and compatible release-check coverage.
9
9
  - Breaking changes before 1.0 are still called out explicitly when they affect installed layout, CLI arguments, JSON envelopes, or workflow skill contracts.
10
10
 
11
+ ## [0.1.1] - 2026-08-29
12
+
13
+ ### Fixed
14
+
15
+ - Added the `vibecoding-kit` npm bin alias so `npx @jtf19/vibecoding-kit ...` resolves correctly on Windows and other npm environments.
16
+ - Synchronized public install docs and release guidance with the scoped npm package name `@jtf19/vibecoding-kit`.
17
+
11
18
  ## [0.1.0] - 2026-08-03
12
19
 
13
20
  ### Added
package/README.md CHANGED
@@ -19,8 +19,8 @@ Vibecoding Kit 让 coding agent 以更安全、可验证的方式工作。
19
19
  如果你只是把 Vibecoding Kit 安装到业务项目,优先使用 `npx` 从 npm 临时执行 CLI:
20
20
 
21
21
  ```bash
22
- npx vibecoding-kit init --target ../my-project --platform cursor
23
- npx vibecoding-kit doctor --root ../my-project
22
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform cursor
23
+ npx @jtf19/vibecoding-kit doctor --root ../my-project
24
24
  ```
25
25
 
26
26
  `npx` 会执行发布包里的 `vibe` 命令,不会把 Vibecoding Kit 写入目标项目的依赖。
@@ -41,19 +41,19 @@ npx vibecoding-kit doctor --root ../my-project
41
41
  第一次安装建议先预览:
42
42
 
43
43
  ```bash
44
- npx vibecoding-kit init --target ../my-project --platform all --dry-run
44
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform all --dry-run
45
45
  ```
46
46
 
47
47
  已有 `CLAUDE.md` 或 `AGENTS.md` 时,先看合并预览:
48
48
 
49
49
  ```bash
50
- npx vibecoding-kit init --target ../my-project --platform auto --merge=preview
50
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform auto --merge=preview
51
51
  ```
52
52
 
53
53
  确认后追加 Vibecoding managed block:
54
54
 
55
55
  ```bash
56
- npx vibecoding-kit init --target ../my-project --platform auto --merge=append
56
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform auto --merge=append
57
57
  ```
58
58
 
59
59
  如果你正在维护本仓库或需要从源码运行,可以使用本地入口:
package/docs/install.md CHANGED
@@ -26,8 +26,8 @@ AGENTS.md # Cursor / Codex 入口,按平台生成
26
26
  如果你只是把 Vibecoding Kit 安装到业务项目,优先使用 `npx` 从 npm 临时执行 CLI:
27
27
 
28
28
  ```bash
29
- npx vibecoding-kit init --target ../my-project --platform cursor
30
- npx vibecoding-kit doctor --root ../my-project
29
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform cursor
30
+ npx @jtf19/vibecoding-kit doctor --root ../my-project
31
31
  ```
32
32
 
33
33
  `npx` 会执行发布包里的 `vibe` 命令,不会把 Vibecoding Kit 写入目标项目的依赖。
@@ -43,23 +43,23 @@ node bin/vibe.mjs doctor --root ../my-project
43
43
 
44
44
  | 平台 | 入口文件 | 安装命令 |
45
45
  | --- | --- | --- |
46
- | Claude | `CLAUDE.md` | `npx vibecoding-kit init --target ../my-project --platform claude` |
47
- | Cursor | `AGENTS.md` | `npx vibecoding-kit init --target ../my-project --platform cursor` |
48
- | Codex | `AGENTS.md` | `npx vibecoding-kit init --target ../my-project --platform codex` |
49
- | 全部 | `CLAUDE.md` + `AGENTS.md` | `npx vibecoding-kit init --target ../my-project --platform all` |
46
+ | Claude | `CLAUDE.md` | `npx @jtf19/vibecoding-kit init --target ../my-project --platform claude` |
47
+ | Cursor | `AGENTS.md` | `npx @jtf19/vibecoding-kit init --target ../my-project --platform cursor` |
48
+ | Codex | `AGENTS.md` | `npx @jtf19/vibecoding-kit init --target ../my-project --platform codex` |
49
+ | 全部 | `CLAUDE.md` + `AGENTS.md` | `npx @jtf19/vibecoding-kit init --target ../my-project --platform all` |
50
50
 
51
51
  ## 已有入口文件
52
52
 
53
53
  如果目标项目已有 `CLAUDE.md` 或 `AGENTS.md`,先预览:
54
54
 
55
55
  ```bash
56
- npx vibecoding-kit init --target ../my-project --platform auto --merge=preview
56
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform auto --merge=preview
57
57
  ```
58
58
 
59
59
  确认无冲突后追加 managed block:
60
60
 
61
61
  ```bash
62
- npx vibecoding-kit init --target ../my-project --platform auto --merge=append
62
+ npx @jtf19/vibecoding-kit init --target ../my-project --platform auto --merge=append
63
63
  ```
64
64
 
65
65
  Vibecoding 不会覆盖用户已有内容;只管理 `<!-- vibecoding:start -->` 到 `<!-- vibecoding:end -->` 之间的块。
@@ -67,7 +67,7 @@ Vibecoding 不会覆盖用户已有内容;只管理 `<!-- vibecoding:start -->
67
67
  ## 验证安装
68
68
 
69
69
  ```bash
70
- npx vibecoding-kit doctor --root ../my-project
70
+ npx @jtf19/vibecoding-kit doctor --root ../my-project
71
71
  ```
72
72
 
73
73
  `doctor` 使用 summary-first 输出:
@@ -83,9 +83,9 @@ npx vibecoding-kit doctor --root ../my-project
83
83
  安装后可以用 lifecycle 命令预览升级、修复或卸载。它们默认是 dry-run,不会写文件:
84
84
 
85
85
  ```bash
86
- npx vibecoding-kit update --root ../my-project --dry-run
87
- npx vibecoding-kit repair --root ../my-project --dry-run
88
- npx vibecoding-kit uninstall --root ../my-project --dry-run
86
+ npx @jtf19/vibecoding-kit update --root ../my-project --dry-run
87
+ npx @jtf19/vibecoding-kit repair --root ../my-project --dry-run
88
+ npx @jtf19/vibecoding-kit uninstall --root ../my-project --dry-run
89
89
  ```
90
90
 
91
91
  输出会先显示 `Impact summary` 和 `Safety boundary`,再按 `[planned]`、`[info]`、`[blocking]` 标注每个动作。只有确认计划符合预期时,才使用 `--confirm`。
@@ -4,7 +4,7 @@
4
4
 
5
5
  文档层级:L1 用户入口层。这里的命令用于安全观察和解释下一步;如果你要建立团队交付证据链,再进入 `docs/team-adoption.md`、`docs/evidence-authoring.md` 和 `docs/ci-evidence-onboarding.md`。
6
6
 
7
- 安装、doctor、update、repair 和 uninstall 等 CLI 命令可以按 `docs/install.md` 使用 `npx vibecoding-kit ...`。本页的 `tools/vibe-runtime/index.mjs` recipe 面向源码仓库内的只读 runtime 观察,仍使用本地源码路径。
7
+ 安装、doctor、update、repair 和 uninstall 等 CLI 命令可以按 `docs/install.md` 使用 `npx @jtf19/vibecoding-kit ...`。本页的 `tools/vibe-runtime/index.mjs` recipe 面向源码仓库内的只读 runtime 观察,仍使用本地源码路径。
8
8
 
9
9
  ## 1. 只读入口判断
10
10
 
@@ -7,8 +7,8 @@
7
7
  第一阶段发布物应满足:
8
8
 
9
9
  - 可被用户阅读:从 `README.md` 能进入安装、诊断、验收和示例路径。
10
- - 可被用户安装:通过 `node bin/vibe.mjs init` 安装到业务项目,或兼容使用 `tools/vibe-init/index.mjs`。
11
- - 可被用户复验:通过 `node bin/vibe.mjs doctor` 检查 repo layout installed layout,或兼容使用 `tools/vibe-doctor/index.mjs`。
10
+ - 可被用户安装:通过 `npx @jtf19/vibecoding-kit init` npm 安装到业务项目,或在源码仓库中通过 `node bin/vibe.mjs init` 本地安装。
11
+ - 可被用户复验:通过 `npx @jtf19/vibecoding-kit doctor` 检查 installed layout,或在源码仓库中通过 `node bin/vibe.mjs doctor` 检查 repo layout / installed layout
12
12
  - 可被维护者说明:明确哪些内容属于发布包,哪些内容只是参考或临时产物。
13
13
 
14
14
  ## 发布包应包含
@@ -46,7 +46,7 @@ examples/
46
46
  - `adapters/`:Claude、Codex、Cursor 平台适配文件。
47
47
  - `hooks/`:会话入口 bootstrap、handoff 检查和后续自动化预留。
48
48
  - `templates/`:安装到业务项目根目录的入口文件模板,以及产品发现、产品规格、UI contract、产品验收、场景验收、架构设计、交付追踪矩阵和 implementation plan artifact 模板。
49
- - `bin/` 和 `package.json`:无依赖 `vibe` CLI wrapper,负责路由到现有工具。
49
+ - `bin/` 和 `package.json`:无依赖 `vibe` CLI wrapper,负责路由到现有工具;npm 包名为 `@jtf19/vibecoding-kit`,并发布 `vibe` 与 `vibecoding-kit` 两个 bin 名,保证 `npx @jtf19/vibecoding-kit ...` 和安装后的 `vibe ...` 入口都可用。
50
50
  - `tools/`:无依赖 Node.js 工具,包括 `vibe-init`、`vibe-doctor`、`vibe-lifecycle`、`vibe-plugin-pack`、`vibe-compact`、`vibe-runtime-check`、`vibe-runtime` 和 `vibe-release-check`。
51
51
  - `docs/`:安装、验收、发布和实现说明。
52
52
  - `examples/`:平台最小接入示例说明、`examples/golden-path/` team-mode readiness demo、`examples/full-chain/` full compliance reference、`examples/ci/` CI evidence producer recipe,以及 runtime fixtures。`examples/runtime-fixtures/negative/` 保存只读负例输入,用于证明缺 architecture、traceability ref 不存在、test evidence 缺 `output_digest`、diff coverage 出现 `unexpected_files`、commit boundary 扩权、changed file 缺 task_ref、required task 未覆盖、operation mismatch、风险 task 缺测试证据时 release fast smoke 会得到 `ok=false`。
@@ -131,7 +131,47 @@ AGENTS.md
131
131
  - 默认安装不启用 runtime。
132
132
  - 平台插件安装不等同于项目级 `vibe init`。
133
133
  - `.cursor-plugin` / `.codex-plugin` / `.claude-plugin` 当前是 `vibe plugin pack` 生成的草案产物,不作为常驻手写副本进入源码事实来源。
134
- - 当前推荐入口是 `node bin/vibe.mjs init`、`node bin/vibe.mjs doctor`、`node bin/vibe.mjs repair --dry-run`、`node bin/vibe.mjs uninstall --dry-run` 和 `node bin/vibe.mjs plugin pack --platform all --out .tmp/vibe-plugins --check`;原 `node tools/vibe-init/index.mjs` 和 `node tools/vibe-doctor/index.mjs` 继续作为兼容入口。
134
+ - 当前推荐的 npm 用户入口是 `npx @jtf19/vibecoding-kit init`、`npx @jtf19/vibecoding-kit doctor`、`npx @jtf19/vibecoding-kit repair --dry-run` 和 `npx @jtf19/vibecoding-kit uninstall --dry-run`。源码仓库维护入口是 `node bin/vibe.mjs init`、`node bin/vibe.mjs doctor`、`node bin/vibe.mjs repair --dry-run`、`node bin/vibe.mjs uninstall --dry-run` 和 `node bin/vibe.mjs plugin pack --platform all --out .tmp/vibe-plugins --check`;原 `node tools/vibe-init/index.mjs` 和 `node tools/vibe-doctor/index.mjs` 继续作为兼容入口。
135
+
136
+ ## npm 发布步骤
137
+
138
+ 当前公开 npm 包名是 `@jtf19/vibecoding-kit`,必须作为 public scoped package 发布。发布前确认 `package.json` 包含:
139
+
140
+ ```json
141
+ {
142
+ "name": "@jtf19/vibecoding-kit",
143
+ "bin": {
144
+ "vibe": "./bin/vibe.mjs",
145
+ "vibecoding-kit": "./bin/vibe.mjs"
146
+ },
147
+ "publishConfig": {
148
+ "access": "public"
149
+ }
150
+ }
151
+ ```
152
+
153
+ `vibecoding-kit` bin alias 是 npx smoke 的兼容入口;不要只保留 `vibe`,否则 `npx @jtf19/vibecoding-kit ...` 在部分 npm 环境中可能无法解析到命令。
154
+
155
+ 发布前运行:
156
+
157
+ ```bash
158
+ npm run release:fast
159
+ npm run release:install
160
+ npm run pack:dry-run
161
+ ```
162
+
163
+ 发布命令:
164
+
165
+ ```bash
166
+ npm publish --access public --registry=https://registry.npmjs.org/
167
+ ```
168
+
169
+ 发布后验证:
170
+
171
+ ```bash
172
+ npm view @jtf19/vibecoding-kit version --registry=https://registry.npmjs.org/
173
+ npx --yes @jtf19/vibecoding-kit --help
174
+ ```
135
175
 
136
176
  ## 标准验证脚本
137
177
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jtf19/vibecoding-kit",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Workflow skills and install tooling for safe, evidence-driven coding agents.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -24,7 +24,8 @@
24
24
  "evidence"
25
25
  ],
26
26
  "bin": {
27
- "vibe": "./bin/vibe.mjs"
27
+ "vibe": "./bin/vibe.mjs",
28
+ "vibecoding-kit": "./bin/vibe.mjs"
28
29
  },
29
30
  "files": [
30
31
  "AGENTS.md",
@@ -1,6 +1,12 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
 
4
+ const expectedPackageName = '@jtf19/vibecoding-kit';
5
+ const expectedBinEntries = Object.freeze({
6
+ vibe: './bin/vibe.mjs',
7
+ 'vibecoding-kit': './bin/vibe.mjs',
8
+ });
9
+
4
10
  const requiredPackageFiles = [
5
11
  'package.json',
6
12
  'README.md',
@@ -51,7 +57,25 @@ function normalizePackagePath(value) {
51
57
  return String(value || '').replaceAll('\\\\', '/').replaceAll('\\', '/');
52
58
  }
53
59
 
60
+ function assertPackageEntryContract(packageJson) {
61
+ if (packageJson.name !== expectedPackageName) {
62
+ throw new Error(`package.json name must be ${expectedPackageName} for public npm npx entry`);
63
+ }
64
+
65
+ if (!/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(String(packageJson.version || ''))) {
66
+ throw new Error('package.json version must be a valid semver-like version for npm publication');
67
+ }
68
+
69
+ const bin = packageJson.bin || {};
70
+ for (const [name, target] of Object.entries(expectedBinEntries)) {
71
+ if (bin[name] !== target) {
72
+ throw new Error(`package.json bin.${name} must point to ${target}`);
73
+ }
74
+ }
75
+ }
76
+
54
77
  function assertPackageMetadata(packageJson) {
78
+ assertPackageEntryContract(packageJson);
55
79
  if (packageJson.private === true) throw new Error('package.json must not set private=true for npm publication');
56
80
  if (packageJson.license !== 'Apache-2.0') throw new Error('package.json license must be Apache-2.0');
57
81
  if (!packageJson.repository?.url) throw new Error('package.json repository.url is required');