@su-record/vibe 2.9.40 → 2.10.2

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 (182) hide show
  1. package/CLAUDE.md +28 -12
  2. package/README.en.md +2 -3
  3. package/README.md +33 -27
  4. package/agents/{teams/figma → figma}/figma-analyst.md +2 -2
  5. package/agents/research/{best-practices-agent.md → best-practices.md} +1 -1
  6. package/agents/research/{codebase-patterns-agent.md → codebase-patterns.md} +1 -1
  7. package/agents/research/{framework-docs-agent.md → framework-docs.md} +1 -1
  8. package/agents/research/{security-advisory-agent.md → security-advisory.md} +1 -1
  9. package/agents/teams/research-team.md +4 -4
  10. package/agents/teams/review-debate-team.md +2 -2
  11. package/agents/teams/security-team.md +4 -4
  12. package/dist/cli/auth.d.ts +0 -1
  13. package/dist/cli/auth.d.ts.map +1 -1
  14. package/dist/cli/auth.js +1 -18
  15. package/dist/cli/auth.js.map +1 -1
  16. package/dist/cli/collaborator.d.ts +3 -3
  17. package/dist/cli/collaborator.js +4 -4
  18. package/dist/cli/collaborator.js.map +1 -1
  19. package/dist/cli/commands/info.d.ts.map +1 -1
  20. package/dist/cli/commands/info.js +0 -1
  21. package/dist/cli/commands/info.js.map +1 -1
  22. package/dist/cli/commands/init.d.ts +3 -4
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +15 -20
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/remove.d.ts.map +1 -1
  27. package/dist/cli/commands/remove.js +2 -7
  28. package/dist/cli/commands/remove.js.map +1 -1
  29. package/dist/cli/commands/update.d.ts.map +1 -1
  30. package/dist/cli/commands/update.js +10 -10
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/index.js +1 -3
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/postinstall/claude-agents.d.ts +3 -1
  35. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  36. package/dist/cli/postinstall/claude-agents.js +47 -9
  37. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  38. package/dist/cli/postinstall/constants.d.ts +5 -0
  39. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  40. package/dist/cli/postinstall/constants.js +165 -23
  41. package/dist/cli/postinstall/constants.js.map +1 -1
  42. package/dist/cli/postinstall/cursor-skills.js +2 -2
  43. package/dist/cli/postinstall/main.d.ts.map +1 -1
  44. package/dist/cli/postinstall/main.js +26 -24
  45. package/dist/cli/postinstall/main.js.map +1 -1
  46. package/dist/cli/setup/LegacyMigration.d.ts +3 -3
  47. package/dist/cli/setup/LegacyMigration.d.ts.map +1 -1
  48. package/dist/cli/setup/LegacyMigration.js +3 -5
  49. package/dist/cli/setup/LegacyMigration.js.map +1 -1
  50. package/dist/cli/setup/ProjectSetup.d.ts +18 -8
  51. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  52. package/dist/cli/setup/ProjectSetup.js +70 -19
  53. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  54. package/dist/cli/setup.d.ts +1 -1
  55. package/dist/cli/setup.d.ts.map +1 -1
  56. package/dist/cli/setup.js +1 -1
  57. package/dist/cli/setup.js.map +1 -1
  58. package/dist/cli/utils/cli-detector.d.ts +0 -7
  59. package/dist/cli/utils/cli-detector.d.ts.map +1 -1
  60. package/dist/cli/utils/cli-detector.js +0 -95
  61. package/dist/cli/utils/cli-detector.js.map +1 -1
  62. package/dist/cli/utils.d.ts +1 -1
  63. package/dist/cli/utils.d.ts.map +1 -1
  64. package/dist/cli/utils.js +1 -2
  65. package/dist/cli/utils.js.map +1 -1
  66. package/dist/infra/lib/OrchestrateWorkflow.js +1 -1
  67. package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
  68. package/dist/infra/lib/memory/MemoryStorage.d.ts +1 -1
  69. package/dist/infra/lib/memory/MemoryStorage.d.ts.map +1 -1
  70. package/dist/infra/lib/memory/MemoryStorage.js +2 -3
  71. package/dist/infra/lib/memory/MemoryStorage.js.map +1 -1
  72. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +4 -4
  73. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
  74. package/dist/infra/orchestrator/parallelResearch.js +4 -4
  75. package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
  76. package/hooks/scripts/__tests__/pre-tool-guard.test.js +1 -1
  77. package/hooks/scripts/clone-extract.js +712 -0
  78. package/hooks/scripts/clone-refine.js +510 -0
  79. package/hooks/scripts/clone-to-scss.js +275 -0
  80. package/hooks/scripts/clone-validate.js +280 -0
  81. package/hooks/scripts/codex-notify.js +49 -0
  82. package/hooks/scripts/command-log.js +1 -1
  83. package/hooks/scripts/lib/dispatcher.js +2 -3
  84. package/hooks/scripts/lib/scope-from-spec.js +2 -4
  85. package/hooks/scripts/llm-orchestrate.js +2 -7
  86. package/hooks/scripts/prompt-dispatcher.js +3 -3
  87. package/hooks/scripts/step-counter.js +1 -1
  88. package/hooks/scripts/utils.js +5 -10
  89. package/package.json +2 -1
  90. package/skills/agents-md/SKILL.md +2 -0
  91. package/skills/arch-guard/SKILL.md +2 -0
  92. package/skills/brand-assets/SKILL.md +1 -0
  93. package/skills/capability-loop/SKILL.md +2 -0
  94. package/skills/characterization-test/SKILL.md +2 -0
  95. package/skills/chub-usage/SKILL.md +1 -0
  96. package/skills/claude-md-guide/SKILL.md +2 -0
  97. package/skills/clone/SKILL.md +361 -0
  98. package/skills/commerce-patterns/SKILL.md +1 -0
  99. package/skills/commit-push-pr/SKILL.md +1 -0
  100. package/skills/context7-usage/SKILL.md +1 -0
  101. package/skills/{vibe-contract → contract}/SKILL.md +7 -8
  102. package/skills/create-prd/SKILL.md +1 -0
  103. package/skills/design-audit/SKILL.md +1 -0
  104. package/skills/design-critique/SKILL.md +1 -0
  105. package/skills/design-distill/SKILL.md +1 -0
  106. package/skills/design-normalize/SKILL.md +1 -0
  107. package/skills/design-polish/SKILL.md +1 -0
  108. package/skills/design-teach/SKILL.md +2 -0
  109. package/skills/devlog/SKILL.md +1 -0
  110. package/skills/{vibe-docs → docs}/SKILL.md +8 -8
  111. package/skills/e2e-commerce/SKILL.md +1 -0
  112. package/skills/event-comms/SKILL.md +1 -0
  113. package/skills/event-ops/SKILL.md +1 -0
  114. package/skills/event-planning/SKILL.md +1 -0
  115. package/skills/exec-plan/SKILL.md +2 -0
  116. package/skills/{vibe-figma → figma}/SKILL.md +4 -3
  117. package/skills/{vibe-figma-convert → figma-convert}/SKILL.md +4 -3
  118. package/skills/{vibe-figma-extract → figma-extract}/SKILL.md +4 -3
  119. package/skills/git-worktree/SKILL.md +1 -0
  120. package/skills/handoff/SKILL.md +2 -0
  121. package/skills/{vibe-interview → interview}/SKILL.md +16 -16
  122. package/skills/parallel-research/SKILL.md +2 -0
  123. package/skills/{vibe-plan → plan}/SKILL.md +9 -9
  124. package/skills/prioritization-frameworks/SKILL.md +1 -0
  125. package/skills/priority-todos/SKILL.md +2 -0
  126. package/skills/{vibe-regress → regress}/SKILL.md +5 -6
  127. package/skills/rob-pike/SKILL.md +2 -0
  128. package/skills/seo-checklist/SKILL.md +1 -0
  129. package/skills/{vibe-spec → spec}/SKILL.md +14 -14
  130. package/skills/{vibe-spec-review → spec-review}/SKILL.md +8 -9
  131. package/skills/systematic-debugging/SKILL.md +2 -0
  132. package/skills/techdebt/SKILL.md +2 -0
  133. package/skills/{vibe-test → test}/SKILL.md +19 -19
  134. package/skills/tool-fallback/SKILL.md +1 -0
  135. package/skills/typescript-advanced-types/SKILL.md +1 -0
  136. package/skills/ui-ux-pro-max/SKILL.md +1 -0
  137. package/skills/user-personas/SKILL.md +1 -0
  138. package/skills/vercel-react-best-practices/SKILL.md +1 -0
  139. package/skills/vibe/SKILL.md +288 -0
  140. package/{commands/vibe.analyze.md → skills/vibe.analyze/SKILL.md} +2 -0
  141. package/skills/vibe.clone/SKILL.md +117 -0
  142. package/{commands/vibe.contract.md → skills/vibe.contract/SKILL.md} +3 -1
  143. package/{commands/vibe.docs.md → skills/vibe.docs/SKILL.md} +3 -1
  144. package/{commands/vibe.event.md → skills/vibe.event/SKILL.md} +2 -0
  145. package/{commands/vibe.figma.md → skills/vibe.figma/SKILL.md} +25 -23
  146. package/{commands/vibe.harness.md → skills/vibe.harness/SKILL.md} +2 -0
  147. package/{commands/vibe.reason.md → skills/vibe.reason/SKILL.md} +2 -0
  148. package/{commands/vibe.regress.md → skills/vibe.regress/SKILL.md} +5 -3
  149. package/{commands/vibe.review.md → skills/vibe.review/SKILL.md} +2 -0
  150. package/{commands/vibe.run.md → skills/vibe.run/SKILL.md} +5 -1
  151. package/{commands/vibe.scaffold.md → skills/vibe.scaffold/SKILL.md} +2 -0
  152. package/{commands/vibe.spec.md → skills/vibe.spec/SKILL.md} +36 -34
  153. package/{commands/vibe.test.md → skills/vibe.test/SKILL.md} +8 -6
  154. package/{commands/vibe.trace.md → skills/vibe.trace/SKILL.md} +7 -0
  155. package/{commands/vibe.utils.md → skills/vibe.utils/SKILL.md} +2 -0
  156. package/{commands/vibe.verify.md → skills/vibe.verify/SKILL.md} +4 -2
  157. package/skills/video-production/SKILL.md +1 -0
  158. package/vibe/rules/principles/dual-harness-doctrine.md +50 -0
  159. /package/agents/{teams/figma → figma}/figma-architect.md +0 -0
  160. /package/agents/{teams/figma → figma}/figma-auditor.md +0 -0
  161. /package/agents/{teams/figma → figma}/figma-builder.md +0 -0
  162. /package/skills/{vibe-docs → docs}/templates/architecture.md +0 -0
  163. /package/skills/{vibe-docs → docs}/templates/behavioral-principles.md +0 -0
  164. /package/skills/{vibe-docs → docs}/templates/readme.md +0 -0
  165. /package/skills/{vibe-docs → docs}/templates/release-notes.md +0 -0
  166. /package/skills/{vibe-figma → figma}/rubrics/extraction-checklist.md +0 -0
  167. /package/skills/{vibe-figma → figma}/templates/component-index.md +0 -0
  168. /package/skills/{vibe-figma → figma}/templates/component-spec.md +0 -0
  169. /package/skills/{vibe-figma → figma}/templates/figma-handoff.md +0 -0
  170. /package/skills/{vibe-figma → figma}/templates/remapped-tree.md +0 -0
  171. /package/skills/{vibe-figma-convert → figma-convert}/rubrics/conversion-rules.md +0 -0
  172. /package/skills/{vibe-figma-convert → figma-convert}/templates/component.md +0 -0
  173. /package/skills/{vibe-figma-extract → figma-extract}/rubrics/image-rules.md +0 -0
  174. /package/skills/{vibe-interview → interview}/checklists/api.md +0 -0
  175. /package/skills/{vibe-interview → interview}/checklists/feature.md +0 -0
  176. /package/skills/{vibe-interview → interview}/checklists/library.md +0 -0
  177. /package/skills/{vibe-interview → interview}/checklists/mobile.md +0 -0
  178. /package/skills/{vibe-interview → interview}/checklists/webapp.md +0 -0
  179. /package/skills/{vibe-interview → interview}/checklists/website.md +0 -0
  180. /package/skills/{vibe-regress → regress}/templates/bug.md +0 -0
  181. /package/skills/{vibe-regress → regress}/templates/test-jest.md +0 -0
  182. /package/skills/{vibe-regress → regress}/templates/test-vitest.md +0 -0
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: typescript-advanced-types
3
+ invocation: [auto]
3
4
  tier: core
