@su-record/vibe 2.16.3 → 3.0.0

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 (353) hide show
  1. package/.env.example +15 -0
  2. package/CLAUDE.md +8 -8
  3. package/README.en.md +46 -29
  4. package/README.md +41 -24
  5. package/agents/acceptance-tester.md +56 -0
  6. package/agents/architect.md +25 -67
  7. package/agents/build-error-resolver.md +28 -97
  8. package/agents/code-reviewer.md +89 -0
  9. package/agents/diagrammer.md +34 -165
  10. package/agents/documenter.md +43 -0
  11. package/agents/e2e-tester.md +46 -277
  12. package/agents/event/event-ops.md +54 -77
  13. package/agents/event/event-planner.md +63 -0
  14. package/agents/figma/figma-engineer.md +76 -0
  15. package/agents/implementer.md +26 -41
  16. package/agents/security-reviewer.md +56 -0
  17. package/agents/tester.md +37 -33
  18. package/agents/ui/design-reviewer.md +62 -0
  19. package/agents/ui/design-system-gen.md +63 -0
  20. package/dist/__tests__/agent-model-sync.test.d.ts +2 -0
  21. package/dist/__tests__/agent-model-sync.test.d.ts.map +1 -0
  22. package/dist/__tests__/agent-model-sync.test.js +71 -0
  23. package/dist/__tests__/agent-model-sync.test.js.map +1 -0
  24. package/dist/cli/auth.d.ts.map +1 -1
  25. package/dist/cli/auth.js +8 -1
  26. package/dist/cli/auth.js.map +1 -1
  27. package/dist/cli/commands/index.d.ts +1 -0
  28. package/dist/cli/commands/index.d.ts.map +1 -1
  29. package/dist/cli/commands/index.js +1 -0
  30. package/dist/cli/commands/index.js.map +1 -1
  31. package/dist/cli/commands/info.d.ts.map +1 -1
  32. package/dist/cli/commands/info.js +2 -0
  33. package/dist/cli/commands/info.js.map +1 -1
  34. package/dist/cli/commands/llm.d.ts +11 -0
  35. package/dist/cli/commands/llm.d.ts.map +1 -0
  36. package/dist/cli/commands/llm.js +62 -0
  37. package/dist/cli/commands/llm.js.map +1 -0
  38. package/dist/cli/commands/remove.d.ts.map +1 -1
  39. package/dist/cli/commands/remove.js +8 -10
  40. package/dist/cli/commands/remove.js.map +1 -1
  41. package/dist/cli/commands/setup.d.ts.map +1 -1
  42. package/dist/cli/commands/setup.js +35 -1
  43. package/dist/cli/commands/setup.js.map +1 -1
  44. package/dist/cli/index.d.ts +0 -4
  45. package/dist/cli/index.d.ts.map +1 -1
  46. package/dist/cli/index.js +59 -6
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/llm/config.d.ts.map +1 -1
  49. package/dist/cli/llm/config.js +7 -0
  50. package/dist/cli/llm/config.js.map +1 -1
  51. package/dist/cli/llm/index.d.ts +1 -0
  52. package/dist/cli/llm/index.d.ts.map +1 -1
  53. package/dist/cli/llm/index.js +1 -0
  54. package/dist/cli/llm/index.js.map +1 -1
  55. package/dist/cli/llm/model-refresh.d.ts +29 -0
  56. package/dist/cli/llm/model-refresh.d.ts.map +1 -0
  57. package/dist/cli/llm/model-refresh.js +139 -0
  58. package/dist/cli/llm/model-refresh.js.map +1 -0
  59. package/dist/cli/llm/zai-commands.d.ts +15 -0
  60. package/dist/cli/llm/zai-commands.d.ts.map +1 -0
  61. package/dist/cli/llm/zai-commands.js +64 -0
  62. package/dist/cli/llm/zai-commands.js.map +1 -0
  63. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  64. package/dist/cli/postinstall/claude-agents.js +16 -77
  65. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  66. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  67. package/dist/cli/postinstall/constants.js +81 -296
  68. package/dist/cli/postinstall/constants.js.map +1 -1
  69. package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
  70. package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
  71. package/dist/cli/postinstall/cursor-agents.js +26 -68
  72. package/dist/cli/postinstall/cursor-agents.js.map +1 -1
  73. package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
  74. package/dist/cli/postinstall/cursor-skills.js +26 -30
  75. package/dist/cli/postinstall/cursor-skills.js.map +1 -1
  76. package/dist/cli/postinstall/main.d.ts.map +1 -1
  77. package/dist/cli/postinstall/main.js +0 -2
  78. package/dist/cli/postinstall/main.js.map +1 -1
  79. package/dist/cli/setup/Provisioner.d.ts.map +1 -1
  80. package/dist/cli/setup/Provisioner.js +19 -21
  81. package/dist/cli/setup/Provisioner.js.map +1 -1
  82. package/dist/cli/types.d.ts +15 -0
  83. package/dist/cli/types.d.ts.map +1 -1
  84. package/dist/cli/utils.d.ts +4 -1
  85. package/dist/cli/utils.d.ts.map +1 -1
  86. package/dist/cli/utils.js +4 -1
  87. package/dist/cli/utils.js.map +1 -1
  88. package/dist/infra/lib/FrameworkDetector.js +4 -4
  89. package/dist/infra/lib/FrameworkDetector.js.map +1 -1
  90. package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
  91. package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
  92. package/dist/infra/lib/browser/launch.js +1 -1
  93. package/dist/infra/lib/browser/launch.js.map +1 -1
  94. package/dist/infra/lib/browser/types.d.ts +1 -1
  95. package/dist/infra/lib/browser/types.js +1 -1
  96. package/dist/infra/lib/config/GlobalConfigManager.d.ts +2 -0
  97. package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
  98. package/dist/infra/lib/config/GlobalConfigManager.js +6 -0
  99. package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
  100. package/dist/infra/lib/constants.d.ts +1 -1
  101. package/dist/infra/lib/constants.d.ts.map +1 -1
  102. package/dist/infra/lib/constants.js +4 -5
  103. package/dist/infra/lib/constants.js.map +1 -1
  104. package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
  105. package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
  106. package/dist/infra/lib/llm-availability.d.ts +4 -0
  107. package/dist/infra/lib/llm-availability.d.ts.map +1 -1
  108. package/dist/infra/lib/llm-availability.js +9 -1
  109. package/dist/infra/lib/llm-availability.js.map +1 -1
  110. package/dist/infra/lib/memory/index.d.ts +0 -2
  111. package/dist/infra/lib/memory/index.d.ts.map +1 -1
  112. package/dist/infra/lib/memory/index.js +0 -2
  113. package/dist/infra/lib/memory/index.js.map +1 -1
  114. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
  115. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
  116. package/dist/infra/lib/zai/client.d.ts +30 -0
  117. package/dist/infra/lib/zai/client.d.ts.map +1 -0
  118. package/dist/infra/lib/zai/client.js +124 -0
  119. package/dist/infra/lib/zai/client.js.map +1 -0
  120. package/dist/infra/lib/zai/index.d.ts +11 -0
  121. package/dist/infra/lib/zai/index.d.ts.map +1 -0
  122. package/dist/infra/lib/zai/index.js +10 -0
  123. package/dist/infra/lib/zai/index.js.map +1 -0
  124. package/dist/infra/lib/zai/orchestration.d.ts +15 -0
  125. package/dist/infra/lib/zai/orchestration.d.ts.map +1 -0
  126. package/dist/infra/lib/zai/orchestration.js +54 -0
  127. package/dist/infra/lib/zai/orchestration.js.map +1 -0
  128. package/dist/infra/lib/zai/types.d.ts +40 -0
  129. package/dist/infra/lib/zai/types.d.ts.map +1 -0
  130. package/dist/infra/lib/zai/types.js +5 -0
  131. package/dist/infra/lib/zai/types.js.map +1 -0
  132. package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
  133. package/dist/infra/orchestrator/SmartRouter.js +16 -34
  134. package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
  135. package/dist/infra/orchestrator/index.d.ts +1 -0
  136. package/dist/infra/orchestrator/index.d.ts.map +1 -1
  137. package/dist/infra/orchestrator/index.js +11 -9
  138. package/dist/infra/orchestrator/index.js.map +1 -1
  139. package/dist/infra/orchestrator/types.d.ts +32 -9
  140. package/dist/infra/orchestrator/types.d.ts.map +1 -1
  141. package/dist/infra/orchestrator/types.js +68 -37
  142. package/dist/infra/orchestrator/types.js.map +1 -1
  143. package/dist/infra/orchestrator/types.test.d.ts +2 -0
  144. package/dist/infra/orchestrator/types.test.d.ts.map +1 -0
  145. package/dist/infra/orchestrator/types.test.js +57 -0
  146. package/dist/infra/orchestrator/types.test.js.map +1 -0
  147. package/dist/tools/index.d.ts +0 -4
  148. package/dist/tools/index.d.ts.map +1 -1
  149. package/dist/tools/index.js +0 -4
  150. package/dist/tools/index.js.map +1 -1
  151. package/dist/tools/memory/autoSaveContext.d.ts +0 -1
  152. package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
  153. package/dist/tools/memory/autoSaveContext.js +13 -27
  154. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  155. package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
  156. package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
  157. package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
  158. package/hooks/scripts/__tests__/step-counter.test.js +1 -1
  159. package/hooks/scripts/code-check.js +16 -203
  160. package/hooks/scripts/context-save.js +0 -11
  161. package/hooks/scripts/lib/scope-from-spec.js +9 -6
  162. package/hooks/scripts/llm-orchestrate.js +49 -0
  163. package/hooks/scripts/post-edit-dispatcher.js +1 -1
  164. package/hooks/scripts/prompt-dispatcher.js +7 -18
  165. package/hooks/scripts/session-start.js +25 -35
  166. package/package.json +4 -4
  167. package/skills/agents-md/SKILL.md +62 -15
  168. package/skills/arch-guard/SKILL.md +1 -1
  169. package/skills/brand-assets/SKILL.md +2 -2
  170. package/skills/capability-loop/SKILL.md +1 -1
  171. package/skills/chub-usage/SKILL.md +1 -1
  172. package/skills/commerce-patterns/SKILL.md +2 -2
  173. package/skills/commit-push-pr/SKILL.md +0 -1
  174. package/skills/context7-usage/SKILL.md +1 -1
  175. package/skills/create-prd/agents/edge-case-finder.md +4 -4
  176. package/skills/create-prd/agents/prioritizer.md +4 -4
  177. package/skills/create-prd/agents/requirements-writer.md +3 -3
  178. package/skills/create-prd/agents/researcher.md +3 -3
  179. package/skills/create-prd/agents/reviewer.md +3 -3
  180. package/skills/create-prd/orchestrator.md +2 -0
  181. package/skills/design-refine/SKILL.md +140 -0
  182. package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
  183. package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
  184. package/skills/design-review/SKILL.md +143 -0
  185. package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
  186. package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
  187. package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
  188. package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
  189. package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
  190. package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
  191. package/skills/{design-audit → design-review}/orchestrator.md +5 -3
  192. package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
  193. package/skills/{design-audit → design-review}/templates/report.md +3 -3
  194. package/skills/design-teach/SKILL.md +11 -11
  195. package/skills/docs/SKILL.md +14 -16
  196. package/skills/e2e-commerce/SKILL.md +1 -1
  197. package/skills/event-comms/SKILL.md +1 -1
  198. package/skills/event-ops/SKILL.md +2 -2
  199. package/skills/event-planning/SKILL.md +1 -1
  200. package/skills/exec-plan/SKILL.md +2 -2
  201. package/skills/exec-plan/orchestrator.md +2 -0
  202. package/skills/figma/SKILL.md +240 -148
  203. package/skills/figma/rubrics/css-mapping.md +125 -0
  204. package/skills/git-worktree/SKILL.md +1 -1
  205. package/skills/handoff/SKILL.md +1 -1
  206. package/skills/parallel-research/SKILL.md +14 -28
  207. package/skills/parallel-research/orchestrator.md +2 -0
  208. package/skills/priority-todos/SKILL.md +1 -1
  209. package/skills/regress/SKILL.md +11 -0
  210. package/skills/restraint/SKILL.md +72 -0
  211. package/skills/seo-checklist/SKILL.md +2 -2
  212. package/skills/spec/SKILL.md +65 -836
  213. package/skills/test/SKILL.md +3 -3
  214. package/skills/tool-fallback/SKILL.md +2 -2
  215. package/skills/vercel-react-best-practices/SKILL.md +1 -1
  216. package/skills/vibe/SKILL.md +20 -35
  217. package/skills/vibe.analyze/SKILL.md +7 -9
  218. package/skills/vibe.docs/SKILL.md +1 -1
  219. package/skills/vibe.event/SKILL.md +27 -27
  220. package/skills/vibe.figma/SKILL.md +14 -18
  221. package/skills/vibe.harness/SKILL.md +5 -5
  222. package/skills/vibe.llm/SKILL.md +50 -0
  223. package/skills/vibe.reason/SKILL.md +0 -2
  224. package/skills/vibe.review/SKILL.md +45 -49
  225. package/skills/vibe.run/SKILL.md +2 -5
  226. package/skills/vibe.run/references/parallel-agents.md +33 -98
  227. package/skills/vibe.spec/SKILL.md +38 -535
  228. package/skills/vibe.utils/SKILL.md +3 -3
  229. package/skills/vibe.verify/SKILL.md +70 -542
  230. package/skills/video-production/SKILL.md +1 -1
  231. package/vibe/rules/orchestrator-contract.md +57 -0
  232. package/vibe/rules/quality/performance.md +1 -1
  233. package/vibe/templates/claudemd-template.md +1 -1
  234. package/vibe/templates/spec-template.md +35 -185
  235. package/agents/architect-low.md +0 -41
  236. package/agents/architect-medium.md +0 -59
  237. package/agents/compounder.md +0 -261
  238. package/agents/docs/api-documenter.md +0 -99
  239. package/agents/docs/changelog-writer.md +0 -93
  240. package/agents/event/event-comms.md +0 -78
  241. package/agents/event/event-content.md +0 -68
  242. package/agents/event/event-image.md +0 -95
  243. package/agents/event/event-scheduler.md +0 -69
  244. package/agents/event/event-speaker.md +0 -86
  245. package/agents/explorer-low.md +0 -42
  246. package/agents/explorer-medium.md +0 -59
  247. package/agents/explorer.md +0 -48
  248. package/agents/figma/figma-analyst.md +0 -52
  249. package/agents/figma/figma-architect.md +0 -112
  250. package/agents/figma/figma-auditor.md +0 -82
  251. package/agents/figma/figma-builder.md +0 -100
  252. package/agents/implementer-low.md +0 -43
  253. package/agents/implementer-medium.md +0 -52
  254. package/agents/junior-mentor.md +0 -141
  255. package/agents/planning/requirements-analyst.md +0 -84
  256. package/agents/planning/ux-advisor.md +0 -83
  257. package/agents/qa/acceptance-tester.md +0 -86
  258. package/agents/qa/edge-case-finder.md +0 -93
  259. package/agents/qa/qa-coordinator.md +0 -131
  260. package/agents/refactor-cleaner.md +0 -143
  261. package/agents/research/best-practices.md +0 -199
  262. package/agents/research/codebase-patterns.md +0 -157
  263. package/agents/research/framework-docs.md +0 -188
  264. package/agents/research/security-advisory.md +0 -213
  265. package/agents/review/architecture-reviewer.md +0 -107
  266. package/agents/review/complexity-reviewer.md +0 -116
  267. package/agents/review/data-integrity-reviewer.md +0 -88
  268. package/agents/review/git-history-reviewer.md +0 -103
  269. package/agents/review/performance-reviewer.md +0 -86
  270. package/agents/review/python-reviewer.md +0 -150
  271. package/agents/review/rails-reviewer.md +0 -139
  272. package/agents/review/react-reviewer.md +0 -144
  273. package/agents/review/security-reviewer.md +0 -80
  274. package/agents/review/simplicity-reviewer.md +0 -140
  275. package/agents/review/test-coverage-reviewer.md +0 -116
  276. package/agents/review/typescript-reviewer.md +0 -127
  277. package/agents/searcher.md +0 -54
  278. package/agents/simplifier.md +0 -120
  279. package/agents/teams/debug-team.md +0 -70
  280. package/agents/teams/dev-team.md +0 -88
  281. package/agents/teams/docs-team.md +0 -80
  282. package/agents/teams/figma-team.md +0 -85
  283. package/agents/teams/fullstack-team.md +0 -83
  284. package/agents/teams/lite-team.md +0 -69
  285. package/agents/teams/migration-team.md +0 -78
  286. package/agents/teams/refactor-team.md +0 -94
  287. package/agents/teams/research-team.md +0 -86
  288. package/agents/teams/review-debate-team.md +0 -125
  289. package/agents/teams/security-team.md +0 -81
  290. package/agents/ui/ui-a11y-auditor.md +0 -93
  291. package/agents/ui/ui-antipattern-detector.md +0 -102
  292. package/agents/ui/ui-dataviz-advisor.md +0 -69
  293. package/agents/ui/ui-design-system-gen.md +0 -57
  294. package/agents/ui/ui-industry-analyzer.md +0 -49
  295. package/agents/ui/ui-layout-architect.md +0 -65
  296. package/agents/ui/ui-stack-implementer.md +0 -68
  297. package/agents/ui/ux-compliance-reviewer.md +0 -81
  298. package/agents/ui-previewer.md +0 -258
  299. package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
  300. package/hooks/scripts/keyword-detector.js +0 -226
  301. package/skills/characterization-test/SKILL.md +0 -209
  302. package/skills/characterization-test/agents/behavior-capturer.md +0 -50
  303. package/skills/characterization-test/agents/coverage-checker.md +0 -54
  304. package/skills/characterization-test/agents/reporter.md +0 -50
  305. package/skills/characterization-test/agents/test-writer.md +0 -49
  306. package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
  307. package/skills/characterization-test/templates/test-template.ts +0 -101
  308. package/skills/claude-md-guide/SKILL.md +0 -353
  309. package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
  310. package/skills/design-audit/SKILL.md +0 -154
  311. package/skills/design-critique/SKILL.md +0 -140
  312. package/skills/design-distill/SKILL.md +0 -131
  313. package/skills/design-normalize/SKILL.md +0 -135
  314. package/skills/design-polish/SKILL.md +0 -132
  315. package/skills/figma-convert/SKILL.md +0 -236
  316. package/skills/figma-extract/SKILL.md +0 -242
  317. package/skills/interview/SKILL.md +0 -358
  318. package/skills/interview/checklists/api.md +0 -101
  319. package/skills/interview/checklists/feature.md +0 -88
  320. package/skills/interview/checklists/library.md +0 -95
  321. package/skills/interview/checklists/mobile.md +0 -89
  322. package/skills/interview/checklists/webapp.md +0 -97
  323. package/skills/interview/checklists/website.md +0 -99
  324. package/skills/plan/SKILL.md +0 -254
  325. package/skills/rob-pike/SKILL.md +0 -66
  326. package/skills/spec/references/askuser-examples.md +0 -57
  327. package/skills/spec/references/example-session.md +0 -87
  328. package/skills/spec/references/templates.md +0 -194
  329. package/skills/spec-review/SKILL.md +0 -725
  330. package/skills/systematic-debugging/SKILL.md +0 -142
  331. package/skills/techdebt/SKILL.md +0 -126
  332. package/skills/techdebt/agents/analyzer.md +0 -50
  333. package/skills/techdebt/agents/fixer.md +0 -41
  334. package/skills/techdebt/agents/reviewer.md +0 -47
  335. package/skills/techdebt/agents/scanner.md +0 -44
  336. package/skills/techdebt/orchestrator.md +0 -70
  337. package/skills/techdebt/rubrics/severity.md +0 -51
  338. package/skills/techdebt/scripts/scan.js +0 -90
  339. package/skills/techdebt/templates/report.md +0 -86
  340. package/skills/typescript-advanced-types/SKILL.md +0 -68
  341. package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
  342. package/skills/yagni-ladder/SKILL.md +0 -90
  343. /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
  344. /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
  345. /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
  346. /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
  347. /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
  348. /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
  349. /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
  350. /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
  351. /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
  352. /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
  353. /package/skills/{figma-convert → figma}/templates/component.md +0 -0
