@nguyenphp/antigravity-marketing 1.0.16 → 1.0.19

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 (376) hide show
  1. package/README.md +187 -74
  2. package/bin/index.js +4 -4
  3. package/package.json +4 -3
  4. package/templates/.agent/agents/backend-specialist.md +263 -0
  5. package/templates/.agent/agents/database-architect.md +226 -0
  6. package/templates/.agent/agents/debugger.md +225 -0
  7. package/templates/.agent/agents/devops-engineer.md +242 -0
  8. package/templates/.agent/agents/documentation-writer.md +104 -0
  9. package/templates/.agent/agents/explorer-agent.md +73 -0
  10. package/templates/.agent/agents/frontend-specialist.md +527 -0
  11. package/templates/.agent/agents/game-developer.md +162 -0
  12. package/templates/.agent/agents/mobile-developer.md +377 -0
  13. package/templates/.agent/agents/orchestrator.md +400 -0
  14. package/templates/.agent/agents/penetration-tester.md +188 -0
  15. package/templates/.agent/agents/performance-optimizer.md +187 -0
  16. package/templates/.agent/agents/project-planner.md +403 -0
  17. package/templates/.agent/agents/security-auditor.md +170 -0
  18. package/templates/.agent/agents/seo-specialist.md +111 -0
  19. package/templates/.agent/agents/test-engineer.md +158 -0
  20. package/templates/.agent/rules/GEMINI.md +248 -0
  21. package/templates/.agent/skills/analytics-marketing/SKILL.md +172 -324
  22. package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
  23. package/templates/.agent/skills/api-patterns/api-style.md +42 -0
  24. package/templates/.agent/skills/api-patterns/auth.md +24 -0
  25. package/templates/.agent/skills/api-patterns/documentation.md +26 -0
  26. package/templates/.agent/skills/api-patterns/graphql.md +41 -0
  27. package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
  28. package/templates/.agent/skills/api-patterns/response.md +37 -0
  29. package/templates/.agent/skills/api-patterns/rest.md +40 -0
  30. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  31. package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
  32. package/templates/.agent/skills/api-patterns/trpc.md +41 -0
  33. package/templates/.agent/skills/api-patterns/versioning.md +22 -0
  34. package/templates/.agent/skills/app-builder/SKILL.md +75 -0
  35. package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
  36. package/templates/.agent/skills/app-builder/feature-building.md +53 -0
  37. package/templates/.agent/skills/app-builder/project-detection.md +34 -0
  38. package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
  39. package/templates/.agent/skills/app-builder/tech-stack.md +40 -0
  40. package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
  41. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  42. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  43. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  44. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  45. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  46. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  47. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  48. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  49. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  50. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  51. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  52. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  53. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  54. package/templates/.agent/skills/architecture/SKILL.md +55 -0
  55. package/templates/.agent/skills/architecture/context-discovery.md +43 -0
  56. package/templates/.agent/skills/architecture/examples.md +94 -0
  57. package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
  58. package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
  59. package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
  60. package/templates/.agent/skills/banner-design/SKILL.md +192 -0
  61. package/templates/.agent/skills/banner-design/references/banner-sizes-and-styles.md +118 -0
  62. package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
  63. package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
  64. package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
  65. package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  66. package/templates/.agent/skills/brand/SKILL.md +97 -0
  67. package/templates/.agent/skills/brand/references/approval-checklist.md +169 -0
  68. package/templates/.agent/skills/brand/references/asset-organization.md +157 -0
  69. package/templates/.agent/skills/brand/references/brand-guideline-template.md +140 -0
  70. package/templates/.agent/skills/brand/references/color-palette-management.md +186 -0
  71. package/templates/.agent/skills/brand/references/consistency-checklist.md +94 -0
  72. package/templates/.agent/skills/brand/references/logo-usage-rules.md +185 -0
  73. package/templates/.agent/skills/brand/references/messaging-framework.md +85 -0
  74. package/templates/.agent/skills/brand/references/typography-specifications.md +214 -0
  75. package/templates/.agent/skills/brand/references/update.md +118 -0
  76. package/templates/.agent/skills/brand/references/visual-identity.md +96 -0
  77. package/templates/.agent/skills/brand/references/voice-framework.md +88 -0
  78. package/templates/.agent/skills/brand/scripts/extract-colors.cjs +341 -0
  79. package/templates/.agent/skills/brand/scripts/inject-brand-context.cjs +349 -0
  80. package/templates/.agent/skills/brand/scripts/sync-brand-to-tokens.cjs +266 -0
  81. package/templates/.agent/skills/brand/scripts/validate-asset.cjs +387 -0
  82. package/templates/.agent/skills/brand/templates/brand-guidelines-starter.md +275 -0
  83. package/templates/.agent/skills/clean-code/SKILL.md +201 -0
  84. package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
  85. package/templates/.agent/skills/copywriting/SKILL.md +250 -0
  86. package/templates/.agent/skills/database-design/SKILL.md +52 -0
  87. package/templates/.agent/skills/database-design/database-selection.md +43 -0
  88. package/templates/.agent/skills/database-design/indexing.md +39 -0
  89. package/templates/.agent/skills/database-design/migrations.md +48 -0
  90. package/templates/.agent/skills/database-design/optimization.md +36 -0
  91. package/templates/.agent/skills/database-design/orm-selection.md +30 -0
  92. package/templates/.agent/skills/database-design/schema-design.md +56 -0
  93. package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  94. package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
  95. package/templates/.agent/skills/docker-expert/SKILL.md +409 -0
  96. package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
  97. package/templates/.agent/skills/frontend-design/color-system.md +311 -0
  98. package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
  99. package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
  100. package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  101. package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  102. package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
  103. package/templates/.agent/skills/frontend-design/ux-psychology.md +541 -0
  104. package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
  105. package/templates/.agent/skills/frontend-slides/SKILL.md +92 -0
  106. package/templates/.agent/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  107. package/templates/.agent/skills/frontend-slides/animation-patterns.md +110 -0
  108. package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.html +789 -0
  109. package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.pptx +0 -0
  110. package/templates/.agent/skills/frontend-slides/html-template.md +347 -0
  111. package/templates/.agent/skills/frontend-slides/scripts/export-pptx.py +58 -0
  112. package/templates/.agent/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  113. package/templates/.agent/skills/frontend-slides/viewport-base.css +153 -0
  114. package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  115. package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  116. package/templates/.agent/skills/game-development/SKILL.md +167 -0
  117. package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
  118. package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  119. package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
  120. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  121. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  122. package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  123. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  124. package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
  125. package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  126. package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  127. package/templates/.agent/skills/growth-engine/SKILL.md +244 -0
  128. package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
  129. package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  130. package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
  131. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  132. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  133. package/templates/.agent/skills/marketing-report-expert/SKILL.md +70 -0
  134. package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
  135. package/templates/.agent/skills/minimax-docx/LICENSE +21 -0
  136. package/templates/.agent/skills/minimax-docx/SKILL.md +274 -0
  137. package/templates/.agent/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  138. package/templates/.agent/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  139. package/templates/.agent/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  140. package/templates/.agent/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  141. package/templates/.agent/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  142. package/templates/.agent/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  143. package/templates/.agent/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  144. package/templates/.agent/skills/minimax-docx/references/cjk_typography.md +357 -0
  145. package/templates/.agent/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  146. package/templates/.agent/skills/minimax-docx/references/comments_guide.md +191 -0
  147. package/templates/.agent/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  148. package/templates/.agent/skills/minimax-docx/references/design_principles.md +819 -0
  149. package/templates/.agent/skills/minimax-docx/references/openxml_element_order.md +308 -0
  150. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  151. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  152. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  153. package/templates/.agent/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  154. package/templates/.agent/skills/minimax-docx/references/openxml_units.md +72 -0
  155. package/templates/.agent/skills/minimax-docx/references/scenario_a_create.md +284 -0
  156. package/templates/.agent/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  157. package/templates/.agent/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  158. package/templates/.agent/skills/minimax-docx/references/track_changes_guide.md +200 -0
  159. package/templates/.agent/skills/minimax-docx/references/troubleshooting.md +506 -0
  160. package/templates/.agent/skills/minimax-docx/references/typography_guide.md +294 -0
  161. package/templates/.agent/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  162. package/templates/.agent/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  163. package/templates/.agent/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  164. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  165. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  166. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  167. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  168. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  169. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  170. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  171. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  172. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  173. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  174. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  175. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  176. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  177. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  178. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  179. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  180. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  181. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  182. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  183. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  184. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  185. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  186. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  187. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  188. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  189. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  190. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  191. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  192. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  193. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  194. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  195. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  196. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  197. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  198. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  199. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  200. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  201. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  202. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  203. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  204. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  205. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  206. package/templates/.agent/skills/minimax-docx/scripts/env_check.sh +196 -0
  207. package/templates/.agent/skills/minimax-docx/scripts/setup.ps1 +274 -0
  208. package/templates/.agent/skills/minimax-docx/scripts/setup.sh +504 -0
  209. package/templates/.agent/skills/minimax-multimodal-toolkit/SKILL.md +359 -0
  210. package/templates/.agent/skills/minimax-pdf/README.md +222 -0
  211. package/templates/.agent/skills/minimax-pdf/SKILL.md +201 -0
  212. package/templates/.agent/skills/minimax-pdf/design/design.md +381 -0
  213. package/templates/.agent/skills/minimax-pdf/scripts/cover.py +1579 -0
  214. package/templates/.agent/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  215. package/templates/.agent/skills/minimax-pdf/scripts/fill_write.py +242 -0
  216. package/templates/.agent/skills/minimax-pdf/scripts/make.sh +491 -0
  217. package/templates/.agent/skills/minimax-pdf/scripts/merge.py +112 -0
  218. package/templates/.agent/skills/minimax-pdf/scripts/palette.py +559 -0
  219. package/templates/.agent/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  220. package/templates/.agent/skills/minimax-pdf/scripts/render_body.py +1055 -0
  221. package/templates/.agent/skills/minimax-pdf/scripts/render_cover.cjs +111 -0
  222. package/templates/.agent/skills/minimax-xlsx/SKILL.md +138 -0
  223. package/templates/.agent/skills/minimax-xlsx/references/create.md +691 -0
  224. package/templates/.agent/skills/minimax-xlsx/references/edit.md +684 -0
  225. package/templates/.agent/skills/minimax-xlsx/references/fix.md +37 -0
  226. package/templates/.agent/skills/minimax-xlsx/references/format.md +768 -0
  227. package/templates/.agent/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  228. package/templates/.agent/skills/minimax-xlsx/references/read-analyze.md +97 -0
  229. package/templates/.agent/skills/minimax-xlsx/references/validate.md +772 -0
  230. package/templates/.agent/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  231. package/templates/.agent/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  232. package/templates/.agent/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  233. package/templates/.agent/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  234. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  235. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  236. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  237. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  238. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  239. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  240. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  241. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  242. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  243. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  244. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  245. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  246. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  247. package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
  248. package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
  249. package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
  250. package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  251. package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  252. package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  253. package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  254. package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
  255. package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
  256. package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
  257. package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
  258. package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
  259. package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  260. package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
  261. package/templates/.agent/skills/nestjs-expert/SKILL.md +552 -0
  262. package/templates/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
  263. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  264. package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
  265. package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
  266. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  267. package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
  268. package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
  269. package/templates/.agent/skills/ppc-advertising/SKILL.md +183 -475
  270. package/templates/.agent/skills/pptx-generator/SKILL.md +249 -0
  271. package/templates/.agent/skills/pptx-generator/references/design-system.md +392 -0
  272. package/templates/.agent/skills/pptx-generator/references/editing.md +162 -0
  273. package/templates/.agent/skills/pptx-generator/references/pitfalls.md +112 -0
  274. package/templates/.agent/skills/pptx-generator/references/pptxgenjs.md +420 -0
  275. package/templates/.agent/skills/pptx-generator/references/slide-types.md +413 -0
  276. package/templates/.agent/skills/prisma-expert/SKILL.md +355 -0
  277. package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
  278. package/templates/.agent/skills/react-patterns/SKILL.md +198 -0
  279. package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
  280. package/templates/.agent/skills/remotion-best-practices/SKILL.md +45 -111
  281. package/templates/.agent/skills/remotion-best-practices/rules/3d.md +4 -4
  282. package/templates/.agent/skills/remotion-best-practices/rules/animations.md +5 -7
  283. package/templates/.agent/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  284. package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  285. package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  286. package/templates/.agent/skills/remotion-best-practices/rules/assets.md +78 -0
  287. package/templates/.agent/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  288. package/templates/.agent/skills/remotion-best-practices/rules/audio.md +1 -4
  289. package/templates/.agent/skills/remotion-best-practices/rules/calculate-metadata.md +47 -17
  290. package/templates/.agent/skills/remotion-best-practices/rules/can-decode.md +75 -0
  291. package/templates/.agent/skills/remotion-best-practices/rules/charts.md +80 -48
  292. package/templates/.agent/skills/remotion-best-practices/rules/compositions.md +22 -14
  293. package/templates/.agent/skills/remotion-best-practices/rules/display-captions.md +79 -21
  294. package/templates/.agent/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  295. package/templates/.agent/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  296. package/templates/.agent/skills/remotion-best-practices/rules/fonts.md +96 -54
  297. package/templates/.agent/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  298. package/templates/.agent/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  299. package/templates/.agent/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  300. package/templates/.agent/skills/remotion-best-practices/rules/gifs.md +21 -18
  301. package/templates/.agent/skills/remotion-best-practices/rules/images.md +6 -2
  302. package/templates/.agent/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  303. package/templates/.agent/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  304. package/templates/.agent/skills/remotion-best-practices/rules/lottie.md +10 -7
  305. package/templates/.agent/skills/remotion-best-practices/rules/maps.md +412 -0
  306. package/templates/.agent/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  307. package/templates/.agent/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  308. package/templates/.agent/skills/remotion-best-practices/rules/parameters.md +109 -0
  309. package/templates/.agent/skills/remotion-best-practices/rules/sequencing.md +13 -1
  310. package/templates/.agent/skills/remotion-best-practices/rules/sfx.md +26 -0
  311. package/templates/.agent/skills/remotion-best-practices/rules/subtitles.md +36 -0
  312. package/templates/.agent/skills/remotion-best-practices/rules/tailwind.md +11 -0
  313. package/templates/.agent/skills/remotion-best-practices/rules/text-animations.md +4 -115
  314. package/templates/.agent/skills/remotion-best-practices/rules/timing.md +19 -19
  315. package/templates/.agent/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  316. package/templates/.agent/skills/remotion-best-practices/rules/transitions.md +117 -42
  317. package/templates/.agent/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  318. package/templates/.agent/skills/remotion-best-practices/rules/trimming.md +51 -0
  319. package/templates/.agent/skills/remotion-best-practices/rules/voiceover.md +99 -0
  320. package/templates/.agent/skills/seo-fundamentals/SKILL.md +83 -441
  321. package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  322. package/templates/.agent/skills/server-management/SKILL.md +161 -0
  323. package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
  324. package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
  325. package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
  326. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  327. package/templates/.agent/skills/tutorial-video-expert/SKILL.md +88 -0
  328. package/templates/.agent/skills/typescript-expert/SKILL.md +429 -0
  329. package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +1 -1
  330. package/templates/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  331. package/templates/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  332. package/templates/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  333. package/templates/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  334. package/templates/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  335. package/templates/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  336. package/templates/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  337. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  338. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  339. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  340. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  341. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  342. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  343. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  344. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  345. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  346. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  347. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  348. package/templates/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  349. package/templates/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  350. package/templates/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  351. package/templates/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  352. package/templates/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  353. package/templates/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  354. package/templates/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  355. package/templates/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  356. package/templates/.agent/skills/vision-analysis/SKILL.md +174 -0
  357. package/templates/.agent/skills/vue-expert/SKILL.md +374 -0
  358. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  359. package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  360. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  361. package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
  362. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  363. package/templates/.agent/workflows/analyze.md +3 -0
  364. package/templates/.agent/workflows/brainstorm.md +113 -0
  365. package/templates/.agent/workflows/brand-report.md +44 -0
  366. package/templates/.agent/workflows/create.md +59 -0
  367. package/templates/.agent/workflows/debug.md +103 -0
  368. package/templates/.agent/workflows/deploy.md +176 -0
  369. package/templates/.agent/workflows/enhance.md +63 -0
  370. package/templates/.agent/workflows/orchestrate.md +237 -0
  371. package/templates/.agent/workflows/plan.md +89 -0
  372. package/templates/.agent/workflows/preview.md +80 -0
  373. package/templates/.agent/workflows/report.md +49 -0
  374. package/templates/.agent/workflows/status.md +86 -0
  375. package/templates/.agent/workflows/test.md +144 -0
  376. package/templates/.agent/workflows/ui-ux-pro-max.md +231 -0