4
5
  description: "TypeScript advanced type system master guide. Covers Generics, Conditional Types, Mapped Types, Template Literals, Utility Types. Activates for complex type logic, reusable type utilities, and compile-time type safety."
5
6
  sections:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: ui-ux-pro-max
3
+ invocation: [command]
3
4
  tier: standard
4
5
  description: "UI/UX design intelligence with bold aesthetic direction. Searchable database: 50+ styles, 97 color palettes, 57 font pairings, 99 UX guidelines, 25 chart types across 9 stacks (React, Vue, Svelte, Angular, Astro, Next.js, Flutter, Swift, Kotlin). Use when building any UI component, choosing color schemes, selecting typography, applying design patterns, or reviewing UX compliance. Must use this skill when user builds frontend — pages, components, dashboards, or landing pages — to ensure design quality beyond generic AI output."
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: user-personas
3
+ invocation: [auto, chain]
3
4
  tier: standard
4
5
  description: "Create refined user personas from research data — 3 personas with JTBD, pains, gains, and unexpected insights."
5
6
  triggers: [persona, user persona, user profile, user segment, user research]
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: vercel-react-best-practices
3
+ invocation: [auto]
3
4
  tier: core
4
5
  description: "React/Next.js performance gotchas from Vercel engineering. Non-intuitive pitfalls that LLMs commonly miss."
