@su-record/vibe 2.9.35 → 2.9.37

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.
Files changed (74) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.en.md +1 -1
  3. package/README.md +1 -1
  4. package/agents/compounder.md +6 -6
  5. package/agents/diagrammer.md +2 -2
  6. package/agents/e2e-tester.md +5 -5
  7. package/agents/qa/acceptance-tester.md +2 -2
  8. package/agents/refactor-cleaner.md +2 -2
  9. package/agents/tester.md +1 -1
  10. package/agents/ui/ui-antipattern-detector.md +1 -1
  11. package/agents/ui/ui-design-system-gen.md +3 -3
  12. package/agents/ui/ui-industry-analyzer.md +1 -1
  13. package/agents/ui/ui-layout-architect.md +1 -1
  14. package/agents/ui/ui-stack-implementer.md +1 -1
  15. package/commands/vibe.analyze.md +1 -1
  16. package/commands/vibe.contract.md +2 -2
  17. package/commands/vibe.figma.md +3 -3
  18. package/commands/vibe.harness.md +3 -3
  19. package/commands/vibe.regress.md +2 -2
  20. package/commands/vibe.review.md +4 -4
  21. package/commands/vibe.run.md +27 -27
  22. package/commands/vibe.scaffold.md +1 -1
  23. package/commands/vibe.spec.md +38 -38
  24. package/commands/vibe.trace.md +14 -14
  25. package/commands/vibe.utils.md +3 -3
  26. package/commands/vibe.verify.md +18 -18
  27. package/dist/infra/lib/figma/extract.d.ts.map +1 -1
  28. package/dist/infra/lib/figma/extract.js +55 -0
  29. package/dist/infra/lib/figma/extract.js.map +1 -1
  30. package/dist/infra/lib/figma/types.d.ts +8 -0
  31. package/dist/infra/lib/figma/types.d.ts.map +1 -1
  32. package/hooks/scripts/__tests__/figma-extract.test.js +338 -0
  33. package/hooks/scripts/figma-extract.js +144 -31
  34. package/hooks/scripts/prompt-dispatcher.js +15 -0
  35. package/hooks/scripts/utils.js +4 -0
  36. package/package.json +1 -1
  37. package/skills/arch-guard/SKILL.md +2 -2
  38. package/skills/arch-guard/agents/rule-generator.md +3 -3
  39. package/skills/arch-guard/scripts/check-boundaries.js +1 -1
  40. package/skills/arch-guard/templates/arch-rules.json +1 -1
  41. package/skills/capability-loop/SKILL.md +2 -2
  42. package/skills/capability-loop/templates/capability-spec.md +1 -1
  43. package/skills/claude-md-guide/SKILL.md +2 -2
  44. package/skills/design-audit/SKILL.md +3 -3
  45. package/skills/design-critique/SKILL.md +2 -2
  46. package/skills/design-distill/SKILL.md +1 -1
  47. package/skills/design-normalize/SKILL.md +4 -4
  48. package/skills/design-polish/SKILL.md +2 -2
  49. package/skills/design-teach/SKILL.md +6 -6
  50. package/skills/design-teach/templates/design-context.json +1 -1
  51. package/skills/devlog/SKILL.md +1 -1
  52. package/skills/event-planning/SKILL.md +1 -1
  53. package/skills/exec-plan/SKILL.md +5 -5
  54. package/skills/exec-plan/agents/decomposer.md +1 -1
  55. package/skills/exec-plan/templates/plan.md +2 -2
  56. package/skills/parallel-research/SKILL.md +3 -3
  57. package/skills/parallel-research/orchestrator.md +1 -1
  58. package/skills/parallel-research/templates/paper.md +1 -1
  59. package/skills/priority-todos/SKILL.md +1 -1
  60. package/skills/vibe-contract/SKILL.md +6 -6
  61. package/skills/vibe-interview/SKILL.md +6 -6
  62. package/skills/vibe-interview/checklists/feature.md +1 -1
  63. package/skills/vibe-plan/SKILL.md +10 -10
  64. package/skills/vibe-regress/SKILL.md +5 -5
  65. package/skills/vibe-regress/templates/bug.md +1 -1
  66. package/skills/vibe-regress/templates/test-jest.md +1 -1
  67. package/skills/vibe-regress/templates/test-vitest.md +1 -1
  68. package/skills/vibe-spec/SKILL.md +45 -45
  69. package/skills/vibe-spec-review/SKILL.md +21 -21
  70. package/skills/vibe-test/SKILL.md +1 -1
  71. package/vibe/constitution.md +2 -2
  72. package/vibe/templates/claudemd-template.md +4 -4
  73. package/vibe/templates/constitution-template.md +2 -2
  74. package/vibe/templates/feature-template.md +1 -1
