@su-record/vibe 2.8.51 → 2.8.53

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 (428) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +169 -169
  3. package/LICENSE +21 -21
  4. package/README.ko.md +5 -5
  5. package/README.md +5 -5
  6. package/agents/architect-low.md +41 -41
  7. package/agents/architect-medium.md +59 -59
  8. package/agents/architect.md +80 -80
  9. package/agents/build-error-resolver.md +115 -115
  10. package/agents/compounder.md +261 -261
  11. package/agents/diagrammer.md +178 -178
  12. package/agents/docs/api-documenter.md +99 -99
  13. package/agents/docs/changelog-writer.md +93 -93
  14. package/agents/e2e-tester.md +294 -294
  15. package/agents/event/event-comms.md +78 -78
  16. package/agents/event/event-content.md +68 -68
  17. package/agents/event/event-image.md +95 -95
  18. package/agents/event/event-ops.md +84 -84
  19. package/agents/event/event-scheduler.md +69 -69
  20. package/agents/event/event-speaker.md +86 -86
  21. package/agents/explorer-low.md +42 -42
  22. package/agents/explorer-medium.md +59 -59
  23. package/agents/explorer.md +48 -48
  24. package/agents/implementer-low.md +43 -43
  25. package/agents/implementer-medium.md +52 -52
  26. package/agents/implementer.md +54 -54
  27. package/agents/junior-mentor.md +141 -141
  28. package/agents/planning/requirements-analyst.md +84 -84
  29. package/agents/planning/ux-advisor.md +83 -83
  30. package/agents/qa/acceptance-tester.md +86 -86
  31. package/agents/qa/edge-case-finder.md +93 -93
  32. package/agents/qa/qa-coordinator.md +131 -131
  33. package/agents/refactor-cleaner.md +143 -143
  34. package/agents/research/best-practices-agent.md +199 -199
  35. package/agents/research/codebase-patterns-agent.md +157 -157
  36. package/agents/research/framework-docs-agent.md +188 -188
  37. package/agents/research/security-advisory-agent.md +213 -213
  38. package/agents/review/architecture-reviewer.md +107 -107
  39. package/agents/review/complexity-reviewer.md +116 -116
  40. package/agents/review/data-integrity-reviewer.md +88 -88
  41. package/agents/review/git-history-reviewer.md +103 -103
  42. package/agents/review/performance-reviewer.md +86 -86
  43. package/agents/review/python-reviewer.md +150 -150
  44. package/agents/review/rails-reviewer.md +139 -139
  45. package/agents/review/react-reviewer.md +144 -144
  46. package/agents/review/security-reviewer.md +80 -80
  47. package/agents/review/simplicity-reviewer.md +140 -140
  48. package/agents/review/test-coverage-reviewer.md +116 -116
  49. package/agents/review/typescript-reviewer.md +127 -127
  50. package/agents/searcher.md +54 -54
  51. package/agents/simplifier.md +120 -120
  52. package/agents/tester.md +49 -49
  53. package/agents/ui/ui-a11y-auditor.md +93 -93
  54. package/agents/ui/ui-antipattern-detector.md +102 -102
  55. package/agents/ui/ui-dataviz-advisor.md +69 -69
  56. package/agents/ui/ui-design-system-gen.md +57 -57
  57. package/agents/ui/ui-industry-analyzer.md +49 -49
  58. package/agents/ui/ui-layout-architect.md +65 -65
  59. package/agents/ui/ui-stack-implementer.md +68 -68
  60. package/agents/ui/ux-compliance-reviewer.md +81 -81
  61. package/agents/ui-previewer.md +258 -258
  62. package/commands/vibe.analyze.md +379 -379
  63. package/commands/vibe.docs.md +32 -32
  64. package/commands/vibe.event.md +163 -163
  65. package/commands/vibe.figma.md +69 -69
  66. package/commands/vibe.review.md +686 -686
  67. package/commands/vibe.run.md +2276 -2276
  68. package/commands/vibe.spec.md +1195 -1195
  69. package/commands/vibe.spec.review.md +609 -609
  70. package/commands/vibe.trace.md +259 -259
  71. package/commands/vibe.utils.md +413 -413
  72. package/commands/vibe.verify.md +510 -510
  73. package/dist/cli/collaborator.js +52 -52
  74. package/dist/cli/commands/config.js +9 -9
  75. package/dist/cli/commands/evolution.js +12 -12
  76. package/dist/cli/commands/figma.js +20 -20
  77. package/dist/cli/commands/info.js +53 -53
  78. package/dist/cli/commands/init.d.ts.map +1 -1
  79. package/dist/cli/commands/init.js +82 -15
  80. package/dist/cli/commands/init.js.map +1 -1
  81. package/dist/cli/commands/remove.js +14 -14
  82. package/dist/cli/commands/sentinel.js +27 -27
  83. package/dist/cli/commands/skills.js +5 -5
  84. package/dist/cli/commands/slack.js +10 -10
  85. package/dist/cli/commands/stats.js +6 -6
  86. package/dist/cli/commands/telegram.js +12 -12
  87. package/dist/cli/detect.js +32 -32
  88. package/dist/cli/index.js +51 -51
  89. package/dist/cli/llm/claude-commands.js +16 -16
  90. package/dist/cli/llm/config.js +18 -18
  91. package/dist/cli/llm/gemini-commands.js +16 -16
  92. package/dist/cli/llm/gpt-commands.js +19 -19
  93. package/dist/cli/llm/help.js +21 -21
  94. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  95. package/dist/cli/postinstall/constants.js +2 -0
  96. package/dist/cli/postinstall/constants.js.map +1 -1
  97. package/dist/cli/postinstall/cursor-agents.js +32 -32
  98. package/dist/cli/postinstall/cursor-rules.js +83 -83
  99. package/dist/cli/postinstall/cursor-skills.js +743 -743
  100. package/dist/cli/setup/Provisioner.js +42 -42
  101. package/dist/cli/types.d.ts +12 -0
  102. package/dist/cli/types.d.ts.map +1 -1
  103. package/dist/infra/lib/DeepInit.js +24 -24
  104. package/dist/infra/lib/IterationTracker.js +11 -11
  105. package/dist/infra/lib/PythonParser.js +108 -108
  106. package/dist/infra/lib/ReviewRace.js +96 -96
  107. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  108. package/dist/infra/lib/SkillQualityGate.js +9 -9
  109. package/dist/infra/lib/SkillRepository.js +159 -159
  110. package/dist/infra/lib/TokenBudgetTracker.d.ts +13 -0
  111. package/dist/infra/lib/TokenBudgetTracker.d.ts.map +1 -1
  112. package/dist/infra/lib/TokenBudgetTracker.js +44 -3
  113. package/dist/infra/lib/TokenBudgetTracker.js.map +1 -1
  114. package/dist/infra/lib/UltraQA.js +99 -99
  115. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  116. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  117. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  118. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  119. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  120. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  121. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  122. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  123. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  124. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  125. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  126. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  127. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  128. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  129. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  130. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  131. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  132. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  133. package/dist/infra/lib/gemini/orchestration.js +5 -5
  134. package/dist/infra/lib/gpt/orchestration.js +4 -4
  135. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  136. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  137. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  138. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  139. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  140. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  141. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  142. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  143. package/dist/infra/orchestrator/AgentManager.js +12 -12
  144. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  145. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  146. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  147. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  148. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  149. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  150. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  151. package/dist/tools/memory/getMemoryGraph.js +12 -12
  152. package/dist/tools/memory/getSessionContext.js +9 -9
  153. package/dist/tools/memory/linkMemories.js +14 -14
  154. package/dist/tools/memory/listMemories.js +4 -4
  155. package/dist/tools/memory/recallMemory.js +4 -4
  156. package/dist/tools/memory/saveMemory.js +4 -4
  157. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  158. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  159. package/dist/tools/semantic/astGrep.test.js +6 -6
  160. package/dist/tools/spec/prdParser.test.js +171 -171
  161. package/dist/tools/spec/specGenerator.js +169 -169
  162. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  163. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  164. package/hooks/gemini-hooks.json +73 -73
  165. package/hooks/hooks.json +174 -170
  166. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  167. package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -286
  168. package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -210
  169. package/hooks/scripts/auto-commit.js +97 -97
  170. package/hooks/scripts/auto-format.js +64 -64
  171. package/hooks/scripts/auto-test.js +81 -81
  172. package/hooks/scripts/code-check.js +268 -268
  173. package/hooks/scripts/codex-detect.js +46 -46
  174. package/hooks/scripts/codex-review-gate.js +80 -80
  175. package/hooks/scripts/command-log.js +32 -32
  176. package/hooks/scripts/context-save.js +353 -353
  177. package/hooks/scripts/devlog-gen.js +230 -0
  178. package/hooks/scripts/evolution-engine.js +91 -91
  179. package/hooks/scripts/figma-extract.js +635 -477
  180. package/hooks/scripts/hud-status.js +321 -321
  181. package/hooks/scripts/keyword-detector.js +214 -214
  182. package/hooks/scripts/llm-orchestrate.js +572 -572
  183. package/hooks/scripts/post-edit.js +32 -32
  184. package/hooks/scripts/pr-test-gate.js +52 -52
  185. package/hooks/scripts/pre-tool-guard.js +214 -159
  186. package/hooks/scripts/prompt-dispatcher.js +185 -185
  187. package/hooks/scripts/sentinel-guard.js +131 -131
  188. package/hooks/scripts/session-start.js +177 -177
  189. package/hooks/scripts/skill-injector.js +83 -83
  190. package/hooks/scripts/stop-notify.js +209 -209
  191. package/hooks/scripts/utils.js +243 -243
  192. package/languages/csharp-unity.md +515 -515
  193. package/languages/gdscript-godot.md +470 -470
  194. package/languages/ruby-rails.md +489 -489
  195. package/languages/typescript-angular.md +433 -433
  196. package/languages/typescript-astro.md +416 -416
  197. package/languages/typescript-electron.md +406 -406
  198. package/languages/typescript-nestjs.md +524 -524
  199. package/languages/typescript-svelte.md +407 -407
  200. package/languages/typescript-tauri.md +365 -365
  201. package/package.json +101 -101
  202. package/skills/agents-md/SKILL.md +121 -121
  203. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  204. package/skills/agents-md/templates/agents-md.md +36 -36
  205. package/skills/arch-guard/SKILL.md +181 -181
  206. package/skills/arch-guard/agents/detector.md +48 -48
  207. package/skills/arch-guard/agents/reporter.md +48 -48
  208. package/skills/arch-guard/agents/rule-generator.md +49 -49
  209. package/skills/arch-guard/agents/violation-checker.md +51 -51
  210. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  211. package/skills/arch-guard/frameworks/solid.md +102 -102
  212. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  213. package/skills/arch-guard/templates/arch-rules.json +47 -47
  214. package/skills/arch-guard/templates/violation-report.md +53 -53
  215. package/skills/brand-assets/SKILL.md +147 -147
  216. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  217. package/skills/brand-assets/templates/brand-guide.md +161 -161
  218. package/skills/capability-loop/SKILL.md +168 -168
  219. package/skills/capability-loop/agents/capability-designer.md +61 -61
  220. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  221. package/skills/capability-loop/agents/implementer.md +50 -50
  222. package/skills/capability-loop/agents/tester.md +53 -53
  223. package/skills/capability-loop/templates/capability-spec.md +118 -118
  224. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  225. package/skills/characterization-test/SKILL.md +207 -207
  226. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  227. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  228. package/skills/characterization-test/agents/reporter.md +50 -50
  229. package/skills/characterization-test/agents/test-writer.md +49 -49
  230. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  231. package/skills/characterization-test/templates/test-template.ts +101 -101
  232. package/skills/chub-usage/SKILL.md +139 -139
  233. package/skills/claude-md-guide/SKILL.md +351 -351
  234. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  235. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  236. package/skills/commerce-patterns/SKILL.md +64 -64
  237. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  238. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  239. package/skills/commit-push-pr/SKILL.md +77 -77
  240. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  241. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  242. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  243. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  244. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  245. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  246. package/skills/context7-usage/SKILL.md +106 -106
  247. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  248. package/skills/create-prd/SKILL.md +90 -90
  249. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  250. package/skills/create-prd/agents/prioritizer.md +60 -60
  251. package/skills/create-prd/agents/requirements-writer.md +48 -48
  252. package/skills/create-prd/agents/researcher.md +55 -55
  253. package/skills/create-prd/agents/reviewer.md +54 -54
  254. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  255. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  256. package/skills/create-prd/orchestrator.md +70 -70
  257. package/skills/create-prd/rubrics/completeness.md +58 -58
  258. package/skills/create-prd/templates/prd.md +139 -139
  259. package/skills/design-audit/SKILL.md +152 -152
  260. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  261. package/skills/design-audit/agents/performance-auditor.md +46 -46
  262. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  263. package/skills/design-audit/agents/scorer.md +47 -47
  264. package/skills/design-audit/agents/slop-detector.md +47 -47
  265. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  266. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  267. package/skills/design-audit/orchestrator.md +64 -64
  268. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  269. package/skills/design-audit/rubrics/scoring.md +63 -63
  270. package/skills/design-audit/templates/report.md +88 -88
  271. package/skills/design-critique/SKILL.md +139 -139
  272. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  273. package/skills/design-critique/templates/critique-report.md +86 -86
  274. package/skills/design-distill/SKILL.md +130 -130
  275. package/skills/design-distill/templates/design-system.md +132 -132
  276. package/skills/design-normalize/SKILL.md +133 -133
  277. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  278. package/skills/design-normalize/templates/token-audit.md +89 -89
  279. package/skills/design-polish/SKILL.md +131 -131
  280. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  281. package/skills/design-polish/templates/polish-report.md +64 -64
  282. package/skills/design-teach/SKILL.md +182 -182
  283. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  284. package/skills/design-teach/templates/design-context.json +36 -36
  285. package/skills/devlog/SKILL.md +143 -0
  286. package/skills/e2e-commerce/SKILL.md +62 -62
  287. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  288. package/skills/event-comms/SKILL.md +162 -162
  289. package/skills/event-comms/templates/email-invite.md +99 -99
  290. package/skills/event-comms/templates/sns-post.md +133 -133
  291. package/skills/event-ops/SKILL.md +198 -198
  292. package/skills/event-ops/rubrics/contingency.md +85 -85
  293. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  294. package/skills/event-planning/SKILL.md +132 -132
  295. package/skills/event-planning/rubrics/timeline.md +70 -70
  296. package/skills/event-planning/templates/event-plan.md +91 -91
  297. package/skills/exec-plan/SKILL.md +149 -149
  298. package/skills/exec-plan/agents/decomposer.md +47 -47
  299. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  300. package/skills/exec-plan/agents/estimator.md +43 -43
  301. package/skills/exec-plan/agents/validator.md +55 -55
  302. package/skills/exec-plan/orchestrator.md +70 -70
  303. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  304. package/skills/exec-plan/templates/plan.md +147 -147
  305. package/skills/git-worktree/SKILL.md +73 -73
  306. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  307. package/skills/handoff/SKILL.md +110 -110
  308. package/skills/handoff/agents/context-summarizer.md +51 -51
  309. package/skills/handoff/agents/document-writer.md +63 -63
  310. package/skills/handoff/agents/state-collector.md +53 -53
  311. package/skills/handoff/agents/verifier.md +48 -48
  312. package/skills/handoff/rubrics/completeness.md +62 -62
  313. package/skills/handoff/templates/handoff.md +107 -107
  314. package/skills/parallel-research/SKILL.md +89 -89
  315. package/skills/parallel-research/agents/best-practices.md +43 -43
  316. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  317. package/skills/parallel-research/agents/framework-docs.md +45 -45
  318. package/skills/parallel-research/agents/security-advisory.md +46 -46
  319. package/skills/parallel-research/agents/synthesizer.md +52 -52
  320. package/skills/parallel-research/experts/best-practices.md +50 -50
  321. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  322. package/skills/parallel-research/experts/framework-docs.md +65 -65
  323. package/skills/parallel-research/experts/security-advisory.md +69 -69
  324. package/skills/parallel-research/orchestrator.md +65 -65
  325. package/skills/parallel-research/templates/synthesis.md +101 -101
  326. package/skills/prioritization-frameworks/SKILL.md +87 -87
  327. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  328. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  329. package/skills/priority-todos/SKILL.md +64 -64
  330. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  331. package/skills/priority-todos/templates/todo-board.md +59 -59
  332. package/skills/seo-checklist/SKILL.md +58 -58
  333. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  334. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  335. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  336. package/skills/techdebt/SKILL.md +124 -124
  337. package/skills/techdebt/agents/analyzer.md +50 -50
  338. package/skills/techdebt/agents/fixer.md +41 -41
  339. package/skills/techdebt/agents/reviewer.md +47 -47
  340. package/skills/techdebt/agents/scanner.md +44 -44
  341. package/skills/techdebt/orchestrator.md +70 -70
  342. package/skills/techdebt/rubrics/severity.md +51 -51
  343. package/skills/techdebt/scripts/scan.js +90 -90
  344. package/skills/techdebt/templates/report.md +86 -86
  345. package/skills/tool-fallback/SKILL.md +104 -104
  346. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  347. package/skills/typescript-advanced-types/SKILL.md +67 -67
  348. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  349. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  350. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  351. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  352. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  353. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  354. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  355. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  356. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  357. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  358. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  359. package/skills/user-personas/SKILL.md +75 -75
  360. package/skills/user-personas/rubrics/research-methods.md +56 -56
  361. package/skills/user-personas/templates/persona.md +89 -89
  362. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  363. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  364. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  365. package/skills/vibe.docs/SKILL.md +171 -171
  366. package/skills/vibe.docs/templates/architecture.md +80 -80
  367. package/skills/vibe.docs/templates/readme.md +84 -84
  368. package/skills/vibe.docs/templates/release-notes.md +74 -74
  369. package/skills/vibe.figma/SKILL.md +215 -982
  370. package/skills/vibe.figma/rubrics/extraction-checklist.md +51 -51
  371. package/skills/vibe.figma/templates/component-index.md +126 -126
  372. package/skills/vibe.figma/templates/figma-handoff.md +100 -100
  373. package/skills/vibe.figma/templates/remapped-tree.md +277 -277
  374. package/skills/vibe.figma.convert/SKILL.md +188 -511
  375. package/skills/vibe.figma.convert/rubrics/conversion-rules.md +129 -113
  376. package/skills/vibe.figma.convert/templates/component.md +140 -140
  377. package/skills/vibe.figma.extract/SKILL.md +179 -300
  378. package/skills/vibe.figma.extract/rubrics/image-rules.md +145 -137
  379. package/skills/video-production/SKILL.md +52 -52
  380. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  381. package/skills/video-production/templates/production-plan.md +104 -104
  382. package/vibe/config.json +29 -29
  383. package/vibe/constitution.md +227 -227
  384. package/vibe/rules/principles/communication-guide.md +98 -98
  385. package/vibe/rules/principles/development-philosophy.md +52 -52
  386. package/vibe/rules/principles/quick-start.md +102 -102
  387. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  388. package/vibe/rules/quality/checklist.md +276 -276
  389. package/vibe/rules/quality/performance.md +236 -236
  390. package/vibe/rules/quality/testing-strategy.md +440 -440
  391. package/vibe/rules/standards/anti-patterns.md +541 -541
  392. package/vibe/rules/standards/code-structure.md +291 -291
  393. package/vibe/rules/standards/complexity-metrics.md +313 -313
  394. package/vibe/rules/standards/git-workflow.md +237 -237
  395. package/vibe/rules/standards/naming-conventions.md +198 -198
  396. package/vibe/rules/standards/security.md +305 -305
  397. package/vibe/rules/writing/document-style.md +74 -74
  398. package/vibe/setup.sh +31 -31
  399. package/vibe/templates/constitution-template.md +252 -252
  400. package/vibe/templates/contract-backend-template.md +526 -526
  401. package/vibe/templates/contract-frontend-template.md +599 -599
  402. package/vibe/templates/feature-template.md +96 -96
  403. package/vibe/templates/spec-template.md +221 -221
  404. package/vibe/ui-ux-data/charts.csv +26 -26
  405. package/vibe/ui-ux-data/colors.csv +97 -97
  406. package/vibe/ui-ux-data/icons.csv +101 -101
  407. package/vibe/ui-ux-data/landing.csv +31 -31
  408. package/vibe/ui-ux-data/products.csv +96 -96
  409. package/vibe/ui-ux-data/react-performance.csv +45 -45
  410. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  411. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  412. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  413. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  414. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  415. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  416. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  417. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  418. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  419. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  420. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  421. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  422. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  423. package/vibe/ui-ux-data/styles.csv +68 -68
  424. package/vibe/ui-ux-data/typography.csv +57 -57
  425. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  426. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  427. package/vibe/ui-ux-data/version.json +31 -31
  428. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -1,300 +1,179 @@