@@ -0,0 +1,125 @@
1
+ # Figma Property → CSS Mapping Reference
2
+
3
+ Properties automatically converted by `figma-extract.js` tree extraction (Extract Mode E1) and consumed by `figma-to-scss.js`. Phase 4 forbids hand-writing these values — this table is grounding for reviewing script output (and for modifying the scripts when output is unsatisfactory).
4
+
5
+ ## Layout
6
+
7
+ | Figma Property | CSS | vw conversion |
8
+ |-----------|-----|---------|
9
+ | `layoutMode=VERTICAL` | `display:flex; flex-direction:column` | No |
10
+ | `layoutMode=HORIZONTAL` | `display:flex; flex-direction:row` | No |
11
+ | `primaryAxisAlignItems` | `justify-content` | No |
12
+ | `counterAxisAlignItems` | `align-items` | No |
13
+ | `itemSpacing` | `gap` | Yes |
14
+ | `layoutGrow=1` | `flex-grow: 1` | No |
15
+ | `padding*` | `padding` | Yes |
16
+ | `absoluteBoundingBox.width/height` | `width/height` | Yes |
17
+ | `layoutPositioning=ABSOLUTE` | `position: absolute` + `top/left` (relative to parent) | Yes |
18
+ | `layoutSizingHorizontal=HUG` | remove width (auto) | — |
19
+ | `layoutSizingHorizontal=FILL` | metadata `layoutSizingH` (converter decides flex:1/100%) | — |
20
+ | `layoutSizingVertical=HUG` | remove height (auto) | — |
21
+ | `layoutSizingVertical=FILL` | metadata `layoutSizingV` (converter decides) | — |
22
+ | `clipsContent` | `overflow: hidden` | No |
23
+
24
+ ## Visual
25
+
26
+ | Figma Property | CSS | vw conversion |
27
+ |-----------|-----|---------|
28
+ | `fills[].SOLID` | `background-color` | No |
29
+ | `fills[].IMAGE` | `imageRef` + `imageScaleMode` (FILL/FIT/CROP/TILE) | — |
30
+ | `fills[].GRADIENT_LINEAR` | `background-image: linear-gradient(...)` | No |
31
+ | `fills[].GRADIENT_RADIAL` | `background-image: radial-gradient(...)` | No |
32
+ | `fills[] (2 or more)` | `fills` array (type, color, imageRef, gradient, blendMode, filters) | — |
33
+ | `fills[].blendMode` | `background-blend-mode` | No |
34
+ | `fills[].filters.saturation` | `filter: grayscale(X%)` / `saturate(X%)` | No |
35
+ | `fills[].color` (TEXT) | `color` | No |
36
+ | `strokes[] + strokeAlign=INSIDE` | `border` + `box-sizing: border-box` | Yes (width only) |
37
+ | `strokes[] + strokeAlign=OUTSIDE` | `outline` | Yes (width only) |
38
+ | `individualStrokeWeights` | `border-top/right/bottom/left` individually | Yes (width only) |
39
+ | `strokeDashes` | `border-style: dashed` | No |
40
+ | `effects[].DROP_SHADOW` | `box-shadow` | Yes (px only) |
41
+ | `effects[].INNER_SHADOW` | `box-shadow` (inset) | Yes (px only) |
42
+ | `effects[].LAYER_BLUR` | `filter: blur()` (accumulated) | Yes |
43
+ | `effects[].BACKGROUND_BLUR` | `backdrop-filter: blur()` | Yes |
44
+ | `cornerRadius` | `border-radius` | Yes |
45
+ | `opacity` | `opacity` | No |
46
+ | `rotation` | `transform: rotate(Xdeg)` | No |
47
+ | `blendMode` (node level) | `mix-blend-mode` | No |
48
+
49
+ ## Text
50
+
51
+ | Figma Property | CSS | vw conversion |
52
+ |-----------|-----|---------|
53
+ | `style.fontFamily` | `font-family` | No |
54
+ | `style.fontSize` | `font-size` | Yes |
55
+ | `style.fontWeight` | `font-weight` | No |
56
+ | `style.lineHeightPx` | `line-height` | No |
57
+ | `style.letterSpacing` | `letter-spacing` | Yes |
58
+ | `style.textAlignHorizontal` | `text-align` | No |
59
+ | `style.textCase` | `text-transform` | No |
60
+ | `style.textTruncation` | `overflow: hidden; text-overflow: ellipsis` | No |
61
+ | `style.paragraphSpacing` | `margin-bottom` | Yes |
62
+ | `characters` | text content | — |
63
+
64
+ ## SCSS Property Allowlist (per file group)
65
+
66
+ ```
67
+ Layout (layout/ files):
68
+ display, flex-direction, justify-content, align-items, gap,
69
+ flex-grow, padding, width, height, overflow, position, top, left, transform
70
+
71
+ Visual (components/ files):
72
+ background-color, background-image, background-blend-mode, color,
73
+ font-family, font-size, font-weight, line-height, letter-spacing,
74
+ text-align, text-transform, text-overflow,
75
+ border-radius, border, outline, box-sizing, box-shadow,
76
+ opacity, mix-blend-mode, filter, backdrop-filter
77
+
78
+ If a value is absent in the tree → omit that property (no guessing)
79
+
80
+ ❌ Forbidden: aspect-ratio, container queries, custom @function/@mixin (wp-fluid() etc.),
81
+ clamp() with guessed values — only 1:1 mapping from the tree is allowed.
82
+ ```
83
+
84
+ ## Responsive Unit Conversion (legacy vw workflow — Phase 4C reference)
85
+
86
+ > Current Phase 4 generates px as-is via figma-to-scss.js. These rules apply to the
87
+ > responsive-integration flow (Phase 4C) and to script maintenance.
88
+
89
+ ```
90
+ vw conversion (mechanical formula only):
91
+ width, height, padding, gap, border-radius, box-shadow, top, left, border-width
92
+ vw value = (Figma px / designWidth) × 100
93
+ ⛔ clamp, min(), max() etc. are allowed only for font-size
94
+
95
+ Font → clamp(min, vw, max):
96
+ | Role | Min | Determination Basis |
97
+ |---------|-------|-----------------------------|
98
+ | h1~h2 | 16px | name contains "title" |
99
+ | h3~h4 | 14px | medium size |
100
+ | Body | 12px | long text |
101
+ | Caption | 10px | small fontSize |
102
+ | Button | 12px | name contains "btn" |
103
+ max value = original Figma px as-is
104
+
105
+ Properties never converted:
106
+ color, opacity, font-weight, font-family, z-index, text-align,
107
+ mix-blend-mode, transform(rotate), background-blend-mode,
108
+ flex-grow, box-sizing, grayscale/saturate, background-image(gradient)
109
+
110
+ layoutSizing handling:
111
+ HUG → omit width/height (auto)
112
+ FILL → same direction as parent → flex: 1 0 0 · cross axis → align-self: stretch
113
+ FIXED → vw conversion
114
+
115
+ imageScaleMode:
116
+ FILL → background-size: cover · FIT → contain
117
+ CROP → cover + background-position: center · TILE → auto + repeat
118
+
119
+ MO↔PC responsive (remapped.json pcDiff → @media overrides, MO base preserved):
120
+ Same value → keep MO only
121
+ Different px → @media { PC vw }
122
+ Different layout → @media { flex-direction: row }
123
+ Different image → @media { background-image: url(pc-xxx.webp) }
124
+ layoutSizing diff → @media { flex/width change }
125
+ ```
@@ -3,7 +3,7 @@ name: git-worktree
3
3
  invocation: [auto]