5
6
  triggers: [react, next.js, performance, optimization, vercel, component, rendering]
@@ -0,0 +1,288 @@
1
+ ---
2
+ name: vibe
3
+ description: Dynamic dispatcher — 자연어 요구사항 + 첨부(URL/이미지/PDF/파일)를 받아 적합한 vibe.* 파이프라인을 동적 설계하고 1회 승인 후 체인 실행
4
+ argument-hint: "<자연어 요구사항> [+ URL/이미지/PDF/파일 첨부]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # /vibe
9
+
10
+ **vibe의 메인 진입점.** 사용자는 "무엇을 만들지 / 무엇을 할지"만 자연어로 말한다. vibe가 의도를 분석해 어떤 `/vibe.*` 스킬을 어떤 순서로 호출할지 파이프라인을 동적으로 설계하고, **1회 승인 후 실행**한다.
11
+
12
+ ## Usage
13
+
14
+ ```
15
+ /vibe "패럴랙스 웹사이트 만들어줘"
16
+ /vibe "여기 figma 링크 https://figma.com/file/abc 로 로그인 페이지"
17
+ /vibe "로그인 회귀 테스트 다시 돌려서 통과시켜줘"
18
+ /vibe "이 SPEC 리뷰만 한번 봐줘" + 📎 .vibe/specs/login.md
19
+ /vibe "PRD 문서 기반으로 진행" + 📎 docs/prd.pdf
20
+ /vibe "..." ultrawork # 승인 게이트 없이 자동 전 흐름 실행
21
+ ```
22
+
23
+ ## Philosophy
24
+
25
+ > 사용자는 "무엇"만 말한다. "어떤 스킬을 어떻게" 는 vibe가 결정한다.
26
+
27
+ - **단일 슬래시 진입점**: `/vibe` 하나로 모든 워크플로 시작. 다른 `/vibe.*` 도 그대로 존재하지만 power user 가 명시적으로 phase 호출하고 싶을 때 쓰는 advanced 경로.
28
+ - **동적 파이프라인**: 의도/입력 종류에 따라 매번 다른 스킬 체인 구성. 미리 정해진 고정 흐름 아님.
29
+ - **무제한 라우팅**: 라우팅 표는 빠른 경로일 뿐 닫힌 화이트리스트가 아니다. 설치된 모든 `vibe.*` 스킬이 라우팅 후보이며, 표에 없는 요구사항도 description 기반 의미 매칭으로 처리한다 (Catch-all).
30
+ - **하네스 정규화 (추론 앞단)**: vibe는 CC(추론)·Codex(직역) 어느 하네스의 암묵적 동작에도 의존하지 않는다. `/vibe`가 모호한 NL을 **명시적·직역 가능한 지시로 먼저 전개**하고, 하위 skill은 모호한 입력을 받지 않는다. 이로써 모든 하네스에서 동일 결과 + CC급 편의를 제공한다. 전문: `vibe/rules/principles/dual-harness-doctrine.md`.
31
+ - **Smart Resume**: `.vibe/{interviews,plans,specs,features}/` 감지하여 "이어서 진행?" 자동 제안.
32
+ - **1회 승인 게이트**: 파이프라인을 설계해서 사용자에게 보여주고 OK 받은 뒤 실행. `ultrawork` 키워드 있으면 skip.
33
+ - **위임자 역할**: `/vibe` 본인은 코드를 직접 쓰지 않는다. 라우팅·설계·실행 위임만 한다.
34
+
35
+ ## Process
36
+
37
+ > **⏱️ Timer**: 시작 시 `getCurrentTime` 호출하고 결과를 `{start_time}` 으로 기록한다.
38
+
39
+ ### Phase 0: Input 수집
40
+
41
+ 다음을 모두 파싱한다:
42
+
43
+ | 입력원 | 처리 |
44
+ |---|---|
45
+ | 자연어 텍스트 | 의도 추출 (요구 종류, 도메인, 키워드) |
46
+ | 첨부 파일 (`📎 path`) | 확장자로 분류 (md/feature/pdf/png/jpg/...) |
47
+ | URL | 도메인으로 분류 (figma.com / github.com / 기타) |
48
+ | 키워드 | `ultrawork`, `ralph`, `quick`, `verify` 등 magic keyword 추출 |
49
+
50
+ ### Phase 1: Intent 분류
51
+
52
+ 입력을 다음 의도 중 하나(또는 복수)로 분류:
53
+
54
+ | 의도 | 신호 | 기본 파이프라인 |
55
+ |---|---|---|
56
+ | **new feature** | "만들어줘", "추가", 신규 아이디어, 입력 없이 빈 호출 | interview → plan → spec → review → run → verify → contract → trace |
57
+ | **figma-driven UI** | figma.com URL, "디자인", 이미지/PDF + UI 단어 | figma-extract → figma-convert → run → verify |
58
+ | **clone existing UI** | 일반 웹사이트 URL + "비슷한", "클론", "이런 느낌" | clone → run → verify |
59
+ | **resume in-progress** | feature name + `.vibe/specs/{name}.md` 존재 | (resume 지점부터) |
60
+ | **review only** | "리뷰", "검토만", 코드/SPEC 첨부 + "확인" | review |
61
+ | **regression fix** | "회귀", "테스트 깨졌", "다시 통과" | regress → run → verify |
62
+ | **contract drift** | "API 변경", "계약 깨졌", "스펙 불일치" | contract → regress (P1만) |
63
+ | **scaffold** | "프로젝트 만들기", "셋업", "초기 구조" | scaffold |
64
+ | **docs sync** | "문서 갱신", "README", "AGENTS.md" | docs |
65
+ | **analyze** | "분석", "조사", "이건 뭐야" + 파일/URL | analyze |
66
+ | **reason** | "추론", "깊게 생각", "트레이드오프", "어떻게 접근" 등 복잡한 사고 요청 | reason |
67
+ | **event** | "이벤트", "커뮤니티", "D-Day", "행사 자동화" | event |
68
+ | **harness check** | "하네스", "환경 점검" | harness |
69
+ | **test self** | "vibe 테스트", "CC ↔ Codex 비교" | test |
70
+ | **utils** | "이어서", "메모리", "체크포인트" | utils |
71
+
72
+ 복수 의도면 우선순위: resume > figma-driven > new feature > 기타.
73
+
74
+ > **⚠️ 위 표는 닫힌 화이트리스트가 아니라 "흔한 케이스 빠른 경로"다.** 표에 없는 요구사항이라도 막지 말고 **Catch-all 라우팅**(아래)으로 처리한다.
75
+
76
+ ### Catch-all 라우팅 (표에 없는 의도)
77
+
78
+ 입력이 위 표 어느 행과도 명확히 매칭되지 않으면:
79
+
80
+ 1. **의미 매칭**: 사용 가능한 모든 `vibe.*` 스킬의 `description` 을 읽어 요구사항과 의미적으로 가장 가까운 스킬을 고른다. (표는 참고용일 뿐, 실제 라우팅 후보는 설치된 전체 `vibe.*`)
81
+ 2. **복합 설계**: 단일 스킬로 안 되면 여러 스킬을 조합한 파이프라인을 동적으로 설계한다.
82
+ 3. **되묻기는 최후**: 어떤 스킬과도 매칭이 안 될 때만 사용자에게 "어떤 작업인지" 명확화 질문을 한다.
83
+
84
+ > 새 `vibe.*` 스킬이 추가되어 위 표에 행이 없더라도, Catch-all 이 description 기반으로 자동 라우팅하므로 기능이 막히지 않는다. 표 누락 = 기능 제한이 되어선 안 된다.
85
+
86
+ ### Phase 2: Smart Resume 감지
87
+
88
+ ```
89
+ .vibe/.last-feature 존재 → 직전 feature 이름 추출
90
+ .vibe/specs/{feature}/ 또는 .vibe/specs/{feature}.md 존재 → spec 단계 완료
91
+ .vibe/features/{feature}/ 또는 .vibe/features/{feature}.feature 존재 → feature 단계 완료
92
+ .vibe/plans/{feature}.md 존재 → plan 단계 완료
93
+ .vibe/interviews/{feature}.md 존재 → interview 단계 완료
94
+ ```
95
+
96
+ 감지된 진행 상태가 있으면 사용자에게 명시:
97
+
98
+ ```
99
+ 🔍 진행 중인 작업 감지: "login"
100
+ ✅ interview · ✅ plan · ✅ spec · ⏳ review
101
+
102
+ 이어서 review 부터 진행할까요? 아니면 새 작업?
103
+ [1] 이어서 review
104
+ [2] 새 작업 (위 요구사항으로)
105
+ [3] 취소
106
+ ```
107
+
108
+ ### Phase 3: 파이프라인 설계
109
+
110
+ **먼저 입력을 정규화한다 (하네스 무관 명시화):**
111
+
112
+ - **예시·placeholder 표기**: 사용자가 설명용으로 던진 예시 텍스트를 실데이터로 넘기지 않는다. `<예시>`, `[채워넣을 값]` 로 명시. (직역 하네스가 그대로 데이터로 쓰는 것 방지)
113
+ - **research 명시**: 조사가 필요하면 파이프라인에 명시적 탐색 단계를 넣는다. planning mode 같은 하네스 스위치에 의존하지 않는다.
114
+ - **도메인 지식 흡수**: 사용자가 준 라이브러리·함수·파일 위치를 SPEC 입력으로 전달한다.
115
+
116
+ 이어서 분류된 의도 + resume 상태 + magic keyword 를 종합해 실행 계획 작성:
117
+
118
+ ```
119
+ 📋 Pipeline Plan
120
+
121
+ 목표: 패럴랙스 웹사이트 신규 개발
122
+ Input: 자연어 ("패럴랙스 웹사이트 만들어줘")
123
+ Resume: 없음 (신규)
124
+ Keywords: 없음
125
+
126
+ Phase 1: /vibe.spec → interview → plan → spec → review
127
+ Phase 2: /vibe.figma → UI 디자인 트랙 (type=website 감지)
128
+ Phase 3: /vibe.run → 구현
129
+ Phase 4: /vibe.verify → 검증
130
+ Phase 5: /vibe.contract → API 계약 검증
131
+ Phase 6: /vibe.trace → RTM 출력
132
+
133
+ 예상: 6 phase, 중단 게이트 2회 (interview 후, plan 후)
134
+ ```
135
+
136
+ ### Phase 4: 승인 게이트
137
+
138
+ ```
139
+ 위 파이프라인으로 진행할까요?
140
+ [1] 진행
141
+ [2] 수정 (어느 phase 빼거나 추가)
142
+ [3] 취소
143
+ ```
144
+
145
+ **Skip 조건:**
146
+ - 입력에 `ultrawork` 또는 `ulw` 키워드 → 자동 진행
147
+ - `ralph` 키워드 → 자동 진행 + 100% 수렴까지 반복
148
+ - `quick` 키워드 → 최소 phase 만 자동 진행 (review/verify/contract/trace skip)
149
+
150
+ ### Phase 5: 체인 실행
151
+
152
+ 승인된 파이프라인을 순차 호출:
153
+
154
+ ```
155
+ 호출 형식: SlashCommand({command: "/vibe.{name} <args>"})
156
+
157
+ 예:
158
+ 1. SlashCommand({command: "/vibe.spec \"패럴랙스 웹사이트\""})
159
+ 2. SlashCommand({command: "/vibe.figma"})
160
+ 3. SlashCommand({command: "/vibe.run"})
161
+ ...
162
+ ```
163
+
164
+ 각 phase 종료 시:
165
+ - 성공 → 다음 phase
166
+ - 실패 → 중단하고 사용자에게 보고 (재시도 / skip / abort 선택)
167
+ - `ultrawork` 모드 → 실패도 TODO로 기록하고 계속 진행 (non-interactive)
168
+
169
+ ### Phase 6: 종료 보고
170
+
171
+ ```
172
+ ✅ /vibe 완료
173
+
174
+ 실행 파이프라인:
175
+ ✅ /vibe.spec (interview + plan + spec + review)
176
+ ✅ /vibe.figma (UI 디자인 트랙)
177
+ ✅ /vibe.run (구현)
178
+ ✅ /vibe.verify (검증 — 9/9 통과)
179
+ ✅ /vibe.trace (RTM 100%)
180
+
181
+ 생성물:
182
+ 📄 .vibe/specs/parallax-site.md
183
+ 📄 .vibe/features/parallax-site.feature
184
+ 📁 src/pages/parallax/
185
+ 📄 .vibe/reports/parallax-site-rtm.md
186
+
187
+ ⏱️ 시작: {start_time}
188
+ ⏱️ 완료: {getCurrentTime 결과}
189
+ ```
190
+
191
+ ## Routing Examples
192
+
193
+ ### 예시 1: 신규 + figma
194
+
195
+ ```
196
+ 입력: /vibe "https://www.figma.com/design/abc/login 로 로그인 페이지"
197
+
198
+ → Intent: figma-driven UI
199
+ → Resume: 없음
200
+ → Pipeline:
201
+ 1. /vibe.figma (figma-extract + figma-convert)
202
+ 2. /vibe.spec (생성된 SPEC 자동 보정)
203
+ 3. /vibe.run
204
+ 4. /vibe.verify
205
+ 5. /vibe.trace
206
+ ```
207
+
208
+ ### 예시 2: Resume
209
+
210
+ ```
211
+ 입력: /vibe "이어서" (혹은 빈 호출)
212
+
213
+ → Resume: .vibe/specs/login/ 발견 (3개 phase 파일)
214
+ → .vibe/features/login/ 없음
215
+ → Pipeline:
216
+ 1. /vibe.run (구현부터)
217
+ 2. /vibe.verify
218
+ 3. /vibe.trace
219
+ ```
220
+
221
+ ### 예시 3: Review only
222
+
223
+ ```
224
+ 입력: /vibe "이 코드 리뷰만" + 📎 src/auth/login.ts
225
+
226
+ → Intent: review only
227
+ → Pipeline:
228
+ 1. /vibe.review (단일 phase)
229
+ ```
230
+
231
+ ### 예시 4: ultrawork
232
+
233
+ ```
234
+ 입력: /vibe "결제 API 만들어줘" ultrawork
235
+
236
+ → Approval gate SKIP
237
+ → 자동 전 phase 실행
238
+ → 실패는 TODO 기록만 하고 계속
239
+ ```
240
+
241
+ ## ⛔ 하지 않는 것
242
+
243
+ - 직접 코드 작성 / 파일 수정 (위임만)
244
+ - 파이프라인 미리보기 없이 즉시 실행 (`ultrawork` 외)
245
+ - 사용자가 명시한 phase 를 임의로 추가/제거
246
+ - Resume 상태를 무시하고 처음부터 다시 시작
247
+
248
+ ## Magic Keywords (재정의)
249
+
250
+ | Keyword | Effect |
251
+ |---|---|
252
+ | `ultrawork` / `ulw` | 승인 게이트 skip + non-interactive |
253
+ | `ralph` | 100% 수렴까지 자동 반복 |
254
+ | `quick` | 최소 phase 만 (review/verify/contract/trace skip) |
255
+ | `verify` | 강한 검증 (verify + contract + trace 강제 포함) |
256
+
257
+ ## Output
258
+
259
+ ```
260
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
261
+ 🎯 /vibe Dynamic Dispatcher
262
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
263
+
264
+ [Phase 0: Input 분석]
265
+ ...
266
+
267
+ [Phase 1: Intent 분류]
268
+ → new feature + figma-driven UI
269
+
270
+ [Phase 2: Resume 감지]
271
+ → 진행 중인 작업 없음
272
+
273
+ [Phase 3: 파이프라인 설계]
274
+ ...
275
+
276
+ [Phase 4: 승인 게이트]
277
+ 사용자 응답 대기...
278
+
279
+ [Phase 5: 실행]
280
+ ...
281
+
282
+ [Phase 6: 종료 보고]
283
+ ...
284
+ ```
285
+
286
+ ---
287
+
288
+ ARGUMENTS: {자연어 요구사항 + 첨부}
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.analyze
2
3
  description: Analyze any target — code, document, website, or Figma design