1
- ---
2
- name: vibe.figma.extract
3
- description: Figma REST API로 코드 생성 데이터 확보 — 트리(primary), 이미지, 스크린샷(검증용)
4
- triggers: []
5
- tier: standard
6
- ---
7
-
8
- # vibe.figma.extract — 코드 생성 데이터 확보
9
-
10
- Figma REST API(`src/infra/lib/figma/`)를 사용하여 **구조적 코드 생성에 필요한 모든 데이터**를 추출.
11
-
12
- ```
13
- 추출 우선순위:
14
- 1순위: 노드 트리 + CSS (코드 생성의 PRIMARY 소스)
15
- 2순위: 이미지 에셋 (fill 이미지 + 아이템 노드 렌더링)
16
- 3순위: 스크린샷 (Phase 4 시각 검증용 — 코드 생성에 사용하지 않음)
17
- ```
18
-
19
- ---
20
-
21
- ## 1. 노드 트리 + CSS — 코드 생성의 원천
22
-
23
- ```
24
- 가장 먼저 확보. 이것이 HTML + SCSS 코드의 직접적 소스.
25
-
26
- Bash:
27
- node "[FIGMA_SCRIPT]" tree {fileKey} {nodeId} --depth=10
28
-
29
- 반환 (FigmaNode JSON):
30
- {
31
- nodeId: "641:78152",
32
- name: "KID",
33
- type: "INSTANCE",
34
- size: { width: 720, height: 487 },
35
- css: { display: "flex", flexDirection: "column", gap: "32px", ... },
36
- text: "텍스트 내용" (TEXT 노드만),
37
- imageRef: "abc123" (이미지 fill이 있는 노드만),
38
- children: [...]
39
- }
40
-
41
- → /tmp/{feature}/tree.json 에 저장
42
-
43
- 트리 데이터의 용도 (vibe.figma.convert에서 직접 매핑):
44
- - Auto Layout → CSS Flexbox (direction, gap, padding, align 1:1)
45
- - absoluteBoundingBox → width, height (→ vw 변환)
46
- - fills/strokes/effects background, border, shadow
47
- - TEXT 노드 → 텍스트 콘텐츠 + 타이포그래피 CSS
48
- - imageRef → 이미지 에셋 매핑
49
- - name/type → 시맨틱 태그 판단 힌트 (Claude 사용)
50
- ```
51
-
52
- ### Figma 속성 CSS 직접 매핑표
53
-
54
- 트리 추출 도구가 자동 변환하는 속성. **이 값들이 SCSS에 직접 매핑된다:**
55
-
56
- | Figma 속성 | CSS | vw 변환 |
57
- |-----------|-----|-----------------|
58
- | `layoutMode=VERTICAL` | `display:flex; flex-direction:column` | |
59
- | `layoutMode=HORIZONTAL` | `display:flex; flex-direction:row` | |
60
- | `primaryAxisAlignItems` | `justify-content` | |
61
- | `counterAxisAlignItems` | `align-items` | |
62
- | `itemSpacing` | `gap` | |
63
- | `padding*` | `padding` | |
64
- | `absoluteBoundingBox.width/height` | `width/height` | |
65
- | `layoutPositioning=ABSOLUTE` | `position: absolute` | ❌ |
66
- | `clipsContent` | `overflow: hidden` | ❌ |
67
- | `fills[].color` | `background-color` | ❌ |
68
- | `fills[].type=IMAGE` | `imageRef` (다운로드 대상) | — |
69
- | `fills[].color` (TEXT) | `color` | |
70
- | `strokes[].color` + `strokeWeight` | `border` | ✅ (width만) |
71
- | `effects[].DROP_SHADOW` | `box-shadow` | (px만) |
72
- | `effects[].LAYER_BLUR` | `filter: blur()` | |
73
- | `effects[].BACKGROUND_BLUR` | `backdrop-filter: blur()` | |
74
- | `cornerRadius` | `border-radius` | |
75
- | `opacity` | `opacity` | |
76
- | `blendMode` | `mix-blend-mode` | ❌ |
77
- | `style.fontFamily` | `font-family` | ❌ |
78
- | `style.fontSize` | `font-size` | |
79
- | `style.fontWeight` | `font-weight` | |
80
- | `style.lineHeightPx` | `line-height` | |
81
- | `style.letterSpacing` | `letter-spacing` | ✅ |
82
- | `style.textAlignHorizontal` | `text-align` | ❌ |
83
- | `characters` | 텍스트 내용 | |
84
-
85
- ---
86
-
87
- ## 2. 이미지 에셋 노드 렌더링 기반 (imageRef 개별 다운로드 금지)
88
-
89
- ```
90
- imageRef 개별 다운로드 금지
91
- → 텍스처 fill을 공유하는 경우 원본 텍스처(22.7MB)가 다운됨
92
- → 노드 렌더링하면 해당 노드에 적용된 최종 결과물(364KB)이 나옴
93
-
94
- 모든 이미지는 Figma screenshot API로 노드 렌더링
95
- ```
96
-
97
- ### 2-1. BG 프레임 렌더링 (섹션 배경)
98
-
99
- ```
100
- 섹션의 BG 프레임을 식별 합성된 배경 1장으로 렌더링:
101
-
102
- ⚠️ 주의: BG 프레임만 렌더링한다 (텍스트 포함된 상위 프레임 렌더링 금지)
103
- 섹션 전체를 렌더링 텍스트가 이미지에 포함 HTML 텍스트와 중복
104
- TEXT 자식이 있는 프레임을 렌더링 → 이미지 텍스트 + HTML 텍스트 이중 표시
105
- BG 하위 프레임만 렌더링 → 텍스트 없는 배경만 CSS background-image
106
- ✅ 텍스트는 tree.json에서 추출하여 HTML로 작성
107
-
108
- 렌더링 전 TEXT 자식 검증 (BLOCKING):
109
- BG 프레임의 전체 자식 트리를 순회하여 TEXT 노드 존재 여부 확인
110
- TEXT 노드 발견 시:
111
- → TEXT 노드가 포함된 하위 프레임은 렌더링에서 제외
112
- BG 프레임 순수 시각 요소(이미지, 벡터, 장식)만 렌더링
113
- 또는 TEXT가 없는 가장 깊은 BG 하위 프레임을 개별 렌더링
114
-
115
- BG 프레임 판별 기준:
116
- - name에 "BG", "bg" 포함
117
- - 또는 부모와 크기 동일(±10%) + 자식 이미지 3개 이상
118
- - 또는 1depth 첫 번째 자식이면서 이미지 노드 다수 보유
119
-
120
- 렌더링:
121
- node "[FIGMA_SCRIPT]" screenshot {fileKey} {bg.nodeId} --out=/tmp/{feature}/bg/{section}-bg.webp
122
-
123
- BG 하위 20+ 레이어가 합성된 1장
124
- CSS background-image로 처리
125
- → 개별 레이어(눈, 나무, 파티클 등) 다운로드하지 않음
126
- ```
127
-
128
- ### 2-1.5. 렌더링 금지 노드 (HTML로 구현할 것)
129
-
130
- ```
131
- 다음 조건에 해당하는 노드는 이미지로 렌더링하지 않는다:
132
-
133
- 1. TEXT 자식 보유 프레임 → HTML로 구현
134
- - 기간, 가격, 수량, 설명 등 텍스트 → HTML
135
- - "1,000", "보상 교환하기", "2025.12.22" 등 → 이미지에 넣지 않음
136
- - 텍스트가 이미지에 포함되면 수정/번역/접근성 불가
137
-
138
- 2. INSTANCE 반복 패턴 (카드/아이템 그리드) → HTML 반복 구조
139
- - 같은 부모 아래 동일 구조 INSTANCE 2개 이상
140
- - ❌ 카드 그리드를 통째 이미지 1장으로 렌더링 금지
141
- - ✅ 각 카드 내부의 이미지 에셋(아이콘, 썸네일)만 개별 추출
142
- - 카드 레이아웃, 텍스트, 버튼은 HTML+CSS
143
-
144
- 3. 인터랙티브 요소 → HTML <button>/<a>
145
- - name에 "btn", "button", "CTA", "link" 포함
146
- - 클릭 이벤트가 필요한 요소는 이미지 금지
147
-
148
- 4. 정보 표시 영역 → HTML 텍스트
149
- - 기간 표시 ("이벤트 기간", "교환/응모 종료일")
150
- - 가격/수량 ("1,000", "500")
151
- - 상태 표시 ("참여 대상", "로그인")
152
- ```
153
-
154
- ### 2-2. 콘텐츠 노드 렌더링
155
-
156
- ```
157
- BG가 아닌 콘텐츠 이미지를 개별 노드 렌더링:
158
-
159
- ⚠️ 렌더링 전 2-1.5 체크 필수 — 하나라도 해당하면 이미지 렌더링 금지
160
-
161
- 대상 식별 (tree.json에서 — TEXT 자식 미보유 노드만):
162
- - 타이틀/서브타이틀 이미지 (name에 "title", "sub title") — 벡터 글자만, TEXT 노드 아님
163
- - 아이콘 (VECTOR/GROUP 크기 ≤ 64px)
164
- - 아이템/보상 썸네일 (name에 "item", "reward", "token", "coin") — 이미지 에셋만
165
-
166
- 렌더링 (imageRef 다운로드 아님!):
167
- node "[FIGMA_SCRIPT]" screenshot {fileKey} {node.nodeId} --out=/tmp/{feature}/content/{name}.webp
168
-
169
- 텍스처 fill이 적용된 최종 결과물이 나옴
170
- 22.7MB 텍스처 대신 364KB 렌더링 이미지
171
- ```
172
-
173
- ### 2-3. 벡터 글자 그룹 렌더링
174
-
175
- ```
176
- 커스텀 폰트 텍스트가 글자별 벡터로 분리된 경우:
177
-
178
- 판별:
179
- - 부모 GROUP/FRAME 아래 VECTOR 타입 3개 이상
180
- - 각 VECTOR 크기 < 60x60
181
- - 같은 imageRef를 공유 (텍스처 fill)
182
-
183
- 렌더링:
184
- 부모 GROUP을 통째로 렌더링 (개별 글자 다운로드 금지)
185
- node "[FIGMA_SCRIPT]" screenshot {fileKey} {group.nodeId} --out=/tmp/{feature}/content/{name}.webp
186
-
187
- 예시:
188
- "MISSION 01" GROUP (174x42, 벡터 9개) → 렌더링 1장 (58KB)
189
- "일일/누적 출석" GROUP (327x51, 벡터 7개) → 렌더링 1장 (93KB)
190
- ```
191
-
192
- ### 2-4. imageRef 다운로드를 사용하는 유일한 경우
193
-
194
- ```
195
- 노드 렌더링이 불가능한 경우에만 imageRef 다운로드 폴백:
196
- - Figma screenshot API 실패 (rate limit, 권한 등)
197
- - 노드가 DOCUMENT 레벨이라 렌더링 불가
198
-
199
- 이 경우에도 파일 크기 확인:
200
- - 5MB 초과 → 텍스처 fill 가능성 높음 → 경고 로그
201
- ```
202
-
203
- ---
204
-
205
- ## 3. 스크린샷 — 검증 참조용
206
-
207
- ```
208
- 코드 생성에는 사용하지 않는다. Phase 4 시각 검증에서만 사용.
209
-
210
- 전체 스크린샷:
211
- node "[FIGMA_SCRIPT]" screenshot {fileKey} {nodeId} --out=/tmp/{feature}/full-screenshot.webp
212
-
213
- 섹션별 스크린샷 (1depth 자식 프레임 각각):
214
- node "[FIGMA_SCRIPT]" screenshot {fileKey} {child.nodeId} --out=/tmp/{feature}/sections/{name}.webp
215
-
216
- 용도:
217
- ✅ Phase 4에서 렌더링 결과와 pixelmatch 비교
218
- ✅ 시각 diff > 임계값 → 수정 판단 참고
219
- ❌ Phase 3 코드 생성의 입력으로 사용하지 않음
220
- ```
221
-
222
- ---
223
-
224
- ## 4. 추출 데이터 정리
225
-
226
- ```
227
- 추출 완료 후 /tmp/{feature}/ 구조:
228
-
229
- /tmp/{feature}/
230
- ├── tree.json ← 코드 생성의 PRIMARY 소스
231
- ├── bg/ ← BG 프레임 렌더링 (섹션당 1장)
232
- │ ├── hero-bg.webp
233
- │ ├── daily-bg.webp
234
- │ └── ...
235
- ├── content/ ← 콘텐츠 노드 렌더링
236
- │ ├── hero-title.webp
237
- │ ├── hero-subtitle.webp
238
- │ ├── mission-01.webp ← 벡터 글자 그룹 렌더링
239
- │ ├── btn-login.webp
240
- │ └── ...
241
- ├── full-screenshot.webp ← Phase 4 검증용
242
- └── sections/ ← Phase 4 섹션별 검증용
243
- ├── hero.webp
244
- └── ...
245
-
246
- 이미지 분류 (실제 테스트 기준):
247
- | 분류 | 처리 | 예시 |
248
- |------|------|------|
249
- | BG 프레임 (89개) | 프레임 렌더링 → bg/ | hero-bg.webp (4.2MB) |
250
- | 벡터 글자 (33개) | GROUP 렌더링 → content/ | mission-01.webp (58KB) |
251
- | 콘텐츠 (8개) | 노드 렌더링 → content/ | hero-title.webp (364KB) |
252
- | 장식 (29개) | BG 렌더링에 포함 | — |
253
- → 전체 159개 → 실제 파일 약 18장
254
-
255
- 색상 팔레트 (tree.json의 backgroundColor/color 고유값):
256
- #0a1628, #00264a, #ffffff, ...
257
-
258
- 토큰 매핑 테이블 (project-tokens.json 존재 시):
259
- | Figma 값 | 기존 토큰 | 상태 |
260
- |----------|-----------|------|
261
- | #0a1628 | $color-navy | ✅ 재사용 |
262
- | #ffd700 | — | 🆕 생성 |
263
-
264
- 폰트 목록 (tree.json의 fontFamily/fontSize/fontWeight):
265
- Pretendard: 400/500/700, 16px~48px
266
-
267
- 텍스트 콘텐츠 (모든 TEXT 노드의 characters):
268
- "겨울 이벤트", "12.1 ~ 12.31", "참여 대상 : PC 유저", ...
269
-
270
- 간격 패턴 (tree.json의 gap/padding 빈도 분석):
271
- gap: 8px, 16px, 24px, 32px
272
- padding: 16px, 24px, 32px
273
- ```
274
-
275
- ---
276
-
277
- ## 5. 노드 참조 (시맨틱 판단 힌트)
278
-
279
- ```
280
- 트리의 name/type은 Claude의 시맨틱 판단에 힌트로 사용:
281
-
282
- name 패턴 → HTML 태그 힌트:
283
- "BG" → 배경 레이어 (position:absolute + z-index:0)
284
- "Title", "Txt_*" → 제목/텍스트 (<h2>, <p>)
285
- "Btn_*", "CTA" → 버튼 (<button>)
286
- "Icon_*" → 아이콘 (<img>)
287
- "Step1", "Item_*" → 반복 요소 (v-for 후보)
288
- "Period", "Info" → 정보 영역 (<div>)
289
-
290
- type → 코드 매핑 기준:
291
- TEXT → <span> (Claude가 h2/p/button으로 승격)
292
- RECTANGLE/VECTOR + imageRef → <img src="다운로드된 파일">
293
- FRAME + Auto Layout → <div> + CSS flex
294
- FRAME + no Auto Layout → <div> + position:relative
295
- INSTANCE 반복 → 컴포넌트 후보 (v-for)
296
- GROUP → 논리적 래퍼 (보통 <div>)
297
-
298
- 이 정보는 트리→HTML 매핑의 보조 힌트이다.
299
- 레이아웃과 스타일은 tree.json의 css 객체에서 직접 매핑한다.
300
- ```
1
+ ---
2
+ name: vibe.figma.extract
3
+ description: Figma REST API로 코드 생성 데이터 확보 — 트리(primary), 이미지, 스크린샷(검증용)
4
+ triggers: []
5
+ tier: standard
6
+ ---
7
+
8
+ # vibe.figma.extract — 코드 생성 데이터 확보
9
+
10
+ Figma REST API(`src/infra/lib/figma/`)를 사용하여 **구조적 코드 생성에 필요한 모든 데이터**를 추출.
11
+
12
+ ```
13
+ 추출 우선순위:
14
+ 1순위: 노드 트리 + CSS (코드 생성의 PRIMARY 소스)
15
+ 2순위: 이미지 에셋 (fill 이미지 + 아이템 노드 렌더링)
16
+ 3순위: 스크린샷 (Phase 6 시각 검증용 — 코드 생성에 사용하지 않음)
17
+ ```
18
+
19
+ ---
20
+
21
+ ## 1. 노드 트리 + CSS — 코드 생성의 원천
22
+
23
+ ```
24
+ Bash:
25
+ node "[FIGMA_SCRIPT]" tree {fileKey} {nodeId} --depth=10
26
+
27
+ 반환 (FigmaNode JSON):
28
+ {
29
+ nodeId, name, type, size: { width, height },
30
+ css: { display, flexDirection, gap, ... },
31
+ text: "텍스트 내용" (TEXT 노드만),
32
+ imageRef: "abc123" (이미지 fill),
33
+ imageScaleMode: "FILL" (FILL/FIT/CROP/TILE),
34
+ layoutSizingH: "HUG" (FIXED/HUG/FILL),
35
+ layoutSizingV: "FILL",
36
+ fills: [...] (2개 이상일 때만),
37
+ isMask: true (마스크 노드만),
38
+ children: [...]
39
+ }
40
+
41
+ → /tmp/{feature}/tree.json 에 저장
42
+ ```
43
+
44
+ ### Figma 속성 → CSS 직접 매핑표
45
+
46
+ 트리 추출 도구가 자동 변환하는 속성. **이 값들이 SCSS에 직접 매핑된다:**
47
+
48
+ **레이아웃:**
49
+
50
+ | Figma 속성 | CSS | vw 변환 |
51
+ |-----------|-----|---------|
52
+ | `layoutMode=VERTICAL` | `display:flex; flex-direction:column` | ❌ |
53
+ | `layoutMode=HORIZONTAL` | `display:flex; flex-direction:row` | ❌ |
54
+ | `primaryAxisAlignItems` | `justify-content` | |
55
+ | `counterAxisAlignItems` | `align-items` | ❌ |
56
+ | `itemSpacing` | `gap` | |
57
+ | `layoutGrow=1` | `flex-grow: 1` | ❌ |
58
+ | `padding*` | `padding` | |
59
+ | `absoluteBoundingBox.width/height` | `width/height` | |
60
+ | `layoutPositioning=ABSOLUTE` | `position: absolute` + `top/left` (부모 상대 좌표) | |
61
+ | `layoutSizingHorizontal=HUG` | width 삭제 (auto) | |
62
+ | `layoutSizingHorizontal=FILL` | 메타데이터 `layoutSizingH` (converter가 flex:1/100% 결정) | |
63
+ | `layoutSizingVertical=HUG` | height 삭제 (auto) | |
64
+ | `layoutSizingVertical=FILL` | 메타데이터 `layoutSizingV` (converter가 결정) | |
65
+ | `clipsContent` | `overflow: hidden` | ❌ |
66
+
67
+ **비주얼:**
68
+
69
+ | Figma 속성 | CSS | vw 변환 |
70
+ |-----------|-----|---------|
71
+ | `fills[].SOLID` | `background-color` | |
72
+ | `fills[].IMAGE` | `imageRef` + `imageScaleMode` (FILL/FIT/CROP/TILE) | |
73
+ | `fills[].GRADIENT_LINEAR` | `background-image: linear-gradient(...)` | |
74
+ | `fills[].GRADIENT_RADIAL` | `background-image: radial-gradient(...)` | |
75
+ | `fills[] (2개 이상)` | `fills` 배열 (type, color, imageRef, gradient, blendMode, filters) | |
76
+ | `fills[].blendMode` | `background-blend-mode` | ❌ |
77
+ | `fills[].filters.saturation` | `filter: grayscale(X%)` / `saturate(X%)` | ❌ |
78
+ | `fills[].color` (TEXT) | `color` | |
79
+ | `strokes[] + strokeAlign=INSIDE` | `border` + `box-sizing: border-box` | (width만) |
80
+ | `strokes[] + strokeAlign=OUTSIDE` | `outline` | (width만) |
81
+ | `individualStrokeWeights` | `border-top/right/bottom/left` 개별 | ✅ (width만) |
82
+ | `strokeDashes` | `border-style: dashed` | ❌ |
83
+ | `effects[].DROP_SHADOW` | `box-shadow` | (px만) |
84
+ | `effects[].INNER_SHADOW` | `box-shadow` (inset) | ✅ (px만) |
85
+ | `effects[].LAYER_BLUR` | `filter: blur()` (누적) | ✅ |
86
+ | `effects[].BACKGROUND_BLUR` | `backdrop-filter: blur()` | ✅ |
87
+ | `cornerRadius` | `border-radius` | |
88
+ | `opacity` | `opacity` | ❌ |
89
+ | `rotation` | `transform: rotate(Xdeg)` | ❌ |
90
+ | `blendMode` (노드 레벨) | `mix-blend-mode` | ❌ |
91
+
92
+ **텍스트:**
93
+
94
+ | Figma 속성 | CSS | vw 변환 |
95
+ |-----------|-----|---------|
96
+ | `style.fontFamily` | `font-family` | ❌ |
97
+ | `style.fontSize` | `font-size` | |
98
+ | `style.fontWeight` | `font-weight` | ❌ |
99
+ | `style.lineHeightPx` | `line-height` | ❌ |
100
+ | `style.letterSpacing` | `letter-spacing` | |
101
+ | `style.textAlignHorizontal` | `text-align` | ❌ |
102
+ | `style.textCase` | `text-transform` | |
103
+ | `style.textTruncation` | `overflow: hidden; text-overflow: ellipsis` | |
104
+ | `style.paragraphSpacing` | `margin-bottom` | |
105
+ | `characters` | 텍스트 내용 | |
106
+
107
+ ---
108
+
109
+ ## 2. 이미지 에셋 노드 렌더링 기반
110
+
111
+ ```
112
+ imageRef 개별 다운로드 금지
113
+ 텍스처 fill을 공유하는 경우 원본 텍스처(22.7MB)가 다운됨
114
+ → 노드 렌더링하면 해당 노드에 적용된 최종 결과물(364KB)이 나옴
115
+
116
+ 모든 이미지는 Figma screenshot API로 노드 렌더링
117
+ ```
118
+
119
+ ### 2-1. BG 프레임 렌더링
120
+
121
+ ```
122
+ BG 프레임 판별 기준:
123
+ - name에 "BG", "bg" 포함
124
+ - 또는 부모와 크기 동일(±10%) + 자식 이미지 3개 이상
125
+
126
+ 렌더링:
127
+ node "[FIGMA_SCRIPT]" screenshot {fileKey} {bg.nodeId} --out=/tmp/{feature}/bg/{section}-bg.webp
128
+ ```
129
+
130
+ ### 2-2. 콘텐츠 노드 렌더링
131
+
132
+ ```
133
+ 대상 (tree.json에서 식별):
134
+ - 아이콘 (VECTOR/GROUP 크기 64px)
135
+ - 아이템/보상 썸네일 (name에 "item", "reward", "token", "coin")
136
+ - 벡터 글자 GROUP (부모 아래 VECTOR 3개 이상, 각 <60px)
137
+
138
+ 렌더링:
139
+ node "[FIGMA_SCRIPT]" screenshot {fileKey} {node.nodeId} --out=/tmp/{feature}/content/{name}.webp
140
+ ```
141
+
142
+ ### 2-3. imageRef 다운로드 (폴백)
143
+
144
+ ```
145
+ 노드 렌더링 불가 시에만 (API 실패, DOCUMENT 레벨):
146
+ 파일 크기 5MB 초과 텍스처 fill 경고
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 3. 스크린샷 Phase 6 검증 참조용
152
+
153
+ ```
154
+ 코드 생성에 사용하지 않는다.
155
+
156
+ 전체: screenshot → /tmp/{feature}/full-screenshot.webp
157
+ 섹션별: 1depth 자식 각각 /tmp/{feature}/sections/{name}.webp
158
+ ```
159
+
160
+ ---
161
+
162
+ ## 4. 추출 데이터 정리
163
+
164
+ ```
165
+ /tmp/{feature}/
166
+ ├── tree.json ← PRIMARY 소스
167
+ ├── bg/ ← BG 프레임 렌더링
168
+ ├── content/ ← 콘텐츠 노드 렌더링
169
+ ├── full-screenshot.webp ← 검증용
170
+ └── sections/ ← 섹션별 검증용
171
+
172
+ 이미지 분류 요약:
173
+ | 분류 | 처리 |
174
+ |------|------|
175
+ | BG 프레임 | 프레임 렌더링 → bg/ |
176
+ | 벡터 글자 | GROUP 렌더링 → content/ |
177
+ | 콘텐츠 | 노드 렌더링 → content/ |
178
+ | 장식 | BG 렌더링에 포함 |
179
+ ```