4
4
  tier: optional
5
5
  description: "Git Worktree for parallel branch work. Auto-activates for PR review, hotfix, parallel testing, or working on multiple branches simultaneously."
6
- triggers: [worktree, PR review, hotfix, parallel branch, multiple branches]
6
+ triggers: [worktree, hotfix, parallel branch, multiple branches]
7
7
  priority: 50
8
8
  ---
9
9
 
@@ -5,7 +5,7 @@ invocation: [auto]
5
5
  tier: standard
6
6
  description: "Generate HANDOFF.md work handover document before session end. Auto-activates on handoff, handover, session cleanup keywords."
7
7
  triggers: [handoff, handover, session cleanup, session end, context save]
8
- priority: 70
8
+ priority: 60
9
9
  ---
10
10
 
11
11
  # Handoff — Session Handover Document
@@ -22,41 +22,27 @@ Parallel research patterns for solving complex problems.
22
22
  | Technology selection | Comparison analysis needed |
23
23
  | Complex bugs | Explore multiple causes |
24
24
 
25
- ## Research Agents (4 Parallel)
25
+ ## Research Lenses (4 Parallel)
26
26
 
27
- | Agent | Role | Tools |
28
- |-------|------|-------|
29
- | best-practices | Search best practices | Web Search, context7 |
30
- | framework-docs | Search official docs | context7 |
31
- | codebase-patterns | Analyze existing code patterns | Grep, Glob |
32
- | security-advisory | Search security advisories | Web Search |
27
+ | Lens | Role | How |
28
+ |-------|------|-----|
29
+ | best-practices | Search best practices | native WebSearch (+context7) |
30
+ | framework-docs | Search official docs | native WebFetch/context7 |
31
+ | codebase-patterns | Analyze existing code patterns | native Explore subagent |
32
+ | security-advisory | Search security advisories | native WebSearch |
33
33
 