3
4
  argument-hint: "feature-name" or file.pdf or https://... or --code or --deps or --arch
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.analyze
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: vibe.clone
3
+ description: URL → 마크업 레벨 픽셀 완벽 클론 — 헤드리스 브라우저로 라이브 사이트 캡처 후 현재 프로젝트 스택에 맞게 스캐폴딩
4
+ argument-hint: "<url> [<url2>...] [--name=<feature>] [--mo-only] [--pc-only] [--ignore-robots]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # /vibe.clone
9
+
10
+ URL을 받아 **마크업 수준으로 정밀 복제**하고 현재 프로젝트 스택에 맞춰 컴포넌트/스타일을 스캐폴딩한다.
11
+
12
+ → 모든 동작은 **`clone` 스킬**의 규칙을 따른다. 이 커맨드는 라우터일 뿐, 휴리스틱·추정·생략은 금지.
13
+
14
+ ## Usage
15
+
16
+ ```
17
+ /vibe.clone <url> # 인터랙티브: MO+PC 양쪽 캡처 (기본)
18
+ /vibe.clone <url> --mo-only # 모바일(375×812)만 캡처
19
+ /vibe.clone <url> --pc-only # 데스크탑(1440×900)만 캡처
20
+ /vibe.clone <url> --name=stripe-clone # 기능 이름 지정 (기본: 호스트명 kebab-case)
21
+ /vibe.clone <url1> <url2> <url3> # 다중 페이지 클론 (같은 사이트의 여러 경로)
22
+ /vibe.clone <url> --ignore-robots # robots.txt 무시 (사이트 소유자 허가 있을 때만)
23
+ ```
24
+
25
+ ## Argument Routing
26
+
27
+ ```
28
+ Step 1) 인자 수집
29
+ urls = http(s):// 로 시작하는 모든 인자
30
+ feature = --name=<value> | URL host → kebab-case
31
+ scope = --mo-only | --pc-only | (기본: both)
32
+ ignoreRobots = --ignore-robots 플래그 유무
33
+
34
+ Step 2) 인자 검증
35
+ urls.length === 0 → 사용자에게 URL 입력 요청, 중단
36
+ ! /^https?:\/\//.test(url) → "유효한 URL이 아닙니다" 에러, 중단
37
+
38
+ Step 3) 스킬 진입
39
+ → clone 스킬 Phase 0부터 순차 실행
40
+ → URL 다중 입력 시 각 URL마다 별도 feature 디렉토리 (URL path 기반 suffix)
41
+ ```
42
+
43
+ ## Execution Plan
44
+
45
+ `clone` 스킬을 로드한 뒤 다음을 순차 실행한다. **Phase 단계 건너뛰기 금지**.
46
+
47
+ ```
48
+ Phase 0: Setup
49
+ - .vibe/config.json + package.json → 스택 감지
50
+ - feature 이름 결정, 디렉토리 생성
51
+
52
+ Phase 1: Capture (병렬 — scope에 따라 MO/PC 동시)
53
+ - node {{VIBE_PATH}}/hooks/scripts/clone-extract.js capture <url> \
54
+ --out=/tmp/{feature}/{bp}/ --viewport={WxH} --bp={mo|pc}
55
+ - 출력: rendered.html, computed.json, screenshot.png, asset-map.json, assets/
56
+
57
+ Phase 2: Refine (BP마다 독립)
58
+ - node {{VIBE_PATH}}/hooks/scripts/clone-refine.js \
59
+ /tmp/{feature}/{bp}/rendered.html /tmp/{feature}/{bp}/computed.json \
60
+ --out=/tmp/{feature}/{bp}/sections.json --bp={mo|pc}
61
+
62
+ Phase 3: Scaffold (BP 순차 — MO 완료 후 PC)
63
+ - Step A: node {{VIBE_PATH}}/hooks/scripts/clone-to-scss.js \
64
+ /tmp/{feature}/{bp}/sections.json \
65
+ --out=./styles/{feature}/ --feature={feature}
66
+ - Claude: 섹션별로 HTML/컴포넌트 작성 (스택별 .tsx/.vue/.svelte/.html)
67
+ - Step B: node {{VIBE_PATH}}/hooks/scripts/clone-validate.js \
68
+ ./styles/{feature}/ /tmp/{feature}/{bp}/sections.json --section={Name}
69
+ - 섹션마다 PASS 받고 다음 섹션 진행
70
+
71
+ Phase 4: Compile Gate (clone SKILL.md 규칙)
72
+ Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙)
73
+ ```
74
+
75
+ ## Prerequisites
76
+
77
+ - **puppeteer**: optional peer dependency. 미설치 시 Phase 1에서 `npm install puppeteer` 안내 후 중단
78
+ - **Chromium**: puppeteer 자동 다운로드 (`npx puppeteer browsers install chrome`)
79
+ - **dev 서버**: Phase 4-5에서 `npm run dev` 호출. 스크립트가 미정의면 사용자에게 명시
80
+ - **robots.txt 준수**: 기본 차단. `--ignore-robots` 는 사이트 소유자/CTF/학습 명시일 때만
81
+
82
+ ## Output Locations
83
+
84
+ ```
85
+ /tmp/{feature}/ # 작업 디렉토리 (산출물 원본)
86
+ ├── mo/, pc/ # rendered.html, computed.json, screenshot.png, sections.json, assets/
87
+ └── project-tokens.json # 기존 프로젝트 토큰 인덱스
88
+
89
+ ./components/{feature}/ # Claude가 작성한 컴포넌트 (.tsx/.vue/.svelte/.html)
90
+ ./styles/{feature}/ # clone-to-scss.js가 생성한 SCSS 파일
91
+ ├── _tokens.scss # CSS 변수
92
+ ├── _base.scss # @font-face
93
+ ├── _shared.scss # 유틸
94
+ ├── sections/_<name>.scss # 섹션별 partial
95
+ ├── index.scss # 마스터 orchestrator
96
+ └── class-plan.json # 노드 id → BEM 클래스
97
+ ./public/images/{feature}/ # 다운로드된 이미지/폰트
98
+ ```
99
+
100
+ ## Legal Notes
101
+
102
+ ```
103
+ 이 커맨드는 다음 용도에만 사용:
104
+ ✅ 클론 코딩 학습 (마크업/레이아웃 연구)
105
+ ✅ 본인 소유 사이트 재구축
106
+ ✅ 명시적 허가 받은 리디자인
107
+
108
+ 금지:
109
+ ❌ 저작권 콘텐츠(텍스트/이미지/로고) 무단 재게시
110
+ ❌ 피싱/브랜드 사칭 룩어라이크 사이트
111
+ ❌ robots.txt 우회 (소유자 허가 없는 --ignore-robots)
112
+
113
+ Claude 기본 행동:
114
+ - 저작권 텍스트 → 플레이스홀더("[Lorem ipsum]") 교체
115
+ - robots.txt 차단 경로 → 명시적 --ignore-robots 없으면 거부
116
+ - 사용자 의도가 사칭/기만이면 즉시 거부
117
+ ```
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.contract
2
3
  description: API contract drift detection — extract contracts from SPEC, compare to implementation, fail on drift