@@ -12,8 +12,8 @@ argument-hint: "(선택) feature name, plan/interview file path, or idea"
12
12
  ```
13
13
  /vibe.spec # 빈 시작 — "무엇을 만들까요?"부터
14
14
  /vibe.spec "패럴랙스 웹사이트" # 아이디어/피처명 지정 시작
15
- /vibe.spec ".claude/vibe/plans/{feature}.md" # 기획서 입력 (plan 단계 스킵)
16
- /vibe.spec ".claude/vibe/interviews/{feature}.md" # interview 입력 (interview 단계 스킵)
15
+ /vibe.spec ".vibe/plans/{feature}.md" # 기획서 입력 (plan 단계 스킵)
16
+ /vibe.spec ".vibe/interviews/{feature}.md" # interview 입력 (interview 단계 스킵)
17
17
  /vibe.spec "docs/prd.md" # 외부 PRD/아이디어 파일 입력
18
18
  /vibe.spec + 📎 첨부 # 첨부 기반 시작
19
19
  /vibe.spec "feature-name" ultrawork # 중단 게이트 없이 자동 전 흐름 실행
@@ -38,20 +38,20 @@ Phase 0: Git branch setup
38
38
 
39
39
  Phase 0.5: Input 분석 + Smart resume 결정
40
40
  - 첨부/파일/아이디어 감지
41
- - 기존 .claude/vibe/{interviews,plans,specs}/ 확인
41
+ - 기존 .vibe/{interviews,plans,specs}/ 확인
42
42
  - 시작 단계 결정: interview | plan | spec | review
43
43
 
44
44
  Phase 1: Interview (skill: vibe-interview)
45
45
  - 조건: interview 파일 없음
46
46
  - 사용자 "그만"까지 반복 인터뷰
47
- - 출력: .claude/vibe/interviews/{feature}.md
47
+ - 출력: .vibe/interviews/{feature}.md
48
48
 
49
49
  [Stop Gate 1] — ultrawork 모드에서는 스킵
50
50
 
51
51
  Phase 2: Plan (skill: vibe-plan)
52
52
  - 조건: plan 파일 없음
53
53
  - interview → 마크다운 기획서 정제
54
- - 출력: .claude/vibe/plans/{feature}.md
54
+ - 출력: .vibe/plans/{feature}.md
55
55
 
56
56
  [Stop Gate 2 + 분기 판단]
57
57
  기획서 type 읽고 경로 결정:
@@ -63,7 +63,7 @@ Phase 3: SPEC 작성 (skill: vibe-spec)
63
63
  - Parallel research (GPT/Gemini/Claude agents)
64
64
  - Large scope 자동 분할
65
65
  - Ambiguity scan + 품질 게이트(100점, 수렴까지 루프)
66
- - 출력: .claude/vibe/specs/{feature}.md + .claude/vibe/features/{feature}.feature
66
+ - 출력: .vibe/specs/{feature}.md + .vibe/features/{feature}.feature
67
67
 
68
68
  Phase 4: SPEC Review (skill: vibe-spec-review)
69
69
  - Race Review (GPT + Gemini, 라운드 수 캡 없음, 수렴까지 루프)
@@ -110,11 +110,11 @@ git branch --show-current
110
110
  ```
111
111
  1. 📎 첨부 파일 있음? → 첨부 분석 → feature name 추출
112
112
  2. 인자가 파일 경로? → 파일 위치로 시작 단계 결정:
113
- .claude/vibe/interviews/*.md → Phase 2 (plan)
114
- .claude/vibe/plans/*.md → Phase 3 (spec)
115
- .claude/vibe/specs/*.md → Phase 4 (review)
113
+ .vibe/interviews/*.md → Phase 2 (plan)
114
+ .vibe/plans/*.md → Phase 3 (spec)
115
+ .vibe/specs/*.md → Phase 4 (review)
116
116
  기타 (.md/.txt/.pdf) → Phase 2 (plan, 외부 PRD 흡수)
117
- 3. 인자가 feature name? → .claude/vibe/에서 기존 파일 검색
117
+ 3. 인자가 feature name? → .vibe/에서 기존 파일 검색
118
118
  existing spec → "리뷰 재실행? 이어서? 재작성?" 물음
119
119
  existing plan → Phase 3 (spec)
120
120
  existing interview → Phase 2 (plan)
@@ -129,14 +129,14 @@ git branch --show-current
129
129
  ```
130
130
  알고리즘:
131
131
 
132
- Step 1) .claude/vibe/.last-feature 확인 (pointer 파일)
132
+ Step 1) .vibe/.last-feature 확인 (pointer 파일)
133
133
  - 파일 없음 → Step 2로
134
134
  - 존재 → 해당 feature의 상태 요약 출력 + 확인 질문:
135
135
  "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
136
136
  🔄 마지막 작업: {feature-name}
137
137
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138
- ✅ interview: .claude/vibe/interviews/{feature}.md (status: complete, N일 전)
139
- ✅ plan: .claude/vibe/plans/{feature}.md (N일 전)
138
+ ✅ interview: .vibe/interviews/{feature}.md (status: complete, N일 전)
139
+ ✅ plan: .vibe/plans/{feature}.md (N일 전)
140
140
  ❌ spec: 없음
141
141
  → 다음 단계: Phase 3 (vibe-spec 스킬 — SPEC 작성)
142
142
 
@@ -151,10 +151,10 @@ Step 1) .claude/vibe/.last-feature 확인 (pointer 파일)
151
151
  - new → Step 3으로
152
152
  - abort → 종료
153
153
 
154
- Step 2) 진행 중 작업 목록 표시 (.claude/vibe/ 디렉토리 스캔)
154
+ Step 2) 진행 중 작업 목록 표시 (.vibe/ 디렉토리 스캔)
155
155
  수집:
156
156
  features = {} (feature name → {hasInterview, hasPlan, hasSpec, mtime})
157
- for each file in .claude/vibe/interviews/*.md:
157
+ for each file in .vibe/interviews/*.md:
158
158
  feature = basename without .md
159
159
  features[feature].hasInterview = true
160
160
  features[feature].interviewMtime = file.mtime
@@ -193,12 +193,12 @@ Step 3) 빈 시작 (기존 동작)
193
193
  #### `.last-feature` 포인터 파일 갱신 규칙
194
194
 
195
195
  ```
196
- 경로: .claude/vibe/.last-feature
196
+ 경로: .vibe/.last-feature
197
197
  형식: 한 줄, feature name만 저장
198
198
  예: "bean-landing\n"
199
199
 
200
200
  ⚠ 이 파일은 **개인 작업 포인터**이므로 git에 커밋하지 않는다.
201
- `.gitignore` 에 `.claude/vibe/.last-feature` 엔트리 필수.
201
+ `.gitignore` 에 `.vibe/.last-feature` 엔트리 필수.
202
202
 
203
203
  갱신 시점:
204
204
  - Phase 1 (interview) 진입 시 → feature name 결정되면 즉시 기록
@@ -264,13 +264,13 @@ Step 3) 빈 시작 (기존 동작)
264
264
  Load skill `vibe-interview` with input: {user_idea}
265
265
  ```
266
266
 
267
- > **`.last-feature` 갱신**: vibe-interview 스킬이 feature name을 확정하는 즉시 `.claude/vibe/.last-feature` 에 한 줄로 기록. 이후 Phase 2/3/4 진입 시에도 동일 기록 유지 (값이 같으면 no-op).
267
+ > **`.last-feature` 갱신**: vibe-interview 스킬이 feature name을 확정하는 즉시 `.vibe/.last-feature` 에 한 줄로 기록. 이후 Phase 2/3/4 진입 시에도 동일 기록 유지 (값이 같으면 no-op).
268
268
 
269
269
  `vibe-interview` 스킬이 자체적으로:
270
270
  - 프로젝트 타입 감지 (website/webapp/mobile/api/library/feature)
271
271
  - 타입별 체크리스트 로드 (`skills/vibe-interview/checklists/{type}.md`)
272
272
  - 반복 인터뷰 실행 (사용자 "그만"까지)
273
- - `.claude/vibe/interviews/{feature-name}.md` 저장
273
+ - `.vibe/interviews/{feature-name}.md` 저장
274
274
 
275
275
  **Stop Gate 1**: Interview 완료 후 (ultrawork 모드 스킵)
276
276
 
@@ -279,7 +279,7 @@ Load skill `vibe-interview` with input: {user_idea}
279
279
  ✅ Interview 완료
280
280
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
281
281
 
282
- 📄 .claude/vibe/interviews/{feature}.md
282
+ 📄 .vibe/interviews/{feature}.md
283
283
  Required: N/M | Optional: K/L | Discovered: X
284
284
 
285
285
  다음 단계: 기획서 작성
@@ -295,14 +295,14 @@ Enter → 계속
295
295
  **진입 조건:** plan 파일이 아직 없음
296
296
 
297
297
  ```
298
- Load skill `vibe-plan` with input: .claude/vibe/interviews/{feature}.md
298
+ Load skill `vibe-plan` with input: .vibe/interviews/{feature}.md
299
299
  ```
300
300
 
301
301
  `vibe-plan` 스킬이 자체적으로:
302
302
  - 템플릿 로드 (`~/.claude/vibe/templates/plan-template.md`)
303
303
  - Interview 섹션별 정제
304
304
  - UI 섹션 조건부 포함 (type 기반)
305
- - `.claude/vibe/plans/{feature}.md` 저장
305
+ - `.vibe/plans/{feature}.md` 저장
306
306
 
307
307
  **Stop Gate 2**: 기획서 완료 후 + 분기 판단 (ultrawork 모드 스킵)
308
308
 
@@ -311,7 +311,7 @@ Load skill `vibe-plan` with input: .claude/vibe/interviews/{feature}.md
311
311
  ✅ 기획서 완성
312
312
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
313
313
 
314
- 📄 .claude/vibe/plans/{feature}.md
314
+ 📄 .vibe/plans/{feature}.md
315
315
  Type: {type}
316
316
 
317
317
  {type ∈ UI}:
@@ -334,7 +334,7 @@ Enter → 계속
334
334
  **진입 조건:** spec 파일이 아직 없음 (또는 재작성 요청)
335
335
 
336
336
  ```
337
- Load skill `vibe-spec` with input: .claude/vibe/plans/{feature}.md
337
+ Load skill `vibe-spec` with input: .vibe/plans/{feature}.md
338
338
  ```
339
339
 
340
340
  `vibe-spec` 스킬이 PTCF 구조 SPEC 문서 + Feature(BDD) 파일 생성.
@@ -352,8 +352,8 @@ Load skill `vibe-spec` with input: .claude/vibe/plans/{feature}.md
352
352
 
353
353
  **출력:**
354
354
 
355
- - `.claude/vibe/specs/{feature-name}.md` (또는 split folder)
356
- - `.claude/vibe/features/{feature-name}.feature` (또는 split folder)
355
+ - `.vibe/specs/{feature-name}.md` (또는 split folder)
356
+ - `.vibe/features/{feature-name}.feature` (또는 split folder)
357
357
 
358
358
  ### Phase 4: SPEC Review
359
359
 
@@ -378,7 +378,7 @@ Load skill `vibe-spec-review` with feature: {feature-name}
378
378
  Load skill `vibe-contract` with: extract "{feature-name}"
379
379
  ```
380
380
 
381
- If the SPEC has a `## API` / `## Endpoints` / `## Interface` section, extract the contract to `.claude/vibe/contracts/{feature-name}.md`. If the section is absent, exit cleanly (not every feature has an API).
381
+ If the SPEC has a `## API` / `## Endpoints` / `## Interface` section, extract the contract to `.vibe/contracts/{feature-name}.md`. If the section is absent, exit cleanly (not every feature has an API).
382
382
 
383
383
  The contract is referenced during Phase 5a implementation, and used by `/vibe.verify` for drift detection.
384
384
 
@@ -390,7 +390,7 @@ The contract is referenced during Phase 5a implementation, and used by `/vibe.ve
390
390
 
391
391
  SPEC → code. Auto-checks at start:
392
392
  - `/vibe.regress list --feature {feature-name}` — warn if any open regressions exist
393
- - `.claude/vibe/contracts/{feature-name}.md` — load if present, use as implementation guide
393
+ - `.vibe/contracts/{feature-name}.md` — load if present, use as implementation guide
394
394
 
395
395
  ### Phase 5b: UI Track (type ∈ {website, webapp, mobile}일 때만)
396
396
 
@@ -402,7 +402,7 @@ SPEC → code. Auto-checks at start:
402
402
 
403
403
  **`/vibe.figma`에 전달할 컨텍스트:**
404
404
 
405
- - `.claude/vibe/plans/{feature}.md` 경로
405
+ - `.vibe/plans/{feature}.md` 경로
406
406
  - 기획서의 §7 Look & Feel, §8 레이아웃, §9 반응형 섹션을 Phase 1 스토리보드 입력으로 사용
407
407
 
408
408
  ### Phase 6: Verify
@@ -421,7 +421,7 @@ UI + 로직 + 연결 검증 (후속 PR에서 3축 확장 예정).
421
421
 
422
422
  SPEC ↔ 구현 추적.
423
423
 
424
- > **Phase 7 완료 시**: `.claude/vibe/.last-feature` 삭제 (워크플로 완주 — 다음 `/vibe.spec` 호출은 빈 시작 또는 진행 중 작업 목록에서 시작).
424
+ > **Phase 7 완료 시**: `.vibe/.last-feature` 삭제 (워크플로 완주 — 다음 `/vibe.spec` 호출은 빈 시작 또는 진행 중 작업 목록에서 시작).
425
425
 
426
426
  ## ultrawork 모드
427
427
 
@@ -455,7 +455,7 @@ Claude: 🔍 Input 분석
455
455
 
456
456
  ### 예시 2: 기획서에서 시작
457
457
  ```
458
- User: /vibe.spec ".claude/vibe/plans/bean-landing.md"
458
+ User: /vibe.spec ".vibe/plans/bean-landing.md"
459
459
 
460
460
  Claude: 🔍 Input 분석
461
461
  입력: plan 파일 경로
@@ -474,8 +474,8 @@ User: /vibe.spec "bean-landing"
474
474
  Claude: 🔍 Input 분석
475
475
  입력: feature name
476
476
  기존 파일 검색...
477
- ✅ interview: .claude/vibe/interviews/bean-landing.md
478
- ✅ plan: .claude/vibe/plans/bean-landing.md
477
+ ✅ interview: .vibe/interviews/bean-landing.md
478
+ ✅ plan: .vibe/plans/bean-landing.md
479
479
  ❌ spec: 없음
480
480
  → 시작 단계: Phase 3 (vibe-spec)
481
481
 
@@ -489,8 +489,8 @@ User: /vibe.spec "bean-landing"
489
489
 
490
490
  Claude: 🔍 Input 분석
491
491
  기존 파일:
492
- ✅ spec: .claude/vibe/specs/bean-landing.md
493
- ✅ feature: .claude/vibe/features/bean-landing.feature
492
+ ✅ spec: .vibe/specs/bean-landing.md
493
+ ✅ feature: .vibe/features/bean-landing.feature
494
494
 
495
495
  이미 SPEC이 존재합니다. 어떻게 진행할까요?
496
496
  1. SPEC 리뷰 (Phase 4: vibe-spec-review 스킬 로드)
@@ -506,7 +506,7 @@ User: /vibe.spec
506
506
  Claude: (.last-feature 읽기 → "bean-landing" 발견)
507
507
 
508
508
  🔄 마지막 작업: bean-landing
509
- ✅ interview: .claude/vibe/interviews/bean-landing.md (status: partial, 2일 전)
509
+ ✅ interview: .vibe/interviews/bean-landing.md (status: partial, 2일 전)
510
510
  ❌ plan: 없음
511
511
  ❌ spec: 없음
512
512
  → 다음 단계: Phase 2 (vibe-plan — 기획서 작성)
@@ -552,8 +552,8 @@ Claude: Feature: todo-app 선택
552
552
 
553
553
  ## Rollback / Resume
554
554
 
555
- - 각 Phase 종료 시 상태가 `.claude/vibe/{interviews,plans,specs,features}/`에 저장됨
556
- - **`.claude/vibe/.last-feature` pointer**가 각 Phase 진입 시 갱신되어 "가장 최근에 작업한 feature" 추적 (Phase 7 완주 시 삭제)
555
+ - 각 Phase 종료 시 상태가 `.vibe/{interviews,plans,specs,features}/`에 저장됨
556
+ - **`.vibe/.last-feature` pointer**가 각 Phase 진입 시 갱신되어 "가장 최근에 작업한 feature" 추적 (Phase 7 완주 시 삭제)
557
557
  - 중단 시 다시 `/vibe.spec`으로 돌아오면 Smart Resume Fallback 동작:
558
558
  - 인자 있음 (`/vibe.spec "feature-name"` 또는 파일 경로) → 해당 feature의 가장 진행된 단계 다음으로 바로 진입
559
559
  - 인자 없음 → `.last-feature` 우선 제안 → 거부하면 진행 중 작업 목록 제시 → 또 거부하면 빈 시작
@@ -28,24 +28,24 @@ Requirements Traceability Matrix (RTM) tracks the relationship between:
28
28
 
29
29
  ```
30
30
  Step 1: Check if SPLIT structure exists (folder)
31
- 📁 .claude/vibe/specs/{feature-name}/ → Folder with _index.md + phase files
32
- 📁 .claude/vibe/features/{feature-name}/ → Folder with _index.feature + phase files
31
+ 📁 .vibe/specs/{feature-name}/ → Folder with _index.md + phase files
32
+ 📁 .vibe/features/{feature-name}/ → Folder with _index.feature + phase files
33
33
 
34
34
  Step 2: If no folder, check single file
35
- 📄 .claude/vibe/specs/{feature-name}.md → Single SPEC file
36
- 📄 .claude/vibe/features/{feature-name}.feature → Single Feature file
35
+ 📄 .vibe/specs/{feature-name}.md → Single SPEC file
36
+ 📄 .vibe/features/{feature-name}.feature → Single Feature file
37
37
 
38
38
  Step 3: If neither exists → Error
39
39
  ```
40
40
 
41
41
  **Split structure (folder) detected:**
42
42
  ```
43
- 📁 .claude/vibe/specs/{feature-name}/
43
+ 📁 .vibe/specs/{feature-name}/
44
44
  ├── _index.md → Master SPEC (read first)
45
45
  ├── phase-1-{name}.md → Phase 1 SPEC
46
46
  └── ...
47
47
 
48
- 📁 .claude/vibe/features/{feature-name}/
48
+ 📁 .vibe/features/{feature-name}/
49
49
  ├── _index.feature → Master Feature (read first)
50
50
  ├── phase-1-{name}.feature → Phase 1 scenarios
51
51
  └── ...
@@ -55,8 +55,8 @@ Step 3: If neither exists → Error
55
55
 
56
56
  **Single file detected:**
57
57
  ```
58
- 📄 .claude/vibe/specs/{feature-name}.md → SPEC
59
- 📄 .claude/vibe/features/{feature-name}.feature → Feature
58
+ 📄 .vibe/specs/{feature-name}.md → SPEC
59
+ 📄 .vibe/features/{feature-name}.feature → Feature
60
60
  ```
61
61
 
62
62
  **Additional (auto-detect):**
@@ -67,8 +67,8 @@ Step 3: If neither exists → Error
67
67
  **Error if NEITHER file NOR folder found:**
68
68
  ```
69
69
  ❌ SPEC not found. Searched:
70
- - .claude/vibe/specs/{feature-name}/ (folder)
71
- - .claude/vibe/specs/{feature-name}.md (file)
70
+ - .vibe/specs/{feature-name}/ (folder)
71
+ - .vibe/specs/{feature-name}.md (file)
72
72
 
73
73
  Run /vibe.spec "{feature-name}" first.
74
74
  ```
@@ -145,8 +145,8 @@ Claude:
145
145
  📊 Generating RTM for "login"...
146
146
 
147
147
  Loading files:
148
- ✅ SPEC: .claude/vibe/specs/login.md (5 requirements)
149
- ✅ Feature: .claude/vibe/features/login.feature (4 scenarios)
148
+ ✅ SPEC: .vibe/specs/login.md (5 requirements)
149
+ ✅ Feature: .vibe/features/login.feature (4 scenarios)
150
150
  ✅ Tests: 3 test files found
151
151
 
152
152
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -242,7 +242,7 @@ If the achievement rate does not improve between iterations (`isImproving` retur
242
242
  | Option | Description |
243
243
  |--------|-------------|
244
244
  | `--html` | Output as HTML file |
245
- | `--save` | Save to `.claude/vibe/reports/{feature}-rtm.md` |
245
+ | `--save` | Save to `.vibe/reports/{feature}-rtm.md` |
246
246
  | `--json` | Output as JSON |
247
247
 
248
248
  ## Coverage Targets
@@ -260,7 +260,7 @@ If the achievement rate does not improve between iterations (`isImproving` retur
260
260
 
261
261
  ```
262
262
  /vibe.trace가 정상 완료되면 (RTM 출력 + 사용자 확인 후):
263
- Delete ".claude/vibe/.last-feature"
263
+ Delete ".vibe/.last-feature"
264
264
 
265
265
  이유: /vibe.trace는 vibe 워크플로의 마지막 Phase (Phase 7).
266
266
  완주 후에는 다음 /vibe.spec 호출 시 "빈 시작" 또는 진행 중 목록에서 다른 feature를 시작해야 한다.
@@ -238,7 +238,7 @@ Detect and remove unused code with audit trail.
238
238
 
239
239
  **Output:**
240
240
  - Removed items list
241
- - `.claude/vibe/DELETION_LOG.md` updated
241
+ - `.vibe/DELETION_LOG.md` updated
242
242
  - Build/test verification
243
243
 
244
244
  ---
@@ -285,10 +285,10 @@ Document solved problems for knowledge accumulation.
285
285
  **Usually auto-triggered by hooks when:**
286
286
  - "bug fixed", "PR merged" detected
287
287
 
288
- **Output location:** `.claude/vibe/solutions/`
288
+ **Output location:** `.vibe/solutions/`
289
289
 
290
290
  ```
291
- .claude/vibe/solutions/
291
+ .vibe/solutions/
292
292
  ├── security/ # Security solutions
293
293
  ├── performance/ # Performance optimizations
294
294
  ├── database/ # Database related
@@ -59,25 +59,25 @@ argument-hint: "feature name"
59
59
 
60
60
  ```
61
61
  Step 1: Check if SPLIT structure exists (folder)
62
- 📁 .claude/vibe/features/{feature-name}/ → Folder with _index.feature + phase files
63
- 📁 .claude/vibe/specs/{feature-name}/ → Folder with _index.md + phase files
62
+ 📁 .vibe/features/{feature-name}/ → Folder with _index.feature + phase files
63
+ 📁 .vibe/specs/{feature-name}/ → Folder with _index.md + phase files
64
64
 
65
65
  Step 2: If no folder, check single file
66
- 📄 .claude/vibe/features/{feature-name}.feature → Single Feature file
67
- 📄 .claude/vibe/specs/{feature-name}.md → Single SPEC file
66
+ 📄 .vibe/features/{feature-name}.feature → Single Feature file
67
+ 📄 .vibe/specs/{feature-name}.md → Single SPEC file
68
68
 
69
69
  Step 3: If neither exists → Error
70
70
  ```
71
71
 
72
72
  **Split structure (folder) detected:**
73
73
  ```
74
- 📁 .claude/vibe/features/{feature-name}/
74
+ 📁 .vibe/features/{feature-name}/
75
75
  ├── _index.feature → Master Feature (read first for scenario overview)
76
76
  ├── phase-1-{name}.feature → Phase 1 scenarios
77
77
  ├── phase-2-{name}.feature → Phase 2 scenarios
78
78
  └── ...
79
79
 
80
- 📁 .claude/vibe/specs/{feature-name}/
80
+ 📁 .vibe/specs/{feature-name}/
81
81
  ├── _index.md → Master SPEC (read first for overview)
82
82
  ├── phase-1-{name}.md → Phase 1 SPEC
83
83
  └── ...
@@ -87,15 +87,15 @@ Step 3: If neither exists → Error
87
87
 
88
88
  **Single file detected:**
89
89
  ```
90
- 📄 .claude/vibe/features/{feature-name}.feature → Scenario list
91
- 📄 .claude/vibe/specs/{feature-name}.md → Verification criteria (reference)
90
+ 📄 .vibe/features/{feature-name}.feature → Scenario list
91
+ 📄 .vibe/specs/{feature-name}.md → Verification criteria (reference)
92
92
  ```
93
93
 
94
94
  **Error if NEITHER file NOR folder found:**
95
95
  ```
96
96
  ❌ Feature file not found. Searched:
97
- - .claude/vibe/features/{feature-name}/ (folder)
98
- - .claude/vibe/features/{feature-name}.feature (file)
97
+ - .vibe/features/{feature-name}/ (folder)
98
+ - .vibe/features/{feature-name}.feature (file)
99
99
 
100
100
  Run /vibe.spec "{feature-name}" first.
101
101
  ```
@@ -184,16 +184,16 @@ For each UI scenario in Feature file:
184
184
 
185
185
  ### 3.5 Step Count (MANDATORY before Quality Report)
186
186
 
187
- Read `.claude/vibe/metrics/current-run.json` to obtain the tool-call count from the preceding `/vibe.run` (and any follow-up work in this session). Then append a record to `.claude/vibe/metrics/history.jsonl` and include the count in the Quality Report below.
187
+ Read `.vibe/metrics/current-run.json` to obtain the tool-call count from the preceding `/vibe.run` (and any follow-up work in this session). Then append a record to `.vibe/metrics/history.jsonl` and include the count in the Quality Report below.
188
188
 
189
189
  ```bash
190
190
  # Read step count (ok if file missing — treat as 0)
191
- STEPS=$(node -e "try{const d=JSON.parse(require('fs').readFileSync('.claude/vibe/metrics/current-run.json','utf-8'));console.log(d.steps||0)}catch{console.log(0)}")
191
+ STEPS=$(node -e "try{const d=JSON.parse(require('fs').readFileSync('.vibe/metrics/current-run.json','utf-8'));console.log(d.steps||0)}catch{console.log(0)}")
192
192
 
193
193
  # Append history record
194
194
  node -e "
195
195
  const fs=require('fs'),path=require('path');
196
- const dir='.claude/vibe/metrics';
196
+ const dir='.vibe/metrics';
197
197
  try{
198
198
  const cur=JSON.parse(fs.readFileSync(path.join(dir,'current-run.json'),'utf-8'));
199
199
  const rec={verifiedAt:new Date().toISOString(),feature:cur.feature,startedAt:cur.startedAt,steps:cur.steps||0};
@@ -295,8 +295,8 @@ For each failed scenario:
295
295
 
296
296
  ## Input
297
297
 
298
- - `.claude/vibe/features/{feature-name}.feature` or `.claude/vibe/features/{feature-name}/` - BDD scenarios
299
- - `.claude/vibe/specs/{feature-name}.md` or `.claude/vibe/specs/{feature-name}/` - SPEC document (reference)
298
+ - `.vibe/features/{feature-name}.feature` or `.vibe/features/{feature-name}/` - BDD scenarios
299
+ - `.vibe/specs/{feature-name}.md` or `.vibe/specs/{feature-name}/` - SPEC document (reference)
300
300
  - Implemented source code
301
301
 
302
302
  ## Output
@@ -311,7 +311,7 @@ For each failed scenario:
311
311
  User: /vibe.verify "login"
312
312
 
313
313
  Claude:
314
- 📄 Loading Feature: .claude/vibe/features/login.feature
314
+ 📄 Loading Feature: .vibe/features/login.feature
315
315
  🔍 Starting verification...
316
316
 
317
317
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -432,7 +432,7 @@ After all scenarios pass, auto-invoke:
432
432
  Load skill `vibe-contract` with: check "{feature-name}"
433
433
  ```
434
434
 
435
- - Skip if `.claude/vibe/contracts/{feature-name}.md` does not exist
435
+ - Skip if `.vibe/contracts/{feature-name}.md` does not exist
436
436
  - No drift → verify still passes
437
437
  - **P1 drift** → demote verify to fail; auto-call `/vibe.regress register --from-contract`
438
438
  - P2 / P3 drift → warning only; verify still passes
@@ -533,7 +533,7 @@ Stuck detected (same error as previous attempt):
533
533
  1. Provide a fix hint (e.g., "check LoginForm.tsx line 42")
534
534
  → Apply → Re-verify → Continue loop
535
535
  2. Type "proceed" → Record failure in
536
- .claude/vibe/todos/verify-failure-{scenario}.md,
536
+ .vibe/todos/verify-failure-{scenario}.md,
537
537
  continue to next scenario
538
538
  3. Type "abort" → Stop entire verification
539
539
  → ultrawork mode: auto-record TODO + continue to next scenario
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/figma/extract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAwPpB,wBAAsB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAc3E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAI5F;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,GAAG,GAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAM,GACpE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAC,CAM7D;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,GAAG,GAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAM,GACvE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAIhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2DlF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB5G"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/figma/extract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAuSpB,wBAAsB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAc3E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAI5F;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,GAAG,GAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAM,GACpE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAC,CAM7D;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,GAAG,GAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAM,GACvE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAIhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2DlF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB5G"}
@@ -214,6 +214,51 @@ function extractCSS(node) {
214
214
  const cssOut = imageRef ? { ...css, _imageRef: imageRef } : css;
215
215
  return { css: cssOut, raw, warnings };
216
216
  }
217
+ // ─── Determination (image-vs-HTML) Helpers ──────────────────────────
218
+ const VECTOR_TYPE_RE = /^(VECTOR|LINE|BOOLEAN_OPERATION|STAR|REGULAR_POLYGON)$/;
219
+ /** D1-D3: TEXT whose visual fidelity cannot be preserved by HTML text. */
220
+ function isDesignTextNode(n) {
221
+ if (n.type !== 'TEXT')
222
+ return false;
223
+ const fills = (n.fills || []).filter((f) => f.visible !== false);
224
+ if (fills.length >= 2)
225
+ return true;
226
+ if (fills.some((f) => typeof f.type === 'string' && f.type.startsWith('GRADIENT_')))
227
+ return true;
228
+ if ((n.effects || []).some((e) => e.visible !== false && (e.type === 'DROP_SHADOW' || e.type === 'INNER_SHADOW')))
229
+ return true;
230
+ if ((n.strokes || []).some((s) => s.visible !== false))
231
+ return true;
232
+ return false;
233
+ }
234
+ /** Q1: any descendant carries meaningful text content. */
235
+ function hasTextDescendantRaw(n) {
236
+ if (n.type === 'TEXT' && typeof n.characters === 'string' && n.characters.trim().length)
237
+ return true;
238
+ return (n.children || []).some(hasTextDescendantRaw);
239
+ }
240
+ /** Q2: 2+ direct children sharing the same componentId / name stem. */
241
+ function hasRepeatingInstancesRaw(n) {
242
+ const kids = n.children || [];
243
+ if (kids.length < 2)
244
+ return false;
245
+ const keyCount = {};
246
+ for (const c of kids) {
247
+ if (c.type !== 'INSTANCE' && c.type !== 'COMPONENT')
248
+ continue;
249
+ const key = c.componentId || (c.name || '').replace(/\s*\d+\s*$/, '').trim();
250
+ if (!key)
251
+ continue;
252
+ keyCount[key] = (keyCount[key] || 0) + 1;
253
+ if (keyCount[key] >= 2)
254
+ return true;
255
+ }
256
+ return false;
257
+ }
258
+ /** D4 helper: direct VECTOR-family children count. */
259
+ function vectorChildCountRaw(n) {
260
+ return (n.children || []).filter((c) => VECTOR_TYPE_RE.test(c.type || '')).length;
261
+ }
217
262
  // ─── Tree Walker ────────────────────────────────────────────────────