34
- ## Usage Methods
34
+ ## Usage
35
35
 
36
- ### Method 1: Direct Orchestrator Call
36
+ **Spawn the four lenses as concurrent native subagents in a single message** — each lens is blind to the others; synthesize after all return:
37
37
 
38
- ```bash
39
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o =>
40
- o.research('passkey authentication', ['React', 'Supabase'])
41
- .then(r => console.log(r.content[0].text))
42
- )"
43
38
  ```
44
-
45
- ### Method 2: Use /vibe.spec
46
-
47
- ```
48
- /vibe.spec "feature-name"
49
- → Parallel research runs automatically after requirements confirmed
39
+ Task 1 (Explore): "Analyze existing auth code patterns" (concurrent)
40
+ Task 2 (general-purpose): "Search React auth best practices" (concurrent)
41
+ Task 3 (general-purpose): "Search Supabase Auth official docs" (concurrent)
42
+ Task 4 (general-purpose): "Search auth security vulnerabilities" (concurrent)
50
43
  ```
51
44
 
52
- ### Method 3: Parallel Task Tool Execution
53
-
54
- ```
55
- Task 1: "Search React auth best practices"
56
- Task 2: "Search Supabase Auth official docs" (concurrent)
57
- Task 3: "Analyze existing auth code patterns" (concurrent)
58
- Task 4: "Search auth security vulnerabilities" (concurrent)
59
- ```
45
+ `/vibe.spec "feature-name"` runs this automatically when the SPEC pass needs unfamiliar-technology research.
60
46
 
