@su-record/vibe 2.9.3 → 2.9.5

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 (479) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +190 -190
  3. package/LICENSE +21 -21
  4. package/README.ko.md +170 -170
  5. package/README.md +219 -219
  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/teams/debug-team.md +70 -70
  53. package/agents/teams/dev-team.md +88 -88
  54. package/agents/teams/docs-team.md +80 -80
  55. package/agents/teams/figma/figma-analyst.md +52 -52
  56. package/agents/teams/figma/figma-architect.md +112 -112
  57. package/agents/teams/figma/figma-auditor.md +82 -82
  58. package/agents/teams/figma/figma-builder.md +100 -100
  59. package/agents/teams/figma-team.md +85 -85
  60. package/agents/teams/fullstack-team.md +83 -83
  61. package/agents/teams/lite-team.md +69 -69
  62. package/agents/teams/migration-team.md +78 -78
  63. package/agents/teams/refactor-team.md +94 -94
  64. package/agents/teams/research-team.md +86 -86
  65. package/agents/teams/review-debate-team.md +125 -125
  66. package/agents/teams/security-team.md +81 -81
  67. package/agents/tester.md +49 -49
  68. package/agents/ui/ui-a11y-auditor.md +93 -93
  69. package/agents/ui/ui-antipattern-detector.md +102 -102
  70. package/agents/ui/ui-dataviz-advisor.md +69 -69
  71. package/agents/ui/ui-design-system-gen.md +57 -57
  72. package/agents/ui/ui-industry-analyzer.md +49 -49
  73. package/agents/ui/ui-layout-architect.md +65 -65
  74. package/agents/ui/ui-stack-implementer.md +68 -68
  75. package/agents/ui/ux-compliance-reviewer.md +81 -81
  76. package/agents/ui-previewer.md +258 -258
  77. package/commands/vibe.analyze.md +533 -533
  78. package/commands/vibe.docs.md +32 -32
  79. package/commands/vibe.event.md +163 -163
  80. package/commands/vibe.figma.md +584 -584
  81. package/commands/vibe.harness.md +177 -177
  82. package/commands/vibe.review.md +624 -624
  83. package/commands/vibe.run.md +1925 -1925
  84. package/commands/vibe.scaffold.md +195 -195
  85. package/commands/vibe.spec.md +565 -565
  86. package/commands/vibe.trace.md +276 -276
  87. package/commands/vibe.utils.md +413 -413
  88. package/commands/vibe.verify.md +519 -519
  89. package/dist/cli/collaborator.js +52 -52
  90. package/dist/cli/commands/codex-proxy.d.ts +10 -0
  91. package/dist/cli/commands/codex-proxy.d.ts.map +1 -0
  92. package/dist/cli/commands/codex-proxy.js +221 -0
  93. package/dist/cli/commands/codex-proxy.js.map +1 -0
  94. package/dist/cli/commands/config.js +9 -9
  95. package/dist/cli/commands/evolution.js +12 -12
  96. package/dist/cli/commands/figma.js +20 -20
  97. package/dist/cli/commands/index.d.ts +1 -0
  98. package/dist/cli/commands/index.d.ts.map +1 -1
  99. package/dist/cli/commands/index.js +1 -0
  100. package/dist/cli/commands/index.js.map +1 -1
  101. package/dist/cli/commands/info.d.ts.map +1 -1
  102. package/dist/cli/commands/info.js +50 -53
  103. package/dist/cli/commands/info.js.map +1 -1
  104. package/dist/cli/commands/init.js +5 -5
  105. package/dist/cli/commands/remove.js +14 -14
  106. package/dist/cli/commands/sentinel.js +27 -27
  107. package/dist/cli/commands/skills.js +5 -5
  108. package/dist/cli/commands/slack.js +10 -10
  109. package/dist/cli/commands/stats.js +6 -6
  110. package/dist/cli/commands/telegram.js +12 -12
  111. package/dist/cli/detect.js +32 -32
  112. package/dist/cli/index.d.ts.map +1 -1
  113. package/dist/cli/index.js +67 -53
  114. package/dist/cli/index.js.map +1 -1
  115. package/dist/cli/llm/claude-commands.js +16 -16
  116. package/dist/cli/llm/config.js +18 -18
  117. package/dist/cli/llm/gemini-commands.js +16 -16
  118. package/dist/cli/llm/gpt-commands.js +19 -19
  119. package/dist/cli/llm/help.js +21 -21
  120. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  121. package/dist/cli/postinstall/constants.js +17 -13
  122. package/dist/cli/postinstall/constants.js.map +1 -1
  123. package/dist/cli/postinstall/cursor-agents.js +32 -32
  124. package/dist/cli/postinstall/cursor-rules.js +83 -83
  125. package/dist/cli/postinstall/cursor-skills.js +743 -743
  126. package/dist/cli/postinstall/fs-utils.d.ts +6 -0
  127. package/dist/cli/postinstall/fs-utils.d.ts.map +1 -1
  128. package/dist/cli/postinstall/fs-utils.js +15 -0
  129. package/dist/cli/postinstall/fs-utils.js.map +1 -1
  130. package/dist/cli/postinstall/main.d.ts.map +1 -1
  131. package/dist/cli/postinstall/main.js +8 -8
  132. package/dist/cli/postinstall/main.js.map +1 -1
  133. package/dist/cli/setup/Provisioner.js +42 -42
  134. package/dist/cli/types.d.ts +8 -0
  135. package/dist/cli/types.d.ts.map +1 -1
  136. package/dist/infra/lib/DeepInit.js +24 -24
  137. package/dist/infra/lib/IterationTracker.js +11 -11
  138. package/dist/infra/lib/OrchestrateWorkflow.js +1 -1
  139. package/dist/infra/lib/PythonParser.js +108 -108
  140. package/dist/infra/lib/ReviewRace.js +96 -96
  141. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  142. package/dist/infra/lib/SkillQualityGate.js +9 -9
  143. package/dist/infra/lib/SkillRepository.js +159 -159
  144. package/dist/infra/lib/UltraQA.js +99 -99
  145. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  146. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  147. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  148. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  149. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  150. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  151. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  152. package/dist/infra/lib/codex-proxy.d.ts +21 -0
  153. package/dist/infra/lib/codex-proxy.d.ts.map +1 -0
  154. package/dist/infra/lib/codex-proxy.js +510 -0
  155. package/dist/infra/lib/codex-proxy.js.map +1 -0
  156. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  157. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  158. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  159. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  160. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  161. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  162. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  163. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  164. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  165. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  166. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  167. package/dist/infra/lib/gemini/orchestration.js +5 -5
  168. package/dist/infra/lib/gpt/orchestration.js +4 -4
  169. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  170. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  171. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  172. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  173. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  174. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  175. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  176. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  177. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +4 -4
  178. package/dist/infra/orchestrator/AgentManager.js +12 -12
  179. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  180. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  181. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  182. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  183. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  184. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  185. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  186. package/dist/tools/memory/getMemoryGraph.js +12 -12
  187. package/dist/tools/memory/getSessionContext.js +9 -9
  188. package/dist/tools/memory/linkMemories.js +14 -14
  189. package/dist/tools/memory/listMemories.js +4 -4
  190. package/dist/tools/memory/recallMemory.js +4 -4
  191. package/dist/tools/memory/saveMemory.js +4 -4
  192. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  193. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  194. package/dist/tools/semantic/astGrep.test.js +6 -6
  195. package/dist/tools/spec/prdParser.test.js +171 -171
  196. package/dist/tools/spec/specGenerator.js +169 -169
  197. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  198. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  199. package/hooks/gemini-hooks.json +73 -73
  200. package/hooks/hooks.json +174 -174
  201. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  202. package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -286
  203. package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -210
  204. package/hooks/scripts/auto-commit.js +97 -97
  205. package/hooks/scripts/auto-format.js +64 -64
  206. package/hooks/scripts/auto-test.js +81 -81
  207. package/hooks/scripts/code-check.js +268 -268
  208. package/hooks/scripts/codex-detect.js +46 -46
  209. package/hooks/scripts/codex-review-gate.js +80 -80
  210. package/hooks/scripts/command-log.js +32 -32
  211. package/hooks/scripts/context-save.js +353 -353
  212. package/hooks/scripts/evolution-engine.js +91 -91
  213. package/hooks/scripts/figma-extract.js +635 -635
  214. package/hooks/scripts/figma-guard.js +220 -220
  215. package/hooks/scripts/figma-refine.js +315 -315
  216. package/hooks/scripts/figma-to-scss.js +394 -394
  217. package/hooks/scripts/figma-validate.js +353 -353
  218. package/hooks/scripts/hud-status.js +321 -321
  219. package/hooks/scripts/keyword-detector.js +214 -214
  220. package/hooks/scripts/llm-orchestrate.js +572 -572
  221. package/hooks/scripts/post-edit.js +32 -32
  222. package/hooks/scripts/pr-test-gate.js +52 -52
  223. package/hooks/scripts/pre-tool-guard.js +214 -214
  224. package/hooks/scripts/prompt-dispatcher.js +185 -185
  225. package/hooks/scripts/sentinel-guard.js +131 -131
  226. package/hooks/scripts/session-start.js +177 -177
  227. package/hooks/scripts/skill-injector.js +83 -83
  228. package/hooks/scripts/stop-notify.js +209 -209
  229. package/hooks/scripts/utils.js +243 -243
  230. package/languages/csharp-unity.md +515 -515
  231. package/languages/gdscript-godot.md +470 -470
  232. package/languages/ruby-rails.md +489 -489
  233. package/languages/typescript-angular.md +433 -433
  234. package/languages/typescript-astro.md +416 -416
  235. package/languages/typescript-electron.md +406 -406
  236. package/languages/typescript-nestjs.md +524 -524
  237. package/languages/typescript-svelte.md +407 -407
  238. package/languages/typescript-tauri.md +365 -365
  239. package/package.json +101 -101
  240. package/skills/agents-md/SKILL.md +121 -121
  241. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  242. package/skills/agents-md/templates/agents-md.md +36 -36
  243. package/skills/arch-guard/SKILL.md +181 -181
  244. package/skills/arch-guard/agents/detector.md +48 -48
  245. package/skills/arch-guard/agents/reporter.md +48 -48
  246. package/skills/arch-guard/agents/rule-generator.md +49 -49
  247. package/skills/arch-guard/agents/violation-checker.md +51 -51
  248. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  249. package/skills/arch-guard/frameworks/solid.md +102 -102
  250. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  251. package/skills/arch-guard/templates/arch-rules.json +47 -47
  252. package/skills/arch-guard/templates/violation-report.md +53 -53
  253. package/skills/brand-assets/SKILL.md +147 -147
  254. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  255. package/skills/brand-assets/templates/brand-guide.md +161 -161
  256. package/skills/capability-loop/SKILL.md +272 -272
  257. package/skills/capability-loop/agents/capability-designer.md +61 -61
  258. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  259. package/skills/capability-loop/agents/implementer.md +50 -50
  260. package/skills/capability-loop/agents/tester.md +53 -53
  261. package/skills/capability-loop/templates/capability-spec.md +118 -118
  262. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  263. package/skills/characterization-test/SKILL.md +207 -207
  264. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  265. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  266. package/skills/characterization-test/agents/reporter.md +50 -50
  267. package/skills/characterization-test/agents/test-writer.md +49 -49
  268. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  269. package/skills/characterization-test/templates/test-template.ts +101 -101
  270. package/skills/chub-usage/SKILL.md +139 -139
  271. package/skills/claude-md-guide/SKILL.md +351 -351
  272. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  273. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  274. package/skills/commerce-patterns/SKILL.md +64 -64
  275. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  276. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  277. package/skills/commit-push-pr/SKILL.md +77 -77
  278. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  279. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  280. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  281. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  282. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  283. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  284. package/skills/context7-usage/SKILL.md +106 -106
  285. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  286. package/skills/create-prd/SKILL.md +90 -90
  287. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  288. package/skills/create-prd/agents/prioritizer.md +60 -60
  289. package/skills/create-prd/agents/requirements-writer.md +48 -48
  290. package/skills/create-prd/agents/researcher.md +55 -55
  291. package/skills/create-prd/agents/reviewer.md +54 -54
  292. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  293. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  294. package/skills/create-prd/orchestrator.md +70 -70
  295. package/skills/create-prd/rubrics/completeness.md +58 -58
  296. package/skills/create-prd/templates/prd.md +139 -139
  297. package/skills/design-audit/SKILL.md +152 -152
  298. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  299. package/skills/design-audit/agents/performance-auditor.md +46 -46
  300. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  301. package/skills/design-audit/agents/scorer.md +47 -47
  302. package/skills/design-audit/agents/slop-detector.md +47 -47
  303. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  304. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  305. package/skills/design-audit/orchestrator.md +64 -64
  306. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  307. package/skills/design-audit/rubrics/scoring.md +63 -63
  308. package/skills/design-audit/templates/report.md +88 -88
  309. package/skills/design-critique/SKILL.md +139 -139
  310. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  311. package/skills/design-critique/templates/critique-report.md +86 -86
  312. package/skills/design-distill/SKILL.md +130 -130
  313. package/skills/design-distill/templates/design-system.md +132 -132
  314. package/skills/design-normalize/SKILL.md +133 -133
  315. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  316. package/skills/design-normalize/templates/token-audit.md +89 -89
  317. package/skills/design-polish/SKILL.md +131 -131
  318. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  319. package/skills/design-polish/templates/polish-report.md +64 -64
  320. package/skills/design-teach/SKILL.md +182 -182
  321. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  322. package/skills/design-teach/templates/design-context.json +36 -36
  323. package/skills/devlog/SKILL.md +143 -143
  324. package/skills/e2e-commerce/SKILL.md +62 -62
  325. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  326. package/skills/event-comms/SKILL.md +172 -172
  327. package/skills/event-comms/templates/email-invite.md +99 -99
  328. package/skills/event-comms/templates/sns-post.md +133 -133
  329. package/skills/event-ops/SKILL.md +207 -207
  330. package/skills/event-ops/rubrics/contingency.md +85 -85
  331. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  332. package/skills/event-planning/SKILL.md +144 -144
  333. package/skills/event-planning/rubrics/timeline.md +70 -70
  334. package/skills/event-planning/templates/event-plan.md +91 -91
  335. package/skills/exec-plan/SKILL.md +149 -149
  336. package/skills/exec-plan/agents/decomposer.md +47 -47
  337. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  338. package/skills/exec-plan/agents/estimator.md +43 -43
  339. package/skills/exec-plan/agents/validator.md +55 -55
  340. package/skills/exec-plan/orchestrator.md +70 -70
  341. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  342. package/skills/exec-plan/templates/plan.md +147 -147
  343. package/skills/git-worktree/SKILL.md +73 -73
  344. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  345. package/skills/handoff/SKILL.md +110 -110
  346. package/skills/handoff/agents/context-summarizer.md +51 -51
  347. package/skills/handoff/agents/document-writer.md +63 -63
  348. package/skills/handoff/agents/state-collector.md +53 -53
  349. package/skills/handoff/agents/verifier.md +48 -48
  350. package/skills/handoff/rubrics/completeness.md +62 -62
  351. package/skills/handoff/templates/handoff.md +107 -107
  352. package/skills/parallel-research/SKILL.md +89 -89
  353. package/skills/parallel-research/agents/best-practices.md +43 -43
  354. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  355. package/skills/parallel-research/agents/framework-docs.md +45 -45
  356. package/skills/parallel-research/agents/security-advisory.md +46 -46
  357. package/skills/parallel-research/agents/synthesizer.md +52 -52
  358. package/skills/parallel-research/experts/best-practices.md +50 -50
  359. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  360. package/skills/parallel-research/experts/framework-docs.md +65 -65
  361. package/skills/parallel-research/experts/security-advisory.md +69 -69
  362. package/skills/parallel-research/orchestrator.md +65 -65
  363. package/skills/parallel-research/templates/synthesis.md +101 -101
  364. package/skills/prioritization-frameworks/SKILL.md +87 -87
  365. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  366. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  367. package/skills/priority-todos/SKILL.md +64 -64
  368. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  369. package/skills/priority-todos/templates/todo-board.md +59 -59
  370. package/skills/seo-checklist/SKILL.md +58 -58
  371. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  372. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  373. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  374. package/skills/techdebt/SKILL.md +124 -124
  375. package/skills/techdebt/agents/analyzer.md +50 -50
  376. package/skills/techdebt/agents/fixer.md +41 -41
  377. package/skills/techdebt/agents/reviewer.md +47 -47
  378. package/skills/techdebt/agents/scanner.md +44 -44
  379. package/skills/techdebt/orchestrator.md +70 -70
  380. package/skills/techdebt/rubrics/severity.md +51 -51
  381. package/skills/techdebt/scripts/scan.js +90 -90
  382. package/skills/techdebt/templates/report.md +86 -86
  383. package/skills/tool-fallback/SKILL.md +104 -104
  384. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  385. package/skills/typescript-advanced-types/SKILL.md +67 -67
  386. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  387. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  388. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  389. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  390. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  391. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  392. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  393. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  394. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  395. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  396. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  397. package/skills/user-personas/SKILL.md +75 -75
  398. package/skills/user-personas/rubrics/research-methods.md +56 -56
  399. package/skills/user-personas/templates/persona.md +89 -89
  400. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  401. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  402. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  403. package/skills/{vibe.docs → vibe-docs}/SKILL.md +171 -171
  404. package/skills/{vibe.docs → vibe-docs}/templates/architecture.md +80 -80
  405. package/skills/{vibe.docs → vibe-docs}/templates/readme.md +84 -84
  406. package/skills/{vibe.docs → vibe-docs}/templates/release-notes.md +74 -74
  407. package/skills/{vibe.figma → vibe-figma}/SKILL.md +363 -363
  408. package/skills/{vibe.figma → vibe-figma}/rubrics/extraction-checklist.md +51 -51
  409. package/skills/{vibe.figma → vibe-figma}/templates/component-index.md +126 -126
  410. package/skills/{vibe.figma → vibe-figma}/templates/component-spec.md +168 -168
  411. package/skills/{vibe.figma → vibe-figma}/templates/figma-handoff.md +100 -100
  412. package/skills/{vibe.figma → vibe-figma}/templates/remapped-tree.md +277 -277
  413. package/skills/{vibe.figma.convert → vibe-figma-convert}/SKILL.md +235 -235
  414. package/skills/{vibe.figma.convert → vibe-figma-convert}/rubrics/conversion-rules.md +141 -141
  415. package/skills/{vibe.figma.convert → vibe-figma-convert}/templates/component.md +140 -140
  416. package/skills/{vibe.figma.extract → vibe-figma-extract}/SKILL.md +219 -219
  417. package/skills/{vibe.figma.extract → vibe-figma-extract}/rubrics/image-rules.md +157 -157
  418. package/skills/{vibe.interview → vibe-interview}/SKILL.md +358 -358
  419. package/skills/{vibe.interview → vibe-interview}/checklists/api.md +101 -101
  420. package/skills/{vibe.interview → vibe-interview}/checklists/feature.md +88 -88
  421. package/skills/{vibe.interview → vibe-interview}/checklists/library.md +95 -95
  422. package/skills/{vibe.interview → vibe-interview}/checklists/mobile.md +89 -89
  423. package/skills/{vibe.interview → vibe-interview}/checklists/webapp.md +97 -97
  424. package/skills/{vibe.interview → vibe-interview}/checklists/website.md +99 -99
  425. package/skills/{vibe.plan → vibe-plan}/SKILL.md +254 -216
  426. package/skills/{vibe.spec → vibe-spec}/SKILL.md +1155 -1155
  427. package/skills/{vibe.spec.review → vibe-spec-review}/SKILL.md +726 -726
  428. package/skills/video-production/SKILL.md +52 -52
  429. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  430. package/skills/video-production/templates/production-plan.md +104 -104
  431. package/vibe/config.json +29 -29
  432. package/vibe/constitution.md +227 -227
  433. package/vibe/rules/principles/communication-guide.md +98 -98
  434. package/vibe/rules/principles/development-philosophy.md +52 -52
  435. package/vibe/rules/principles/quick-start.md +102 -102
  436. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  437. package/vibe/rules/quality/checklist.md +276 -276
  438. package/vibe/rules/quality/performance.md +236 -236
  439. package/vibe/rules/quality/testing-strategy.md +440 -440
  440. package/vibe/rules/standards/anti-patterns.md +541 -541
  441. package/vibe/rules/standards/code-structure.md +291 -291
  442. package/vibe/rules/standards/complexity-metrics.md +313 -313
  443. package/vibe/rules/standards/git-workflow.md +237 -237
  444. package/vibe/rules/standards/naming-conventions.md +198 -198
  445. package/vibe/rules/standards/security.md +305 -305
  446. package/vibe/rules/writing/document-style.md +74 -74
  447. package/vibe/setup.sh +31 -31
  448. package/vibe/templates/claudemd-template.md +74 -74
  449. package/vibe/templates/constitution-template.md +267 -267
  450. package/vibe/templates/contract-backend-template.md +526 -526
  451. package/vibe/templates/contract-frontend-template.md +599 -599
  452. package/vibe/templates/feature-template.md +96 -96
  453. package/vibe/templates/plan-template.md +194 -194
  454. package/vibe/templates/spec-template.md +221 -221
  455. package/vibe/ui-ux-data/charts.csv +26 -26
  456. package/vibe/ui-ux-data/colors.csv +97 -97
  457. package/vibe/ui-ux-data/icons.csv +101 -101
  458. package/vibe/ui-ux-data/landing.csv +31 -31
  459. package/vibe/ui-ux-data/products.csv +96 -96
  460. package/vibe/ui-ux-data/react-performance.csv +45 -45
  461. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  462. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  463. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  464. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  465. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  466. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  467. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  468. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  469. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  470. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  471. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  472. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  473. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  474. package/vibe/ui-ux-data/styles.csv +68 -68
  475. package/vibe/ui-ux-data/typography.csv +57 -57
  476. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  477. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  478. package/vibe/ui-ux-data/version.json +31 -31
  479. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -16,18 +16,18 @@ export class SkillBenchmark {
16
16
  this.initializeTables();
17
17
  }