218
263
  function walkNode(node) {
219
264
  const { css, raw, warnings } = extractCSS(node);
@@ -236,6 +281,16 @@ function walkNode(node) {
236
281
  result.imageRef = result.css._imageRef;
237
282
  delete result.css._imageRef;
238
283
  }
284
+ // Determination metadata (Q1, Q2, D1-D3)
285
+ if (hasTextDescendantRaw(node))
286
+ result.hasTextChildren = true;
287
+ if (hasRepeatingInstancesRaw(node))
288
+ result.hasInstanceRepeat = true;
289
+ if (node.type === 'TEXT' && isDesignTextNode(node))
290
+ result.isDesignText = true;
291
+ const vcnt = vectorChildCountRaw(node);
292
+ if (vcnt > 0)
293
+ result.vectorChildCount = vcnt;
239
294
  if (node.children?.length) {
240
295
  result.children = node.children.map(walkNode);
241
296
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../src/infra/lib/figma/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../src/infra/lib/figma/extract.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,14 @@ export interface FigmaNode {
43
43
  warnings: FigmaWarning[];
44
44
  text?: string;
45
45
  imageRef?: string;
46
+ /** Q1: any descendant carries meaningful TEXT (non-empty characters). */
47
+ hasTextChildren?: boolean;
48
+ /** Q2: 2+ direct children share the same componentId / name stem. */
49
+ hasInstanceRepeat?: boolean;
50
+ /** D1-D3: TEXT node whose visual fidelity cannot be preserved by HTML text. */
51
+ isDesignText?: boolean;
52
+ /** D4 helper: direct VECTOR-family children count. */
53
+ vectorChildCount?: number;
46
54
  children: FigmaNode[];
47
55
  }
48
56
  export interface FigmaImageMap {