@su-record/vibe 2.16.4 → 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 (267) hide show
  1. package/CLAUDE.md +8 -8
  2. package/README.en.md +46 -29
  3. package/README.md +41 -24
  4. package/agents/acceptance-tester.md +56 -0
  5. package/agents/architect.md +25 -67
  6. package/agents/build-error-resolver.md +28 -97
  7. package/agents/code-reviewer.md +89 -0
  8. package/agents/diagrammer.md +34 -169
  9. package/agents/documenter.md +43 -0
  10. package/agents/e2e-tester.md +46 -281
  11. package/agents/event/event-ops.md +54 -77
  12. package/agents/event/event-planner.md +63 -0
  13. package/agents/figma/figma-engineer.md +76 -0
  14. package/agents/implementer.md +26 -41
  15. package/agents/security-reviewer.md +56 -0
  16. package/agents/tester.md +37 -33
  17. package/agents/ui/design-reviewer.md +62 -0
  18. package/agents/ui/design-system-gen.md +63 -0
  19. package/dist/cli/commands/remove.d.ts.map +1 -1
  20. package/dist/cli/commands/remove.js +8 -10
  21. package/dist/cli/commands/remove.js.map +1 -1
  22. package/dist/cli/index.d.ts +0 -4
  23. package/dist/cli/index.d.ts.map +1 -1
  24. package/dist/cli/index.js +0 -4
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/llm/model-refresh.js +1 -1
  27. package/dist/cli/llm/model-refresh.js.map +1 -1
  28. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  29. package/dist/cli/postinstall/claude-agents.js +16 -77
  30. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  31. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  32. package/dist/cli/postinstall/constants.js +80 -296
  33. package/dist/cli/postinstall/constants.js.map +1 -1
  34. package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
  35. package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
  36. package/dist/cli/postinstall/cursor-agents.js +26 -68
  37. package/dist/cli/postinstall/cursor-agents.js.map +1 -1
  38. package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
  39. package/dist/cli/postinstall/cursor-skills.js +26 -30
  40. package/dist/cli/postinstall/cursor-skills.js.map +1 -1
  41. package/dist/cli/postinstall/main.d.ts.map +1 -1
  42. package/dist/cli/postinstall/main.js +0 -2
  43. package/dist/cli/postinstall/main.js.map +1 -1
  44. package/dist/cli/setup/Provisioner.d.ts.map +1 -1
  45. package/dist/cli/setup/Provisioner.js +19 -21
  46. package/dist/cli/setup/Provisioner.js.map +1 -1
  47. package/dist/cli/utils.d.ts +4 -1
  48. package/dist/cli/utils.d.ts.map +1 -1
  49. package/dist/cli/utils.js +4 -1
  50. package/dist/cli/utils.js.map +1 -1
  51. package/dist/infra/lib/FrameworkDetector.js +4 -4
  52. package/dist/infra/lib/FrameworkDetector.js.map +1 -1
  53. package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
  54. package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
  55. package/dist/infra/lib/browser/launch.js +1 -1
  56. package/dist/infra/lib/browser/launch.js.map +1 -1
  57. package/dist/infra/lib/browser/types.d.ts +1 -1
  58. package/dist/infra/lib/browser/types.js +1 -1
  59. package/dist/infra/lib/constants.d.ts +1 -1
  60. package/dist/infra/lib/constants.d.ts.map +1 -1
  61. package/dist/infra/lib/constants.js +4 -5
  62. package/dist/infra/lib/constants.js.map +1 -1
  63. package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
  64. package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
  65. package/dist/infra/lib/memory/index.d.ts +0 -2
  66. package/dist/infra/lib/memory/index.d.ts.map +1 -1
  67. package/dist/infra/lib/memory/index.js +0 -2
  68. package/dist/infra/lib/memory/index.js.map +1 -1
  69. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
  70. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
  71. package/dist/tools/index.d.ts +0 -4
  72. package/dist/tools/index.d.ts.map +1 -1
  73. package/dist/tools/index.js +0 -4
  74. package/dist/tools/index.js.map +1 -1
  75. package/dist/tools/memory/autoSaveContext.d.ts +0 -1
  76. package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
  77. package/dist/tools/memory/autoSaveContext.js +13 -27
  78. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  79. package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
  80. package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
  81. package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
  82. package/hooks/scripts/__tests__/step-counter.test.js +1 -1
  83. package/hooks/scripts/code-check.js +16 -203
  84. package/hooks/scripts/context-save.js +0 -11
  85. package/hooks/scripts/lib/scope-from-spec.js +9 -6
  86. package/hooks/scripts/post-edit-dispatcher.js +1 -1
  87. package/hooks/scripts/prompt-dispatcher.js +7 -18
  88. package/hooks/scripts/session-start.js +25 -35
  89. package/package.json +2 -4
  90. package/skills/agents-md/SKILL.md +62 -15
  91. package/skills/arch-guard/SKILL.md +1 -1
  92. package/skills/brand-assets/SKILL.md +2 -2
  93. package/skills/capability-loop/SKILL.md +1 -1
  94. package/skills/chub-usage/SKILL.md +1 -1
  95. package/skills/commerce-patterns/SKILL.md +2 -2
  96. package/skills/commit-push-pr/SKILL.md +0 -1
  97. package/skills/context7-usage/SKILL.md +1 -1
  98. package/skills/design-refine/SKILL.md +140 -0
  99. package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
  100. package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
  101. package/skills/design-review/SKILL.md +143 -0
  102. package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
  103. package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
  104. package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
  105. package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
  106. package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
  107. package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
  108. package/skills/{design-audit → design-review}/orchestrator.md +3 -3
  109. package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
  110. package/skills/{design-audit → design-review}/templates/report.md +3 -3
  111. package/skills/design-teach/SKILL.md +11 -11
  112. package/skills/docs/SKILL.md +14 -16
  113. package/skills/e2e-commerce/SKILL.md +1 -1
  114. package/skills/event-comms/SKILL.md +1 -1
  115. package/skills/event-ops/SKILL.md +2 -2
  116. package/skills/event-planning/SKILL.md +1 -1
  117. package/skills/exec-plan/SKILL.md +2 -2
  118. package/skills/figma/SKILL.md +240 -148
  119. package/skills/figma/rubrics/css-mapping.md +125 -0
  120. package/skills/git-worktree/SKILL.md +1 -1
  121. package/skills/handoff/SKILL.md +1 -1
  122. package/skills/parallel-research/SKILL.md +14 -28
  123. package/skills/priority-todos/SKILL.md +1 -1
  124. package/skills/regress/SKILL.md +11 -0
  125. package/skills/restraint/SKILL.md +72 -0
  126. package/skills/seo-checklist/SKILL.md +2 -2
  127. package/skills/spec/SKILL.md +65 -836
  128. package/skills/test/SKILL.md +3 -3
  129. package/skills/tool-fallback/SKILL.md +2 -2
  130. package/skills/vercel-react-best-practices/SKILL.md +1 -1
  131. package/skills/vibe/SKILL.md +20 -35
  132. package/skills/vibe.analyze/SKILL.md +7 -9
  133. package/skills/vibe.docs/SKILL.md +1 -1
  134. package/skills/vibe.event/SKILL.md +27 -27
  135. package/skills/vibe.figma/SKILL.md +14 -18
  136. package/skills/vibe.harness/SKILL.md +5 -5
  137. package/skills/vibe.reason/SKILL.md +0 -2
  138. package/skills/vibe.review/SKILL.md +45 -49
  139. package/skills/vibe.run/SKILL.md +2 -5
  140. package/skills/vibe.run/references/parallel-agents.md +33 -98
  141. package/skills/vibe.spec/SKILL.md +38 -535
  142. package/skills/vibe.utils/SKILL.md +3 -3
  143. package/skills/vibe.verify/SKILL.md +70 -542
  144. package/skills/video-production/SKILL.md +1 -1
  145. package/vibe/rules/orchestrator-contract.md +5 -4
  146. package/vibe/rules/quality/performance.md +1 -1
  147. package/vibe/templates/claudemd-template.md +1 -1
  148. package/vibe/templates/spec-template.md +35 -185
  149. package/agents/architect-low.md +0 -41
  150. package/agents/architect-medium.md +0 -59
  151. package/agents/compounder.md +0 -265
  152. package/agents/docs/api-documenter.md +0 -99
  153. package/agents/docs/changelog-writer.md +0 -93
  154. package/agents/event/event-comms.md +0 -78
  155. package/agents/event/event-content.md +0 -68
  156. package/agents/event/event-image.md +0 -95
  157. package/agents/event/event-scheduler.md +0 -69
  158. package/agents/event/event-speaker.md +0 -86
  159. package/agents/explorer-low.md +0 -42
  160. package/agents/explorer-medium.md +0 -59
  161. package/agents/explorer.md +0 -48
  162. package/agents/figma/figma-analyst.md +0 -56
  163. package/agents/figma/figma-architect.md +0 -116
  164. package/agents/figma/figma-auditor.md +0 -86
  165. package/agents/figma/figma-builder.md +0 -104
  166. package/agents/implementer-low.md +0 -43
  167. package/agents/implementer-medium.md +0 -52
  168. package/agents/junior-mentor.md +0 -141
  169. package/agents/planning/requirements-analyst.md +0 -84
  170. package/agents/planning/ux-advisor.md +0 -83
  171. package/agents/qa/acceptance-tester.md +0 -86
  172. package/agents/qa/edge-case-finder.md +0 -93
  173. package/agents/qa/qa-coordinator.md +0 -131
  174. package/agents/refactor-cleaner.md +0 -143
  175. package/agents/research/best-practices.md +0 -199
  176. package/agents/research/codebase-patterns.md +0 -157
  177. package/agents/research/framework-docs.md +0 -188
  178. package/agents/research/security-advisory.md +0 -213
  179. package/agents/review/architecture-reviewer.md +0 -107
  180. package/agents/review/complexity-reviewer.md +0 -116
  181. package/agents/review/data-integrity-reviewer.md +0 -88
  182. package/agents/review/git-history-reviewer.md +0 -103
  183. package/agents/review/performance-reviewer.md +0 -86
  184. package/agents/review/python-reviewer.md +0 -150
  185. package/agents/review/rails-reviewer.md +0 -139
  186. package/agents/review/react-reviewer.md +0 -144
  187. package/agents/review/security-reviewer.md +0 -80
  188. package/agents/review/simplicity-reviewer.md +0 -140
  189. package/agents/review/test-coverage-reviewer.md +0 -116
  190. package/agents/review/typescript-reviewer.md +0 -127
  191. package/agents/searcher.md +0 -54
  192. package/agents/simplifier.md +0 -124
  193. package/agents/teams/debug-team.md +0 -74
  194. package/agents/teams/dev-team.md +0 -92
  195. package/agents/teams/docs-team.md +0 -84
  196. package/agents/teams/figma-team.md +0 -89
  197. package/agents/teams/fullstack-team.md +0 -87
  198. package/agents/teams/lite-team.md +0 -73
  199. package/agents/teams/migration-team.md +0 -82
  200. package/agents/teams/refactor-team.md +0 -98
  201. package/agents/teams/research-team.md +0 -90
  202. package/agents/teams/review-debate-team.md +0 -129
  203. package/agents/teams/security-team.md +0 -85
  204. package/agents/ui/ui-a11y-auditor.md +0 -93
  205. package/agents/ui/ui-antipattern-detector.md +0 -102
  206. package/agents/ui/ui-dataviz-advisor.md +0 -69
  207. package/agents/ui/ui-design-system-gen.md +0 -57
  208. package/agents/ui/ui-industry-analyzer.md +0 -49
  209. package/agents/ui/ui-layout-architect.md +0 -65
  210. package/agents/ui/ui-stack-implementer.md +0 -68
  211. package/agents/ui/ux-compliance-reviewer.md +0 -81
  212. package/agents/ui-previewer.md +0 -262
  213. package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
  214. package/hooks/scripts/keyword-detector.js +0 -226
  215. package/skills/characterization-test/SKILL.md +0 -209
  216. package/skills/characterization-test/agents/behavior-capturer.md +0 -50
  217. package/skills/characterization-test/agents/coverage-checker.md +0 -54
  218. package/skills/characterization-test/agents/reporter.md +0 -50
  219. package/skills/characterization-test/agents/test-writer.md +0 -49
  220. package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
  221. package/skills/characterization-test/templates/test-template.ts +0 -101
  222. package/skills/claude-md-guide/SKILL.md +0 -353
  223. package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
  224. package/skills/design-audit/SKILL.md +0 -154
  225. package/skills/design-critique/SKILL.md +0 -140
  226. package/skills/design-distill/SKILL.md +0 -131
  227. package/skills/design-normalize/SKILL.md +0 -135
  228. package/skills/design-polish/SKILL.md +0 -132
  229. package/skills/figma-convert/SKILL.md +0 -236
  230. package/skills/figma-extract/SKILL.md +0 -242
  231. package/skills/interview/SKILL.md +0 -358
  232. package/skills/interview/checklists/api.md +0 -101
  233. package/skills/interview/checklists/feature.md +0 -88
  234. package/skills/interview/checklists/library.md +0 -95
  235. package/skills/interview/checklists/mobile.md +0 -89
  236. package/skills/interview/checklists/webapp.md +0 -97
  237. package/skills/interview/checklists/website.md +0 -99
  238. package/skills/plan/SKILL.md +0 -254
  239. package/skills/rob-pike/SKILL.md +0 -66
  240. package/skills/spec/references/askuser-examples.md +0 -57
  241. package/skills/spec/references/example-session.md +0 -87
  242. package/skills/spec/references/templates.md +0 -194
  243. package/skills/spec-review/SKILL.md +0 -725
  244. package/skills/systematic-debugging/SKILL.md +0 -142
  245. package/skills/techdebt/SKILL.md +0 -126
  246. package/skills/techdebt/agents/analyzer.md +0 -50
  247. package/skills/techdebt/agents/fixer.md +0 -41
  248. package/skills/techdebt/agents/reviewer.md +0 -47
  249. package/skills/techdebt/agents/scanner.md +0 -44
  250. package/skills/techdebt/orchestrator.md +0 -72
  251. package/skills/techdebt/rubrics/severity.md +0 -51
  252. package/skills/techdebt/scripts/scan.js +0 -90
  253. package/skills/techdebt/templates/report.md +0 -86
  254. package/skills/typescript-advanced-types/SKILL.md +0 -68
  255. package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
  256. package/skills/yagni-ladder/SKILL.md +0 -90
  257. /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
  258. /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
  259. /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
  260. /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
  261. /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
  262. /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
  263. /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
  264. /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
  265. /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
  266. /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
  267. /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
 
@@ -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