@byh3071/vhk 0.8.1 โ 1.0.0
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/README.md +77 -2
- package/dist/{chunk-X3CIIDO2.js โ chunk-7NGBIIA3.js} +28 -2
- package/dist/index.js +876 -30
- package/dist/mcp/index.js +1 -1
- package/package.json +65 -65
package/README.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: vhk-readme
|
|
3
3
|
date: 2026-05-24
|
|
4
|
-
tags: [vhk, cli, readme,
|
|
4
|
+
tags: [vhk, cli, readme, v1.0.0, ga]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# ๐ง VHK โ Vibe Harness Kit
|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> ๐ **v1.0.0 GA** โ ๋ฐ์ด๋ธ์ฝ๋์ ์ฌ์ธ์ CLI. ๊ณต๊ฐ API ์์ ์ฑ ๋ณด์ฅ.
|
|
10
|
+
>
|
|
11
|
+
> AI ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ๋ถ๋ฆฌ๋ ์ฌ๋์ ์ํ **ํ๊ตญ์ด ํ์ฌ์ดํด CLI** (v1.0.0)
|
|
10
12
|
>
|
|
11
13
|
> ๐ฝ๏ธ **VHK๋ VHK๋ก ๋ถํธ์คํธ๋ฉ๋จ** โ ์ด ๋ ํฌ์ `docs/`, `CLAUDE.md`, `.cursorrules`๋ `vhk init`์ด ๋ง๋ค์์ต๋๋ค.
|
|
12
14
|
|
|
@@ -99,6 +101,14 @@ vhk ๊ธฐํ ๋๋ฌ๊ณ ๋ฐ๋ก ์์
|
|
|
99
101
|
| `vhk design-palette` | `ํ๋ ํธ` | ์ปฌ๋ฌ ํ๋ ํธ ํ๋ฆฌ์
์ ํ + ์ ์ฉ |
|
|
100
102
|
| `vhk theme` | `ํ
๋ง` | ๋คํฌ/๋ผ์ดํธ ๋ชจ๋ CSS + ํ ๊ธ ์ ํธ๋ฆฌํฐ ์์ฑ |
|
|
101
103
|
| `vhk ref` | `๋ ํผ๋ฐ์ค` | ๋ ํผ๋ฐ์ค URL ๊ด๋ฆฌ (`add` / `list` / `open`) |
|
|
104
|
+
| `vhk harness` | `ํ๋ค์ค` | ํตํฉ ํ์ง ์ ๊ฒ (lint + type-check + test + build ์์ฐจ ์คํ + ๋ฆฌํฌํธ) |
|
|
105
|
+
| `vhk audit` | `๊ฐ์ฌ` | npm/pnpm/yarn ๋ณด์ ์ทจ์ฝ์ ๊ฐ์ฌ (`--fix`๋ก ์๋ ์์ , npm๋ง) |
|
|
106
|
+
| `vhk migrate [target]` | `์ ํ` | ํจํค์ง ๋งค๋์ ์ ํ (`npm` / `yarn` / `pnpm`, lockfile + node_modules ์ฌ๊ตฌ์ฑ) |
|
|
107
|
+
| `vhk update` | `์
๋ฐ์ดํธ` | VHK CLI ์ต์ ๋ฒ์ ์ผ๋ก ์
ํ ์
๋ฐ์ดํธ |
|
|
108
|
+
| `vhk context` | `๋งฅ๋ฝ` | ํ๋ก์ ํธ ํธ๋ฆฌยท์คํยทCLI ๋ช
๋ น ๋ชฉ๋ก์ `.vhk/context.md`๋ก ์๋ ์์ฑ (AI ์ด์์คํดํธ์ฉ) |
|
|
109
|
+
| `vhk context-show` | `๋งฅ๋ฝ๋ณด๊ธฐ` | ํ์ฌ ์ปจํ
์คํธ ํ์ผ ๋ด์ฉ ์ถ๋ ฅ |
|
|
110
|
+
| `vhk memory` | `๊ธฐ์ต` | ๊ฒฐ์ ์ฌํญ ๊ธฐ์ต ๊ด๋ฆฌ (`add` / `list` / `remove`, `.vhk/memory.json` ๊ธฐ๋ฐ, ํ๊ทธ ์ง์) |
|
|
111
|
+
| `vhk brief` | `๋ธ๋ฆฌํ` | ํ๋ก์ ํธ ์ ๋ณด + git ์ํ + ๊ฒฐ์ ์ฌํญ + ๋ ํผ๋ฐ์ค ํตํฉ ๋ณด๊ณ ์ `.vhk/brief.md` |
|
|
102
112
|
|
|
103
113
|
### init ์ต์
|
|
104
114
|
|
|
@@ -133,6 +143,63 @@ MCP ์๋ฒ๋ฅผ ์๋์ผ๋ก ๋์ฐ๋ ค๋ฉด:
|
|
|
133
143
|
vhk mcp # stdio ์๋ฒ ์์ (Cursor๊ฐ ์๋์ผ๋ก ํธ์ถ)
|
|
134
144
|
```
|
|
135
145
|
|
|
146
|
+
## v1.0.0 GA ํ์ด๋ผ์ดํธ ๐
|
|
147
|
+
|
|
148
|
+
> **๊ณต๊ฐ API ์์ ์ฑ ์ฝ์**. ๋ช
๋ น์ด ์ด๋ฆ, CLI ์ธ์, `.vhk/` ํ์ผ ํฌ๋งท์ v2.0๊น์ง breaking change ์์.
|
|
149
|
+
|
|
150
|
+
| ๊ธฐ๋ฅ | ์ค๋ช
|
|
|
151
|
+
|------|------|
|
|
152
|
+
| **context** | ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ(3-depth) + ๊ธฐ์ ์คํ(Next/Nuxt/Vue/Svelte/TS/Tailwind/tsup/Vite/...) ์๋ ๊ฐ์ง + 29๊ฐ+ VHK ๋ช
๋ น์ด ๋ชฉ๋ก์ `.vhk/context.md` ๋งํฌ๋ค์ด์ผ๋ก ์์ฑ. AI ์ด์์คํดํธ๊ฐ ํ๋ก์ ํธ ๋งฅ๋ฝ์ ์ฆ์ ํ์
|
|
|
153
|
+
| **memory** | `.vhk/memory.json` ๊ฒฐ์ ์ฌํญ ๊ธฐ์ต ๊ด๋ฆฌ. `add <content> --tags X,Y` / `list` / `remove <๋ฒํธ>`. NL์ list๋ง (add/remove๋ ์ธ์ ํ์ โ commander ์ ์ฉ) |
|
|
154
|
+
| **brief** | ํ๋ก์ ํธ ์ ๋ณด + git ์ํ(๋ธ๋์นยท๋ง์ง๋ง ์ปค๋ฐยท๋ฏธ์ปค๋ฐ ๋ณ๊ฒฝ) + ์ต๊ทผ ๊ฒฐ์ ์ฌํญ + ๋ ํผ๋ฐ์ค๋ฅผ ํ ํ๋ฉด์ + `.vhk/brief.md` ์ ์ฅ. `safeExecFile` ๊ธฐ๋ฐ (Windows .cmd shim ์์ ) |
|
|
155
|
+
| **์์ฐ์ด ํ์ฅ** | `"๋งฅ๋ฝ ๋ง๋ค์ด์ค"` โ context ยท `"์ปจํ
์คํธ ๋ณด์ฌ์ค"` โ context-show ยท `"๊ธฐ์ต ๋ชฉ๋ก"` โ memory ยท `"ํ๋ก์ ํธ ๋ธ๋ฆฌํ ๋ง๋ค์ด์ค"` / `"์ํ ์์ฝ"` โ brief |
|
|
156
|
+
|
|
157
|
+
```powershell
|
|
158
|
+
vhk context # .vhk/context.md (ํธ๋ฆฌ + ์คํ + ๋ช
๋ น ๋ชฉ๋ก)
|
|
159
|
+
vhk memory add "API๋ tRPC ์ฌ์ฉ" --tags decision,arch
|
|
160
|
+
vhk memory list
|
|
161
|
+
vhk brief # ์ฝ์ ์ถ๋ ฅ + .vhk/brief.md
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Cursor ๊ถ์ฅ ์ํ์ค (v1.0 GA)
|
|
165
|
+
|
|
166
|
+
```text
|
|
167
|
+
vhk init # ํ๋ก์ ํธ ์
์
|
|
168
|
+
vhk design + theme # ๋์์ธ ์์คํ
|
|
169
|
+
vhk context # AI ๋งฅ๋ฝ ํ์ผ ์์ฑ
|
|
170
|
+
... ๊ฐ๋ฐ ...
|
|
171
|
+
vhk memory add "<๊ฒฐ์ >" # ๊ฒฐ์ ๋์
|
|
172
|
+
vhk brief # ์ธ์
์ข
๋ฃ ์ ์ํ ๋ณด๊ณ ์
|
|
173
|
+
๋ค์ ์ธ์
์์: "์ปจํ
์คํธ ๋ณด์ฌ์ค" โ ์ด์ ๋งฅ๋ฝ ๋ณต์
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### v1.0.0 GA ์ ์ฑ
|
|
177
|
+
|
|
178
|
+
- **๊ณต๊ฐ API ์์ ์ฑ**: ๋ช
๋ น์ด ์ด๋ฆ, CLI ์ธ์, `.vhk/` ํ์ผ ํฌ๋งท์ v2.0๊น์ง breaking change ์์
|
|
179
|
+
- **deprecation ์ ์ฐจ**: ๋ช
๋ น์ด/์ต์
์ ๊ฑฐ ์ 1๊ฐ ๋ง์ด๋ ๋ฒ์ (1.x.0)์์ deprecation ๊ฒฝ๊ณ
|
|
180
|
+
- **i18n ํค**: `ko.ts`์ `t()` ํค ์ด๋ฆ์ ์์ . ์ ๊ท ํค ๋์ , ๊ธฐ์กด ํค ๋ฏธ์ ๊ฑฐ
|
|
181
|
+
- **MCP ์๋ฒ ๋๊ตฌ**: 8๊ฐ ๋๊ตฌ(save/undo/status/diff/ship/doctor/check/recap) ์ธํฐํ์ด์ค ์์
|
|
182
|
+
|
|
183
|
+
> **`vhk memory` vs Claude Code `auto memory`** โ `vhk memory`๋ **ํ๋ก์ ํธ ๋จ์** ๊ฒฐ์ ์ฌํญ(`.vhk/memory.json`, ํ ๊ณต์ ). Claude Code์ `auto memory`๋ **์ฌ์ฉ์ ๋จ์** (`~/.claude/projects/.../memory/`, ๊ฐ์ธ ์ปจํ
์คํธ). ๋์ ๋ณ๊ฐ.
|
|
184
|
+
|
|
185
|
+
## v0.9.0 ํ์ด๋ผ์ดํธ
|
|
186
|
+
|
|
187
|
+
| ๊ธฐ๋ฅ | ์ค๋ช
|
|
|
188
|
+
|------|------|
|
|
189
|
+
| **harness** | `package.json` scripts ์๋ ๊ฐ์ง โ `lint` / `type-check` / `test` / `build` ์์ฐจ ์คํ + ํตํฉ ๋ฆฌํฌํธ. ์ผ๋ถ ์คํจํด๋ ๋๊น์ง ์งํ |
|
|
190
|
+
| **audit** | `npm audit --json` ๋ํ + ์ฌ๊ฐ๋๋ณ ์์ฝ. `Critical`/`High` ๋ฐ๊ฒฌ ์ ์๋ fix ์ต์
. Windows PowerShell ํธํ (`2>/dev/null` ๋ฏธ์ฌ์ฉ) |
|
|
191
|
+
| **migrate** | npm/yarn/pnpm ์ ํ โ ๋์ CLI ์กด์ฌ ํ์ธ โ ํ์ธ ํ๋กฌํํธ โ ๊ธฐ์กด lockfile + node_modules ์ ๋ฆฌ โ `<pm> install` |
|
|
192
|
+
| **update** | npm registry์์ `@byh3071/vhk` ์ต์ ๋ฒ์ ์กฐํ โ semver ๋น๊ต โ `npm update -g` ์คํ. ํ์ฌ ๋ฒ์ ์ด ๊ฐ๊ฑฐ๋ ๋ ๋์ผ๋ฉด ์คํต |
|
|
193
|
+
| **์์ฐ์ด ํ์ฅ** | `"ํ์ง ์ ๊ฒํด์ค"` โ harness ยท `"๋ณด์ ๊ฐ์ฌ ํด์ค"` / `"์ทจ์ฝ์ ํ์ธ"` โ audit ยท `"ํจํค์ง ๋งค๋์ ์ ํ"` โ migrate ยท `"vhk ์
๋ฐ์ดํธ ํด์ค"` โ update. ํค์๋ ์ถฉ๋ ๊ฐ๋: `์ ๊ฒ` ๋จ๋
์ ๊ธฐ์กด `check`์ ์๋ณด, `๋ณด์` ๋จ๋
์ ๊ธฐ์กด `secure`์ ์๋ณด |
|
|
194
|
+
|
|
195
|
+
```powershell
|
|
196
|
+
vhk harness # lint + type-check + test + build ์์ฐจ ์คํ
|
|
197
|
+
vhk audit # npm ๋ณด์ ๊ฐ์ฌ (Critical/High ๋ฐ๊ฒฌ ์ ์๋ fix ์ต์
)
|
|
198
|
+
vhk audit --fix # ํญ์ npm audit fix ์คํ
|
|
199
|
+
vhk migrate pnpm # npm/yarn โ pnpm ์ ํ (๋ํํ ํ์ธ)
|
|
200
|
+
vhk update # @byh3071/vhk ์ต์ ๋ฒ์ ์ฒดํฌ + ๊ธ๋ก๋ฒ ์
๋ฐ์ดํธ
|
|
201
|
+
```
|
|
202
|
+
|
|
136
203
|
## v0.8.0 ํ์ด๋ผ์ดํธ
|
|
137
204
|
|
|
138
205
|
| ๊ธฐ๋ฅ | ์ค๋ช
|
|
|
@@ -224,6 +291,14 @@ vhk ref open 1 # 1๋ฒ ๋ ํผ๋ฐ์ค๋ฅผ ๋ธ๋ผ์ฐ์ ๋ก ์ด๊ธฐ
|
|
|
224
291
|
| ํ๋ ํธ ๊ณจ๋ผ์ค | `vhk design-palette` |
|
|
225
292
|
| ๋คํฌ ๋ชจ๋ ์ ์ฉ | `vhk theme` |
|
|
226
293
|
| ๋ ํผ๋ฐ์ค ๋ณด์ฌ์ค | `vhk ref` (list) |
|
|
294
|
+
| ํ์ง ์ ๊ฒํด์ค | `vhk harness` |
|
|
295
|
+
| ๋ณด์ ๊ฐ์ฌ ํด์ค / ์ทจ์ฝ์ ํ์ธ | `vhk audit` |
|
|
296
|
+
| ํจํค์ง ๋งค๋์ ์ ํ | `vhk migrate` |
|
|
297
|
+
| vhk ์
๋ฐ์ดํธ ํด์ค | `vhk update` |
|
|
298
|
+
| ๋งฅ๋ฝ ๋ง๋ค์ด์ค / ์ปจํ
์คํธ ์์ฑ | `vhk context` |
|
|
299
|
+
| ์ปจํ
์คํธ ๋ณด์ฌ์ค / ๋งฅ๋ฝ ๋ณด์ฌ์ค | `vhk context-show` |
|
|
300
|
+
| ๊ธฐ์ต ๋ชฉ๋ก / ๊ฒฐ์ ์ฌํญ ํ์ธ | `vhk memory` (list) |
|
|
301
|
+
| ํ๋ก์ ํธ ๋ธ๋ฆฌํ / ์ํ ์์ฝ | `vhk brief` |
|
|
227
302
|
|
|
228
303
|
## ํน์ง
|
|
229
304
|
|
|
@@ -283,6 +283,10 @@ var ko = {
|
|
|
283
283
|
addTitle: "\uB808\uD37C\uB7F0\uC2A4 \uCD94\uAC00",
|
|
284
284
|
listTitle: "\uB808\uD37C\uB7F0\uC2A4 \uBAA9\uB85D"
|
|
285
285
|
},
|
|
286
|
+
memory: {
|
|
287
|
+
addTitle: "\uAE30\uC5B5 \uCD94\uAC00",
|
|
288
|
+
listTitle: "\uAE30\uC5B5 \uBAA9\uB85D"
|
|
289
|
+
},
|
|
286
290
|
mcp: {
|
|
287
291
|
initTitle: "Cursor MCP \uC5F0\uB3D9 \uC124\uC815",
|
|
288
292
|
serverStarted: "VHK MCP \uC11C\uBC84 \uC2DC\uC791\uB428"
|
|
@@ -310,6 +314,26 @@ var ko = {
|
|
|
310
314
|
publishing: "npm \uBC30\uD3EC \uC911...",
|
|
311
315
|
publishSuccess: "npm \uBC30\uD3EC \uC131\uACF5!",
|
|
312
316
|
publishFailed: "npm \uBC30\uD3EC \uC2E4\uD328"
|
|
317
|
+
},
|
|
318
|
+
harness: {
|
|
319
|
+
title: "\uD1B5\uD569 \uD488\uC9C8 \uC810\uAC80"
|
|
320
|
+
},
|
|
321
|
+
audit: {
|
|
322
|
+
title: "\uBCF4\uC548 \uAC10\uC0AC"
|
|
323
|
+
},
|
|
324
|
+
migrate: {
|
|
325
|
+
title: "\uD328\uD0A4\uC9C0 \uB9E4\uB2C8\uC800 \uC804\uD658",
|
|
326
|
+
selectTarget: "\uC5B4\uB5A4 \uD328\uD0A4\uC9C0 \uB9E4\uB2C8\uC800\uB85C \uC804\uD658\uD560\uAE4C\uC694?"
|
|
327
|
+
},
|
|
328
|
+
update: {
|
|
329
|
+
title: "VHK CLI \uC5C5\uB370\uC774\uD2B8"
|
|
330
|
+
},
|
|
331
|
+
context: {
|
|
332
|
+
title: "\uD504\uB85C\uC81D\uD2B8 \uCEE8\uD14D\uC2A4\uD2B8 \uC0DD\uC131",
|
|
333
|
+
showTitle: "\uCEE8\uD14D\uC2A4\uD2B8 \uD30C\uC77C"
|
|
334
|
+
},
|
|
335
|
+
brief: {
|
|
336
|
+
title: "\uD504\uB85C\uC81D\uD2B8 \uBE0C\uB9AC\uD551"
|
|
313
337
|
}
|
|
314
338
|
};
|
|
315
339
|
function lookup(path) {
|
|
@@ -457,8 +481,10 @@ function safeExecFile(cmd, args) {
|
|
|
457
481
|
}).toString();
|
|
458
482
|
return { ok: true, out: out.trim() };
|
|
459
483
|
} catch (err) {
|
|
460
|
-
const
|
|
461
|
-
|
|
484
|
+
const e = err;
|
|
485
|
+
const stdout = e.stdout ? e.stdout.toString() : "";
|
|
486
|
+
const msg = e.message ?? String(err);
|
|
487
|
+
return { ok: false, err: msg, out: stdout.trim() };
|
|
462
488
|
}
|
|
463
489
|
}
|
|
464
490
|
function safeExecFileStream(cmd, args) {
|