61
47
  ## Using Research Results
62
48
 
@@ -6,6 +6,8 @@ agents: [best-practices, framework-docs, codebase-patterns, security-advisory, s
6
6
 
7
7
  # Parallel Research Orchestrator
8
8
 
9
+ > 구조·섹션·네이밍은 vibe/rules/orchestrator-contract.md (SSOT) 를 따른다.
10
+
9
11
  ## Workflow
10
12
 
11
13
  ### Phase 1: Launch Research Agents
@@ -4,7 +4,7 @@ user-invocable: false
4
4
  invocation: [auto]
5
5
  tier: standard
6
6
  description: "Priority-based TODO management (P1/P2/P3). Auto-activates when managing tasks, reviewing issues, or organizing work by priority."
7
- triggers: [todo, priority, P1, P2, P3, task management, issue, organize]
7
+ triggers: [todo list, task management, P1, P2, P3, priority todos, organize tasks]
8
8
  priority: 60
9
9
  ---
10
10
 
@@ -14,6 +14,17 @@ tier: core
14
14
 
15
15
  A classic vibe-coding weakness: LLMs reintroduce bugs of the same class. Regression tests are the only mechanical defense. But if the human has to write the test every time, it gets skipped — so automate.
16
16
 
17
+ ## Characterization — lock behavior first
18
+
19
+ Before modifying legacy or untested code whose behavior is uncertain (large files without tests, complex branching, API contracts), **lock current behavior first, then change**:
20
+
21
+ 1. Generate characterization tests over the public surface — snapshot the **actual** output (`toMatchSnapshot()`), not what you think it should be. Do NOT fix bugs while locking: a wrong value gets locked as-is; the goal is regression detection, not correctness.
22
+ 2. Run them — all must pass against the unmodified code. A failure means the characterization is wrong: fix the test, never the code.
23
+ 3. Make the change incrementally, re-running after each step. Unexpected failure = regression, stop and investigate.
24
+ 4. Reconcile: update snapshots only for **intentionally** changed behavior, and add new tests for the new behavior.
25
+
26
+ Skip this for code you just wrote, already-well-tested code, or trivial changes — write regular unit tests instead. Test file naming/stack detection follows `generate` (below).
27
+
17
28
  ## Storage Contract
18
29
 
19
30
  ```
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: restraint
3
+ user-invocable: false
4
+ invocation: [auto]
5
+ tier: core
6
+ description: "Restraint gate — block premature abstraction and premature optimization. Escalate the YAGNI ladder only on demonstrated need; optimize only on measured evidence. Merges yagni-ladder + rob-pike."
7
+ triggers: [premature optimization, premature abstraction, abstraction layer, helper module, utility class, wrapper class, manager class, config system, cache layer, parallelize, benchmark]
8
+ priority: 60
9
+ ---
10
+
11
+ # Restraint — Don't Write It, Don't Tune It (Yet)
12
+
13
+ Two constraints, one gate:
14
+
15
+ - **No premature code.** New abstractions must be *pulled* by a demonstrated
16
+ need, never pushed by "might need it later." Once the code exists, deleting
17
+ it costs more than never writing it.
18
+ - **No premature optimization.** Performance work must be *pulled* by a
19
+ measurement, never by a hunch.
20
+
21
+ ## The YAGNI Ladder (code axis)
22
+
23
+ Satisfy the need at the **highest** rung that covers it; lower rungs are
24
+ blocked while a higher one applies:
25
+
26
+ 1. **Not needed** — the requirement doesn't ask for it → don't build it
27
+ 2. **Stdlib / built-ins** already do it (`crypto`, `Intl`, `pathlib`, …)
28
+ 3. **Native platform feature** does it (`<input type="date">`, CSS `:has()`, DB constraints)
29
+ 4. **Already-installed dependency** covers it — check the lockfile, don't guess
30
+ 5. **One line** — a single expression; no new file, no class
31
+ 6. **Minimal code** — only now, and nothing for "later"
32
+
33
+ Tie-break: native beats a one-liner; stdlib beats a dependency. Generalize
34
+ only when a *second* caller exists.
35
+
36
+ ## Pike's Rules (optimization axis)
37
+
38
+ - You can't tell where a program spends its time — bottlenecks surprise.
39
+ **Measure; don't guess.**
40
+ - Don't tune until one part *measurably* overwhelms the rest.
41
+ - Fancy algorithms are slow when n is small — and n is usually small.
42
+ Ask "what's n?" before "what's the Big-O?"
43
+ - Simple algorithms + the right data structures beat clever code. Data dominates.
44
+
45
+ Optimization is justified only when ALL hold: a measured bottleneck exists →
46
+ it dominates runtime → the fix is the simplest change addressing it → you
47
+ re-measure after.
48
+
49
+ ## Blocked Impulses
50
+
51
+ | Impulse | Constraint | Counter |
52
+ |---|---|---|
53
+ | helper / utility / wrapper / manager class | rungs 1–5 | a stdlib call or one line usually suffices |
54
+ | config system for one value | rung 1 | a `const` is the config |
55
+ | generic `Processor(strategy, validator…)` | rung 1 | one concrete function until a second caller exists |
56
+ | "add a cache here" / "parallelize this" | measure first | is this path even hot? Often it's I/O |
57
+ | swap in a B-tree / trie / skip list | what's n? | O(n²) with n=100 is microseconds |
58
+ | "this loop looks slow" | measure first | the bottleneck is probably elsewhere |
59
+
60
+ ## Overrides — Restraint Never Erodes These
61
+
62
+ 1. **Security and trust-boundary work are requirements**, not optional
63
+ complexity. Input validation, auth checks, escaping stay in — "one line"
64
+ is no excuse to drop them.
65
+ 2. **Deliberate simplifications get a comment + upgrade path**, so the next
66
+ reader sees a *choice*, not an oversight:
67
+
68
+ ```ts
69
+ // Global lock is enough at current throughput.
70
+ // Switch to per-account locking if write contention shows up.
71
+ const lock = new Mutex();
72
+ ```
@@ -3,8 +3,8 @@ name: seo-checklist
3
3
  invocation: [auto]
4
4
  tier: core
5
5
  description: "SEO gotchas for web development — easy-to-miss items that hurt search ranking. Covers meta tags, Open Graph, structured data (JSON-LD), sitemap, robots.txt, canonical URLs, and Naver/Google-specific requirements. Use when building or reviewing any public-facing web page, landing page, or marketing site. Must use this skill when user mentions SEO, search ranking, meta tags, or when deploying a web app that needs to be discoverable."
6
- triggers: [seo, search, meta, sitemap, schema, structured data, og, opengraph, google, naver]
7
- priority: 65
6
+ triggers: [seo, meta tags, sitemap, structured data, opengraph, search ranking, robots.txt, naver]
7
+ priority: 60
8
8
  ---
9
9
 
10
10
  # SEO Checklist