@jack200714/mafw 4.5.1 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/README.md +5 -2
  2. package/bin/mafw.js +16 -14
  3. package/package.json +1 -7
  4. package/.opencode/mafw/.backup-v61/parametric/base-skill-manifest.yaml +0 -2
  5. package/.opencode/mafw/STATUS.md +0 -6
  6. package/.opencode/mafw/ledger.md +0 -20
  7. package/.opencode/mafw/memory/.harmonic_index.json +0 -28
  8. package/.opencode/mafw/memory/.review_queue.json +0 -1
  9. package/.opencode/mafw/memory/tier3/parametric.json +0 -13
  10. package/.opencode/mafw/memory/tier3/test-goal.json +0 -19
  11. package/.opencode/mafw/memory-index.json +0 -6
  12. package/.opencode/mafw/parametric/base-skill-manifest.yaml +0 -2
  13. package/.opencode/mafw/waves.json +0 -4
  14. package/.opencode/opencode.json +0 -3
  15. package/.opencode/plugins/mafw-plugin.ts +0 -8
  16. package/.opencode/skills/banner-design/SKILL.md +0 -196
  17. package/.opencode/skills/banner-design/references/banner-sizes-and-styles.md +0 -118
  18. package/.opencode/skills/brand/SKILL.md +0 -97
  19. package/.opencode/skills/brand/references/approval-checklist.md +0 -169
  20. package/.opencode/skills/brand/references/asset-organization.md +0 -157
  21. package/.opencode/skills/brand/references/brand-guideline-template.md +0 -140
  22. package/.opencode/skills/brand/references/color-palette-management.md +0 -186
  23. package/.opencode/skills/brand/references/consistency-checklist.md +0 -94
  24. package/.opencode/skills/brand/references/logo-usage-rules.md +0 -185
  25. package/.opencode/skills/brand/references/messaging-framework.md +0 -85
  26. package/.opencode/skills/brand/references/typography-specifications.md +0 -214
  27. package/.opencode/skills/brand/references/update.md +0 -118
  28. package/.opencode/skills/brand/references/visual-identity.md +0 -96
  29. package/.opencode/skills/brand/references/voice-framework.md +0 -88
  30. package/.opencode/skills/brand/scripts/extract-colors.cjs +0 -341
  31. package/.opencode/skills/brand/scripts/inject-brand-context.cjs +0 -349
  32. package/.opencode/skills/brand/scripts/sync-brand-to-tokens.cjs +0 -248
  33. package/.opencode/skills/brand/scripts/tests/test_sync_brand_to_tokens.py +0 -52
  34. package/.opencode/skills/brand/scripts/validate-asset.cjs +0 -387
  35. package/.opencode/skills/brand/templates/brand-guidelines-starter.md +0 -275
  36. package/.opencode/skills/design/SKILL.md +0 -313
  37. package/.opencode/skills/design/data/cip/deliverables.csv +0 -51
  38. package/.opencode/skills/design/data/cip/industries.csv +0 -21
  39. package/.opencode/skills/design/data/cip/mockup-contexts.csv +0 -21
  40. package/.opencode/skills/design/data/cip/styles.csv +0 -21
  41. package/.opencode/skills/design/data/icon/styles.csv +0 -16
  42. package/.opencode/skills/design/data/logo/colors.csv +0 -56
  43. package/.opencode/skills/design/data/logo/industries.csv +0 -56
  44. package/.opencode/skills/design/data/logo/styles.csv +0 -56
  45. package/.opencode/skills/design/references/banner-sizes-and-styles.md +0 -118
  46. package/.opencode/skills/design/references/cip-deliverable-guide.md +0 -95
  47. package/.opencode/skills/design/references/cip-design.md +0 -121
  48. package/.opencode/skills/design/references/cip-prompt-engineering.md +0 -84
  49. package/.opencode/skills/design/references/cip-style-guide.md +0 -68
  50. package/.opencode/skills/design/references/design-routing.md +0 -207
  51. package/.opencode/skills/design/references/icon-design.md +0 -122
  52. package/.opencode/skills/design/references/logo-color-psychology.md +0 -101
  53. package/.opencode/skills/design/references/logo-design.md +0 -92
  54. package/.opencode/skills/design/references/logo-prompt-engineering.md +0 -158
  55. package/.opencode/skills/design/references/logo-style-guide.md +0 -109
  56. package/.opencode/skills/design/references/slides-copywriting-formulas.md +0 -84
  57. package/.opencode/skills/design/references/slides-create.md +0 -4
  58. package/.opencode/skills/design/references/slides-html-template.md +0 -295
  59. package/.opencode/skills/design/references/slides-layout-patterns.md +0 -137
  60. package/.opencode/skills/design/references/slides-strategies.md +0 -94
  61. package/.opencode/skills/design/references/slides.md +0 -42
  62. package/.opencode/skills/design/references/social-photos-design.md +0 -329
  63. package/.opencode/skills/design/scripts/cip/core.py +0 -215
  64. package/.opencode/skills/design/scripts/cip/generate.py +0 -484
  65. package/.opencode/skills/design/scripts/cip/render-html.py +0 -424
  66. package/.opencode/skills/design/scripts/cip/search.py +0 -127
  67. package/.opencode/skills/design/scripts/icon/generate.py +0 -487
  68. package/.opencode/skills/design/scripts/logo/core.py +0 -175
  69. package/.opencode/skills/design/scripts/logo/generate.py +0 -362
  70. package/.opencode/skills/design/scripts/logo/search.py +0 -114
  71. package/.opencode/skills/design-system/SKILL.md +0 -244
  72. package/.opencode/skills/design-system/data/slide-backgrounds.csv +0 -11
  73. package/.opencode/skills/design-system/data/slide-charts.csv +0 -26
  74. package/.opencode/skills/design-system/data/slide-color-logic.csv +0 -14
  75. package/.opencode/skills/design-system/data/slide-copy.csv +0 -26
  76. package/.opencode/skills/design-system/data/slide-layout-logic.csv +0 -16
  77. package/.opencode/skills/design-system/data/slide-layouts.csv +0 -26
  78. package/.opencode/skills/design-system/data/slide-strategies.csv +0 -16
  79. package/.opencode/skills/design-system/data/slide-typography.csv +0 -15
  80. package/.opencode/skills/design-system/references/component-specs.md +0 -236
  81. package/.opencode/skills/design-system/references/component-tokens.md +0 -214
  82. package/.opencode/skills/design-system/references/primitive-tokens.md +0 -203
  83. package/.opencode/skills/design-system/references/semantic-tokens.md +0 -215
  84. package/.opencode/skills/design-system/references/states-and-variants.md +0 -241
  85. package/.opencode/skills/design-system/references/tailwind-integration.md +0 -251
  86. package/.opencode/skills/design-system/references/token-architecture.md +0 -224
  87. package/.opencode/skills/design-system/scripts/embed-tokens.cjs +0 -99
  88. package/.opencode/skills/design-system/scripts/fetch-background.py +0 -317
  89. package/.opencode/skills/design-system/scripts/generate-slide.py +0 -770
  90. package/.opencode/skills/design-system/scripts/generate-tokens.cjs +0 -205
  91. package/.opencode/skills/design-system/scripts/html-token-validator.py +0 -327
  92. package/.opencode/skills/design-system/scripts/search-slides.py +0 -218
  93. package/.opencode/skills/design-system/scripts/slide-token-validator.py +0 -35
  94. package/.opencode/skills/design-system/scripts/slide_search_core.py +0 -453
  95. package/.opencode/skills/design-system/scripts/tests/test_validate_tokens.py +0 -48
  96. package/.opencode/skills/design-system/scripts/validate-tokens.cjs +0 -246
  97. package/.opencode/skills/design-system/templates/design-tokens-starter.json +0 -143
  98. package/.opencode/skills/frontend-design/LICENSE.txt +0 -21
  99. package/.opencode/skills/frontend-design/SKILL.md +0 -115
  100. package/.opencode/skills/mafw-automation-interview/SKILL.md +0 -43
  101. package/.opencode/skills/mafw-cli-scanner/SKILL.md +0 -37
  102. package/.opencode/skills/mafw-compression-verifier/SKILL.md +0 -52
  103. package/.opencode/skills/mafw-desktop-inspector/SKILL.md +0 -170
  104. package/.opencode/skills/mafw-execute/SKILL.md +0 -62
  105. package/.opencode/skills/mafw-gateway-restart/SKILL.md +0 -87
  106. package/.opencode/skills/mafw-github-scanner/SKILL.md +0 -38
  107. package/.opencode/skills/mafw-goal/SKILL.md +0 -76
  108. package/.opencode/skills/mafw-interview/SKILL.md +0 -68
  109. package/.opencode/skills/mafw-memory-extractor/SKILL.md +0 -65
  110. package/.opencode/skills/mafw-plan/SKILL.md +0 -58
  111. package/.opencode/skills/mafw-review/SKILL.md +0 -85
  112. package/.opencode/skills/runtime-plugin-authoring/SKILL.md +0 -791
  113. package/.opencode/skills/slides/SKILL.md +0 -40
  114. package/.opencode/skills/slides/references/copywriting-formulas.md +0 -84
  115. package/.opencode/skills/slides/references/create.md +0 -4
  116. package/.opencode/skills/slides/references/html-template.md +0 -295
  117. package/.opencode/skills/slides/references/layout-patterns.md +0 -137
  118. package/.opencode/skills/slides/references/slide-strategies.md +0 -94
  119. package/.opencode/skills/ui-styling/LICENSE.txt +0 -202
  120. package/.opencode/skills/ui-styling/SKILL.md +0 -324
  121. package/.opencode/skills/ui-styling/references/canvas-design-system.md +0 -320
  122. package/.opencode/skills/ui-styling/references/shadcn-accessibility.md +0 -471
  123. package/.opencode/skills/ui-styling/references/shadcn-components.md +0 -424
  124. package/.opencode/skills/ui-styling/references/shadcn-theming.md +0 -373
  125. package/.opencode/skills/ui-styling/references/tailwind-customization.md +0 -483
  126. package/.opencode/skills/ui-styling/references/tailwind-responsive.md +0 -382
  127. package/.opencode/skills/ui-styling/references/tailwind-utilities.md +0 -455
  128. package/.opencode/skills/ui-styling/scripts/requirements.txt +0 -17
  129. package/.opencode/skills/ui-styling/scripts/shadcn_add.py +0 -308
  130. package/.opencode/skills/ui-styling/scripts/tailwind_config_gen.py +0 -473
  131. package/.opencode/skills/ui-styling/scripts/tests/coverage-ui.json +0 -1
  132. package/.opencode/skills/ui-styling/scripts/tests/requirements.txt +0 -3
  133. package/.opencode/skills/ui-styling/scripts/tests/test_shadcn_add.py +0 -266
  134. package/.opencode/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +0 -394
  135. package/.opencode/skills/ui-ux-pro-max/SKILL.md +0 -388
  136. package/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +0 -31
  137. package/.opencode/skills/ui-ux-pro-max/data/charts.csv +0 -26
  138. package/.opencode/skills/ui-ux-pro-max/data/colors.csv +0 -193
  139. package/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +0 -1924
  140. package/.opencode/skills/ui-ux-pro-max/data/icons.csv +0 -106
  141. package/.opencode/skills/ui-ux-pro-max/data/landing.csv +0 -35
  142. package/.opencode/skills/ui-ux-pro-max/data/motion.csv +0 -17
  143. package/.opencode/skills/ui-ux-pro-max/data/products.csv +0 -193
  144. package/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  145. package/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +0 -51
  146. package/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -54
  147. package/.opencode/skills/ui-ux-pro-max/data/stacks/avalonia.csv +0 -57
  148. package/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  149. package/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  150. package/.opencode/skills/ui-ux-pro-max/data/stacks/javafx.csv +0 -76
  151. package/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  152. package/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +0 -51
  153. package/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  154. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -71
  155. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  156. package/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  157. package/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
  158. package/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  159. package/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  160. package/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  161. package/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +0 -54
  162. package/.opencode/skills/ui-ux-pro-max/data/stacks/uno.csv +0 -60
  163. package/.opencode/skills/ui-ux-pro-max/data/stacks/uwp.csv +0 -56
  164. package/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  165. package/.opencode/skills/ui-ux-pro-max/data/stacks/winui.csv +0 -60
  166. package/.opencode/skills/ui-ux-pro-max/data/stacks/wpf.csv +0 -57
  167. package/.opencode/skills/ui-ux-pro-max/data/styles.csv +0 -85
  168. package/.opencode/skills/ui-ux-pro-max/data/typography.csv +0 -75
  169. package/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -162
  170. package/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  171. package/.opencode/skills/ui-ux-pro-max/scripts/core.py +0 -464
  172. package/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +0 -1479
  173. package/.opencode/skills/ui-ux-pro-max/scripts/search.py +0 -162
  174. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_core.py +0 -134
  175. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_design_system_mode.py +0 -159
  176. package/.opencode/skills/ui-ux-pro-max/scripts/validate_data.py +0 -114
  177. package/dist/hooks/bash-python-guide.d.ts +0 -4
  178. package/dist/hooks/bash-python-guide.d.ts.map +0 -1
  179. package/dist/hooks/bash-python-guide.js +0 -67
  180. package/dist/hooks/bash-python-guide.js.map +0 -1
  181. package/dist/hooks/handoff.d.ts +0 -9
  182. package/dist/hooks/handoff.d.ts.map +0 -1
  183. package/dist/hooks/handoff.js +0 -8
  184. package/dist/hooks/handoff.js.map +0 -1
  185. package/dist/hooks/hook-manager.d.ts +0 -32
  186. package/dist/hooks/hook-manager.d.ts.map +0 -1
  187. package/dist/hooks/hook-manager.js +0 -91
  188. package/dist/hooks/hook-manager.js.map +0 -1
  189. package/dist/hooks/llm-after.d.ts +0 -8
  190. package/dist/hooks/llm-after.d.ts.map +0 -1
  191. package/dist/hooks/llm-after.js +0 -8
  192. package/dist/hooks/llm-after.js.map +0 -1
  193. package/dist/hooks/media-ingest.d.ts +0 -43
  194. package/dist/hooks/media-ingest.d.ts.map +0 -1
  195. package/dist/hooks/media-ingest.js +0 -269
  196. package/dist/hooks/media-ingest.js.map +0 -1
  197. package/dist/hooks/memory-guide.d.ts +0 -3
  198. package/dist/hooks/memory-guide.d.ts.map +0 -1
  199. package/dist/hooks/memory-guide.js +0 -47
  200. package/dist/hooks/memory-guide.js.map +0 -1
  201. package/dist/hooks/observation-capture.d.ts +0 -17
  202. package/dist/hooks/observation-capture.d.ts.map +0 -1
  203. package/dist/hooks/observation-capture.js +0 -20
  204. package/dist/hooks/observation-capture.js.map +0 -1
  205. package/dist/hooks/session-compacting.d.ts +0 -6
  206. package/dist/hooks/session-compacting.d.ts.map +0 -1
  207. package/dist/hooks/session-compacting.js +0 -6
  208. package/dist/hooks/session-compacting.js.map +0 -1
  209. package/dist/hooks/session-ending.d.ts +0 -20
  210. package/dist/hooks/session-ending.d.ts.map +0 -1
  211. package/dist/hooks/session-ending.js +0 -113
  212. package/dist/hooks/session-ending.js.map +0 -1
  213. package/dist/hooks/session-recall.d.ts +0 -2
  214. package/dist/hooks/session-recall.d.ts.map +0 -1
  215. package/dist/hooks/session-recall.js +0 -103
  216. package/dist/hooks/session-recall.js.map +0 -1
  217. package/dist/hooks/session-start.d.ts +0 -9
  218. package/dist/hooks/session-start.d.ts.map +0 -1
  219. package/dist/hooks/session-start.js +0 -42
  220. package/dist/hooks/session-start.js.map +0 -1
  221. package/dist/hooks/tool-before.d.ts +0 -10
  222. package/dist/hooks/tool-before.d.ts.map +0 -1
  223. package/dist/hooks/tool-before.js +0 -6
  224. package/dist/hooks/tool-before.js.map +0 -1
  225. package/dist/hooks/tool-executed.d.ts +0 -19
  226. package/dist/hooks/tool-executed.d.ts.map +0 -1
  227. package/dist/hooks/tool-executed.js +0 -12
  228. package/dist/hooks/tool-executed.js.map +0 -1
  229. package/dist/hooks/user-profile.d.ts +0 -2
  230. package/dist/hooks/user-profile.d.ts.map +0 -1
  231. package/dist/hooks/user-profile.js +0 -30
  232. package/dist/hooks/user-profile.js.map +0 -1
  233. package/dist/hooks/user-prompt.d.ts +0 -9
  234. package/dist/hooks/user-prompt.d.ts.map +0 -1
  235. package/dist/hooks/user-prompt.js +0 -8
  236. package/dist/hooks/user-prompt.js.map +0 -1
  237. package/dist/hooks/voice-guide.d.ts +0 -8
  238. package/dist/hooks/voice-guide.d.ts.map +0 -1
  239. package/dist/hooks/voice-guide.js +0 -101
  240. package/dist/hooks/voice-guide.js.map +0 -1
  241. package/dist/plugin.d.ts +0 -55
  242. package/dist/plugin.d.ts.map +0 -1
  243. package/dist/plugin.js +0 -342
  244. package/dist/plugin.js.map +0 -1
  245. package/dist/tools/add-memory.d.ts +0 -17
  246. package/dist/tools/add-memory.d.ts.map +0 -1
  247. package/dist/tools/add-memory.js +0 -60
  248. package/dist/tools/add-memory.js.map +0 -1
  249. package/dist/tools/media-ask.d.ts +0 -14
  250. package/dist/tools/media-ask.d.ts.map +0 -1
  251. package/dist/tools/media-ask.js +0 -224
  252. package/dist/tools/media-ask.js.map +0 -1
  253. package/dist/tools/media-speak.d.ts +0 -16
  254. package/dist/tools/media-speak.d.ts.map +0 -1
  255. package/dist/tools/media-speak.js +0 -78
  256. package/dist/tools/media-speak.js.map +0 -1
  257. package/dist/tools/media-upload.d.ts +0 -14
  258. package/dist/tools/media-upload.d.ts.map +0 -1
  259. package/dist/tools/media-upload.js +0 -155
  260. package/dist/tools/media-upload.js.map +0 -1
  261. package/dist/tools/python-exec.d.ts +0 -13
  262. package/dist/tools/python-exec.d.ts.map +0 -1
  263. package/dist/tools/python-exec.js +0 -99
  264. package/dist/tools/python-exec.js.map +0 -1
  265. package/dist/tools/python-restart.d.ts +0 -11
  266. package/dist/tools/python-restart.d.ts.map +0 -1
  267. package/dist/tools/python-restart.js +0 -33
  268. package/dist/tools/python-restart.js.map +0 -1
  269. package/dist/utils/circuit-breaker.d.ts +0 -23
  270. package/dist/utils/circuit-breaker.d.ts.map +0 -1
  271. package/dist/utils/circuit-breaker.js +0 -75
  272. package/dist/utils/circuit-breaker.js.map +0 -1
  273. package/dist/utils/config-loader.d.ts +0 -20
  274. package/dist/utils/config-loader.d.ts.map +0 -1
  275. package/dist/utils/config-loader.js +0 -194
  276. package/dist/utils/config-loader.js.map +0 -1
  277. package/dist/utils/fallback.d.ts +0 -7
  278. package/dist/utils/fallback.d.ts.map +0 -1
  279. package/dist/utils/fallback.js +0 -20
  280. package/dist/utils/fallback.js.map +0 -1
  281. package/dist/utils/git.d.ts +0 -24
  282. package/dist/utils/git.d.ts.map +0 -1
  283. package/dist/utils/git.js +0 -71
  284. package/dist/utils/git.js.map +0 -1
  285. package/dist/utils/github.d.ts +0 -37
  286. package/dist/utils/github.d.ts.map +0 -1
  287. package/dist/utils/github.js +0 -53
  288. package/dist/utils/github.js.map +0 -1
  289. package/dist/utils/global-path.d.ts +0 -2
  290. package/dist/utils/global-path.d.ts.map +0 -1
  291. package/dist/utils/global-path.js +0 -32
  292. package/dist/utils/global-path.js.map +0 -1
  293. package/dist/utils/logger.d.ts +0 -6
  294. package/dist/utils/logger.d.ts.map +0 -1
  295. package/dist/utils/logger.js +0 -69
  296. package/dist/utils/logger.js.map +0 -1
  297. package/dist/utils/obs-capture.d.ts +0 -7
  298. package/dist/utils/obs-capture.d.ts.map +0 -1
  299. package/dist/utils/obs-capture.js +0 -49
  300. package/dist/utils/obs-capture.js.map +0 -1
  301. package/dist/utils/retry.d.ts +0 -11
  302. package/dist/utils/retry.d.ts.map +0 -1
  303. package/dist/utils/retry.js +0 -45
  304. package/dist/utils/retry.js.map +0 -1
  305. package/dist/utils/self-wiring.d.ts +0 -13
  306. package/dist/utils/self-wiring.d.ts.map +0 -1
  307. package/dist/utils/self-wiring.js +0 -86
  308. package/dist/utils/self-wiring.js.map +0 -1
  309. package/dist/utils/state.d.ts +0 -106
  310. package/dist/utils/state.d.ts.map +0 -1
  311. package/dist/utils/state.js +0 -166
  312. package/dist/utils/state.js.map +0 -1
  313. package/dist/utils/status.d.ts +0 -47
  314. package/dist/utils/status.d.ts.map +0 -1
  315. package/dist/utils/status.js +0 -147
  316. package/dist/utils/status.js.map +0 -1
  317. package/dist/utils/ttl-map.d.ts +0 -17
  318. package/dist/utils/ttl-map.d.ts.map +0 -1
  319. package/dist/utils/ttl-map.js +0 -67
  320. package/dist/utils/ttl-map.js.map +0 -1