3
4
  argument-hint: "extract | check | diff [feature-name]"
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.contract
@@ -28,7 +30,7 @@ A contract = any **interface shape** that external consumers (clients, other ser
28
30
 
29
31
  ## Process
30
32
 
31
- Load skill `vibe-contract` with subcommand: `$ARGUMENTS`
33
+ Load skill `contract` with subcommand: `$ARGUMENTS`
32
34
 
33
35
  **Core steps**:
34
36
 
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.docs
2
3
  description: Generate project documentation — README, architecture docs, user guide, release notes, agent instructions
3
4
  argument-hint: "readme, guide, arch, release, or agent"
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.docs
@@ -28,6 +30,6 @@ Generate or update project documentation by analyzing the actual codebase.
28
30
 
29
31
  ---
30
32
 
31
- Load skill `vibe-docs` — subcommand에 따라 해당 섹션 실행
33
+ Load skill `docs` — subcommand에 따라 해당 섹션 실행
32
34
 
33
35
  ARGUMENTS: $ARGUMENTS
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.event
2
3
  description: Community event automation — D-Day based proactive task execution
3
4
  argument-hint: "MDC 12차 3/30" or "webinar AI에이전트 4/15" or "DWK 5차 5/20"
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.event
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.figma
2
3
  description: Figma ↔ Code 양방향 라우터 — READ(Figma→Code) / WRITE(plan→Figma)
3
4
  argument-hint: "[<figma-url>... | <plan.md>] [--new] [--create | --create-storyboard | --create-design] [--teach]"
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.figma
@@ -29,7 +31,7 @@ Figma와 코드 사이의 **양방향 라우터**. 인자 조합으로 분기를
29
31
  /vibe.figma --teach # 어느 branch든 design-teach를 인터랙티브로 강제
30
32
  ```
31
33
 
32
- > **URL 분류는 `vibe-figma` 스킬이 자동 처리합니다** — fileKey가 다른 URL은 스토리보드 vs 디자인으로, ROOT 노드 name의 "MO"/"PC"로 디바이스를 구분합니다. 사용자는 URL 종류를 신경 쓰지 않고 한 번에 던지면 됩니다.
34
+ > **URL 분류는 `figma` 스킬이 자동 처리합니다** — fileKey가 다른 URL은 스토리보드 vs 디자인으로, ROOT 노드 name의 "MO"/"PC"로 디바이스를 구분합니다. 사용자는 URL 종류를 신경 쓰지 않고 한 번에 던지면 됩니다.
33
35
 
34
36
  ## Branch Routing (필수: 첫 단계에서 결정)
35
37
 
@@ -117,13 +119,13 @@ AskUserQuestion 사용 시 절대 선택지(options) 제공 금지. 자유 텍
117
119
 
118
120
  ```
119
121
  1. URL 수집 (스킬 진입 전)
120
- - urlArgs.length > 0 → 그대로 vibe-figma 스킬에 전달 (인터랙티브 질문 생략)
121
- - urlArgs.length == 0 → vibe-figma 스킬이 인터랙티브로 줄바꿈 입력 받음
122
+ - urlArgs.length > 0 → 그대로 figma 스킬에 전달 (인터랙티브 질문 생략)
123
+ - urlArgs.length == 0 → figma 스킬이 인터랙티브로 줄바꿈 입력 받음
122
124
  ⚠ URL 분류(storyboard vs design, MO vs PC)는 스킬이 자동 처리 — router는 개입하지 않음
123
125
  · fileKey 다름 → storyboard vs design
124
126
  · ROOT 노드 name에 "MO"/"PC" → 디바이스 구분
125
127
 
126
- 2. Load skill `vibe-figma` — Phase 0 Setup
128
+ 2. Load skill `figma` — Phase 0 Setup
127
129
  → 스택 감지, 디렉토리, 피처명, component-index.json, project-tokens.json
128
130
 
129
131
  3. Design context 로드 (non-interactive 기본)
@@ -142,7 +144,7 @@ AskUserQuestion 사용 시 절대 선택지(options) 제공 금지. 자유 텍
142
144
  ### Phase 1 — Storyboard 분석 (선택)
143
145
 
144
146
  ```
145
- Load skill `vibe-figma` — Phase 1 Storyboard
147
+ Load skill `figma` — Phase 1 Storyboard
146
148
 
147
149
  Phase 0에서 수집한 URL 중 "storyboard"로 자동 분류된 항목이 있으면 분석.
148
150
  없으면 이 Phase는 자동 SKIP (스킬 내부 처리).
@@ -154,8 +156,8 @@ Load skill `vibe-figma` — Phase 1 Storyboard
154
156
  ### Phase 2 — 재료 확보
155
157
 
156
158
  ```
157
- Load skill `vibe-figma-extract`
158
- Load skill `vibe-figma` — Phase 2 (코디네이터: MO/PC 병렬 워커)
159
+ Load skill `figma-extract`
160
+ Load skill `figma` — Phase 2 (코디네이터: MO/PC 병렬 워커)
159
161
 
160
162
  Phase 0에서 수집한 URL 중 "design"으로 자동 분류된 항목 (MO/PC)을 사용.
161
163
  → tree.json + bg/ + content/ + sections/ (검증용)
@@ -169,7 +171,7 @@ Load skill `vibe-figma` — Phase 2 (코디네이터: MO/PC 병렬 워커)
169
171
  ### Phase 3 — 데이터 정제
170
172
 
171
173
  ```
172
- Load skill `vibe-figma` — Phase 3
174
+ Load skill `figma` — Phase 3
173
175
  ⛔ figma-refine.js 강제 (자체 정제 스크립트 금지)
174
176
  → /tmp/{feature}/{bp}-main/sections.json
175
177
  ```
@@ -177,8 +179,8 @@ Load skill `vibe-figma` — Phase 3
177
179
  ### Phase 4 — BP별 스태틱 구현 (컨벤션 준수)
178
180
 
179
181
  ```
180
- Load skill `vibe-figma-convert`
181
- Load skill `vibe-figma` — Phase 4
182
+ Load skill `figma-convert`
183
+ Load skill `figma` — Phase 4
182
184
 
183
185
  재사용 매칭 (BLOCKING):
184
186
  ① component-index.json 매칭 → import (새로 만들지 않음)
@@ -195,14 +197,14 @@ Load skill `design-normalize`
195
197
  ### Phase 5 — 컴파일 게이트
196
198
 
197
199
  ```
198
- Load skill `vibe-figma` — Phase 5
200
+ Load skill `figma` — Phase 5
199
201
  → tsc/build/dev 서버. P1=0까지 루프. Stuck → 사용자 질문.
200
202
  ```
201
203
 
202
204
  ### Phase 6 — 시각 검증 + 품질 점검 (MANDATORY)
203
205
 
204
206
  ```
205
- Load skill `vibe-figma` — Phase 6 (시각 검증 루프, P1=0까지)
207
+ Load skill `figma` — Phase 6 (시각 검증 루프, P1=0까지)
206
208
 
207
209
  Raw-vs-computed 재조정:
208
210
  - tree.json 각 노드의 `raw` 필드(itemSpacing, padding*, fontSize, lineHeightPx,
@@ -233,7 +235,7 @@ Load skill `design-audit`
233
235
  ```
234
236
  1. URL 수집 — Branch 1 Phase 0와 동일 (urlArgs 있으면 전달, 없으면 인터랙티브)
235
237
 
236
- 2. Load skill `vibe-figma` — Phase 0 Setup
238
+ 2. Load skill `figma` — Phase 0 Setup
237
239
  → 스택만 감지. 디렉토리 생성.
238
240
  ⛔ component-index.json 인덱싱 SKIP
239
241
  ⛔ project-tokens.json 스캔 SKIP
@@ -243,15 +245,15 @@ Load skill `design-audit`
243
245
  ### Phase 1 — Storyboard 분석 (선택)
244
246
 
245
247
  ```
246
- Load skill `vibe-figma` — Phase 1
248
+ Load skill `figma` — Phase 1
247
249
  → Branch 1 Phase 1과 동일 (storyboard URL이 있으면 분석, 없으면 SKIP)
248
250
  ```
249
251
 
250
252
  ### Phase 2 — 재료 확보
251
253
 
252
254
  ```
253
- Load skill `vibe-figma-extract`
254
- Load skill `vibe-figma` — Phase 2
255
+ Load skill `figma-extract`
256
+ Load skill `figma` — Phase 2
255
257
  → Branch 1 Phase 2와 동일 (design URL로 추출)
256
258
 
257
259
  🚦 Audit gate: Branch 1과 동일하게 `auditSummary.p1 > 0` 이면 Phase 3 진입 금지.
@@ -260,14 +262,14 @@ Load skill `vibe-figma` — Phase 2
260
262
  ### Phase 3 — 데이터 정제
261
263
 
262
264
  ```
263
- Load skill `vibe-figma` — Phase 3 (figma-refine.js 강제)
265
+ Load skill `figma` — Phase 3 (figma-refine.js 강제)
264
266
  ```
265
267
 
266
268
  ### Phase 4 — BP별 스태틱 구현 (Standalone 모드)
267
269
 
268
270
  ```
269
- Load skill `vibe-figma-convert`
270
- Load skill `vibe-figma` — Phase 4
271
+ Load skill `figma-convert`
272
+ Load skill `figma` — Phase 4
271
273
 
272
274
  ⛔ 재사용 매칭 SKIP — 새 컴포넌트 자유 생성
273
275
  ✅ 새 토큰 자유 생성 (피처 스코프 네이밍: $feature-color-xxx)
@@ -279,13 +281,13 @@ Load skill `vibe-figma` — Phase 4
279
281
  ### Phase 5 — 컴파일 게이트
280
282
 
281
283
  ```
282
- Load skill `vibe-figma` — Phase 5
284
+ Load skill `figma` — Phase 5
283
285
  ```
284
286
 
285
287
  ### Phase 6 — 시각 검증 + a11y (MANDATORY)
286
288
 
287
289
  ```
288
- Load skill `vibe-figma` — Phase 6 (시각 검증 루프, P1=0까지)
290
+ Load skill `figma` — Phase 6 (시각 검증 루프, P1=0까지)
289
291
 
290
292
  Raw-vs-computed 재조정: Branch 1과 동일 — tree.json `raw` ↔ getComputedStyle 비교.
291
293
 
@@ -309,7 +311,7 @@ Load skill `design-audit`
309
311
 
310
312
  **출력**: 지정된 Figma 파일 내 새 페이지/프레임/섹션
311
313
 
312
- > **Phase 명명 주의**: Branch 3은 `vibe-figma` 스킬의 Phase 0~6과 충돌을 피하기 위해 **Step A~F**로 표기한다.
314
+ > **Phase 명명 주의**: Branch 3은 `figma` 스킬의 Phase 0~6과 충돌을 피하기 위해 **Step A~F**로 표기한다.
313
315
  > **2단계 생성 원칙**: `createMode == full`이면 본 디자인 직진 금지. 반드시 **와이어프레임(Step D) → 사용자 검토 → 본 디자인(Step E)** 순서.
314
316
 
315
317
  ### createMode별 실행 매트릭스
@@ -595,6 +597,6 @@ Load skill `figma:figma-generate-design` — Step 3+: Assemble Sections (디자
595
597
  ```
596
598
  ❌ Branch 1 도중 figma:figma-use / figma:figma-generate-design 호출 금지 (READ 모드)
597
599
  ❌ Branch 2 도중 design-normalize 호출 금지 (독립 모드)
598
- ❌ Branch 3 도중 vibe-figma-extract / vibe-figma-convert / figma-refine.js 호출 금지 (WRITE 모드)
600
+ ❌ Branch 3 도중 figma-extract / figma-convert / figma-refine.js 호출 금지 (WRITE 모드)
599
601
  ❌ Branch 결정 후 다른 Branch의 Phase로 점프 금지
600
602
  ```
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.harness
2
3
  description: Diagnose project Harness Engineering maturity across 6 axes
3
4
  argument-hint: (no arguments)
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.harness
@@ -1,6 +1,8 @@
1
1
  ---
2
+ name: vibe.reason
2
3
  description: Apply systematic reasoning framework to complex problems
3
4
  argument-hint: "problem description"
5
+ user-invocable: true
4
6
  ---
5
7
 
6
8
  # /vibe.reason