18
18
  initializeTables() {
19
- this.db.exec(`
20
- CREATE TABLE IF NOT EXISTS skill_benchmarks (
21
- id TEXT PRIMARY KEY,
22
- skillName TEXT NOT NULL,
23
- iteration INTEGER NOT NULL,
24
- summary TEXT NOT NULL,
25
- evalBreakdowns TEXT NOT NULL,
26
- createdAt TEXT NOT NULL
27
- );
28
-
29
- CREATE INDEX IF NOT EXISTS idx_sb_skill ON skill_benchmarks(skillName);
30
- CREATE INDEX IF NOT EXISTS idx_sb_iter ON skill_benchmarks(skillName, iteration);
19
+ this.db.exec(`
20
+ CREATE TABLE IF NOT EXISTS skill_benchmarks (
21
+ id TEXT PRIMARY KEY,
22
+ skillName TEXT NOT NULL,
23
+ iteration INTEGER NOT NULL,
24
+ summary TEXT NOT NULL,
25
+ evalBreakdowns TEXT NOT NULL,
26
+ createdAt TEXT NOT NULL
27
+ );
28
+
29
+ CREATE INDEX IF NOT EXISTS idx_sb_skill ON skill_benchmarks(skillName);
30
+ CREATE INDEX IF NOT EXISTS idx_sb_iter ON skill_benchmarks(skillName, iteration);
31
31
  `);
32
32
  }
33
33
  /**
@@ -74,9 +74,9 @@ export class SkillBenchmark {
74
74
  };
75
75
  const id = `bench-${Date.now().toString(36)}-${randomUUID().replace(/-/g, '').slice(0, 8)}`;
76
76
  const now = new Date().toISOString();
77
- this.db.prepare(`
78
- INSERT INTO skill_benchmarks (id, skillName, iteration, summary, evalBreakdowns, createdAt)
79
- VALUES (?, ?, ?, ?, ?, ?)
77
+ this.db.prepare(`
78
+ INSERT INTO skill_benchmarks (id, skillName, iteration, summary, evalBreakdowns, createdAt)
79
+ VALUES (?, ?, ?, ?, ?, ?)
80
80
  `).run(id, skillName, iteration, JSON.stringify(summary), JSON.stringify(breakdowns), now);
81
81
  return { id, skillName, iteration, timestamp: now, summary, evalBreakdowns: breakdowns };
82
82
  }
@@ -84,8 +84,8 @@ export class SkillBenchmark {
84
84
  * Get benchmark history for a skill
85
85
  */
86
86
  getHistory(skillName) {
87
- const rows = this.db.prepare(`
88
- SELECT * FROM skill_benchmarks WHERE skillName = ? ORDER BY iteration ASC
87
+ const rows = this.db.prepare(`
88
+ SELECT * FROM skill_benchmarks WHERE skillName = ? ORDER BY iteration ASC
89
89
  `).all(skillName);
90
90
  return rows.map(this.rowToBenchmark);
91
91
  }
@@ -93,8 +93,8 @@ export class SkillBenchmark {
93
93
  * Get the latest benchmark for a skill
94
94
  */
95
95
  getLatest(skillName) {
96
- const row = this.db.prepare(`
97
- SELECT * FROM skill_benchmarks WHERE skillName = ? ORDER BY iteration DESC LIMIT 1
96
+ const row = this.db.prepare(`
97
+ SELECT * FROM skill_benchmarks WHERE skillName = ? ORDER BY iteration DESC LIMIT 1
98
98
  `).get(skillName);
99
99
  return row ? this.rowToBenchmark(row) : null;
100
100
  }
@@ -158,14 +158,14 @@ export class SkillBenchmark {
158
158
  return lines.join('\n');
159
159
  }
160
160
  getBenchmarkByIteration(skillName, iteration) {
161
- const row = this.db.prepare(`
162
- SELECT * FROM skill_benchmarks WHERE skillName = ? AND iteration = ?
161
+ const row = this.db.prepare(`
162
+ SELECT * FROM skill_benchmarks WHERE skillName = ? AND iteration = ?
163
163
  `).get(skillName, iteration);
164
164
  return row ? this.rowToBenchmark(row) : null;
165
165
  }
166
166
  getNextIteration(skillName) {
167
- const row = this.db.prepare(`
168
- SELECT MAX(iteration) as maxIter FROM skill_benchmarks WHERE skillName = ?
167
+ const row = this.db.prepare(`
168
+ SELECT MAX(iteration) as maxIter FROM skill_benchmarks WHERE skillName = ?
169
169
  `).get(skillName);
170
170
  return (row.maxIter ?? 0) + 1;
171
171
  }
@@ -14,36 +14,36 @@ export class SkillEvalRunner {
14
14
  this.initializeTables();
15
15
  }
16
16
  initializeTables() {
17
- this.db.exec(`
18
- CREATE TABLE IF NOT EXISTS skill_eval_cases (
19
- id TEXT PRIMARY KEY,
20
- skillName TEXT NOT NULL,
21
- prompt TEXT NOT NULL,
22
- expectedOutput TEXT NOT NULL,
23
- files TEXT DEFAULT '[]',
24
- assertions TEXT DEFAULT '[]',
25
- createdAt TEXT NOT NULL,
26
- updatedAt TEXT NOT NULL
27
- );
28
-
29
- CREATE INDEX IF NOT EXISTS idx_sec_skill ON skill_eval_cases(skillName);
30
-
31
- CREATE TABLE IF NOT EXISTS skill_eval_runs (
32
- id TEXT PRIMARY KEY,
33
- evalId TEXT NOT NULL,
34
- skillName TEXT NOT NULL,
35
- variant TEXT NOT NULL CHECK(variant IN ('with_skill','baseline')),
36
- status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','running','passed','failed','error')),
37
- output TEXT DEFAULT '',
38
- grades TEXT DEFAULT '[]',
39
- durationMs INTEGER DEFAULT 0,
40
- tokenCount INTEGER DEFAULT 0,
41
- createdAt TEXT NOT NULL
42
- );
43
-
44
- CREATE INDEX IF NOT EXISTS idx_ser_eval ON skill_eval_runs(evalId);
45
- CREATE INDEX IF NOT EXISTS idx_ser_skill ON skill_eval_runs(skillName);
46
- CREATE INDEX IF NOT EXISTS idx_ser_variant ON skill_eval_runs(variant);
17
+ this.db.exec(`
18
+ CREATE TABLE IF NOT EXISTS skill_eval_cases (
19
+ id TEXT PRIMARY KEY,
20
+ skillName TEXT NOT NULL,
21
+ prompt TEXT NOT NULL,
22
+ expectedOutput TEXT NOT NULL,
23
+ files TEXT DEFAULT '[]',
24
+ assertions TEXT DEFAULT '[]',
25
+ createdAt TEXT NOT NULL,
26
+ updatedAt TEXT NOT NULL
27
+ );
28
+
29
+ CREATE INDEX IF NOT EXISTS idx_sec_skill ON skill_eval_cases(skillName);
30
+
31
+ CREATE TABLE IF NOT EXISTS skill_eval_runs (
32
+ id TEXT PRIMARY KEY,
33
+ evalId TEXT NOT NULL,
34
+ skillName TEXT NOT NULL,
35
+ variant TEXT NOT NULL CHECK(variant IN ('with_skill','baseline')),
36
+ status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','running','passed','failed','error')),
37
+ output TEXT DEFAULT '',
38
+ grades TEXT DEFAULT '[]',
39
+ durationMs INTEGER DEFAULT 0,
40
+ tokenCount INTEGER DEFAULT 0,
41
+ createdAt TEXT NOT NULL
42
+ );
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_ser_eval ON skill_eval_runs(evalId);
45
+ CREATE INDEX IF NOT EXISTS idx_ser_skill ON skill_eval_runs(skillName);
46
+ CREATE INDEX IF NOT EXISTS idx_ser_variant ON skill_eval_runs(variant);
47
47
  `);
48
48
  }
49
49
  /**
@@ -52,9 +52,9 @@ export class SkillEvalRunner {
52
52
  createEvalSet(input) {
53
53
  const cases = [];
54
54
  const now = new Date().toISOString();
55
- const insertStmt = this.db.prepare(`
56
- INSERT INTO skill_eval_cases (id, skillName, prompt, expectedOutput, files, assertions, createdAt, updatedAt)
57
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
55
+ const insertStmt = this.db.prepare(`
56
+ INSERT INTO skill_eval_cases (id, skillName, prompt, expectedOutput, files, assertions, createdAt, updatedAt)
57
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
58
58
  `);
59
59
  const insertMany = this.db.transaction((evals) => {
60
60
  for (const evalCase of evals) {
@@ -83,8 +83,8 @@ export class SkillEvalRunner {
83
83
  * Get all eval cases for a skill
84
84
  */
85
85
  getEvalCases(skillName) {
86
- const rows = this.db.prepare(`
87
- SELECT * FROM skill_eval_cases WHERE skillName = ? ORDER BY createdAt ASC
86
+ const rows = this.db.prepare(`
87
+ SELECT * FROM skill_eval_cases WHERE skillName = ? ORDER BY createdAt ASC
88
88
  `).all(skillName);
89
89
  return rows.map(this.rowToEvalCase);
90
90
  }
@@ -92,8 +92,8 @@ export class SkillEvalRunner {
92
92
  * Get a single eval case by ID
93
93
  */
94
94
  getEvalCase(evalId) {
95
- const row = this.db.prepare(`
96
- SELECT * FROM skill_eval_cases WHERE id = ?
95
+ const row = this.db.prepare(`
96
+ SELECT * FROM skill_eval_cases WHERE id = ?
97
97
  `).get(evalId);
98
98
  return row ? this.rowToEvalCase(row) : null;
99
99
  }
@@ -103,9 +103,9 @@ export class SkillEvalRunner {
103
103
  startRun(evalId, skillName, variant) {
104
104
  const id = `run-${Date.now().toString(36)}-${randomUUID().replace(/-/g, '').slice(0, 8)}`;
105
105
  const now = new Date().toISOString();
106
- this.db.prepare(`
107
- INSERT INTO skill_eval_runs (id, evalId, skillName, variant, status, createdAt)
108
- VALUES (?, ?, ?, ?, 'running', ?)
106
+ this.db.prepare(`
107
+ INSERT INTO skill_eval_runs (id, evalId, skillName, variant, status, createdAt)
108
+ VALUES (?, ?, ?, ?, 'running', ?)
109
109
  `).run(id, evalId, skillName, variant, now);
110
110
  return id;
111
111
  }
@@ -115,18 +115,18 @@ export class SkillEvalRunner {
115
115
  completeRun(runId, output, grades, durationMs, tokenCount) {
116
116
  const allPassed = grades.length === 0 || grades.every(g => g.passed);
117
117
  const status = allPassed ? 'passed' : 'failed';
118
- this.db.prepare(`
119
- UPDATE skill_eval_runs
120
- SET status = ?, output = ?, grades = ?, durationMs = ?, tokenCount = ?
121
- WHERE id = ?
118
+ this.db.prepare(`
119
+ UPDATE skill_eval_runs
120
+ SET status = ?, output = ?, grades = ?, durationMs = ?, tokenCount = ?
121
+ WHERE id = ?
122
122
  `).run(status, output, JSON.stringify(grades), durationMs, tokenCount, runId);
123
123
  }
124
124
  /**
125
125
  * Mark a run as errored
126
126
  */
127
127
  failRun(runId, errorMessage) {
128
- this.db.prepare(`
129
- UPDATE skill_eval_runs SET status = 'error', output = ? WHERE id = ?
128
+ this.db.prepare(`
129
+ UPDATE skill_eval_runs SET status = 'error', output = ? WHERE id = ?
130
130
  `).run(errorMessage, runId);
131
131
  }
132
132
  /**
@@ -181,8 +181,8 @@ export class SkillEvalRunner {
181
181
  * Get all runs for an eval case
182
182
  */
183
183
  getRunsForEval(evalId) {
184
- const rows = this.db.prepare(`
185
- SELECT * FROM skill_eval_runs WHERE evalId = ? ORDER BY createdAt DESC
184
+ const rows = this.db.prepare(`
185
+ SELECT * FROM skill_eval_runs WHERE evalId = ? ORDER BY createdAt DESC
186
186
  `).all(evalId);
187
187
  return rows.map(this.rowToRunResult);
188
188
  }
@@ -190,8 +190,8 @@ export class SkillEvalRunner {
190
190
  * Get all runs for a skill
191
191
  */
192
192
  getRunsForSkill(skillName) {
193
- const rows = this.db.prepare(`
194
- SELECT * FROM skill_eval_runs WHERE skillName = ? ORDER BY createdAt DESC
193
+ const rows = this.db.prepare(`
194
+ SELECT * FROM skill_eval_runs WHERE skillName = ? ORDER BY createdAt DESC
195
195
  `).all(skillName);
196
196
  return rows.map(this.rowToRunResult);
197
197
  }
@@ -17,9 +17,9 @@ export class SkillGapDetector {
17
17
  const truncated = prompt.slice(0, 200);
18
18
  const normalized = truncated.toLowerCase().replace(/\s+/g, ' ').trim();
19
19
  try {
20
- this.db.prepare(`
21
- INSERT INTO skill_gaps (id, prompt, normalizedPrompt, sessionId, createdAt)
22
- VALUES (?, ?, ?, ?, ?)
20
+ this.db.prepare(`
21
+ INSERT INTO skill_gaps (id, prompt, normalizedPrompt, sessionId, createdAt)
22
+ VALUES (?, ?, ?, ?, ?)
23
23
  `).run(id, truncated, normalized, sessionId || null, new Date().toISOString());
24
24
  }
25
25
  catch {
@@ -33,13 +33,13 @@ export class SkillGapDetector {
33
33
  const result = { newGaps: [], totalClusters: 0 };
34
34
  try {
35
35
  // Cluster by normalizedPrompt
36
- const clusters = this.db.prepare(`
37
- SELECT normalizedPrompt, COUNT(*) as count, GROUP_CONCAT(prompt, '|||') as prompts
38
- FROM skill_gaps
39
- GROUP BY normalizedPrompt
40
- HAVING count >= 3
41
- ORDER BY count DESC
42
- LIMIT ?
36
+ const clusters = this.db.prepare(`
37
+ SELECT normalizedPrompt, COUNT(*) as count, GROUP_CONCAT(prompt, '|||') as prompts
38
+ FROM skill_gaps
39
+ GROUP BY normalizedPrompt
40
+ HAVING count >= 3
41
+ ORDER BY count DESC
42
+ LIMIT ?
43
43
  `).all(limit);
44
44
  result.totalClusters = clusters.length;
45
45
  for (const cluster of clusters) {
@@ -11,20 +11,20 @@ export class UsageTracker {
11
11
  this.initializeTables();
12
12
  }
13
13
  initializeTables() {
14
- this.db.exec(`
15
- CREATE TABLE IF NOT EXISTS usage_events (
16
- id TEXT PRIMARY KEY,
17
- generationId TEXT NOT NULL,
18
- sessionId TEXT,
19
- matchedPrompt TEXT,
20
- feedback TEXT CHECK(feedback IN ('positive','negative','neutral') OR feedback IS NULL),
21
- createdAt TEXT NOT NULL
22
- );
23
-
24
- CREATE INDEX IF NOT EXISTS idx_ue_gen ON usage_events(generationId);
25
- CREATE INDEX IF NOT EXISTS idx_ue_session ON usage_events(sessionId);
26
- CREATE INDEX IF NOT EXISTS idx_ue_feedback ON usage_events(feedback);
27
- CREATE INDEX IF NOT EXISTS idx_ue_created ON usage_events(createdAt);
14
+ this.db.exec(`
15
+ CREATE TABLE IF NOT EXISTS usage_events (
16
+ id TEXT PRIMARY KEY,
17
+ generationId TEXT NOT NULL,
18
+ sessionId TEXT,
19
+ matchedPrompt TEXT,
20
+ feedback TEXT CHECK(feedback IN ('positive','negative','neutral') OR feedback IS NULL),
21
+ createdAt TEXT NOT NULL
22
+ );
23
+
24
+ CREATE INDEX IF NOT EXISTS idx_ue_gen ON usage_events(generationId);
25
+ CREATE INDEX IF NOT EXISTS idx_ue_session ON usage_events(sessionId);
26
+ CREATE INDEX IF NOT EXISTS idx_ue_feedback ON usage_events(feedback);
27
+ CREATE INDEX IF NOT EXISTS idx_ue_created ON usage_events(createdAt);
28
28
  `);
29
29
  }
30
30
  /**
@@ -33,9 +33,9 @@ export class UsageTracker {
33
33
  recordUsage(generationId, sessionId, matchedPrompt) {
34
34
  const id = `ue-${Date.now().toString(36)}-${randomUUID().replace(/-/g, '').slice(0, 8)}`;
35
35
  const now = new Date().toISOString();
36
- this.db.prepare(`
37
- INSERT INTO usage_events (id, generationId, sessionId, matchedPrompt, createdAt)
38
- VALUES (?, ?, ?, ?, ?)
36
+ this.db.prepare(`
37
+ INSERT INTO usage_events (id, generationId, sessionId, matchedPrompt, createdAt)
38
+ VALUES (?, ?, ?, ?, ?)
39
39
  `).run(id, generationId, sessionId || null, matchedPrompt || null, now);
40
40
  // Also increment usage count in generations table
41
41
  this.registry.incrementUsage(generationId);
@@ -45,8 +45,8 @@ export class UsageTracker {
45
45
  * Record explicit user feedback for a usage event
46
46
  */
47
47
  setFeedback(eventId, feedback) {
48
- const result = this.db.prepare(`
49
- UPDATE usage_events SET feedback = ? WHERE id = ?
48
+ const result = this.db.prepare(`
49
+ UPDATE usage_events SET feedback = ? WHERE id = ?
50
50
  `).run(feedback, eventId);
51
51
  return result.changes > 0;
52
52
  }
@@ -54,8 +54,8 @@ export class UsageTracker {
54
54
  * Record explicit feedback for a generation (latest event)
55
55
  */
56
56
  setFeedbackForGeneration(generationId, feedback) {
57
- const event = this.db.prepare(`
58
- SELECT id FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC LIMIT 1
57
+ const event = this.db.prepare(`
58
+ SELECT id FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC LIMIT 1
59
59
  `).get(generationId);
60
60
  if (!event)
61
61
  return false;
@@ -76,9 +76,9 @@ export class UsageTracker {
76
76
  feedback = 'neutral';
77
77
  }
78
78
  // Only apply to events without explicit feedback
79
- const result = this.db.prepare(`
80
- UPDATE usage_events SET feedback = ?
81
- WHERE sessionId = ? AND feedback IS NULL
79
+ const result = this.db.prepare(`
80
+ UPDATE usage_events SET feedback = ?
81
+ WHERE sessionId = ? AND feedback IS NULL
82
82
  `).run(feedback, sessionId);
83
83
  return result.changes;
84
84
  }
@@ -86,8 +86,8 @@ export class UsageTracker {
86
86
  * Get usage events for a generation
87
87
  */
88
88
  getByGeneration(generationId) {
89
- const rows = this.db.prepare(`
90
- SELECT * FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC
89
+ const rows = this.db.prepare(`
90
+ SELECT * FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC
91
91
  `).all(generationId);
92
92
  return rows.map(this.rowToEvent);
93
93
  }
@@ -138,8 +138,8 @@ export class UsageTracker {
138
138
  * Get total usage count for a generation
139
139
  */
140
140
  getUsageCount(generationId) {
141
- const result = this.db.prepare(`
142
- SELECT COUNT(*) as cnt FROM usage_events WHERE generationId = ?
141
+ const result = this.db.prepare(`
142
+ SELECT COUNT(*) as cnt FROM usage_events WHERE generationId = ?
143
143
  `).get(generationId);
144
144
  return result.cnt;
145
145
  }
@@ -28,35 +28,35 @@ export async function coreGeminiOrchestrate(prompt, systemPrompt, options = {})
28
28
  * Core Spec 파싱 (Core Spec → 실행 계획)
29
29
  */
30
30
  export async function coreGeminiParseSpec(spec) {
31
- return coreGeminiOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
31
+ return coreGeminiOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
32
32
  Output format: { "phases": [...], "files": [...], "dependencies": [...] }`);
33
33
  }
34
34
  /**
35
35
  * Core 실행 계획 수립 (Task → Steps)
36
36
  */
37
37
  export async function coreGeminiPlanExecution(task, context) {
38
- return coreGeminiOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
38
+ return coreGeminiOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
39
39
  Output format: { "steps": [{ "id": 1, "action": "...", "target": "...", "expected": "..." }], "estimatedComplexity": "low|medium|high" }`);
40
40
  }
41
41
  /**
42
42
  * Core 코드 분석 (빠른 구조 분석)
43
43
  */
44
44
  export async function coreGeminiAnalyze(code, question) {
45
- return coreGeminiOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
45
+ return coreGeminiOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
46
46
  Output format: { "answer": "...", "confidence": 0.0-1.0, "relatedSymbols": [...] }`);
47
47
  }
48
48
  /**
49
49
  * Core 다음 액션 결정 (상태 기반)
50
50
  */
51
51
  export async function coreGeminiDecideNextAction(currentState, availableActions, goal) {
52
- return coreGeminiOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
52
+ return coreGeminiOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
53
53
  Output format: { "selectedAction": "...", "reason": "...", "parameters": {} }`);
54
54
  }
55
55
  /**
56
56
  * Core UI/UX 분석 (검색 없이 내부 지식으로)
57
57
  */
58
58
  export async function coreGeminiAnalyzeUX(description) {
59
- return coreGeminiOrchestrate(description, `You are a UI/UX expert. Analyze the given design description and provide structured feedback.
59
+ return coreGeminiOrchestrate(description, `You are a UI/UX expert. Analyze the given design description and provide structured feedback.
60
60
  Output format: { "issues": [...], "suggestions": [...], "accessibility": { "score": 0-100, "concerns": [...] } }`, { jsonMode: true });
61
61
  }
62
62
  //# sourceMappingURL=orchestration.js.map
@@ -25,28 +25,28 @@ export async function coreGptOrchestrate(prompt, systemPrompt, options = {}) {
25
25
  * Core Spec 파싱 (Core Spec → 실행 계획)
26
26
  */
27
27
  export async function coreGptParseSpec(spec) {
28
- return coreGptOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
28
+ return coreGptOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
29
29
  Output format: { "phases": [...], "files": [...], "dependencies": [...] }`);
30
30
  }
31
31
  /**
32
32
  * Core 실행 계획 수립 (Task → Steps)
33
33
  */
34
34
  export async function coreGptPlanExecution(task, context) {
35
- return coreGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
35
+ return coreGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
36
36
  Output format: { "steps": [{ "id": 1, "action": "...", "target": "...", "expected": "..." }], "estimatedComplexity": "low|medium|high" }`);
37
37
  }
38
38
  /**
39
39
  * Core 코드 분석 (빠른 구조 분석)
40
40
  */
41
41
  export async function coreGptAnalyze(code, question) {
42
- return coreGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
42
+ return coreGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
43
43
  Output format: { "answer": "...", "confidence": 0.0-1.0, "relatedSymbols": [...] }`);
44
44
  }
45
45
  /**
46
46
  * Core 다음 액션 결정 (상태 기반)
47
47
  */
48
48
  export async function coreGptDecideNextAction(currentState, availableActions, goal) {
49
- return coreGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
49
+ return coreGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
50
50
  Output format: { "selectedAction": "...", "reason": "...", "parameters": {} }`);
51
51
  }
52
52
  //# sourceMappingURL=orchestration.js.map
@@ -14,10 +14,10 @@ export class KnowledgeGraph {
14
14
  const timestamp = new Date().toISOString();
15
15
  const metadataJson = metadata ? JSON.stringify(metadata) : null;
16
16
  try {
17
- const stmt = this.db.prepare(`
18
- INSERT OR REPLACE INTO memory_relations
19
- (sourceKey, targetKey, relationType, strength, metadata, timestamp)
20
- VALUES (?, ?, ?, ?, ?, ?)
17
+ const stmt = this.db.prepare(`
18
+ INSERT OR REPLACE INTO memory_relations
19
+ (sourceKey, targetKey, relationType, strength, metadata, timestamp)
20
+ VALUES (?, ?, ?, ?, ?, ?)
21
21
  `);
22
22
  stmt.run(sourceKey, targetKey, relationType, strength, metadataJson, timestamp);
23
23
  return true;
@@ -62,22 +62,22 @@ export class MemorySearch {
62
62
  return this.searchKeywordLike(query, limit, category);
63
63
  }
64
64
  if (category) {
65
- const stmt = this.db.prepare(`
66
- SELECT m.*, bm25(memories_fts) as rank
67
- FROM memories_fts fts
68
- JOIN memories m ON m.rowid = fts.rowid
69
- WHERE memories_fts MATCH ? AND m.category = ?
70
- ORDER BY rank
71
- LIMIT ?
65
+ const stmt = this.db.prepare(`
66
+ SELECT m.*, bm25(memories_fts) as rank
67
+ FROM memories_fts fts
68
+ JOIN memories m ON m.rowid = fts.rowid
69
+ WHERE memories_fts MATCH ? AND m.category = ?
70
+ ORDER BY rank
71
+ LIMIT ?
72
72
  `);
73
73
  return stmt.all(MemoryStorage.sanitizeFTS5Query(query), category, limit);
74
74
  }
75
75
  return this.storage.searchFTS(query, limit);
76
76
  }
77
77
  searchKeywordLike(query, limit, category) {
78
- let sql = `
79
- SELECT * FROM memories
80
- WHERE (key LIKE ? OR value LIKE ?)
78
+ let sql = `
79
+ SELECT * FROM memories
80
+ WHERE (key LIKE ? OR value LIKE ?)
81
81
  `;
82
82
  const params = [`%${query}%`, `%${query}%`];
83
83
  if (category) {
@@ -89,20 +89,20 @@ export class MemorySearch {
89
89
  return this.db.prepare(sql).all(...params);
90
90
  }
91
91
  searchTemporal(query, limit) {
92
- const sql = `
93
- SELECT * FROM memories
94
- WHERE key LIKE ? OR value LIKE ?
95
- ORDER BY timestamp DESC
96
- LIMIT ?
92
+ const sql = `
93
+ SELECT * FROM memories
94
+ WHERE key LIKE ? OR value LIKE ?
95
+ ORDER BY timestamp DESC
96
+ LIMIT ?
97
97
  `;
98
98
  return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
99
99
  }
100
100
  searchByPriority(query, limit) {
101
- const sql = `
102
- SELECT * FROM memories
103
- WHERE key LIKE ? OR value LIKE ?
104
- ORDER BY priority DESC, lastAccessed DESC
105
- LIMIT ?
101
+ const sql = `
102
+ SELECT * FROM memories
103
+ WHERE key LIKE ? OR value LIKE ?
104
+ ORDER BY priority DESC, lastAccessed DESC
105
+ LIMIT ?
106
106
  `;
107
107
  return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
108
108
  }
@@ -113,26 +113,26 @@ export class MemorySearch {
113
113
  let sql;
114
114
  const params = [];
115
115
  if (category) {
116
- sql = `
117
- SELECT m.*,
118
- (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
119
- FROM memories_fts fts
120
- JOIN memories m ON m.rowid = fts.rowid
121
- WHERE memories_fts MATCH ? AND m.category = ?
122
- ORDER BY relevance_score DESC, m.lastAccessed DESC
123
- LIMIT ?
116
+ sql = `
117
+ SELECT m.*,
118
+ (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
119
+ FROM memories_fts fts
120
+ JOIN memories m ON m.rowid = fts.rowid
121
+ WHERE memories_fts MATCH ? AND m.category = ?
122
+ ORDER BY relevance_score DESC, m.lastAccessed DESC
123
+ LIMIT ?
124
124
  `;
125
125
  params.push(MemoryStorage.sanitizeFTS5Query(query), category, limit);
126
126
  }
127
127
  else {
128
- sql = `
129
- SELECT m.*,
130
- (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
131
- FROM memories_fts fts
132
- JOIN memories m ON m.rowid = fts.rowid
133
- WHERE memories_fts MATCH ?
134
- ORDER BY relevance_score DESC, m.lastAccessed DESC
135
- LIMIT ?
128
+ sql = `
129
+ SELECT m.*,
130
+ (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
131
+ FROM memories_fts fts
132
+ JOIN memories m ON m.rowid = fts.rowid
133
+ WHERE memories_fts MATCH ?
134
+ ORDER BY relevance_score DESC, m.lastAccessed DESC
135
+ LIMIT ?
136
136
  `;
137
137
  params.push(MemoryStorage.sanitizeFTS5Query(query), limit);
138
138
  }
@@ -145,13 +145,13 @@ export class MemorySearch {
145
145
  }
146
146
  }
147
147
  // LIKE-based fallback
148
- let sql = `
149
- SELECT *,
150
- (CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
151
- CASE WHEN value LIKE ? THEN 2 ELSE 0 END +
152
- priority * 0.5) as relevance_score
153
- FROM memories
154
- WHERE key LIKE ? OR value LIKE ?
148
+ let sql = `
149
+ SELECT *,
150
+ (CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
151
+ CASE WHEN value LIKE ? THEN 2 ELSE 0 END +
152
+ priority * 0.5) as relevance_score
153
+ FROM memories
154
+ WHERE key LIKE ? OR value LIKE ?
155
155
  `;
156
156
  const params = [`%${query}%`, `%${query}%`, `%${query}%`, `%${query}%`];
157
157
  if (category) {
@@ -247,24 +247,24 @@ export class MemorySearch {
247
247
  let sql;
248
248
  const params = [];
249
249
  if (category) {
250
- sql = `
251
- SELECT m.key, bm25(memories_fts) as rank
252
- FROM memories_fts fts
253
- JOIN memories m ON m.rowid = fts.rowid
254
- WHERE memories_fts MATCH ? AND m.category = ?
255
- ORDER BY rank
256
- LIMIT ?
250
+ sql = `
251
+ SELECT m.key, bm25(memories_fts) as rank
252
+ FROM memories_fts fts
253
+ JOIN memories m ON m.rowid = fts.rowid
254
+ WHERE memories_fts MATCH ? AND m.category = ?
255
+ ORDER BY rank
256
+ LIMIT ?
257
257
  `;
258
258
  params.push(MemoryStorage.sanitizeFTS5Query(query), category, limit);
259
259
  }
260
260
  else {
261
- sql = `
262
- SELECT m.key, bm25(memories_fts) as rank
263
- FROM memories_fts fts
264
- JOIN memories m ON m.rowid = fts.rowid
265
- WHERE memories_fts MATCH ?
266
- ORDER BY rank
267
- LIMIT ?
261
+ sql = `
262
+ SELECT m.key, bm25(memories_fts) as rank
263
+ FROM memories_fts fts
264
+ JOIN memories m ON m.rowid = fts.rowid
265
+ WHERE memories_fts MATCH ?
266
+ ORDER BY rank
267
+ LIMIT ?
268
268
  `;
269
269
  params.push(MemoryStorage.sanitizeFTS5Query(query), limit);
270
270
  }