@@ -1,218 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- """
4
- Slide Search CLI - Search slide design databases for strategies, layouts, copy, and charts
5
- """
6
-
7
- import sys
8
- import json
9
- import argparse
10
- from slide_search_core import (
11
- search, search_all, AVAILABLE_DOMAINS,
12
- search_with_context, get_layout_for_goal, get_typography_for_slide,
13
- get_color_for_emotion, get_background_config
14
- )
15
-
16
-
17
- def format_result(result, domain):
18
- """Format a single search result for display"""
19
- output = []
20
-
21
- if domain == "strategy":
22
- output.append(f"**{result.get('strategy_name', 'N/A')}**")
23
- output.append(f" Slides: {result.get('slide_count', 'N/A')}")
24
- output.append(f" Structure: {result.get('structure', 'N/A')}")
25
- output.append(f" Goal: {result.get('goal', 'N/A')}")
26
- output.append(f" Audience: {result.get('audience', 'N/A')}")
27
- output.append(f" Tone: {result.get('tone', 'N/A')}")
28
- output.append(f" Arc: {result.get('narrative_arc', 'N/A')}")
29
- output.append(f" Source: {result.get('sources', 'N/A')}")
30
-
31
- elif domain == "layout":
32
- output.append(f"**{result.get('layout_name', 'N/A')}**")
33
- output.append(f" Use case: {result.get('use_case', 'N/A')}")
34
- output.append(f" Zones: {result.get('content_zones', 'N/A')}")
35
- output.append(f" Visual weight: {result.get('visual_weight', 'N/A')}")
36
- output.append(f" CTA: {result.get('cta_placement', 'N/A')}")
37
- output.append(f" Recommended: {result.get('recommended_for', 'N/A')}")
38
- output.append(f" Avoid: {result.get('avoid_for', 'N/A')}")
39
- output.append(f" CSS: {result.get('css_structure', 'N/A')}")
40
-
41
- elif domain == "copy":
42
- output.append(f"**{result.get('formula_name', 'N/A')}**")
43
- output.append(f" Components: {result.get('components', 'N/A')}")
44
- output.append(f" Use case: {result.get('use_case', 'N/A')}")
45
- output.append(f" Template: {result.get('example_template', 'N/A')}")
46
- output.append(f" Emotion: {result.get('emotion_trigger', 'N/A')}")
47
- output.append(f" Slide type: {result.get('slide_type', 'N/A')}")
48
- output.append(f" Source: {result.get('source', 'N/A')}")
49
-
50
- elif domain == "chart":
51
- output.append(f"**{result.get('chart_type', 'N/A')}**")
52
- output.append(f" Best for: {result.get('best_for', 'N/A')}")
53
- output.append(f" Data type: {result.get('data_type', 'N/A')}")
54
- output.append(f" When to use: {result.get('when_to_use', 'N/A')}")
55
- output.append(f" When to avoid: {result.get('when_to_avoid', 'N/A')}")
56
- output.append(f" Max categories: {result.get('max_categories', 'N/A')}")
57
- output.append(f" Slide context: {result.get('slide_context', 'N/A')}")
58
- output.append(f" CSS: {result.get('css_implementation', 'N/A')}")
59
- output.append(f" Accessibility: {result.get('accessibility_notes', 'N/A')}")
60
-
61
- return "\n".join(output)
62
-
63
-
64
- def format_context(context):
65
- """Format contextual recommendations for display."""
66
- output = []
67
- output.append(f"\n=== CONTEXTUAL RECOMMENDATIONS ===")
68
- output.append(f"Inferred Goal: {context.get('inferred_goal', 'N/A')}")
69
- output.append(f"Position: Slide {context.get('slide_position')} of {context.get('total_slides')}")
70
-
71
- if context.get('recommended_layout'):
72
- output.append(f"\n📐 Layout: {context['recommended_layout']}")
73
- output.append(f" Direction: {context.get('layout_direction', 'N/A')}")
74
- output.append(f" Visual Weight: {context.get('visual_weight', 'N/A')}")
75
-
76
- if context.get('typography'):
77
- typo = context['typography']
78
- output.append(f"\n📝 Typography:")
79
- output.append(f" Primary: {typo.get('primary_size', 'N/A')}")
80
- output.append(f" Secondary: {typo.get('secondary_size', 'N/A')}")
81
- output.append(f" Contrast: {typo.get('weight_contrast', 'N/A')}")
82
-
83
- if context.get('color_treatment'):
84
- color = context['color_treatment']
85
- output.append(f"\n🎨 Color Treatment:")
86
- output.append(f" Background: {color.get('background', 'N/A')}")
87
- output.append(f" Text: {color.get('text_color', 'N/A')}")
88
- output.append(f" Accent: {color.get('accent_usage', 'N/A')}")
89
-
90
- if context.get('should_break_pattern'):
91
- output.append(f"\n⚡ Pattern Break: YES (use contrasting layout)")
92
-
93
- if context.get('should_use_full_bleed'):
94
- output.append(f"\n🖼️ Full Bleed: Recommended for emotional impact")
95
-
96
- if context.get('use_background_image') and context.get('background'):
97
- bg = context['background']
98
- output.append(f"\n📸 Background Image:")
99
- output.append(f" Category: {bg.get('image_category', 'N/A')}")
100
- output.append(f" Overlay: {bg.get('overlay_style', 'N/A')}")
101
- output.append(f" Keywords: {bg.get('search_keywords', 'N/A')}")
102
-
103
- output.append(f"\n✨ Animation: {context.get('animation_class', 'animate-fade-up')}")
104
-
105
- return "\n".join(output)
106
-
107
-
108
- def main():
109
- parser = argparse.ArgumentParser(
110
- description="Search slide design databases",
111
- formatter_class=argparse.RawDescriptionHelpFormatter,
112
- epilog="""
113
- Examples:
114
- search-slides.py "investor pitch" # Auto-detect domain (strategy)
115
- search-slides.py "funnel conversion" -d chart
116
- search-slides.py "headline hook" -d copy
117
- search-slides.py "two column" -d layout
118
- search-slides.py "startup funding" --all # Search all domains
119
- search-slides.py "metrics dashboard" --json # JSON output
120
-
121
- Contextual Search (Premium System):
122
- search-slides.py "problem slide" --context --position 2 --total 9
123
- search-slides.py "cta" --context --position 9 --total 9 --prev-emotion frustration
124
- """
125
- )
126
-
127
- parser.add_argument("query", help="Search query")
128
- parser.add_argument("-d", "--domain", choices=AVAILABLE_DOMAINS,
129
- help="Specific domain to search (auto-detected if not specified)")
130
- parser.add_argument("-n", "--max-results", type=int, default=3,
131
- help="Maximum results to return (default: 3)")
132
- parser.add_argument("--all", action="store_true",
133
- help="Search across all domains")
134
- parser.add_argument("--json", action="store_true",
135
- help="Output as JSON")
136
-
137
- # Contextual search options
138
- parser.add_argument("--context", action="store_true",
139
- help="Use contextual search with layout/typography/color recommendations")
140
- parser.add_argument("--position", type=int, default=1,
141
- help="Slide position in deck (1-based, default: 1)")
142
- parser.add_argument("--total", type=int, default=9,
143
- help="Total slides in deck (default: 9)")
144
- parser.add_argument("--prev-emotion", type=str, default=None,
145
- help="Previous slide's emotion for contrast calculation")
146
-
147
- args = parser.parse_args()
148
-
149
- # Contextual search mode
150
- if args.context:
151
- result = search_with_context(
152
- args.query,
153
- slide_position=args.position,
154
- total_slides=args.total,
155
- previous_emotion=args.prev_emotion
156
- )
157
-
158
- if args.json:
159
- print(json.dumps(result, indent=2))
160
- else:
161
- print(format_context(result['context']))
162
-
163
- # Also show base search results
164
- if result.get('base_results'):
165
- print("\n\n=== RELATED SEARCH RESULTS ===")
166
- for domain, data in result['base_results'].items():
167
- print(f"\n--- {domain.upper()} ---")
168
- for item in data['results']:
169
- print(format_result(item, domain))
170
- print()
171
- return
172
-
173
- if args.all:
174
- results = search_all(args.query, args.max_results)
175
-
176
- if args.json:
177
- print(json.dumps(results, indent=2))
178
- else:
179
- if not results:
180
- print(f"No results found for: {args.query}")
181
- return
182
-
183
- for domain, data in results.items():
184
- print(f"\n=== {domain.upper()} ===")
185
- print(f"File: {data['file']}")
186
- print(f"Results: {data['count']}")
187
- print()
188
- for result in data['results']:
189
- print(format_result(result, domain))
190
- print()
191
- else:
192
- result = search(args.query, args.domain, args.max_results)
193
-
194
- if args.json:
195
- print(json.dumps(result, indent=2))
196
- else:
197
- if result.get("error"):
198
- print(f"Error: {result['error']}")
199
- return
200
-
201
- print(f"Domain: {result['domain']}")
202
- print(f"Query: {result['query']}")
203
- print(f"File: {result['file']}")
204
- print(f"Results: {result['count']}")
205
- print()
206
-
207
- if result['count'] == 0:
208
- print("No matching results found.")
209
- return
210
-
211
- for i, item in enumerate(result['results'], 1):
212
- print(f"--- Result {i} ---")
213
- print(format_result(item, result['domain']))
214
- print()
215
-
216
-
217
- if __name__ == "__main__":
218
- main()
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Slide Token Validator (Legacy Wrapper)
4
- Now delegates to html-token-validator.py for unified HTML validation.
5
-
6
- For new usage, prefer:
7
- python html-token-validator.py --type slides
8
- python html-token-validator.py --type infographics
9
- python html-token-validator.py # All HTML assets
10
- """
11
-
12
- import sys
13
- import subprocess
14
- from pathlib import Path
15
-
16
- SCRIPT_DIR = Path(__file__).parent
17
- UNIFIED_VALIDATOR = SCRIPT_DIR / 'html-token-validator.py'
18
-
19
-
20
- def main():
21
- """Delegate to unified html-token-validator.py with --type slides."""
22
- args = sys.argv[1:]
23
-
24
- # If no files specified, default to slides type
25
- if not args or all(arg.startswith('-') for arg in args):
26
- cmd = [sys.executable, str(UNIFIED_VALIDATOR), '--type', 'slides'] + args
27
- else:
28
- cmd = [sys.executable, str(UNIFIED_VALIDATOR)] + args
29
-
30
- result = subprocess.run(cmd)
31
- sys.exit(result.returncode)
32
-
33
-
34
- if __name__ == '__main__':
35
- main()