@@ -0,0 +1,387 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * validate-asset.cjs
4
+ *
5
+ * Validates marketing assets against brand guidelines.
6
+ * Checks: file naming, dimensions, file size, metadata.
7
+ *
8
+ * Usage:
9
+ * node validate-asset.cjs <asset-path>
10
+ * node validate-asset.cjs <asset-path> --json
11
+ * node validate-asset.cjs <asset-path> --fix
12
+ *
13
+ * For color validation of images, use with extract-colors.cjs
14
+ */
15
+
16
+ const fs = require("fs");
17
+ const path = require("path");
18
+
19
+ // Validation rules
20
+ const RULES = {
21
+ naming: {
22
+ pattern: /^[a-z]+_[a-z0-9-]+_[a-z0-9-]+_\d{8}(_[a-z0-9-]+)?\.[a-z]+$/,
23
+ description:
24
+ "{type}_{campaign}_{description}_{timestamp}_{variant}.{ext}",
25
+ examples: [
26
+ "banner_claude-launch_hero-image_20251209.png",
27
+ "logo_brand-refresh_horizontal_20251209_dark.svg",
28
+ ],
29
+ },
30
+ dimensions: {
31
+ banner: { minWidth: 600, minHeight: 300 },
32
+ logo: { minWidth: 100, minHeight: 100 },
33
+ design: { minWidth: 800, minHeight: 600 },
34
+ video: { minWidth: 640, minHeight: 480 },
35
+ default: { minWidth: 100, minHeight: 100 },
36
+ },
37
+ fileSize: {
38
+ image: { max: 5 * 1024 * 1024, recommended: 1 * 1024 * 1024 },
39
+ video: { max: 100 * 1024 * 1024, recommended: 50 * 1024 * 1024 },
40
+ svg: { max: 500 * 1024, recommended: 100 * 1024 },
41
+ },
42
+ formats: {
43
+ image: ["png", "jpg", "jpeg", "webp", "gif"],
44
+ vector: ["svg"],
45
+ video: ["mp4", "mov", "webm"],
46
+ document: ["pdf", "psd", "ai", "fig"],
47
+ },
48
+ };
49
+
50
+ /**
51
+ * Parse asset filename
52
+ */
53
+ function parseFilename(filename) {
54
+ const parts = filename.replace(/\.[^.]+$/, "").split("_");
55
+
56
+ if (parts.length < 4) {
57
+ return null;
58
+ }
59
+
60
+ return {
61
+ type: parts[0],
62
+ campaign: parts[1],
63
+ description: parts[2],
64
+ timestamp: parts[3],
65
+ variant: parts.length > 4 ? parts[4] : null,
66
+ extension: path.extname(filename).slice(1).toLowerCase(),
67
+ };
68
+ }
69
+
70
+ /**
71
+ * Validate filename convention
72
+ */
73
+ function validateFilename(filename) {
74
+ const issues = [];
75
+ const suggestions = [];
76
+
77
+ // Check pattern match
78
+ if (!RULES.naming.pattern.test(filename)) {
79
+ issues.push("Filename does not match naming convention");
80
+ suggestions.push(`Expected format: ${RULES.naming.description}`);
81
+ suggestions.push(`Examples: ${RULES.naming.examples.join(", ")}`);
82
+ }
83
+
84
+ // Parse and check components
85
+ const parsed = parseFilename(filename);
86
+ if (parsed) {
87
+ // Check timestamp format
88
+ if (!/^\d{8}$/.test(parsed.timestamp)) {
89
+ issues.push("Timestamp should be YYYYMMDD format");
90
+ }
91
+
92
+ // Check kebab-case for campaign and description
93
+ if (parsed.campaign && !/^[a-z0-9-]+$/.test(parsed.campaign)) {
94
+ issues.push("Campaign name should be kebab-case");
95
+ }
96
+
97
+ if (parsed.description && !/^[a-z0-9-]+$/.test(parsed.description)) {
98
+ issues.push("Description should be kebab-case");
99
+ }
100
+
101
+ // Check valid type
102
+ const validTypes = [
103
+ "banner",
104
+ "logo",
105
+ "design",
106
+ "video",
107
+ "infographic",
108
+ "icon",
109
+ "photo",
110
+ ];
111
+ if (!validTypes.includes(parsed.type)) {
112
+ suggestions.push(`Consider using type: ${validTypes.join(", ")}`);
113
+ }
114
+ }
115
+
116
+ return { valid: issues.length === 0, issues, suggestions, parsed };
117
+ }
118
+
119
+ /**
120
+ * Validate file size
121
+ */
122
+ function validateFileSize(filepath, extension) {
123
+ const issues = [];
124
+ const warnings = [];
125
+
126
+ const stats = fs.statSync(filepath);
127
+ const size = stats.size;
128
+
129
+ let limits;
130
+ if (RULES.formats.video.includes(extension)) {
131
+ limits = RULES.fileSize.video;
132
+ } else if (extension === "svg") {
133
+ limits = RULES.fileSize.svg;
134
+ } else {
135
+ limits = RULES.fileSize.image;
136
+ }
137
+
138
+ if (size > limits.max) {
139
+ issues.push(
140
+ `File size (${formatBytes(size)}) exceeds maximum (${formatBytes(
141
+ limits.max
142
+ )})`
143
+ );
144
+ } else if (size > limits.recommended) {
145
+ warnings.push(
146
+ `File size (${formatBytes(size)}) exceeds recommended (${formatBytes(
147
+ limits.recommended
148
+ )})`
149
+ );
150
+ }
151
+
152
+ return { valid: issues.length === 0, issues, warnings, size };
153
+ }
154
+
155
+ /**
156
+ * Validate file format
157
+ */
158
+ function validateFormat(extension) {
159
+ const issues = [];
160
+ const info = { category: null };
161
+
162
+ const allFormats = [
163
+ ...RULES.formats.image,
164
+ ...RULES.formats.vector,
165
+ ...RULES.formats.video,
166
+ ...RULES.formats.document,
167
+ ];
168
+
169
+ if (!allFormats.includes(extension)) {
170
+ issues.push(`Unsupported file format: .${extension}`);
171
+ return { valid: false, issues, info };
172
+ }
173
+
174
+ // Determine category
175
+ if (RULES.formats.image.includes(extension)) info.category = "image";
176
+ else if (RULES.formats.vector.includes(extension)) info.category = "vector";
177
+ else if (RULES.formats.video.includes(extension)) info.category = "video";
178
+ else if (RULES.formats.document.includes(extension))
179
+ info.category = "document";
180
+
181
+ return { valid: true, issues, info };
182
+ }
183
+
184
+ /**
185
+ * Check if asset exists in manifest
186
+ */
187
+ function checkManifest(filepath) {
188
+ const manifestPath = path.join(process.cwd(), ".assets", "manifest.json");
189
+
190
+ if (!fs.existsSync(manifestPath)) {
191
+ return { registered: false, message: "Manifest not found" };
192
+ }
193
+
194
+ try {
195
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
196
+ const relativePath = path.relative(process.cwd(), filepath);
197
+ const found = manifest.assets?.find(
198
+ (a) => a.path === relativePath || a.path === filepath
199
+ );
200
+
201
+ return {
202
+ registered: !!found,
203
+ message: found ? "Asset registered in manifest" : "Asset not in manifest",
204
+ asset: found,
205
+ };
206
+ } catch {
207
+ return { registered: false, message: "Error reading manifest" };
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Generate suggested filename
213
+ */
214
+ function suggestFilename(original, parsed) {
215
+ if (!parsed) return null;
216
+
217
+ const today = new Date().toISOString().slice(0, 10).replace(/-/g, "");
218
+ const type = parsed.type || "asset";
219
+ const campaign = parsed.campaign || "general";
220
+ const description = parsed.description || "untitled";
221
+ const ext = parsed.extension || "png";
222
+
223
+ return `${type}_${campaign}_${description}_${today}.${ext}`;
224
+ }
225
+
226
+ /**
227
+ * Format bytes to human readable
228
+ */
229
+ function formatBytes(bytes) {
230
+ if (bytes === 0) return "0 Bytes";
231
+ const k = 1024;
232
+ const sizes = ["Bytes", "KB", "MB", "GB"];
233
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
234
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
235
+ }
236
+
237
+ /**
238
+ * Main validation function
239
+ */
240
+ function validateAsset(assetPath) {
241
+ const results = {
242
+ path: assetPath,
243
+ filename: path.basename(assetPath),
244
+ valid: true,
245
+ issues: [],
246
+ warnings: [],
247
+ suggestions: [],
248
+ checks: {},
249
+ };
250
+
251
+ // Check file exists
252
+ if (!fs.existsSync(assetPath)) {
253
+ results.valid = false;
254
+ results.issues.push(`File not found: ${assetPath}`);
255
+ return results;
256
+ }
257
+
258
+ const filename = path.basename(assetPath);
259
+ const extension = path.extname(filename).slice(1).toLowerCase();
260
+
261
+ // 1. Validate filename
262
+ const filenameResult = validateFilename(filename);
263
+ results.checks.filename = filenameResult;
264
+ if (!filenameResult.valid) {
265
+ results.issues.push(...filenameResult.issues);
266
+ results.suggestions.push(...filenameResult.suggestions);
267
+ }
268
+
269
+ // 2. Validate format
270
+ const formatResult = validateFormat(extension);
271
+ results.checks.format = formatResult;
272
+ if (!formatResult.valid) {
273
+ results.issues.push(...formatResult.issues);
274
+ }
275
+
276
+ // 3. Validate file size
277
+ const sizeResult = validateFileSize(assetPath, extension);
278
+ results.checks.fileSize = sizeResult;
279
+ if (!sizeResult.valid) {
280
+ results.issues.push(...sizeResult.issues);
281
+ }
282
+ results.warnings.push(...sizeResult.warnings);
283
+
284
+ // 4. Check manifest registration
285
+ const manifestResult = checkManifest(assetPath);
286
+ results.checks.manifest = manifestResult;
287
+ if (!manifestResult.registered) {
288
+ results.warnings.push("Asset not registered in manifest.json");
289
+ results.suggestions.push(
290
+ "Register asset in .assets/manifest.json for tracking"
291
+ );
292
+ }
293
+
294
+ // 5. Suggest corrected filename if needed
295
+ if (!filenameResult.valid && filenameResult.parsed) {
296
+ const suggested = suggestFilename(filename, filenameResult.parsed);
297
+ if (suggested) {
298
+ results.suggestions.push(`Suggested filename: ${suggested}`);
299
+ }
300
+ }
301
+
302
+ // Overall validity
303
+ results.valid = results.issues.length === 0;
304
+
305
+ return results;
306
+ }
307
+
308
+ /**
309
+ * Format output for console
310
+ */
311
+ function formatOutput(results) {
312
+ const lines = [];
313
+
314
+ lines.push("\n" + "=".repeat(60));
315
+ lines.push(`ASSET VALIDATION: ${results.filename}`);
316
+ lines.push("=".repeat(60));
317
+
318
+ lines.push(`\nStatus: ${results.valid ? "PASS" : "FAIL"}`);
319
+ lines.push(`Path: ${results.path}`);
320
+
321
+ if (results.issues.length > 0) {
322
+ lines.push("\nISSUES:");
323
+ results.issues.forEach((issue) => lines.push(` - ${issue}`));
324
+ }
325
+
326
+ if (results.warnings.length > 0) {
327
+ lines.push("\nWARNINGS:");
328
+ results.warnings.forEach((warning) => lines.push(` - ${warning}`));
329
+ }
330
+
331
+ if (results.suggestions.length > 0) {
332
+ lines.push("\nSUGGESTIONS:");
333
+ results.suggestions.forEach((suggestion) =>
334
+ lines.push(` - ${suggestion}`)
335
+ );
336
+ }
337
+
338
+ // File size info
339
+ if (results.checks.fileSize?.size) {
340
+ lines.push(`\nFile Size: ${formatBytes(results.checks.fileSize.size)}`);
341
+ }
342
+
343
+ lines.push("\n" + "=".repeat(60));
344
+
345
+ return lines.join("\n");
346
+ }
347
+
348
+ /**
349
+ * Main
350
+ */
351
+ function main() {
352
+ const args = process.argv.slice(2);
353
+ const jsonOutput = args.includes("--json");
354
+ const assetPath = args.find((a) => !a.startsWith("--"));
355
+
356
+ if (!assetPath) {
357
+ console.error("Usage: node validate-asset.cjs <asset-path> [--json]");
358
+ console.error("\nExamples:");
359
+ console.error(
360
+ " node validate-asset.cjs assets/banners/social-media/banner_launch_hero_20251209.png"
361
+ );
362
+ console.error(
363
+ " node validate-asset.cjs assets/logos/icon-only/logo-icon.svg --json"
364
+ );
365
+ process.exit(1);
366
+ }
367
+
368
+ // Resolve path
369
+ const resolvedPath = path.isAbsolute(assetPath)
370
+ ? assetPath
371
+ : path.join(process.cwd(), assetPath);
372
+
373
+ // Validate
374
+ const results = validateAsset(resolvedPath);
375
+
376
+ // Output
377
+ if (jsonOutput) {
378
+ console.log(JSON.stringify(results, null, 2));
379
+ } else {
380
+ console.log(formatOutput(results));
381
+ }
382
+
383
+ // Exit with appropriate code
384
+ process.exit(results.valid ? 0 : 1);
385
+ }
386
+
387
+ main();
@@ -0,0 +1,275 @@
1
+ # Brand Guidelines v1.0
2
+
3
+ > Last updated: {DATE}
4
+ > Status: Draft
5
+
6
+ ## Quick Reference
7
+
8
+ | Element | Value |
9
+ |---------|-------|
10
+ | Primary Color | #2563EB |
11
+ | Secondary Color | #8B5CF6 |
12
+ | Primary Font | Inter |
13
+ | Voice | Professional, Helpful, Clear |
14
+
15
+ ---
16
+
17
+ ## 1. Color Palette
18
+
19
+ ### Primary Colors
20
+
21
+ | Name | Hex | RGB | Usage |
22
+ |------|-----|-----|-------|
23
+ | Primary Blue | #2563EB | rgb(37,99,235) | CTAs, headers, links |
24
+ | Primary Dark | #1D4ED8 | rgb(29,78,216) | Hover states, emphasis |
25
+
26
+ ### Secondary Colors
27
+
28
+ | Name | Hex | RGB | Usage |
29
+ |------|-----|-----|-------|
30
+ | Secondary Purple | #8B5CF6 | rgb(139,92,246) | Accents, highlights |
31
+ | Accent Green | #10B981 | rgb(16,185,129) | Success, positive states |
32
+
33
+ ### Neutral Palette
34
+
35
+ | Name | Hex | RGB | Usage |
36
+ |------|-----|-----|-------|
37
+ | Background | #FFFFFF | rgb(255,255,255) | Page backgrounds |
38
+ | Surface | #F9FAFB | rgb(249,250,251) | Cards, sections |
39
+ | Text Primary | #111827 | rgb(17,24,39) | Headings, body text |
40
+ | Text Secondary | #6B7280 | rgb(107,114,128) | Captions, muted text |
41
+ | Border | #E5E7EB | rgb(229,231,235) | Dividers, borders |
42
+
43
+ ### Semantic Colors
44
+
45
+ | State | Hex | Usage |
46
+ |-------|-----|-------|
47
+ | Success | #22C55E | Positive actions, confirmations |
48
+ | Warning | #F59E0B | Cautions, pending states |
49
+ | Error | #EF4444 | Errors, destructive actions |
50
+ | Info | #3B82F6 | Informational messages |
51
+
52
+ ### Accessibility
53
+
54
+ - Text on white background: 7.2:1 contrast ratio (AAA)
55
+ - Primary on white: 4.6:1 contrast ratio (AA)
56
+ - All interactive elements meet WCAG 2.1 AA standards
57
+
58
+ ---
59
+
60
+ ## 2. Typography
61
+
62
+ ### Font Stack
63
+
64
+ ```css
65
+ --font-heading: 'Inter', system-ui, -apple-system, sans-serif;
66
+ --font-body: 'Inter', system-ui, -apple-system, sans-serif;
67
+ --font-mono: 'JetBrains Mono', 'Fira Code', monospace;
68
+ ```
69
+
70
+ ### Type Scale
71
+
72
+ | Element | Size (Desktop) | Size (Mobile) | Weight | Line Height |
73
+ |---------|----------------|---------------|--------|-------------|
74
+ | H1 | 48px | 32px | 700 | 1.2 |
75
+ | H2 | 36px | 28px | 600 | 1.25 |
76
+ | H3 | 28px | 24px | 600 | 1.3 |
77
+ | H4 | 24px | 20px | 600 | 1.35 |
78
+ | Body | 16px | 16px | 400 | 1.5 |
79
+ | Body Large | 18px | 18px | 400 | 1.6 |
80
+ | Small | 14px | 14px | 400 | 1.5 |
81
+ | Caption | 12px | 12px | 400 | 1.4 |
82
+
83
+ ### Font Loading
84
+
85
+ ```html
86
+ <link rel="preconnect" href="https://fonts.googleapis.com">
87
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 3. Logo Usage
93
+
94
+ ### Variants
95
+
96
+ | Variant | File | Use Case |
97
+ |---------|------|----------|
98
+ | Full Horizontal | logo-full-horizontal.svg | Headers, documents |
99
+ | Stacked | logo-stacked.svg | Square spaces |
100
+ | Icon Only | logo-icon.svg | Favicons, small spaces |
101
+ | Monochrome | logo-mono.svg | Limited color contexts |
102
+
103
+ ### Clear Space
104
+
105
+ Minimum clear space = height of the logo icon (mark)
106
+
107
+ ### Minimum Size
108
+
109
+ | Context | Minimum Width |
110
+ |---------|---------------|
111
+ | Digital - Full Logo | 120px |
112
+ | Digital - Icon | 24px |
113
+ | Print - Full Logo | 35mm |
114
+ | Print - Icon | 10mm |
115
+
116
+ ### Don'ts
117
+
118
+ - Don't rotate or skew the logo
119
+ - Don't change colors outside approved palette
120
+ - Don't add shadows or effects
121
+ - Don't crop or modify proportions
122
+ - Don't place on busy backgrounds without sufficient contrast
123
+
124
+ ---
125
+
126
+ ## 4. Voice & Tone
127
+
128
+ ### Brand Personality
129
+
130
+ | Trait | Description |
131
+ |-------|-------------|
132
+ | **Professional** | Expert knowledge, authoritative yet approachable |
133
+ | **Helpful** | Solution-focused, actionable guidance |
134
+ | **Clear** | Direct communication, jargon-free |
135
+ | **Confident** | Assured without being arrogant |
136
+
137
+ ### Voice Chart
138
+
139
+ | Trait | We Are | We Are Not |
140
+ |-------|--------|------------|
141
+ | Professional | Expert, knowledgeable | Stuffy, corporate |
142
+ | Helpful | Supportive, empowering | Patronizing |
143
+ | Clear | Direct, concise | Vague, wordy |
144
+ | Confident | Assured, trustworthy | Arrogant, overselling |
145
+
146
+ ### Tone by Context
147
+
148
+ | Context | Tone | Example |
149
+ |---------|------|---------|
150
+ | Marketing | Engaging, benefit-focused | "Create campaigns that convert." |
151
+ | Documentation | Clear, instructional | "Run the command to start." |
152
+ | Error messages | Calm, solution-focused | "Try refreshing the page." |
153
+ | Success | Brief, celebratory | "Campaign published!" |
154
+
155
+ ### Prohibited Terms
156
+
157
+ | Avoid | Reason |
158
+ |-------|--------|
159
+ | Revolutionary | Overused |
160
+ | Best-in-class | Vague claim |
161
+ | Seamless | Overused |
162
+ | Synergy | Corporate jargon |
163
+ | Leverage | Use "use" instead |
164
+
165
+ ---
166
+
167
+ ## 5. Imagery Guidelines
168
+
169
+ ### Photography Style
170
+
171
+ - **Lighting:** Natural, soft lighting preferred
172
+ - **Subjects:** Real people, authentic scenarios
173
+ - **Color treatment:** Maintain brand colors in post
174
+ - **Composition:** Clean, focused subjects
175
+
176
+ ### Illustrations
177
+
178
+ - Style: Modern, flat design with subtle gradients
179
+ - Colors: Brand palette only
180
+ - Line weight: 2px consistent stroke
181
+ - Corners: 4px rounded
182
+
183
+ ### Icons
184
+
185
+ - Style: Outlined, 24px base grid
186
+ - Stroke: 1.5px consistent
187
+ - Corner radius: 2px
188
+ - Fill: None (outline only)
189
+
190
+ ---
191
+
192
+ ## 6. Design Components
193
+
194
+ ### Buttons
195
+
196
+ | Type | Background | Text | Border Radius |
197
+ |------|------------|------|---------------|
198
+ | Primary | #2563EB | #FFFFFF | 8px |
199
+ | Secondary | Transparent | #2563EB | 8px |
200
+ | Tertiary | Transparent | #6B7280 | 8px |
201
+
202
+ ### Spacing Scale
203
+
204
+ | Token | Value | Usage |
205
+ |-------|-------|-------|
206
+ | xs | 4px | Tight spacing |
207
+ | sm | 8px | Compact elements |
208
+ | md | 16px | Standard spacing |
209
+ | lg | 24px | Section spacing |
210
+ | xl | 32px | Large gaps |
211
+ | 2xl | 48px | Section dividers |
212
+
213
+ ### Border Radius
214
+
215
+ | Element | Radius |
216
+ |---------|--------|
217
+ | Buttons | 8px |
218
+ | Cards | 12px |
219
+ | Inputs | 8px |
220
+ | Modals | 16px |
221
+ | Pills/Tags | 9999px |
222
+
223
+ ---
224
+
225
+ ## AI Image Generation
226
+
227
+ ### Base Prompt Template
228
+
229
+ Always prepend to image generation prompts:
230
+
231
+ ```
232
+ {DESCRIBE YOUR VISUAL STYLE HERE - mood, colors with hex codes, lighting, atmosphere}
233
+ ```
234
+
235
+ ### Style Keywords
236
+
237
+ | Category | Keywords |
238
+ |----------|----------|
239
+ | **Lighting** | {e.g., soft lighting, dramatic, natural} |
240
+ | **Mood** | {e.g., professional, energetic, calm} |
241
+ | **Composition** | {e.g., centered, rule of thirds, minimal} |
242
+ | **Treatment** | {e.g., high contrast, muted, vibrant} |
243
+ | **Aesthetic** | {e.g., modern, vintage, minimalist} |
244
+
245
+ ### Visual Mood Descriptors
246
+
247
+ - {Mood descriptor 1}
248
+ - {Mood descriptor 2}
249
+ - {Mood descriptor 3}
250
+
251
+ ### Visual Don'ts
252
+
253
+ | Avoid | Reason |
254
+ |-------|--------|
255
+ | {Item to avoid} | {Why to avoid it} |
256
+
257
+ ### Example Prompts
258
+
259
+ **Hero Banner:**
260
+ ```
261
+ {Example prompt for hero banners}
262
+ ```
263
+
264
+ **Social Media Post:**
265
+ ```
266
+ {Example prompt for social graphics}
267
+ ```
268
+
269
+ ---
270
+
271
+ ## Changelog
272
+
273
+ | Version | Date | Changes |
274
+ |---------|------|---------|
275
+ | 1.0 | {DATE} | Initial guidelines |