vibe-commander 0.2.0 → 0.2.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/AGENTS.md +1 -0
- package/README.ko.md +643 -0
- package/README.md +643 -0
- package/dist/adapters/cli/commands/git-helpers.js +5 -3
- package/dist/adapters/cli/commands/init-helpers.js +1 -1
- package/dist/adapters/cli/commands/io-helpers.js +6 -2
- package/dist/adapters/cli/commands/schema.js +7 -3
- package/dist/adapters/cli/commands/set-unit.js +8 -2
- package/dist/adapters/cli/commands/skill-install.js +10 -4
- package/dist/adapters/cli/formatters-schema.d.ts +17 -0
- package/dist/adapters/cli/formatters-schema.js +155 -0
- package/dist/adapters/cli/formatters-unit.d.ts +0 -8
- package/dist/adapters/cli/formatters-unit.js +0 -146
- package/dist/adapters/cli/index.js +2 -1
- package/dist/adapters/cli/router.d.ts +0 -12
- package/dist/adapters/cli/router.js +4 -103
- package/dist/adapters/cli/stdin-parser.d.ts +23 -0
- package/dist/adapters/cli/stdin-parser.js +109 -0
- package/dist/config/schema.d.ts +0 -9
- package/dist/config/schema.js +138 -56
- package/dist/core/renderers/index.d.ts +1 -1
- package/dist/core/renderers/index.js +1 -1
- package/dist/core/renderers/marker-utils.js +5 -3
- package/dist/core/renderers/schema-renderer.d.ts +16 -0
- package/dist/core/renderers/schema-renderer.js +21 -0
- package/dist/core/resolvers/index.d.ts +0 -2
- package/examples/nextjs-web.config.json +73 -0
- package/examples/python-backend.config.json +91 -0
- package/examples/tauri-app.config.json +95 -0
- package/examples/vscode-tasks.json +101 -0
- package/package.json +14 -2
- package/schemas/config-schema.json +409 -0
- package/skills/claude/SKILL.md +22 -0
- package/skills/common/cli-reference.md +22 -0
- package/skills/cursor/SKILL.md +22 -0
- package/dist/adapters/cli/formatters.d.ts +0 -2
- package/dist/adapters/cli/formatters.js +0 -3
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"$schema": {
|
|
6
|
+
"description": "JSON Schema URL for IDE autocomplete and validation",
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "number",
|
|
11
|
+
"const": 1,
|
|
12
|
+
"description": "Configuration file version (currently 1)"
|
|
13
|
+
},
|
|
14
|
+
"paths": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"commands": {
|
|
18
|
+
"default": "commands.md",
|
|
19
|
+
"description": "Command file path where unit context sections are managed",
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"roadmap": {
|
|
23
|
+
"default": "roadmap.md",
|
|
24
|
+
"description": "Roadmap/backlog file path. Set to null to disable list-units command",
|
|
25
|
+
"anyOf": [
|
|
26
|
+
{
|
|
27
|
+
"type": "string"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "null"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"docRoots": {
|
|
35
|
+
"default": {
|
|
36
|
+
"plan": "unit-plans",
|
|
37
|
+
"result": "unit-results",
|
|
38
|
+
"runbook": "unit-runbooks"
|
|
39
|
+
},
|
|
40
|
+
"description": "Document root directories by role (key: role name, value: relative path)",
|
|
41
|
+
"type": "object",
|
|
42
|
+
"propertyNames": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
},
|
|
45
|
+
"additionalProperties": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"refactorSubDir": {
|
|
50
|
+
"default": null,
|
|
51
|
+
"description": "Refactoring sub-unit directory. Set to null if sub-units are not used",
|
|
52
|
+
"anyOf": [
|
|
53
|
+
{
|
|
54
|
+
"type": "string"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "null"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"required": [
|
|
63
|
+
"commands",
|
|
64
|
+
"roadmap",
|
|
65
|
+
"docRoots",
|
|
66
|
+
"refactorSubDir"
|
|
67
|
+
],
|
|
68
|
+
"additionalProperties": false
|
|
69
|
+
},
|
|
70
|
+
"unitTypes": {
|
|
71
|
+
"minItems": 1,
|
|
72
|
+
"type": "array",
|
|
73
|
+
"items": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"properties": {
|
|
76
|
+
"key": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "Unique type key (e.g. 'implement', 'refactor', 'feature')"
|
|
79
|
+
},
|
|
80
|
+
"displayName": {
|
|
81
|
+
"description": "Human-readable display name for this type",
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
"idPattern": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Regex pattern to match unit IDs (e.g. '^U-\\\\d+.*', '^FEAT-\\\\d+$')"
|
|
87
|
+
},
|
|
88
|
+
"planDir": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"description": "Document root key (from paths.docRoots) where plans are stored"
|
|
91
|
+
},
|
|
92
|
+
"commandSection": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"description": "Target section header in the command file (e.g. '# Unit Implementation')"
|
|
95
|
+
},
|
|
96
|
+
"collectDeps": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"description": "Whether to collect dependency documents and commits for this type"
|
|
99
|
+
},
|
|
100
|
+
"headerTemplate": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"description": "Section header template with variable interpolation: {{unitId}}, {{title}}, {{titleOnly}}, {{planPath}}, {{shortId}}"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"required": [
|
|
106
|
+
"key",
|
|
107
|
+
"idPattern",
|
|
108
|
+
"planDir",
|
|
109
|
+
"commandSection",
|
|
110
|
+
"collectDeps",
|
|
111
|
+
"headerTemplate"
|
|
112
|
+
],
|
|
113
|
+
"additionalProperties": false
|
|
114
|
+
},
|
|
115
|
+
"description": "Unit type definitions. Array order determines ID matching priority (first match wins)"
|
|
116
|
+
},
|
|
117
|
+
"docDiscovery": {
|
|
118
|
+
"default": {
|
|
119
|
+
"plan": {
|
|
120
|
+
"pattern": "{{unitId}}.md",
|
|
121
|
+
"glob": false
|
|
122
|
+
},
|
|
123
|
+
"result": {
|
|
124
|
+
"pattern": "{{unitId}}.md",
|
|
125
|
+
"glob": false
|
|
126
|
+
},
|
|
127
|
+
"runbook": {
|
|
128
|
+
"pattern": "{{shortId}}-*-runbook.md",
|
|
129
|
+
"glob": true
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"type": "object",
|
|
133
|
+
"propertyNames": {
|
|
134
|
+
"type": "string"
|
|
135
|
+
},
|
|
136
|
+
"additionalProperties": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"properties": {
|
|
139
|
+
"pattern": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"description": "File search pattern. Supports {{unitId}} and {{shortId}} variables"
|
|
142
|
+
},
|
|
143
|
+
"glob": {
|
|
144
|
+
"default": false,
|
|
145
|
+
"description": "Whether to use glob matching (true) or exact match (false)",
|
|
146
|
+
"type": "boolean"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"required": [
|
|
150
|
+
"pattern",
|
|
151
|
+
"glob"
|
|
152
|
+
],
|
|
153
|
+
"additionalProperties": false
|
|
154
|
+
},
|
|
155
|
+
"description": "Document discovery rules by role. Defines file name patterns for finding unit documents"
|
|
156
|
+
},
|
|
157
|
+
"planParsing": {
|
|
158
|
+
"type": "object",
|
|
159
|
+
"properties": {
|
|
160
|
+
"titleSource": {
|
|
161
|
+
"default": "h1",
|
|
162
|
+
"description": "How to extract the unit title: 'h1' from first heading, 'frontmatter:title' from YAML frontmatter",
|
|
163
|
+
"type": "string",
|
|
164
|
+
"enum": [
|
|
165
|
+
"h1",
|
|
166
|
+
"frontmatter:title"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"dependsSource": {
|
|
170
|
+
"default": "section",
|
|
171
|
+
"description": "How to extract dependencies: 'section' from markdown section, 'frontmatter' from YAML, 'metadata-table' from 2-column table",
|
|
172
|
+
"type": "string",
|
|
173
|
+
"enum": [
|
|
174
|
+
"section",
|
|
175
|
+
"frontmatter",
|
|
176
|
+
"metadata-table"
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
"dependsSectionName": {
|
|
180
|
+
"default": "이전 작업에서 가져올 것",
|
|
181
|
+
"description": "Dependency section header name. Set to null to disable section-based extraction",
|
|
182
|
+
"anyOf": [
|
|
183
|
+
{
|
|
184
|
+
"type": "string"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"type": "null"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
"pairingQuestionSection": {
|
|
192
|
+
"default": "페어링 질문",
|
|
193
|
+
"description": "Section header name for pairing questions (checkbox items)",
|
|
194
|
+
"type": "string"
|
|
195
|
+
},
|
|
196
|
+
"metadataTable": {
|
|
197
|
+
"type": "object",
|
|
198
|
+
"properties": {
|
|
199
|
+
"idField": {
|
|
200
|
+
"default": "Unit ID",
|
|
201
|
+
"description": "Field name for the unit ID in the metadata table",
|
|
202
|
+
"type": "string"
|
|
203
|
+
},
|
|
204
|
+
"phaseField": {
|
|
205
|
+
"default": "Phase",
|
|
206
|
+
"description": "Field name for the phase in the metadata table",
|
|
207
|
+
"type": "string"
|
|
208
|
+
},
|
|
209
|
+
"dependsField": {
|
|
210
|
+
"default": "의존성",
|
|
211
|
+
"description": "Field name for dependencies in the metadata table",
|
|
212
|
+
"type": "string"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"required": [
|
|
216
|
+
"idField",
|
|
217
|
+
"phaseField",
|
|
218
|
+
"dependsField"
|
|
219
|
+
],
|
|
220
|
+
"additionalProperties": false
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"required": [
|
|
224
|
+
"titleSource",
|
|
225
|
+
"dependsSource",
|
|
226
|
+
"dependsSectionName",
|
|
227
|
+
"pairingQuestionSection",
|
|
228
|
+
"metadataTable"
|
|
229
|
+
],
|
|
230
|
+
"additionalProperties": false
|
|
231
|
+
},
|
|
232
|
+
"backlogParsing": {
|
|
233
|
+
"type": "object",
|
|
234
|
+
"properties": {
|
|
235
|
+
"sectionHeader": {
|
|
236
|
+
"default": "## 작업 백로그",
|
|
237
|
+
"description": "Backlog section start header in the roadmap file",
|
|
238
|
+
"type": "string"
|
|
239
|
+
},
|
|
240
|
+
"entryPattern": {
|
|
241
|
+
"default": "ID=\\[(?<id>.+?)\\]\\((?<path>[^)]+)\\)\\s*\\|\\s*(?<title>[^|]+)\\|\\s*Depends=(?<deps>[^|]*)\\|\\s*(?<status>.+)",
|
|
242
|
+
"description": "Regex pattern with named groups (id, path, title, deps, status) to match backlog entries",
|
|
243
|
+
"type": "string"
|
|
244
|
+
},
|
|
245
|
+
"completedSection": {
|
|
246
|
+
"default": "### 완료",
|
|
247
|
+
"description": "Section header for completed units",
|
|
248
|
+
"type": "string"
|
|
249
|
+
},
|
|
250
|
+
"statusMap": {
|
|
251
|
+
"type": "object",
|
|
252
|
+
"properties": {
|
|
253
|
+
"ready": {
|
|
254
|
+
"default": "⏸️",
|
|
255
|
+
"description": "Ready/waiting status indicator",
|
|
256
|
+
"type": "string"
|
|
257
|
+
},
|
|
258
|
+
"inProgress": {
|
|
259
|
+
"default": "🚧",
|
|
260
|
+
"description": "In-progress status indicator",
|
|
261
|
+
"type": "string"
|
|
262
|
+
},
|
|
263
|
+
"completed": {
|
|
264
|
+
"default": "✅",
|
|
265
|
+
"description": "Completed status indicator",
|
|
266
|
+
"type": "string"
|
|
267
|
+
},
|
|
268
|
+
"blocked": {
|
|
269
|
+
"default": "❌",
|
|
270
|
+
"description": "Blocked status indicator",
|
|
271
|
+
"type": "string"
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
"required": [
|
|
275
|
+
"ready",
|
|
276
|
+
"inProgress",
|
|
277
|
+
"completed",
|
|
278
|
+
"blocked"
|
|
279
|
+
],
|
|
280
|
+
"additionalProperties": false
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"required": [
|
|
284
|
+
"sectionHeader",
|
|
285
|
+
"entryPattern",
|
|
286
|
+
"completedSection",
|
|
287
|
+
"statusMap"
|
|
288
|
+
],
|
|
289
|
+
"additionalProperties": false
|
|
290
|
+
},
|
|
291
|
+
"commitSearch": {
|
|
292
|
+
"type": "object",
|
|
293
|
+
"properties": {
|
|
294
|
+
"strategy": {
|
|
295
|
+
"default": "git-log-grep",
|
|
296
|
+
"description": "Search strategy: 'git-log-grep', 'conventional-commit', or 'disabled'",
|
|
297
|
+
"type": "string"
|
|
298
|
+
},
|
|
299
|
+
"extractId": {
|
|
300
|
+
"default": "shortId",
|
|
301
|
+
"description": "ID transformation for grep: 'shortId' removes phase tag (e.g. U-001[Mvp] → U-001)",
|
|
302
|
+
"type": "string"
|
|
303
|
+
},
|
|
304
|
+
"maxResults": {
|
|
305
|
+
"default": 5,
|
|
306
|
+
"description": "Maximum number of commits to return per dependency",
|
|
307
|
+
"type": "number"
|
|
308
|
+
},
|
|
309
|
+
"excludePaths": {
|
|
310
|
+
"default": [],
|
|
311
|
+
"description": "Glob patterns for paths to exclude (e.g. 'docs/**' to filter doc-only commits)",
|
|
312
|
+
"type": "array",
|
|
313
|
+
"items": {
|
|
314
|
+
"type": "string"
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"requirePaths": {
|
|
318
|
+
"default": [],
|
|
319
|
+
"description": "Glob patterns that at least one changed file must match (e.g. 'src/**' for source-only commits)",
|
|
320
|
+
"type": "array",
|
|
321
|
+
"items": {
|
|
322
|
+
"type": "string"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"required": [
|
|
327
|
+
"strategy",
|
|
328
|
+
"extractId",
|
|
329
|
+
"maxResults",
|
|
330
|
+
"excludePaths",
|
|
331
|
+
"requirePaths"
|
|
332
|
+
],
|
|
333
|
+
"additionalProperties": false
|
|
334
|
+
},
|
|
335
|
+
"commandSections": {
|
|
336
|
+
"type": "object",
|
|
337
|
+
"properties": {
|
|
338
|
+
"separator": {
|
|
339
|
+
"default": "---------------------------------------------------",
|
|
340
|
+
"description": "Section separator string in the command file",
|
|
341
|
+
"type": "string"
|
|
342
|
+
},
|
|
343
|
+
"preserveOtherSections": {
|
|
344
|
+
"default": true,
|
|
345
|
+
"description": "Whether to preserve sections not managed by the current unit type",
|
|
346
|
+
"type": "boolean"
|
|
347
|
+
},
|
|
348
|
+
"commitFieldName": {
|
|
349
|
+
"default": "Commit",
|
|
350
|
+
"description": "Field keyword for recording commit SHA in the command file",
|
|
351
|
+
"type": "string"
|
|
352
|
+
},
|
|
353
|
+
"useMarkers": {
|
|
354
|
+
"default": false,
|
|
355
|
+
"description": "Use HTML comment markers (<!-- vc:begin/end -->) for safer section boundary detection",
|
|
356
|
+
"type": "boolean"
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
"required": [
|
|
360
|
+
"separator",
|
|
361
|
+
"preserveOtherSections",
|
|
362
|
+
"commitFieldName",
|
|
363
|
+
"useMarkers"
|
|
364
|
+
],
|
|
365
|
+
"additionalProperties": false
|
|
366
|
+
},
|
|
367
|
+
"defaultSpecialRequests": {
|
|
368
|
+
"default": [],
|
|
369
|
+
"description": "Default special request strings appended to every unit context",
|
|
370
|
+
"type": "array",
|
|
371
|
+
"items": {
|
|
372
|
+
"type": "string"
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"specialRequestsByType": {
|
|
376
|
+
"default": {},
|
|
377
|
+
"description": "Additional special requests per unit type (key: unitType.key, value: string array)",
|
|
378
|
+
"type": "object",
|
|
379
|
+
"propertyNames": {
|
|
380
|
+
"type": "string"
|
|
381
|
+
},
|
|
382
|
+
"additionalProperties": {
|
|
383
|
+
"type": "array",
|
|
384
|
+
"items": {
|
|
385
|
+
"type": "string"
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"customRequests": {
|
|
390
|
+
"default": {},
|
|
391
|
+
"description": "Named special requests selectable via --request option (key: identifier, value: text)",
|
|
392
|
+
"type": "object",
|
|
393
|
+
"propertyNames": {
|
|
394
|
+
"type": "string"
|
|
395
|
+
},
|
|
396
|
+
"additionalProperties": {
|
|
397
|
+
"type": "string"
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
"required": [
|
|
402
|
+
"version",
|
|
403
|
+
"unitTypes"
|
|
404
|
+
],
|
|
405
|
+
"additionalProperties": false,
|
|
406
|
+
"$id": "https://raw.githubusercontent.com/viilab/vibe-commander/main/schemas/config-schema.json",
|
|
407
|
+
"title": "vibe-commander Configuration",
|
|
408
|
+
"description": "Unit-based vibe coding workflow automation CLI configuration. Defines project structure, unit types, parsing rules, and command sections."
|
|
409
|
+
}
|
package/skills/claude/SKILL.md
CHANGED
|
@@ -119,9 +119,31 @@ vc validate --json # JSON ToolResult
|
|
|
119
119
|
```bash
|
|
120
120
|
vc init # 대화형 설정 생성
|
|
121
121
|
vc init --from-existing # 기존 .md 파일 스캔 → 패턴 자동 감지 → 설정 생성
|
|
122
|
+
vc init --force # 기존 설정 덮어쓰기
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
`--from-existing`은 기존 설정이 있으면 커스텀 필드를 보존하며 병합합니다.
|
|
126
|
+
`--force`는 기존 설정 파일이 있어도 강제로 덮어씁니다.
|
|
127
|
+
|
|
128
|
+
### `vc schema` — 런타임 스키마 조회
|
|
129
|
+
|
|
130
|
+
에이전트가 CLI 구조를 동적으로 파악할 수 있는 인트로스펙션 기능:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
vc schema config --json # 설정 파일의 JSON Schema 반환
|
|
134
|
+
vc schema commands --json # 모든 커맨드의 메타데이터 반환
|
|
135
|
+
vc schema types --json # 프로젝트의 unitTypes 및 idPattern 반환
|
|
136
|
+
vc schema config --output schemas/config-schema.json # 파일로 저장
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### `vc skill install` — SKILL 파일 설치
|
|
140
|
+
|
|
141
|
+
npm 패키지에 번들된 SKILL 파일을 프로젝트에 설치:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
vc skill install # 기존 파일이 있으면 건너뜀
|
|
145
|
+
vc skill install --force # 기존 파일 덮어쓰기
|
|
146
|
+
```
|
|
125
147
|
|
|
126
148
|
### 파이프 모드 (에이전트/오케스트레이터 연동)
|
|
127
149
|
|
|
@@ -110,9 +110,31 @@ vc validate --json # JSON ToolResult
|
|
|
110
110
|
```bash
|
|
111
111
|
vc init # 대화형 설정 생성
|
|
112
112
|
vc init --from-existing # 기존 .md 파일 스캔 → 패턴 자동 감지 → 설정 생성
|
|
113
|
+
vc init --force # 기존 설정 덮어쓰기
|
|
113
114
|
```
|
|
114
115
|
|
|
115
116
|
`--from-existing`은 기존 설정이 있으면 커스텀 필드를 보존하며 병합합니다.
|
|
117
|
+
`--force`는 기존 설정 파일이 있어도 강제로 덮어씁니다.
|
|
118
|
+
|
|
119
|
+
### `vc schema` — 런타임 스키마 조회
|
|
120
|
+
|
|
121
|
+
에이전트가 CLI 구조를 동적으로 파악할 수 있는 인트로스펙션 기능:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
vc schema config --json # 설정 파일의 JSON Schema 반환
|
|
125
|
+
vc schema commands --json # 모든 커맨드의 메타데이터 반환
|
|
126
|
+
vc schema types --json # 프로젝트의 unitTypes 및 idPattern 반환
|
|
127
|
+
vc schema config --output schemas/config-schema.json # 파일로 저장
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `vc skill install` — SKILL 파일 설치
|
|
131
|
+
|
|
132
|
+
npm 패키지에 번들된 SKILL 파일을 프로젝트에 설치:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
vc skill install # 기존 파일이 있으면 건너뜀
|
|
136
|
+
vc skill install --force # 기존 파일 덮어쓰기
|
|
137
|
+
```
|
|
116
138
|
|
|
117
139
|
### 파이프 모드 (에이전트/오케스트레이터 연동)
|
|
118
140
|
|
package/skills/cursor/SKILL.md
CHANGED
|
@@ -119,9 +119,31 @@ vc validate --json # JSON ToolResult
|
|
|
119
119
|
```bash
|
|
120
120
|
vc init # 대화형 설정 생성
|
|
121
121
|
vc init --from-existing # 기존 .md 파일 스캔 → 패턴 자동 감지 → 설정 생성
|
|
122
|
+
vc init --force # 기존 설정 덮어쓰기
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
`--from-existing`은 기존 설정이 있으면 커스텀 필드를 보존하며 병합합니다.
|
|
126
|
+
`--force`는 기존 설정 파일이 있어도 강제로 덮어씁니다.
|
|
127
|
+
|
|
128
|
+
### `vc schema` — 런타임 스키마 조회
|
|
129
|
+
|
|
130
|
+
에이전트가 CLI 구조를 동적으로 파악할 수 있는 인트로스펙션 기능:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
vc schema config --json # 설정 파일의 JSON Schema 반환
|
|
134
|
+
vc schema commands --json # 모든 커맨드의 메타데이터 반환
|
|
135
|
+
vc schema types --json # 프로젝트의 unitTypes 및 idPattern 반환
|
|
136
|
+
vc schema config --output schemas/config-schema.json # 파일로 저장
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### `vc skill install` — SKILL 파일 설치
|
|
140
|
+
|
|
141
|
+
npm 패키지에 번들된 SKILL 파일을 프로젝트에 설치:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
vc skill install # 기존 파일이 있으면 건너뜀
|
|
145
|
+
vc skill install --force # 기존 파일 덮어쓰기
|
|
146
|
+
```
|
|
125
147
|
|
|
126
148
|
### 파이프 모드 (에이전트/오케스트레이터 연동)
|
|
127
149
|
|