@su-record/vibe 2.8.17 → 2.8.19
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/dist/infra/lib/config/GlobalConfigManager.d.ts +8 -0
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +37 -0
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/hooks/scripts/context-save.js +88 -1
- package/hooks/scripts/pre-tool-guard.js +30 -5
- package/hooks/scripts/sentinel-guard.js +28 -4
- package/hooks/scripts/utils.js +48 -0
- package/package.json +1 -1
- package/skills/vibe-figma/SKILL.md +25 -66
- package/skills/vibe-figma-analyze/SKILL.md +95 -318
- package/skills/vibe-figma-codegen/SKILL.md +112 -782
- package/skills/vibe-figma-consolidate/SKILL.md +53 -90
- package/skills/vibe-figma-frame/SKILL.md +454 -181
- package/skills/vibe-figma-pipeline/SKILL.md +4 -45
- package/skills/vibe-figma-rules/SKILL.md +363 -159
- package/skills/vibe-figma-style/SKILL.md +107 -476
|
@@ -15,6 +15,14 @@ type DeepPartial<T> = {
|
|
|
15
15
|
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
16
16
|
};
|
|
17
17
|
export declare function patchGlobalConfig(patch: DeepPartial<GlobalVibeConfig>): void;
|
|
18
|
+
/** .claude/vibe/config.json (프로젝트별 설정) */
|
|
19
|
+
export declare function getProjectConfigPath(projectDir: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* 다중 계층 설정 병합: 글로벌(~/.vibe) + 프로젝트(.claude/vibe)
|
|
22
|
+
* 우선순위: 프로젝트 > 글로벌 (프로젝트 설정이 글로벌을 덮어씀)
|
|
23
|
+
* credentials는 글로벌 전용 — 프로젝트에서 덮어쓰지 않음.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveConfig(projectDir: string): GlobalVibeConfig;
|
|
18
26
|
export declare function getGptApiKey(): string | null;
|
|
19
27
|
export declare function getGeminiApiKey(): string | null;
|
|
20
28
|
export declare function getModelOverride(key: string): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalConfigManager.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsB9D,2BAA2B;AAC3B,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,0BAA0B;AAC1B,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAQD,wBAAgB,gBAAgB,IAAI,gBAAgB,CA6BnD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAQhE;AAID,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAwBF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAK5E;AAID,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AA0DD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CA2KzC"}
|
|
1
|
+
{"version":3,"file":"GlobalConfigManager.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsB9D,2BAA2B;AAC3B,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,0BAA0B;AAC1B,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAQD,wBAAgB,gBAAgB,IAAI,gBAAgB,CA6BnD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAQhE;AAID,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAwBF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAK5E;AAID,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAeD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAiBlE;AAID,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AA0DD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CA2KzC"}
|
|
@@ -95,6 +95,43 @@ export function patchGlobalConfig(patch) {
|
|
|
95
95
|
merged.version = '1';
|
|
96
96
|
writeGlobalConfig(merged);
|
|
97
97
|
}
|
|
98
|
+
// ─── Project config + layered merge ────────────────────────────────
|
|
99
|
+
/** .claude/vibe/config.json (프로젝트별 설정) */
|
|
100
|
+
export function getProjectConfigPath(projectDir) {
|
|
101
|
+
return path.join(projectDir, '.claude', 'vibe', 'config.json');
|
|
102
|
+
}
|
|
103
|
+
function readProjectConfig(projectDir) {
|
|
104
|
+
const configPath = getProjectConfigPath(projectDir);
|
|
105
|
+
try {
|
|
106
|
+
if (!fs.existsSync(configPath))
|
|
107
|
+
return {};
|
|
108
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
109
|
+
const parsed = JSON.parse(content);
|
|
110
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
111
|
+
return {};
|
|
112
|
+
return parsed;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return {};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 다중 계층 설정 병합: 글로벌(~/.vibe) + 프로젝트(.claude/vibe)
|
|
120
|
+
* 우선순위: 프로젝트 > 글로벌 (프로젝트 설정이 글로벌을 덮어씀)
|
|
121
|
+
* credentials는 글로벌 전용 — 프로젝트에서 덮어쓰지 않음.
|
|
122
|
+
*/
|
|
123
|
+
export function resolveConfig(projectDir) {
|
|
124
|
+
const global = readGlobalConfig();
|
|
125
|
+
const project = readProjectConfig(projectDir);
|
|
126
|
+
if (Object.keys(project).length === 0) {
|
|
127
|
+
return global;
|
|
128
|
+
}
|
|
129
|
+
// credentials는 글로벌 전용이므로 프로젝트에서 제거 후 병합
|
|
130
|
+
const { credentials: _ignored, ...projectWithoutCreds } = project;
|
|
131
|
+
const merged = deepMerge(global, projectWithoutCreds);
|
|
132
|
+
merged.version = '1';
|
|
133
|
+
return merged;
|
|
134
|
+
}
|
|
98
135
|
// ─── Credential helpers ─────────────────────────────────────────────
|
|
99
136
|
export function getGptApiKey() {
|
|
100
137
|
return readGlobalConfig().credentials?.gpt?.apiKey ?? null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalConfigManager.js","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GlobalConfigManager.js","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
* Notification Hook - 컨텍스트 자동 저장 (80/90/95%) + 세션 요약 + Reflection
|
|
3
3
|
* Usage: node context-save.js <urgency>
|
|
4
4
|
* urgency: medium | high | critical
|
|
5
|
+
*
|
|
6
|
+
* 구조적 메타데이터를 자동 추출하여 세션 복원 품질을 높임.
|
|
7
|
+
* (claw-code compact.rs 패턴 참조)
|
|
5
8
|
*/
|
|
6
9
|
import { getToolsBaseUrl, getLibBaseUrl, PROJECT_DIR } from './utils.js';
|
|
10
|
+
import { execSync } from 'child_process';
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import path from 'path';
|
|
7
13
|
|
|
8
14
|
const BASE_URL = getToolsBaseUrl();
|
|
9
15
|
const LIB_URL = getLibBaseUrl();
|
|
@@ -18,13 +24,94 @@ const summaryMap = {
|
|
|
18
24
|
// Debounce: track last reflection level per session to avoid duplicates
|
|
19
25
|
let lastReflectionLevel = null;
|
|
20
26
|
|
|
27
|
+
/**
|
|
28
|
+
* 프로젝트 환경에서 구조적 메타데이터를 추출.
|
|
29
|
+
* 실패 시 빈 객체 반환 (non-blocking).
|
|
30
|
+
*/
|
|
31
|
+
function extractStructuredMetadata() {
|
|
32
|
+
const metadata = {
|
|
33
|
+
recentFiles: [],
|
|
34
|
+
gitBranch: null,
|
|
35
|
+
pendingWork: [],
|
|
36
|
+
toolsUsed: [],
|
|
37
|
+
timestamp: new Date().toISOString(),
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
// 최근 수정 파일 (최대 8개, 확장자 기반 필터)
|
|
42
|
+
const gitDiff = execSync('git diff --name-only HEAD 2>/dev/null || true', {
|
|
43
|
+
cwd: PROJECT_DIR, encoding: 'utf-8', timeout: 3000,
|
|
44
|
+
}).trim();
|
|
45
|
+
const staged = execSync('git diff --cached --name-only 2>/dev/null || true', {
|
|
46
|
+
cwd: PROJECT_DIR, encoding: 'utf-8', timeout: 3000,
|
|
47
|
+
}).trim();
|
|
48
|
+
|
|
49
|
+
const allFiles = [...new Set([...gitDiff.split('\n'), ...staged.split('\n')])]
|
|
50
|
+
.filter(f => f && /\.(ts|tsx|js|jsx|py|rs|go|java|json|md|css|html|vue|svelte)$/.test(f))
|
|
51
|
+
.slice(0, 8);
|
|
52
|
+
metadata.recentFiles = allFiles;
|
|
53
|
+
|
|
54
|
+
// 현재 브랜치
|
|
55
|
+
const branch = execSync('git branch --show-current 2>/dev/null || true', {
|
|
56
|
+
cwd: PROJECT_DIR, encoding: 'utf-8', timeout: 2000,
|
|
57
|
+
}).trim();
|
|
58
|
+
if (branch) metadata.gitBranch = branch;
|
|
59
|
+
} catch { /* git 없는 환경 무시 */ }
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
// SPEC/TODO에서 진행 중 작업 추출
|
|
63
|
+
const specDir = path.join(PROJECT_DIR, '.claude', 'vibe', 'specs');
|
|
64
|
+
if (fs.existsSync(specDir)) {
|
|
65
|
+
const specs = fs.readdirSync(specDir).filter(f => f.endsWith('.md')).slice(0, 3);
|
|
66
|
+
for (const spec of specs) {
|
|
67
|
+
metadata.pendingWork.push(`SPEC: ${spec.replace('.md', '')}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const todoDir = path.join(PROJECT_DIR, '.claude', 'vibe', 'todos');
|
|
71
|
+
if (fs.existsSync(todoDir)) {
|
|
72
|
+
const todos = fs.readdirSync(todoDir).filter(f => f.endsWith('.md')).slice(0, 3);
|
|
73
|
+
for (const todo of todos) {
|
|
74
|
+
metadata.pendingWork.push(`TODO: ${todo.replace('.md', '')}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} catch { /* 파일 시스템 접근 실패 무시 */ }
|
|
78
|
+
|
|
79
|
+
return metadata;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* 구조적 요약 텍스트 생성 (claw-code compact.rs 패턴)
|
|
84
|
+
*/
|
|
85
|
+
function buildStructuredSummary(baseMessage, metadata) {
|
|
86
|
+
const sections = [baseMessage];
|
|
87
|
+
|
|
88
|
+
if (metadata.gitBranch) {
|
|
89
|
+
sections.push(`Branch: ${metadata.gitBranch}`);
|
|
90
|
+
}
|
|
91
|
+
if (metadata.recentFiles.length > 0) {
|
|
92
|
+
sections.push(`Key files: ${metadata.recentFiles.join(', ')}`);
|
|
93
|
+
}
|
|
94
|
+
if (metadata.pendingWork.length > 0) {
|
|
95
|
+
sections.push(`Pending work: ${metadata.pendingWork.join('; ')}`);
|
|
96
|
+
}
|
|
97
|
+
if (metadata.toolsUsed.length > 0) {
|
|
98
|
+
sections.push(`Tools used: ${metadata.toolsUsed.join(', ')}`);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return sections.join('\n');
|
|
102
|
+
}
|
|
103
|
+
|
|
21
104
|
async function main() {
|
|
22
105
|
try {
|
|
106
|
+
const metadata = extractStructuredMetadata();
|
|
107
|
+
const baseMessage = summaryMap[urgency] || summaryMap.medium;
|
|
108
|
+
const structuredSummary = buildStructuredSummary(baseMessage, metadata);
|
|
109
|
+
|
|
23
110
|
const module = await import(`${BASE_URL}memory/index.js`);
|
|
24
111
|
const result = await module.autoSaveContext({
|
|
25
112
|
urgency,
|
|
26
113
|
contextType: 'progress',
|
|
27
|
-
summary:
|
|
114
|
+
summary: structuredSummary,
|
|
28
115
|
projectPath: PROJECT_DIR,
|
|
29
116
|
});
|
|
30
117
|
const percent = urgency === 'critical' ? '95' : urgency === 'high' ? '90' : '80';
|
|
@@ -110,9 +110,34 @@ function formatOutput(toolName, validation) {
|
|
|
110
110
|
return lines.join('\n');
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
/**
|
|
114
|
+
* stdin에서 JSON 페이로드 읽기 (Claude Code 하네스 호환)
|
|
115
|
+
* stdin이 없거나 파싱 실패 시 argv/env 폴백
|
|
116
|
+
*/
|
|
117
|
+
function readStdinSync() {
|
|
118
|
+
try {
|
|
119
|
+
if (process.stdin.isTTY) return null;
|
|
120
|
+
const fd = fs.openSync('/dev/stdin', 'r');
|
|
121
|
+
const buf = Buffer.alloc(65536);
|
|
122
|
+
const bytesRead = fs.readSync(fd, buf, 0, buf.length, null);
|
|
123
|
+
fs.closeSync(fd);
|
|
124
|
+
if (bytesRead > 0) {
|
|
125
|
+
return JSON.parse(buf.toString('utf-8', 0, bytesRead));
|
|
126
|
+
}
|
|
127
|
+
} catch { /* 파싱 실패 시 폴백 */ }
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
import fs from 'fs';
|
|
132
|
+
|
|
133
|
+
// 메인 실행: stdin JSON 우선, argv 폴백
|
|
134
|
+
const stdinPayload = readStdinSync();
|
|
135
|
+
const toolName = stdinPayload?.tool_name || process.argv[2] || 'Bash';
|
|
136
|
+
const toolInput = stdinPayload?.tool_input
|
|
137
|
+
? (typeof stdinPayload.tool_input === 'string'
|
|
138
|
+
? stdinPayload.tool_input
|
|
139
|
+
: JSON.stringify(stdinPayload.tool_input))
|
|
140
|
+
: (process.argv[3] || process.env.TOOL_INPUT || '');
|
|
116
141
|
|
|
117
142
|
const validation = validateCommand(toolName, toolInput);
|
|
118
143
|
const output = formatOutput(toolName, validation);
|
|
@@ -121,5 +146,5 @@ if (output) {
|
|
|
121
146
|
console.log(output);
|
|
122
147
|
}
|
|
123
148
|
|
|
124
|
-
// Exit code: 0 = allowed, 1 =
|
|
125
|
-
process.exit(validation.allowed ? 0 :
|
|
149
|
+
// Exit code: 0 = allowed, 2 = denied (claw-code 규약), 1 = 레거시 호환
|
|
150
|
+
process.exit(validation.allowed ? 0 : 2);
|
|
@@ -90,15 +90,39 @@ function guard(toolName, toolInput) {
|
|
|
90
90
|
return undefined;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
import fs from 'fs';
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* stdin에서 JSON 페이로드 읽기 (Claude Code 하네스 호환)
|
|
97
|
+
*/
|
|
98
|
+
function readStdinSync() {
|
|
99
|
+
try {
|
|
100
|
+
if (process.stdin.isTTY) return null;
|
|
101
|
+
const fd = fs.openSync('/dev/stdin', 'r');
|
|
102
|
+
const buf = Buffer.alloc(65536);
|
|
103
|
+
const bytesRead = fs.readSync(fd, buf, 0, buf.length, null);
|
|
104
|
+
fs.closeSync(fd);
|
|
105
|
+
if (bytesRead > 0) {
|
|
106
|
+
return JSON.parse(buf.toString('utf-8', 0, bytesRead));
|
|
107
|
+
}
|
|
108
|
+
} catch { /* 폴백 */ }
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Main execution: stdin JSON 우선, argv 폴백
|
|
113
|
+
const stdinPayload = readStdinSync();
|
|
114
|
+
const toolName = stdinPayload?.tool_name || process.argv[2] || '';
|
|
115
|
+
const toolInput = stdinPayload?.tool_input
|
|
116
|
+
? (typeof stdinPayload.tool_input === 'string'
|
|
117
|
+
? stdinPayload.tool_input
|
|
118
|
+
: JSON.stringify(stdinPayload.tool_input))
|
|
119
|
+
: (process.argv[3] || process.env.TOOL_INPUT || '');
|
|
96
120
|
|
|
97
121
|
const result = guard(toolName, toolInput);
|
|
98
122
|
|
|
99
123
|
if (result) {
|
|
100
124
|
console.log(JSON.stringify(result));
|
|
101
|
-
process.exit(
|
|
125
|
+
process.exit(2); // deny 규약
|
|
102
126
|
}
|
|
103
127
|
|
|
104
128
|
process.exit(0);
|
package/hooks/scripts/utils.js
CHANGED
|
@@ -36,6 +36,54 @@ export function readVibeConfig() {
|
|
|
36
36
|
return {};
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* 프로젝트 설정(.claude/vibe/config.json) 읽기
|
|
41
|
+
* @returns {object} 파싱된 config 또는 빈 객체
|
|
42
|
+
*/
|
|
43
|
+
export function readProjectConfig() {
|
|
44
|
+
const configPath = path.join(PROJECT_DIR, '.claude', 'vibe', 'config.json');
|
|
45
|
+
try {
|
|
46
|
+
if (fs.existsSync(configPath)) {
|
|
47
|
+
return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
48
|
+
}
|
|
49
|
+
} catch { /* ignore */ }
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Deep merge: source의 값이 target을 덮어씀 (배열은 교체)
|
|
55
|
+
*/
|
|
56
|
+
function deepMerge(target, source) {
|
|
57
|
+
const result = { ...target };
|
|
58
|
+
for (const key of Object.keys(source)) {
|
|
59
|
+
const srcVal = source[key];
|
|
60
|
+
if (srcVal === undefined) continue;
|
|
61
|
+
const tgtVal = target[key];
|
|
62
|
+
if (
|
|
63
|
+
tgtVal && typeof tgtVal === 'object' && !Array.isArray(tgtVal) &&
|
|
64
|
+
srcVal && typeof srcVal === 'object' && !Array.isArray(srcVal)
|
|
65
|
+
) {
|
|
66
|
+
result[key] = deepMerge(tgtVal, srcVal);
|
|
67
|
+
} else {
|
|
68
|
+
result[key] = srcVal;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 다중 계층 설정 병합: 글로벌 + 프로젝트
|
|
76
|
+
* 우선순위: 프로젝트 > 글로벌 (credentials는 글로벌 전용)
|
|
77
|
+
* @returns {object} 병합된 config
|
|
78
|
+
*/
|
|
79
|
+
export function resolveVibeConfig() {
|
|
80
|
+
const global = readVibeConfig();
|
|
81
|
+
const project = readProjectConfig();
|
|
82
|
+
if (Object.keys(project).length === 0) return global;
|
|
83
|
+
const { credentials: _ignored, ...projectWithoutCreds } = project;
|
|
84
|
+
return deepMerge(global, projectWithoutCreds);
|
|
85
|
+
}
|
|
86
|
+
|
|
39
87
|
/**
|
|
40
88
|
* 파일 시스템 경로를 file:// URL로 변환 (크로스 플랫폼)
|
|
41
89
|
* - macOS/Linux: /Users/grove/... → file:///Users/grove/...
|
package/package.json
CHANGED
|
@@ -24,8 +24,8 @@ tier: standard
|
|
|
24
24
|
|
|
25
25
|
AskUserQuestion (options 사용 금지, 자유 텍스트만):
|
|
26
26
|
```
|
|
27
|
-
question: "
|
|
28
|
-
→
|
|
27
|
+
question: "스토리보드 Figma URL을 입력해주세요. (없으면 '없음')"
|
|
28
|
+
→ 응답 대기 (응답 받기 전 다음 진행 금지)
|
|
29
29
|
→ figma.com URL → storyboardUrl 저장
|
|
30
30
|
→ "없음" → storyboardUrl = null
|
|
31
31
|
```
|
|
@@ -39,45 +39,24 @@ URL에서 fileKey, nodeId 추출:
|
|
|
39
39
|
|
|
40
40
|
1. get_metadata(fileKey, nodeId) → 전체 프레임 목록
|
|
41
41
|
2. 관련 섹션별 get_design_context 또는 get_screenshot:
|
|
42
|
-
- "해상도 대응" / "Media Query" → 브레이크포인트 +
|
|
42
|
+
- "해상도 대응" / "Media Query" → 브레이크포인트 + 디자인 시안 사이즈
|
|
43
43
|
- "인터랙션" / "Interaction" → 호버/클릭/스크롤 스펙
|
|
44
44
|
- "애니메이션" / "Animation" / "Motion" → 트랜지션 스펙
|
|
45
45
|
- "상태" / "State" → 로딩/에러/성공 UI
|
|
46
46
|
- "컬러" / "Color" / "타이포" / "Typography" → 디자인 가이드
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
###
|
|
49
|
+
### 해상도 대응 프레임 추출
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
1. PC Main Target: 1920px (실제 타겟 해상도)
|
|
54
|
-
2. Breakpoint: 1024px (PC↔Mobile 경계)
|
|
55
|
-
3. Mobile Portrait: ~480px
|
|
56
|
-
4. Mobile Minimum: 360px~
|
|
57
|
-
5. ⚠️ 디자인 시안 PC: 2560px (Figma 아트보드 크기)
|
|
58
|
-
6. ⚠️ 디자인 시안 Mobile: 720px (Figma 아트보드 크기)
|
|
59
|
-
|
|
60
|
-
디자인 시안 사이즈가 없으면 Step B에서 스케일 팩터를 계산할 수 없음:
|
|
61
|
-
Figma 값 × (타겟 / 시안) = 실제 코드 값
|
|
62
|
-
예: Figma PC font-size 48px × (1920/2560) = 36px
|
|
63
|
-
예: Figma Mobile font-size 28px × (480/720) = 18.67px → 19px
|
|
64
|
-
```
|
|
51
|
+
해상도 프레임에서 브레이크포인트 + 스케일 팩터 정보를 추출한다.
|
|
52
|
+
계산 공식과 기본값은 **vibe-figma-rules R-3** 참조.
|
|
65
53
|
|
|
66
|
-
추출 결과를 `storyboardSpec`으로 저장:
|
|
67
54
|
```
|
|
55
|
+
추출 결과를 storyboardSpec으로 저장:
|
|
56
|
+
|
|
68
57
|
storyboardSpec = {
|
|
69
|
-
breakpoints: {
|
|
70
|
-
|
|
71
|
-
breakpoint: 1024, // PC↔Mobile 경계
|
|
72
|
-
mobilePortrait: 480, // Mobile portrait max
|
|
73
|
-
mobileMinimum: 360, // Mobile minimum
|
|
74
|
-
designPc: 2560, // ⚠️ Figma PC 시안 사이즈
|
|
75
|
-
designMobile: 720, // ⚠️ Figma Mobile 시안 사이즈
|
|
76
|
-
},
|
|
77
|
-
scaleFactor: {
|
|
78
|
-
pc: 1920 / 2560, // = 0.75 (PC 스케일)
|
|
79
|
-
mobile: 480 / 720, // = 0.667 (Mobile 스케일)
|
|
80
|
-
},
|
|
58
|
+
breakpoints: { pcTarget, breakpoint, mobilePortrait, mobileMinimum, designPc, designMobile },
|
|
59
|
+
scaleFactor: { pc, mobile },
|
|
81
60
|
interactions: [ ... ],
|
|
82
61
|
animations: [ ... ],
|
|
83
62
|
states: { ... },
|
|
@@ -89,9 +68,9 @@ storyboardSpec = {
|
|
|
89
68
|
## A-3. 프로젝트 스택 감지 + Base 구조 설계
|
|
90
69
|
|
|
91
70
|
```
|
|
92
|
-
1. 프로젝트 스택 감지 (vibe-figma-rules
|
|
71
|
+
1. 프로젝트 스택 감지 (vibe-figma-rules R-2 참조)
|
|
93
72
|
2. 디자인 시스템 감지 (--new 미지정 시)
|
|
94
|
-
3. 브레이크포인트 로드 (vibe-figma-rules
|
|
73
|
+
3. 브레이크포인트 로드 (vibe-figma-rules R-3 참조, 스토리보드 우선)
|
|
95
74
|
4. 피처명 결정 (Figma 파일명에서 추출)
|
|
96
75
|
5. → 파일 생성은 vibe-figma-analyze 스킬에서 실행 (이 스킬은 추출까지만)
|
|
97
76
|
```
|
|
@@ -101,46 +80,26 @@ storyboardSpec = {
|
|
|
101
80
|
Figma 파일명에서 피처명 자동 추출 → kebab-case 변환.
|
|
102
81
|
|
|
103
82
|
```
|
|
104
|
-
예:
|
|
83
|
+
예: "Winter Sale Campaign" → winter-sale
|
|
84
|
+
예: "Dashboard Redesign v2" → dashboard-redesign
|
|
105
85
|
```
|
|
106
86
|
|
|
107
|
-
### 파일 구조
|
|
108
|
-
|
|
109
|
-
**페이지 디렉토리:**
|
|
110
|
-
```
|
|
111
|
-
Next.js → pages/ or app/
|
|
112
|
-
Nuxt → pages/
|
|
113
|
-
React → src/pages/ or src/views/
|
|
114
|
-
Vue → src/views/
|
|
115
|
-
```
|
|
87
|
+
### 파일 구조 생성
|
|
116
88
|
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
Next.js → components/ or src/components/
|
|
120
|
-
Nuxt → components/
|
|
121
|
-
React → src/components/
|
|
122
|
-
Vue → src/components/
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**스타일 디렉토리:**
|
|
126
|
-
```
|
|
127
|
-
SCSS → assets/scss/ or src/scss/ or src/styles/
|
|
128
|
-
CSS → src/styles/ or styles/
|
|
129
|
-
Tailwind → tailwind.config.* (extend)
|
|
130
|
-
```
|
|
89
|
+
디렉토리는 **vibe-figma-rules R-2.2** 감지 결과에 따라 결정.
|
|
131
90
|
|
|
132
|
-
**생성 예시 (Nuxt
|
|
91
|
+
**생성 예시 (Nuxt):**
|
|
133
92
|
```
|
|
134
|
-
pages/
|
|
135
|
-
components/
|
|
136
|
-
assets/scss/
|
|
93
|
+
pages/{feature-name}.vue ← 루트 페이지 (빈 shell)
|
|
94
|
+
components/{feature-name}/ ← 컴포넌트 디렉토리 (빈 폴더)
|
|
95
|
+
assets/scss/_{feature-name}-tokens.scss ← 스토리보드 기반 초기 토큰
|
|
137
96
|
```
|
|
138
97
|
|
|
139
|
-
**생성 예시 (
|
|
98
|
+
**생성 예시 (Next.js):**
|
|
140
99
|
```
|
|
141
|
-
app/
|
|
142
|
-
components/
|
|
143
|
-
styles/
|
|
100
|
+
app/{feature-name}/page.tsx ← 루트 페이지 (빈 shell)
|
|
101
|
+
components/{feature-name}/ ← 컴포넌트 디렉토리 (빈 폴더)
|
|
102
|
+
styles/{feature-name}-tokens.css ← 스토리보드 기반 초기 토큰
|
|
144
103
|
```
|
|
145
104
|
|
|
146
|
-
Step A 완료 후 → Step B (vibe-figma-
|
|
105
|
+
Step A 완료 후 → Step B (vibe-figma-frame) 로 진행.
|