@caoscompanybr/merlin 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (762) hide show
  1. package/.claude/CLAUDE.md +216 -0
  2. package/.claude/hooks/README-license-gate.md +45 -0
  3. package/.claude/hooks/auto-summarize.js +47 -0
  4. package/.claude/hooks/context-monitor.js +60 -0
  5. package/.claude/hooks/doc-sync.js +111 -0
  6. package/.claude/hooks/license-gate.cjs +59 -0
  7. package/.claude/hooks/session-reset.js +27 -0
  8. package/.claude/hooks/thoughts-indexer.js +80 -0
  9. package/.claude/rules/merlin-constitution.md +27 -0
  10. package/.merlin-core/commands/README.md +19 -0
  11. package/.merlin-core/commands/founder-mode.md +51 -0
  12. package/.merlin-core/commands/git/commit.md +35 -0
  13. package/.merlin-core/commands/git/describe-pr.md +43 -0
  14. package/.merlin-core/commands/git/safe-commit.md +182 -0
  15. package/.merlin-core/commands/implementation/implement-plan.md +129 -0
  16. package/.merlin-core/commands/implementation/oneshot.md +63 -0
  17. package/.merlin-core/commands/implementation/tdd.md +152 -0
  18. package/.merlin-core/commands/planning/create-plan.md +184 -0
  19. package/.merlin-core/commands/planning/iterate-plan.md +45 -0
  20. package/.merlin-core/commands/planning/validate-plan.md +48 -0
  21. package/.merlin-core/commands/research/analyze-issue.md +155 -0
  22. package/.merlin-core/commands/research/research-codebase.md +157 -0
  23. package/.merlin-core/commands/review/adversarial-review.md +112 -0
  24. package/.merlin-core/commands/review/check.md +91 -0
  25. package/.merlin-core/commands/review/debug.md +135 -0
  26. package/.merlin-core/commands/review/doubts.md +178 -0
  27. package/.merlin-core/commands/review/engineering-audit.md +87 -0
  28. package/.merlin-core/commands/review/local-review.md +48 -0
  29. package/.merlin-core/commands/review/verify-goals.md +83 -0
  30. package/.merlin-core/commands/session/capture-feedback.md +74 -0
  31. package/.merlin-core/commands/session/capture-learning.md +155 -0
  32. package/.merlin-core/commands/session/check-objectives.md +85 -0
  33. package/.merlin-core/commands/session/conclude.md +125 -0
  34. package/.merlin-core/commands/session/create-handoff.md +88 -0
  35. package/.merlin-core/commands/session/create-objective.md +111 -0
  36. package/.merlin-core/commands/session/create-process.md +105 -0
  37. package/.merlin-core/commands/session/create-reminder.md +86 -0
  38. package/.merlin-core/commands/session/fast-start.md +261 -0
  39. package/.merlin-core/commands/session/recall-learnings.md +79 -0
  40. package/.merlin-core/commands/session/recall-processes.md +74 -0
  41. package/.merlin-core/commands/session/resume-handoff.md +51 -0
  42. package/.merlin-core/commands/session/run-process.md +53 -0
  43. package/.merlin-core/commands/special/beauty.md +89 -0
  44. package/.merlin-core/commands/special/common-ground.md +114 -0
  45. package/.merlin-core/commands/special/elicit.md +98 -0
  46. package/.merlin-core/commands/special/party.md +66 -0
  47. package/.merlin-core/commands/special/scrape.md +78 -0
  48. package/.merlin-core/commands/special/skill-audit.md +128 -0
  49. package/.merlin-core/commands/special/start-here.md +132 -0
  50. package/.merlin-core/constitution.md +442 -0
  51. package/.merlin-core/core/README.md +19 -0
  52. package/.merlin-core/core/alkimia/README.md +20 -0
  53. package/.merlin-core/core/alkimia/context/context-tracker.js +209 -0
  54. package/.merlin-core/core/alkimia/domain/domain-loader.js +215 -0
  55. package/.merlin-core/core/alkimia/engine.js +284 -0
  56. package/.merlin-core/core/alkimia/layers/l0-constitution.js +47 -0
  57. package/.merlin-core/core/alkimia/layers/l1-global.js +58 -0
  58. package/.merlin-core/core/alkimia/layers/l2-agent.js +58 -0
  59. package/.merlin-core/core/alkimia/layers/l3-workflow.js +54 -0
  60. package/.merlin-core/core/alkimia/layers/l4-task.js +45 -0
  61. package/.merlin-core/core/alkimia/layers/l5-squad.js +161 -0
  62. package/.merlin-core/core/alkimia/layers/l6-skill.js +520 -0
  63. package/.merlin-core/core/alkimia/layers/l7-star-command.js +87 -0
  64. package/.merlin-core/core/alkimia/layers/layer-processor.js +78 -0
  65. package/.merlin-core/core/alkimia/mandate.js +46 -0
  66. package/.merlin-core/core/alkimia/memory/doc-sync.js +201 -0
  67. package/.merlin-core/core/alkimia/memory/document-sharder.js +272 -0
  68. package/.merlin-core/core/alkimia/memory/git-history-retriever.js +225 -0
  69. package/.merlin-core/core/alkimia/memory/memory-bridge.js +97 -0
  70. package/.merlin-core/core/alkimia/memory/session-analyzer.js +400 -0
  71. package/.merlin-core/core/alkimia/memory/thoughts-indexer.js +477 -0
  72. package/.merlin-core/core/alkimia/memory/thoughts-provider.js +603 -0
  73. package/.merlin-core/core/alkimia/output/formatter.js +464 -0
  74. package/.merlin-core/core/alkimia/security/content-sanitizer.js +140 -0
  75. package/.merlin-core/core/alkimia/skill-importer.js +440 -0
  76. package/.merlin-core/core/alkimia/squads/default/.synapse/manifest +17 -0
  77. package/.merlin-core/core/alkimia/utils/frontmatter.js +321 -0
  78. package/.merlin-core/core/alkimia/utils/tokens.js +24 -0
  79. package/.merlin-core/core/approval/README.md +16 -0
  80. package/.merlin-core/core/approval/approval-engine.js +380 -0
  81. package/.merlin-core/core/approval/channels/cli-channel.js +50 -0
  82. package/.merlin-core/core/config/README.md +17 -0
  83. package/.merlin-core/core/config/config-cache.js +182 -0
  84. package/.merlin-core/core/config/config-loader.js +279 -0
  85. package/.merlin-core/core/config/config-resolver.js +411 -0
  86. package/.merlin-core/core/config/env-interpolator.js +123 -0
  87. package/.merlin-core/core/config/merge-utils.js +102 -0
  88. package/.merlin-core/core/config/schemas/core-config.schema.json +41 -0
  89. package/.merlin-core/core/config/schemas/framework-config.schema.json +24 -0
  90. package/.merlin-core/core/config/schemas/local-config.schema.json +23 -0
  91. package/.merlin-core/core/config/schemas/project-config.schema.json +189 -0
  92. package/.merlin-core/core/docs-consistency.js +140 -0
  93. package/.merlin-core/core/events/event-bus.js +344 -0
  94. package/.merlin-core/core/events/hook-handler.js +419 -0
  95. package/.merlin-core/core/execution/README.md +17 -0
  96. package/.merlin-core/core/execution/attempt-journal.js +380 -0
  97. package/.merlin-core/core/execution/autonomous-build-loop.js +637 -0
  98. package/.merlin-core/core/execution/build-orchestrator.js +296 -0
  99. package/.merlin-core/core/execution/build-state-manager.js +196 -0
  100. package/.merlin-core/core/execution/context-injector.js +204 -0
  101. package/.merlin-core/core/execution/cron-engine.js +247 -0
  102. package/.merlin-core/core/execution/cron-expression.js +148 -0
  103. package/.merlin-core/core/execution/env-preflight.js +423 -0
  104. package/.merlin-core/core/execution/guardrail-engine.js +745 -0
  105. package/.merlin-core/core/execution/heartbeat-engine.js +198 -0
  106. package/.merlin-core/core/execution/model-router.js +282 -0
  107. package/.merlin-core/core/execution/parallel-executor.js +378 -0
  108. package/.merlin-core/core/execution/parallel-monitor.js +201 -0
  109. package/.merlin-core/core/execution/party-session.js +311 -0
  110. package/.merlin-core/core/execution/rate-limit-manager.js +152 -0
  111. package/.merlin-core/core/execution/result-aggregator.js +215 -0
  112. package/.merlin-core/core/execution/semantic-merge-engine.js +320 -0
  113. package/.merlin-core/core/execution/subagent-dispatcher.js +721 -0
  114. package/.merlin-core/core/execution/success-verifier.js +227 -0
  115. package/.merlin-core/core/execution/task-metadata.js +105 -0
  116. package/.merlin-core/core/execution/team-executor.js +195 -0
  117. package/.merlin-core/core/execution/two-tier-editor.js +290 -0
  118. package/.merlin-core/core/execution/version-snapshot.js +294 -0
  119. package/.merlin-core/core/execution/wave-executor.js +224 -0
  120. package/.merlin-core/core/health-check/health-engine.js +415 -0
  121. package/.merlin-core/core/licensing/activation.js +281 -0
  122. package/.merlin-core/core/licensing/crc.js +103 -0
  123. package/.merlin-core/core/licensing/entitlement.js +99 -0
  124. package/.merlin-core/core/licensing/fingerprint.js +104 -0
  125. package/.merlin-core/core/licensing/gate.js +133 -0
  126. package/.merlin-core/core/licensing/hmac.js +42 -0
  127. package/.merlin-core/core/licensing/key.js +144 -0
  128. package/.merlin-core/core/licensing/license.js +212 -0
  129. package/.merlin-core/core/mcp/README.md +16 -0
  130. package/.merlin-core/core/mcp/browser-capability.js +191 -0
  131. package/.merlin-core/core/mcp/capability-mapper.js +92 -0
  132. package/.merlin-core/core/mcp/mcp-connector.js +278 -0
  133. package/.merlin-core/core/mcp/mcp-registry.js +101 -0
  134. package/.merlin-core/core/orchestration/README.md +17 -0
  135. package/.merlin-core/core/orchestration/agent-invoker.js +456 -0
  136. package/.merlin-core/core/orchestration/condition-evaluator.js +250 -0
  137. package/.merlin-core/core/orchestration/decision-tree.js +192 -0
  138. package/.merlin-core/core/orchestration/executor-assignment.js +372 -0
  139. package/.merlin-core/core/orchestration/gate-evaluator.js +653 -0
  140. package/.merlin-core/core/orchestration/intent-classifier.js +579 -0
  141. package/.merlin-core/core/orchestration/lock-manager.js +308 -0
  142. package/.merlin-core/core/orchestration/master-orchestrator.js +363 -0
  143. package/.merlin-core/core/orchestration/phase-tool-masks.js +194 -0
  144. package/.merlin-core/core/orchestration/recovery-handler.js +402 -0
  145. package/.merlin-core/core/orchestration/reflect-checkpoint.js +431 -0
  146. package/.merlin-core/core/orchestration/session-state.js +430 -0
  147. package/.merlin-core/core/orchestration/skill-dispatcher.js +255 -0
  148. package/.merlin-core/core/orchestration/step-loader.js +226 -0
  149. package/.merlin-core/core/orchestration/workflow-executor.js +864 -0
  150. package/.merlin-core/core/process/executor.js +231 -0
  151. package/.merlin-core/core/process/process-file.js +50 -0
  152. package/.merlin-core/core/process/secret-scan.js +86 -0
  153. package/.merlin-core/core/process/signature.js +77 -0
  154. package/.merlin-core/core/quality-gates/README.md +17 -0
  155. package/.merlin-core/core/quality-gates/layer1-precommit.js +110 -0
  156. package/.merlin-core/core/quality-gates/layer2-pr-automation.js +116 -0
  157. package/.merlin-core/core/quality-gates/layer3-human-review.js +133 -0
  158. package/.merlin-core/core/registry/service-registry.js +140 -0
  159. package/.merlin-core/core-config.yaml +159 -0
  160. package/.merlin-core/development/README.md +17 -0
  161. package/.merlin-core/development/agents/README.md +16 -0
  162. package/.merlin-core/development/agents/analyst.md +214 -0
  163. package/.merlin-core/development/agents/architect.md +166 -0
  164. package/.merlin-core/development/agents/data-engineer.md +154 -0
  165. package/.merlin-core/development/agents/dev.md +203 -0
  166. package/.merlin-core/development/agents/devops.md +236 -0
  167. package/.merlin-core/development/agents/grimorio.md +125 -0
  168. package/.merlin-core/development/agents/merlin-master.md +173 -0
  169. package/.merlin-core/development/agents/meta.md +190 -0
  170. package/.merlin-core/development/agents/pm.md +145 -0
  171. package/.merlin-core/development/agents/po.md +172 -0
  172. package/.merlin-core/development/agents/qa.md +275 -0
  173. package/.merlin-core/development/agents/researcher.md +218 -0
  174. package/.merlin-core/development/agents/scout.md +179 -0
  175. package/.merlin-core/development/agents/sm.md +148 -0
  176. package/.merlin-core/development/agents/ux.md +169 -0
  177. package/.merlin-core/development/agents/web-researcher.md +203 -0
  178. package/.merlin-core/development/checklists/adversarial-review-checklist.md +70 -0
  179. package/.merlin-core/development/checklists/operations-ci-checklist.md +40 -0
  180. package/.merlin-core/development/checklists/operations-deploy-checklist.md +54 -0
  181. package/.merlin-core/development/checklists/operations-publish-checklist.md +47 -0
  182. package/.merlin-core/development/checklists/source-verification-checklist.md +38 -0
  183. package/.merlin-core/development/templates/HEARTBEAT-template.md +46 -0
  184. package/.merlin-core/development/templates/ears-requirements-template.md +93 -0
  185. package/.merlin-core/development/templates/handoff-template.md +50 -0
  186. package/.merlin-core/development/templates/prd-template.md +62 -0
  187. package/.merlin-core/development/templates/research-template.md +53 -0
  188. package/.merlin-core/development/templates/spec-template.md +84 -0
  189. package/.merlin-core/development/workflows/brownfield-discovery.yaml +166 -0
  190. package/.merlin-core/development/workflows/brownfield-service.yaml +52 -0
  191. package/.merlin-core/development/workflows/development-cycle.yaml +57 -0
  192. package/.merlin-core/development/workflows/epic-orchestration.yaml +47 -0
  193. package/.merlin-core/development/workflows/folloni-funnel.yaml +177 -0
  194. package/.merlin-core/development/workflows/greenfield-fullstack.yaml +167 -0
  195. package/.merlin-core/development/workflows/greenfield-service.yaml +56 -0
  196. package/.merlin-core/development/workflows/qa-loop.yaml +115 -0
  197. package/.merlin-core/development/workflows/spec-pipeline.yaml +185 -0
  198. package/.merlin-core/development/workflows/steps/folloni-01-research.yaml +35 -0
  199. package/.merlin-core/development/workflows/steps/folloni-02-architecture.yaml +41 -0
  200. package/.merlin-core/development/workflows/steps/folloni-03-implementation.yaml +52 -0
  201. package/.merlin-core/development/workflows/story-development-cycle.yaml +67 -0
  202. package/.merlin-core/docs/GUIDE.md +413 -0
  203. package/.merlin-core/docs/merlin-commands-guide-pt.md +183 -0
  204. package/.merlin-core/framework-config.yaml +148 -0
  205. package/.merlin-core/hooks/README.md +16 -0
  206. package/.merlin-core/hooks/precompact-memory-flush.js +69 -0
  207. package/.merlin-core/hooks/pretooluse-remote-approve.js +113 -0
  208. package/.merlin-core/hooks/spikes/spike-b-hook.js +70 -0
  209. package/.merlin-core/hooks/spikes/spike-b-stub.js +70 -0
  210. package/.merlin-core/index.js +91 -0
  211. package/.merlin-core/local-config.yaml.template +31 -0
  212. package/.merlin-core/mcp-servers/lsp-bridge/index.js +397 -0
  213. package/.merlin-core/modules/scraping/module.json +23 -0
  214. package/.merlin-core/project-config.yaml +89 -0
  215. package/.merlin-core/schemas/README.md +18 -0
  216. package/.merlin-core/schemas/agent-hook-schema.json +152 -0
  217. package/.merlin-core/schemas/agent-schema.json +31 -0
  218. package/.merlin-core/schemas/command-schema.json +18 -0
  219. package/.merlin-core/schemas/feedback-schema.json +36 -0
  220. package/.merlin-core/schemas/handoff-schema.json +19 -0
  221. package/.merlin-core/schemas/learning-schema.json +51 -0
  222. package/.merlin-core/schemas/module.schema.json +124 -0
  223. package/.merlin-core/schemas/must-haves-schema.json +95 -0
  224. package/.merlin-core/schemas/objective-schema.json +23 -0
  225. package/.merlin-core/schemas/plan-schema.json +20 -0
  226. package/.merlin-core/schemas/process-schema.json +82 -0
  227. package/.merlin-core/schemas/reminder-schema.json +20 -0
  228. package/.merlin-core/schemas/skill-eval-schema.json +92 -0
  229. package/.merlin-core/schemas/skill-schema.json +77 -0
  230. package/.merlin-core/schemas/workflow-schema.json +38 -0
  231. package/.merlin-core/skills/README.md +16 -0
  232. package/.merlin-core/skills/domain/azure-cloud/SKILL.md +211 -0
  233. package/.merlin-core/skills/domain/azure-cloud/references/appinsights-instrumentation.md +63 -0
  234. package/.merlin-core/skills/domain/azure-cloud/references/azure-compliance.md +99 -0
  235. package/.merlin-core/skills/domain/azure-cloud/references/azure-cost-optimization.md +419 -0
  236. package/.merlin-core/skills/domain/azure-cloud/references/azure-deploy.md +82 -0
  237. package/.merlin-core/skills/domain/azure-cloud/references/azure-diagnostics.md +130 -0
  238. package/.merlin-core/skills/domain/azure-cloud/references/azure-prepare.md +134 -0
  239. package/.merlin-core/skills/domain/azure-cloud/references/azure-quotas.md +290 -0
  240. package/.merlin-core/skills/domain/azure-cloud/references/azure-rbac.md +11 -0
  241. package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-lookup.md +97 -0
  242. package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-visualizer.md +178 -0
  243. package/.merlin-core/skills/domain/azure-cloud/references/azure-storage.md +91 -0
  244. package/.merlin-core/skills/domain/azure-cloud/references/azure-validate.md +58 -0
  245. package/.merlin-core/skills/domain/azure-cloud/references/entra-app-registration.md +192 -0
  246. package/.merlin-core/skills/domain/browser-automation/SKILL.md +311 -0
  247. package/.merlin-core/skills/domain/browser-automation/references/agent-browser-skill.md +632 -0
  248. package/.merlin-core/skills/domain/browser-automation/references/authentication.md +308 -0
  249. package/.merlin-core/skills/domain/browser-automation/references/commands.md +266 -0
  250. package/.merlin-core/skills/domain/browser-automation/references/profiling.md +120 -0
  251. package/.merlin-core/skills/domain/browser-automation/references/proxy-support.md +194 -0
  252. package/.merlin-core/skills/domain/browser-automation/references/session-management.md +194 -0
  253. package/.merlin-core/skills/domain/browser-automation/references/snapshot-refs.md +196 -0
  254. package/.merlin-core/skills/domain/browser-automation/references/video-recording.md +173 -0
  255. package/.merlin-core/skills/domain/browser-automation/templates/authenticated-session.sh +105 -0
  256. package/.merlin-core/skills/domain/browser-automation/templates/capture-workflow.sh +69 -0
  257. package/.merlin-core/skills/domain/browser-automation/templates/form-automation.sh +62 -0
  258. package/.merlin-core/skills/domain/digital-marketing/SKILL.md +292 -0
  259. package/.merlin-core/skills/domain/digital-marketing/references/content-strategy.md +320 -0
  260. package/.merlin-core/skills/domain/digital-marketing/references/copy-formats.md +298 -0
  261. package/.merlin-core/skills/domain/digital-marketing/references/copy-methodology.md +180 -0
  262. package/.merlin-core/skills/domain/digital-marketing/references/email-sequences.md +135 -0
  263. package/.merlin-core/skills/domain/digital-marketing/references/launch-strategy.md +213 -0
  264. package/.merlin-core/skills/domain/digital-marketing/references/pricing-strategy.md +160 -0
  265. package/.merlin-core/skills/domain/digital-marketing/references/programmatic-seo.md +237 -0
  266. package/.merlin-core/skills/domain/digital-marketing/references/revops-lifecycle.md +170 -0
  267. package/.merlin-core/skills/domain/digital-marketing/references/revops-operations.md +167 -0
  268. package/.merlin-core/skills/domain/digital-marketing/references/schema-markup.md +190 -0
  269. package/.merlin-core/skills/domain/digital-marketing/references/strategy-frameworks.md +324 -0
  270. package/.merlin-core/skills/domain/digital-marketing/references/traffic-management.md +350 -0
  271. package/.merlin-core/skills/domain/expo-native-ui/SKILL.md +348 -0
  272. package/.merlin-core/skills/domain/expo-native-ui/references/animations.md +220 -0
  273. package/.merlin-core/skills/domain/expo-native-ui/references/api-routes.md +361 -0
  274. package/.merlin-core/skills/domain/expo-native-ui/references/cicd-workflows.md +84 -0
  275. package/.merlin-core/skills/domain/expo-native-ui/references/controls.md +266 -0
  276. package/.merlin-core/skills/domain/expo-native-ui/references/data-fetching.md +553 -0
  277. package/.merlin-core/skills/domain/expo-native-ui/references/deployment-stores.md +1353 -0
  278. package/.merlin-core/skills/domain/expo-native-ui/references/deployment.md +183 -0
  279. package/.merlin-core/skills/domain/expo-native-ui/references/dev-client.md +166 -0
  280. package/.merlin-core/skills/domain/expo-native-ui/references/dom-components.md +410 -0
  281. package/.merlin-core/skills/domain/expo-native-ui/references/form-sheet.md +253 -0
  282. package/.merlin-core/skills/domain/expo-native-ui/references/gradients.md +117 -0
  283. package/.merlin-core/skills/domain/expo-native-ui/references/icons.md +218 -0
  284. package/.merlin-core/skills/domain/expo-native-ui/references/media.md +245 -0
  285. package/.merlin-core/skills/domain/expo-native-ui/references/platform-native.md +75 -0
  286. package/.merlin-core/skills/domain/expo-native-ui/references/route-structure.md +229 -0
  287. package/.merlin-core/skills/domain/expo-native-ui/references/search.md +249 -0
  288. package/.merlin-core/skills/domain/expo-native-ui/references/storage.md +121 -0
  289. package/.merlin-core/skills/domain/expo-native-ui/references/tabs.md +433 -0
  290. package/.merlin-core/skills/domain/expo-native-ui/references/tailwind-native.md +473 -0
  291. package/.merlin-core/skills/domain/expo-native-ui/references/toolbar-and-headers.md +284 -0
  292. package/.merlin-core/skills/domain/expo-native-ui/references/upgrading-guides.md +674 -0
  293. package/.merlin-core/skills/domain/expo-native-ui/references/upgrading.md +127 -0
  294. package/.merlin-core/skills/domain/expo-native-ui/references/visual-effects.md +199 -0
  295. package/.merlin-core/skills/domain/expo-native-ui/references/webgpu-three.md +605 -0
  296. package/.merlin-core/skills/domain/expo-native-ui/references/zoom-transitions.md +161 -0
  297. package/.merlin-core/skills/domain/marketing-ops/SKILL.md +117 -0
  298. package/.merlin-core/skills/domain/marketing-ops/references/_index.md +78 -0
  299. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/generative-tools.md +19 -0
  300. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/platform-specs.md +19 -0
  301. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative.md +251 -0
  302. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/ad-copy-templates.md +19 -0
  303. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/audience-targeting.md +19 -0
  304. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/conversion-tracking.md +19 -0
  305. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/platform-setup-checklists.md +19 -0
  306. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads.md +322 -0
  307. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-patterns.md +19 -0
  308. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-types.md +19 -0
  309. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/platform-ranking-factors.md +19 -0
  310. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo.md +388 -0
  311. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/apple-specs.md +19 -0
  312. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/benchmarks.md +19 -0
  313. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/google-play-specs.md +19 -0
  314. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/report-template.md +19 -0
  315. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/scoring-criteria.md +19 -0
  316. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso.md +316 -0
  317. package/.merlin-core/skills/domain/marketing-ops/references/acquire/co-marketing.md +305 -0
  318. package/.merlin-core/skills/domain/marketing-ops/references/acquire/community-marketing.md +169 -0
  319. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/templates.md +19 -0
  320. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/tool-reference.md +19 -0
  321. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling.md +442 -0
  322. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/content-architecture.md +19 -0
  323. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/templates.md +19 -0
  324. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors.md +281 -0
  325. package/.merlin-core/skills/domain/marketing-ops/references/acquire/content-strategy.md +16 -0
  326. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/directory-list.md +19 -0
  327. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/positioning-variations.md +19 -0
  328. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/submission-tracker-template.md +19 -0
  329. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions.md +396 -0
  330. package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools/references/tool-types.md +19 -0
  331. package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools.md +196 -0
  332. package/.merlin-core/skills/domain/marketing-ops/references/acquire/image/references/ai-image-prompting.md +19 -0
  333. package/.merlin-core/skills/domain/marketing-ops/references/acquire/image.md +352 -0
  334. package/.merlin-core/skills/domain/marketing-ops/references/acquire/launch.md +18 -0
  335. package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/benchmarks.md +19 -0
  336. package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/format-guide.md +19 -0
  337. package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets.md +333 -0
  338. package/.merlin-core/skills/domain/marketing-ops/references/acquire/programmatic-seo.md +16 -0
  339. package/.merlin-core/skills/domain/marketing-ops/references/acquire/schema.md +16 -0
  340. package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/ai-writing-detection.md +19 -0
  341. package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/international-seo.md +19 -0
  342. package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit.md +546 -0
  343. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/mermaid-templates.md +19 -0
  344. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/navigation-patterns.md +19 -0
  345. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/site-type-templates.md +19 -0
  346. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture.md +371 -0
  347. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platform-limits.md +19 -0
  348. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platforms.md +19 -0
  349. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/post-templates.md +19 -0
  350. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/reverse-engineering.md +19 -0
  351. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/short-form-video.md +19 -0
  352. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social.md +431 -0
  353. package/.merlin-core/skills/domain/marketing-ops/references/acquire/video/references/ai-video-prompting.md +19 -0
  354. package/.merlin-core/skills/domain/marketing-ops/references/acquire/video.md +353 -0
  355. package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/sample-size-guide.md +19 -0
  356. package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/test-templates.md +19 -0
  357. package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing.md +379 -0
  358. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/event-library.md +19 -0
  359. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/ga4-implementation.md +19 -0
  360. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/gtm-implementation.md +19 -0
  361. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics.md +323 -0
  362. package/.merlin-core/skills/domain/marketing-ops/references/activate/copy-editing.md +18 -0
  363. package/.merlin-core/skills/domain/marketing-ops/references/activate/copywriting.md +18 -0
  364. package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/experiments.md +19 -0
  365. package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/form.md +19 -0
  366. package/.merlin-core/skills/domain/marketing-ops/references/activate/cro.md +211 -0
  367. package/.merlin-core/skills/domain/marketing-ops/references/activate/emails.md +18 -0
  368. package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls/references/experiments.md +19 -0
  369. package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls.md +255 -0
  370. package/.merlin-core/skills/domain/marketing-ops/references/activate/popups.md +518 -0
  371. package/.merlin-core/skills/domain/marketing-ops/references/activate/pricing.md +18 -0
  372. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/deck-frameworks.md +19 -0
  373. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/demo-scripts.md +19 -0
  374. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/objection-library.md +19 -0
  375. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/one-pager-templates.md +19 -0
  376. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement.md +371 -0
  377. package/.merlin-core/skills/domain/marketing-ops/references/activate/signup.md +406 -0
  378. package/.merlin-core/skills/domain/marketing-ops/references/expand/co-marketing.md +18 -0
  379. package/.merlin-core/skills/domain/marketing-ops/references/expand/community-marketing.md +18 -0
  380. package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/affiliate-programs.md +19 -0
  381. package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/program-examples.md +19 -0
  382. package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals.md +278 -0
  383. package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research/references/source-guides.md +425 -0
  384. package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research.md +284 -0
  385. package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas/references/ideas-by-category.md +216 -0
  386. package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas.md +188 -0
  387. package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-psychology.md +532 -0
  388. package/.merlin-core/skills/domain/marketing-ops/references/foundation/product-marketing.md +276 -0
  389. package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/cancel-flow-patterns.md +19 -0
  390. package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/dunning-playbook.md +19 -0
  391. package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention.md +442 -0
  392. package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding/references/experiments.md +19 -0
  393. package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding.md +243 -0
  394. package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-lifecycle.md +18 -0
  395. package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-operations.md +18 -0
  396. package/.merlin-core/skills/domain/n8n-automation/SKILL.md +149 -0
  397. package/.merlin-core/skills/domain/n8n-automation/references/code-javascript.md +3744 -0
  398. package/.merlin-core/skills/domain/n8n-automation/references/code-python.md +3293 -0
  399. package/.merlin-core/skills/domain/n8n-automation/references/expression-syntax.md +1662 -0
  400. package/.merlin-core/skills/domain/n8n-automation/references/mcp-tools-expert.md +2111 -0
  401. package/.merlin-core/skills/domain/n8n-automation/references/node-configuration.md +2523 -0
  402. package/.merlin-core/skills/domain/n8n-automation/references/validation-expert.md +2491 -0
  403. package/.merlin-core/skills/domain/n8n-automation/references/workflow-patterns.md +4624 -0
  404. package/.merlin-core/skills/domain/ops-manual/SKILL.md +225 -0
  405. package/.merlin-core/skills/domain/ops-manual/references/elicitation-questions.md +141 -0
  406. package/.merlin-core/skills/domain/ops-manual/references/external-skills-registry.md +63 -0
  407. package/.merlin-core/skills/domain/ops-manual/references/operations-template.yaml +132 -0
  408. package/.merlin-core/skills/domain/remotion-best-practices/SKILL.md +99 -0
  409. package/.merlin-core/skills/domain/remotion-best-practices/rules/3d.md +86 -0
  410. package/.merlin-core/skills/domain/remotion-best-practices/rules/animations.md +27 -0
  411. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  412. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  413. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  414. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets.md +78 -0
  415. package/.merlin-core/skills/domain/remotion-best-practices/rules/audio.md +172 -0
  416. package/.merlin-core/skills/domain/remotion-best-practices/rules/calculate-metadata.md +131 -0
  417. package/.merlin-core/skills/domain/remotion-best-practices/rules/can-decode.md +75 -0
  418. package/.merlin-core/skills/domain/remotion-best-practices/rules/charts.md +68 -0
  419. package/.merlin-core/skills/domain/remotion-best-practices/rules/compositions.md +154 -0
  420. package/.merlin-core/skills/domain/remotion-best-practices/rules/display-captions.md +126 -0
  421. package/.merlin-core/skills/domain/remotion-best-practices/rules/extract-frames.md +229 -0
  422. package/.merlin-core/skills/domain/remotion-best-practices/rules/fonts.md +152 -0
  423. package/.merlin-core/skills/domain/remotion-best-practices/rules/get-audio-duration.md +58 -0
  424. package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  425. package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-duration.md +58 -0
  426. package/.merlin-core/skills/domain/remotion-best-practices/rules/gifs.md +144 -0
  427. package/.merlin-core/skills/domain/remotion-best-practices/rules/images.md +134 -0
  428. package/.merlin-core/skills/domain/remotion-best-practices/rules/import-srt-captions.md +67 -0
  429. package/.merlin-core/skills/domain/remotion-best-practices/rules/lottie.md +70 -0
  430. package/.merlin-core/skills/domain/remotion-best-practices/rules/maps.md +414 -0
  431. package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  432. package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-text.md +143 -0
  433. package/.merlin-core/skills/domain/remotion-best-practices/rules/parameters.md +109 -0
  434. package/.merlin-core/skills/domain/remotion-best-practices/rules/sequencing.md +118 -0
  435. package/.merlin-core/skills/domain/remotion-best-practices/rules/tailwind.md +11 -0
  436. package/.merlin-core/skills/domain/remotion-best-practices/rules/text-animations.md +20 -0
  437. package/.merlin-core/skills/domain/remotion-best-practices/rules/timing.md +179 -0
  438. package/.merlin-core/skills/domain/remotion-best-practices/rules/transcribe-captions.md +19 -0
  439. package/.merlin-core/skills/domain/remotion-best-practices/rules/transitions.md +137 -0
  440. package/.merlin-core/skills/domain/remotion-best-practices/rules/transparent-videos.md +106 -0
  441. package/.merlin-core/skills/domain/remotion-best-practices/rules/trimming.md +51 -0
  442. package/.merlin-core/skills/domain/remotion-best-practices/rules/videos.md +171 -0
  443. package/.merlin-core/skills/domain/resend-email/SKILL.md +377 -0
  444. package/.merlin-core/skills/general/adversarial-review/SKILL.md +144 -0
  445. package/.merlin-core/skills/general/api-design/SKILL.md +513 -0
  446. package/.merlin-core/skills/general/apify-scrape/SKILL.md +137 -0
  447. package/.merlin-core/skills/general/apify-scrape/scripts/apify-scrape.sh +68 -0
  448. package/.merlin-core/skills/general/backup/SKILL.md +87 -0
  449. package/.merlin-core/skills/general/blkskrn/SKILL.md +392 -0
  450. package/.merlin-core/skills/general/blkskrn/references/animation-patterns.md +521 -0
  451. package/.merlin-core/skills/general/blkskrn/references/design-system.md +637 -0
  452. package/.merlin-core/skills/general/blkskrn/references/html-templates.md +440 -0
  453. package/.merlin-core/skills/general/blkskrn/references/presenter-template.md +45 -0
  454. package/.merlin-core/skills/general/blkskrn/references/slide-types.md +424 -0
  455. package/.merlin-core/skills/general/blkskrn/scripts/canvas-manager.js +502 -0
  456. package/.merlin-core/skills/general/blkskrn/scripts/presenter.js +90 -0
  457. package/.merlin-core/skills/general/blkskrn/templates/presenter.html +273 -0
  458. package/.merlin-core/skills/general/blkskrn/templates/slide-base.html +277 -0
  459. package/.merlin-core/skills/general/blkskrn/templates/viewer.html +165 -0
  460. package/.merlin-core/skills/general/browser-takeover/SKILL.md +53 -0
  461. package/.merlin-core/skills/general/claude-api/SKILL.md +90 -0
  462. package/.merlin-core/skills/general/code-javascript/SKILL.md +268 -0
  463. package/.merlin-core/skills/general/code-python/SKILL.md +424 -0
  464. package/.merlin-core/skills/general/code-style/SKILL.md +97 -0
  465. package/.merlin-core/skills/general/code-typescript/SKILL.md +361 -0
  466. package/.merlin-core/skills/general/cold-email/SKILL.md +164 -0
  467. package/.merlin-core/skills/general/cold-email/references/benchmarks.md +18 -0
  468. package/.merlin-core/skills/general/cold-email/references/follow-up-sequences.md +18 -0
  469. package/.merlin-core/skills/general/cold-email/references/frameworks.md +18 -0
  470. package/.merlin-core/skills/general/cold-email/references/personalization.md +18 -0
  471. package/.merlin-core/skills/general/cold-email/references/subject-lines.md +18 -0
  472. package/.merlin-core/skills/general/container-security/SKILL.md +462 -0
  473. package/.merlin-core/skills/general/context-management/SKILL.md +79 -0
  474. package/.merlin-core/skills/general/copy-editing/SKILL.md +501 -0
  475. package/.merlin-core/skills/general/copy-editing/references/checklist.md +18 -0
  476. package/.merlin-core/skills/general/copy-editing/references/content-refresh.md +18 -0
  477. package/.merlin-core/skills/general/copy-editing/references/plain-english-alternatives.md +18 -0
  478. package/.merlin-core/skills/general/copywriting/SKILL.md +294 -0
  479. package/.merlin-core/skills/general/copywriting/references/copy-frameworks.md +392 -0
  480. package/.merlin-core/skills/general/copywriting/references/natural-transitions.md +276 -0
  481. package/.merlin-core/skills/general/database/SKILL.md +561 -0
  482. package/.merlin-core/skills/general/database/references/postgres-concurrency.md +182 -0
  483. package/.merlin-core/skills/general/database/references/postgres-connections.md +97 -0
  484. package/.merlin-core/skills/general/database/references/postgres-data-patterns.md +159 -0
  485. package/.merlin-core/skills/general/database/references/postgres-monitoring.md +136 -0
  486. package/.merlin-core/skills/general/database/references/postgres-rls.md +140 -0
  487. package/.merlin-core/skills/general/database-provision/SKILL.md +56 -0
  488. package/.merlin-core/skills/general/deploy/SKILL.md +65 -0
  489. package/.merlin-core/skills/general/design-inspiration/SKILL.md +146 -0
  490. package/.merlin-core/skills/general/design-palette/SKILL.md +99 -0
  491. package/.merlin-core/skills/general/design-palette/references/full-palettes.md +144 -0
  492. package/.merlin-core/skills/general/design-system/SKILL.md +94 -0
  493. package/.merlin-core/skills/general/design-typography/SKILL.md +115 -0
  494. package/.merlin-core/skills/general/design-typography/references/full-pairings.md +144 -0
  495. package/.merlin-core/skills/general/design-ux-patterns/SKILL.md +155 -0
  496. package/.merlin-core/skills/general/design-ux-patterns/references/charts-data-guidelines.md +197 -0
  497. package/.merlin-core/skills/general/design-ux-patterns/references/landing-patterns.md +199 -0
  498. package/.merlin-core/skills/general/design-ux-patterns/references/professional-ui-checklist.md +56 -0
  499. package/.merlin-core/skills/general/design-ux-patterns/references/style-catalog.md +89 -0
  500. package/.merlin-core/skills/general/design-ux-patterns/references/ux-guidelines.md +837 -0
  501. package/.merlin-core/skills/general/discover-cloud/SKILL.md +108 -0
  502. package/.merlin-core/skills/general/doc-sync/SKILL.md +52 -0
  503. package/.merlin-core/skills/general/document-sharding/SKILL.md +53 -0
  504. package/.merlin-core/skills/general/docx/SKILL.md +418 -0
  505. package/.merlin-core/skills/general/docx/references/windows-setup.md +27 -0
  506. package/.merlin-core/skills/general/docx/scripts/__init__.py +1 -0
  507. package/.merlin-core/skills/general/docx/scripts/accept_changes.py +135 -0
  508. package/.merlin-core/skills/general/docx/scripts/comment.py +318 -0
  509. package/.merlin-core/skills/general/docx/scripts/office/__init__.py +0 -0
  510. package/.merlin-core/skills/general/docx/scripts/office/helpers/__init__.py +0 -0
  511. package/.merlin-core/skills/general/docx/scripts/office/helpers/merge_runs.py +199 -0
  512. package/.merlin-core/skills/general/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  513. package/.merlin-core/skills/general/docx/scripts/office/pack.py +159 -0
  514. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  515. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  516. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  517. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  518. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  519. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  520. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  521. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  522. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  523. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  524. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  525. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  526. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  527. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  528. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  529. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  530. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  531. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  532. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  533. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  534. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  535. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  536. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  537. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  538. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  539. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  540. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  541. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  542. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  543. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  544. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  545. package/.merlin-core/skills/general/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  546. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  547. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  548. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  549. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  550. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  551. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  552. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  553. package/.merlin-core/skills/general/docx/scripts/office/soffice.py +183 -0
  554. package/.merlin-core/skills/general/docx/scripts/office/unpack.py +132 -0
  555. package/.merlin-core/skills/general/docx/scripts/office/validate.py +111 -0
  556. package/.merlin-core/skills/general/docx/scripts/office/validators/__init__.py +15 -0
  557. package/.merlin-core/skills/general/docx/scripts/office/validators/base.py +847 -0
  558. package/.merlin-core/skills/general/docx/scripts/office/validators/docx.py +446 -0
  559. package/.merlin-core/skills/general/docx/scripts/office/validators/pptx.py +275 -0
  560. package/.merlin-core/skills/general/docx/scripts/office/validators/redlining.py +247 -0
  561. package/.merlin-core/skills/general/docx/scripts/templates/comments.xml +3 -0
  562. package/.merlin-core/skills/general/docx/scripts/templates/commentsExtended.xml +3 -0
  563. package/.merlin-core/skills/general/docx/scripts/templates/commentsExtensible.xml +3 -0
  564. package/.merlin-core/skills/general/docx/scripts/templates/commentsIds.xml +3 -0
  565. package/.merlin-core/skills/general/docx/scripts/templates/people.xml +3 -0
  566. package/.merlin-core/skills/general/elicitation/SKILL.md +188 -0
  567. package/.merlin-core/skills/general/engineering-audit/SKILL.md +122 -0
  568. package/.merlin-core/skills/general/find-and-edit/SKILL.md +102 -0
  569. package/.merlin-core/skills/general/first-party-docs/SKILL.md +51 -0
  570. package/.merlin-core/skills/general/frontend-design/SKILL.md +204 -0
  571. package/.merlin-core/skills/general/guardrails/SKILL.md +144 -0
  572. package/.merlin-core/skills/general/image-gen/SKILL.md +49 -0
  573. package/.merlin-core/skills/general/learning-capture/SKILL.md +192 -0
  574. package/.merlin-core/skills/general/lgpd-compliance-audit/SKILL.md +448 -0
  575. package/.merlin-core/skills/general/load-testing/SKILL.md +114 -0
  576. package/.merlin-core/skills/general/load-testing/docker/Dockerfile.dashboard +21 -0
  577. package/.merlin-core/skills/general/load-testing/docker/docker-compose.locust.yml +39 -0
  578. package/.merlin-core/skills/general/load-testing/requirements.txt +1 -0
  579. package/.merlin-core/skills/general/load-testing/scripts/compare_baseline.py +172 -0
  580. package/.merlin-core/skills/general/load-testing/scripts/run_local.py +245 -0
  581. package/.merlin-core/skills/general/load-testing/templates/load_shape_stepped.py +35 -0
  582. package/.merlin-core/skills/general/load-testing/templates/locustfile_dashboard.py +47 -0
  583. package/.merlin-core/skills/general/load-testing/templates/threshold_hook.py +36 -0
  584. package/.merlin-core/skills/general/mage-beauty/SKILL.md +89 -0
  585. package/.merlin-core/skills/general/mage-beauty/references/anti-patterns.md +148 -0
  586. package/.merlin-core/skills/general/mage-beauty/references/color-and-contrast.md +87 -0
  587. package/.merlin-core/skills/general/mage-beauty/references/interaction-design.md +99 -0
  588. package/.merlin-core/skills/general/mage-beauty/references/motion-design.md +90 -0
  589. package/.merlin-core/skills/general/mage-beauty/references/remotion-bridge.md +187 -0
  590. package/.merlin-core/skills/general/mage-beauty/references/responsive-and-multi-format.md +98 -0
  591. package/.merlin-core/skills/general/mage-beauty/references/spatial-design.md +88 -0
  592. package/.merlin-core/skills/general/mage-beauty/references/typography.md +60 -0
  593. package/.merlin-core/skills/general/mage-beauty/references/verb-adapt.md +102 -0
  594. package/.merlin-core/skills/general/mage-beauty/references/verb-animate.md +97 -0
  595. package/.merlin-core/skills/general/mage-beauty/references/verb-audit.md +99 -0
  596. package/.merlin-core/skills/general/mage-beauty/references/verb-bolder.md +94 -0
  597. package/.merlin-core/skills/general/mage-beauty/references/verb-cinematic.md +128 -0
  598. package/.merlin-core/skills/general/mage-beauty/references/verb-clarify.md +107 -0
  599. package/.merlin-core/skills/general/mage-beauty/references/verb-colorize.md +106 -0
  600. package/.merlin-core/skills/general/mage-beauty/references/verb-critique.md +88 -0
  601. package/.merlin-core/skills/general/mage-beauty/references/verb-delight.md +98 -0
  602. package/.merlin-core/skills/general/mage-beauty/references/verb-distill.md +97 -0
  603. package/.merlin-core/skills/general/mage-beauty/references/verb-harden.md +79 -0
  604. package/.merlin-core/skills/general/mage-beauty/references/verb-layout.md +104 -0
  605. package/.merlin-core/skills/general/mage-beauty/references/verb-onboard.md +98 -0
  606. package/.merlin-core/skills/general/mage-beauty/references/verb-optimize.md +124 -0
  607. package/.merlin-core/skills/general/mage-beauty/references/verb-overdrive.md +105 -0
  608. package/.merlin-core/skills/general/mage-beauty/references/verb-polish.md +91 -0
  609. package/.merlin-core/skills/general/mage-beauty/references/verb-quieter.md +95 -0
  610. package/.merlin-core/skills/general/mage-beauty/references/verb-rebrand.md +127 -0
  611. package/.merlin-core/skills/general/mage-beauty/references/verb-shape.md +160 -0
  612. package/.merlin-core/skills/general/mage-beauty/references/verb-typeset.md +109 -0
  613. package/.merlin-core/skills/general/mage-beauty/references/voice-and-microcopy.md +137 -0
  614. package/.merlin-core/skills/general/mcp-builder/SKILL.md +92 -0
  615. package/.merlin-core/skills/general/network-debug/SKILL.md +51 -0
  616. package/.merlin-core/skills/general/next-best-practices/SKILL.md +177 -0
  617. package/.merlin-core/skills/general/next-best-practices/references/async-patterns.md +87 -0
  618. package/.merlin-core/skills/general/next-best-practices/references/bundling.md +182 -0
  619. package/.merlin-core/skills/general/next-best-practices/references/data-patterns.md +306 -0
  620. package/.merlin-core/skills/general/next-best-practices/references/debug-tricks.md +125 -0
  621. package/.merlin-core/skills/general/next-best-practices/references/directives.md +74 -0
  622. package/.merlin-core/skills/general/next-best-practices/references/error-handling.md +232 -0
  623. package/.merlin-core/skills/general/next-best-practices/references/file-conventions.md +141 -0
  624. package/.merlin-core/skills/general/next-best-practices/references/font.md +257 -0
  625. package/.merlin-core/skills/general/next-best-practices/references/functions.md +108 -0
  626. package/.merlin-core/skills/general/next-best-practices/references/hydration-error.md +88 -0
  627. package/.merlin-core/skills/general/next-best-practices/references/image.md +179 -0
  628. package/.merlin-core/skills/general/next-best-practices/references/metadata.md +296 -0
  629. package/.merlin-core/skills/general/next-best-practices/references/parallel-routes.md +298 -0
  630. package/.merlin-core/skills/general/next-best-practices/references/route-handlers.md +146 -0
  631. package/.merlin-core/skills/general/next-best-practices/references/rsc-boundaries.md +164 -0
  632. package/.merlin-core/skills/general/next-best-practices/references/runtime-selection.md +40 -0
  633. package/.merlin-core/skills/general/next-best-practices/references/scripts.md +141 -0
  634. package/.merlin-core/skills/general/next-best-practices/references/self-hosting.md +384 -0
  635. package/.merlin-core/skills/general/next-best-practices/references/suspense-boundaries.md +67 -0
  636. package/.merlin-core/skills/general/next-steps/SKILL.md +43 -0
  637. package/.merlin-core/skills/general/party-mode/SKILL.md +57 -0
  638. package/.merlin-core/skills/general/pdf/SKILL.md +298 -0
  639. package/.merlin-core/skills/general/pdf/references/forms.md +312 -0
  640. package/.merlin-core/skills/general/pdf/references/reference.md +640 -0
  641. package/.merlin-core/skills/general/pdf/references/windows-setup.md +40 -0
  642. package/.merlin-core/skills/general/pdf/scripts/check_bounding_boxes.py +65 -0
  643. package/.merlin-core/skills/general/pdf/scripts/check_fillable_fields.py +11 -0
  644. package/.merlin-core/skills/general/pdf/scripts/convert_pdf_to_images.py +33 -0
  645. package/.merlin-core/skills/general/pdf/scripts/create_validation_image.py +37 -0
  646. package/.merlin-core/skills/general/pdf/scripts/extract_form_field_info.py +122 -0
  647. package/.merlin-core/skills/general/pdf/scripts/extract_form_structure.py +115 -0
  648. package/.merlin-core/skills/general/pdf/scripts/fill_fillable_fields.py +98 -0
  649. package/.merlin-core/skills/general/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  650. package/.merlin-core/skills/general/pptx/SKILL.md +133 -0
  651. package/.merlin-core/skills/general/pptx/references/editing.md +213 -0
  652. package/.merlin-core/skills/general/pptx/references/pptxgenjs.md +581 -0
  653. package/.merlin-core/skills/general/pptx/references/windows-setup.md +27 -0
  654. package/.merlin-core/skills/general/pptx/scripts/__init__.py +0 -0
  655. package/.merlin-core/skills/general/pptx/scripts/add_slide.py +195 -0
  656. package/.merlin-core/skills/general/pptx/scripts/clean.py +286 -0
  657. package/.merlin-core/skills/general/pptx/scripts/thumbnail.py +289 -0
  658. package/.merlin-core/skills/general/property-testing/SKILL.md +214 -0
  659. package/.merlin-core/skills/general/purge-leaked-secret/SKILL.md +383 -0
  660. package/.merlin-core/skills/general/reflection/SKILL.md +100 -0
  661. package/.merlin-core/skills/general/secret-safe-commit/SKILL.md +246 -0
  662. package/.merlin-core/skills/general/secret-safe-commit/templates/.gitleaks.toml +91 -0
  663. package/.merlin-core/skills/general/secret-safe-commit/templates/.pre-commit-config.yaml +57 -0
  664. package/.merlin-core/skills/general/secret-safe-commit/templates/secret-scan.yml +48 -0
  665. package/.merlin-core/skills/general/semantic-search/SKILL.md +79 -0
  666. package/.merlin-core/skills/general/skill-creator/SKILL.md +342 -0
  667. package/.merlin-core/skills/general/skill-creator/agents/analyzer.md +283 -0
  668. package/.merlin-core/skills/general/skill-creator/agents/comparator.md +211 -0
  669. package/.merlin-core/skills/general/skill-creator/agents/grader.md +227 -0
  670. package/.merlin-core/skills/general/skill-creator/assets/eval_review.html +146 -0
  671. package/.merlin-core/skills/general/skill-creator/eval-viewer/generate_review.py +471 -0
  672. package/.merlin-core/skills/general/skill-creator/eval-viewer/viewer.html +1325 -0
  673. package/.merlin-core/skills/general/skill-creator/references/schemas.md +439 -0
  674. package/.merlin-core/skills/general/skill-creator/scripts/__init__.py +0 -0
  675. package/.merlin-core/skills/general/skill-creator/scripts/aggregate_benchmark.py +401 -0
  676. package/.merlin-core/skills/general/skill-creator/scripts/generate_report.py +326 -0
  677. package/.merlin-core/skills/general/skill-creator/scripts/improve_description.py +247 -0
  678. package/.merlin-core/skills/general/skill-creator/scripts/package_skill.py +136 -0
  679. package/.merlin-core/skills/general/skill-creator/scripts/quick_validate.py +103 -0
  680. package/.merlin-core/skills/general/skill-creator/scripts/run_eval.py +310 -0
  681. package/.merlin-core/skills/general/skill-creator/scripts/run_loop.py +328 -0
  682. package/.merlin-core/skills/general/skill-creator/scripts/utils.py +47 -0
  683. package/.merlin-core/skills/general/start-here/SKILL.md +63 -0
  684. package/.merlin-core/skills/general/start-here/recipes.json +758 -0
  685. package/.merlin-core/skills/general/start-here/recipes.schema.json +57 -0
  686. package/.merlin-core/skills/general/static-analysis/SKILL.md +151 -0
  687. package/.merlin-core/skills/general/tailwind-design-system/SKILL.md +201 -0
  688. package/.merlin-core/skills/general/tailwind-design-system/references/advanced-v4.md +152 -0
  689. package/.merlin-core/skills/general/tailwind-design-system/references/component-patterns.md +353 -0
  690. package/.merlin-core/skills/general/teach-method/SKILL.md +86 -0
  691. package/.merlin-core/skills/general/team-execution/SKILL.md +67 -0
  692. package/.merlin-core/skills/general/testing/SKILL.md +412 -0
  693. package/.merlin-core/skills/general/token-economy/SKILL.md +55 -0
  694. package/.merlin-core/skills/general/vps-security-hardening/SKILL.md +406 -0
  695. package/.merlin-core/skills/general/web-quality/SKILL.md +180 -0
  696. package/.merlin-core/skills/general/webapp-testing/SKILL.md +153 -0
  697. package/.merlin-core/skills/general/webapp-testing/scripts/screenshot_compare.py +72 -0
  698. package/.merlin-core/skills/general/webapp-testing/scripts/with_server.py +103 -0
  699. package/.merlin-core/skills/general/xlsx/SKILL.md +167 -0
  700. package/.merlin-core/skills/general/xlsx/references/nodejs-sheetjs-styled-reports.md +141 -0
  701. package/.merlin-core/skills/general/xlsx/references/windows-setup.md +17 -0
  702. package/.merlin-core/skills/general/xlsx/scripts/recalc.py +184 -0
  703. package/.merlin-core/skills/general/xlsx/scripts/styled-report.js +130 -0
  704. package/.merlin-core/skills/general/yolo-mode/SKILL.md +60 -0
  705. package/.merlin-core/skills/general/youtube-transcript/SKILL.md +177 -0
  706. package/.merlin-core/skills/general/youtube-transcript/scripts/fetch_transcript.py +188 -0
  707. package/.merlin-core/skills/general/youtube-transcript/scripts/gladia_transcribe.mjs +230 -0
  708. package/.merlin-core/tools/commands/activate.js +72 -0
  709. package/.merlin-core/tools/commands/archive-thoughts.js +181 -0
  710. package/.merlin-core/tools/commands/backup.js +156 -0
  711. package/.merlin-core/tools/commands/certify-process.js +196 -0
  712. package/.merlin-core/tools/commands/convert.js +87 -0
  713. package/.merlin-core/tools/commands/cron.js +147 -0
  714. package/.merlin-core/tools/commands/disable.js +73 -0
  715. package/.merlin-core/tools/commands/doc-sync.js +127 -0
  716. package/.merlin-core/tools/commands/eval-skill.js +193 -0
  717. package/.merlin-core/tools/commands/frontmatter.js +49 -0
  718. package/.merlin-core/tools/commands/heartbeat.js +43 -0
  719. package/.merlin-core/tools/commands/index-thoughts.js +35 -0
  720. package/.merlin-core/tools/commands/install-remote-approve.js +184 -0
  721. package/.merlin-core/tools/commands/install.js +81 -0
  722. package/.merlin-core/tools/commands/lib/__verify__/diff-reports.js +170 -0
  723. package/.merlin-core/tools/commands/lib/fs-safe.js +186 -0
  724. package/.merlin-core/tools/commands/lib/preflight.js +607 -0
  725. package/.merlin-core/tools/commands/lib/preserve.js +232 -0
  726. package/.merlin-core/tools/commands/lib/project-config.template.yaml +69 -0
  727. package/.merlin-core/tools/commands/lib/report.js +231 -0
  728. package/.merlin-core/tools/commands/lib/settings-merge.js +134 -0
  729. package/.merlin-core/tools/commands/license.js +52 -0
  730. package/.merlin-core/tools/commands/list.js +125 -0
  731. package/.merlin-core/tools/commands/migrate-alkimia.js +271 -0
  732. package/.merlin-core/tools/commands/modules.js +68 -0
  733. package/.merlin-core/tools/commands/provision.js +83 -0
  734. package/.merlin-core/tools/commands/prune-feedback.js +114 -0
  735. package/.merlin-core/tools/commands/run-process.js +28 -0
  736. package/.merlin-core/tools/commands/state.js +79 -0
  737. package/.merlin-core/tools/commands/sync-bridges.js +197 -0
  738. package/.merlin-core/tools/commands/upgrade.js +1135 -0
  739. package/.merlin-core/tools/commands/validate-recipes.js +218 -0
  740. package/.merlin-core/tools/commands/validate.js +159 -0
  741. package/.merlin-core/tools/commands/yolo.js +82 -0
  742. package/.merlin-core/tools/compose-rules.mjs +179 -0
  743. package/.merlin-core/tools/disable-module.mjs +150 -0
  744. package/.merlin-core/tools/lib/deployer.mjs +131 -0
  745. package/.merlin-core/tools/lib/modules-activation.mjs +225 -0
  746. package/.merlin-core/tools/merlin-tools.js +153 -0
  747. package/.merlin-core/tools/migrate-frontmatter-v3.js +192 -0
  748. package/.merlin-core/tools/modules-catalog.mjs +174 -0
  749. package/.merlin-core/tools/provision-module.mjs +191 -0
  750. package/.merlin-core/tools/verify-module.mjs +99 -0
  751. package/.merlin-core/tools/vps-security-audit.sh +234 -0
  752. package/INSTALL.md +312 -0
  753. package/LICENSE +118 -0
  754. package/PRIVACY-LICENSING.md +65 -0
  755. package/README.md +391 -0
  756. package/bin/README.md +15 -0
  757. package/bin/convert-to-merlin.sh +109 -0
  758. package/bin/fleet-patch-hooks.sh +144 -0
  759. package/bin/fleet-patch-v3-fixes.sh +127 -0
  760. package/bin/merlin-init.js +232 -0
  761. package/bin/merlin.js +321 -0
  762. package/package.json +127 -0
@@ -0,0 +1,148 @@
1
+ # anti-patterns — 15 deal-breakers (rule → why it fails → fix)
2
+
3
+ ## Charter
4
+
5
+ These are the 15 patterns that mark a design as AI-generic, untrained, or careless. Each one fails for a specific reason traceable to typography, color, motion, composition, or microcopy theory. Each has a specific fix. This list supersedes the partial anti-patterns block in the `frontend-design` skill — that file points here.
6
+
7
+ This reference is read first by every verb's pre-check. If a candidate output violates any rule below, the verb redirects before delivering.
8
+
9
+ ---
10
+
11
+ ## Typography
12
+
13
+ ### 1. Inter (or Geist, or system font) for everything
14
+
15
+ **Why it fails:** Inter is the universally-used, AI-default sans. When every page uses it for both heading and body, the design has no typographic identity. The reader's brain registers "another LLM-generated UI" before any content is read.
16
+
17
+ **Fix:** pair Inter (or the body sans) with a distinctive heading family. Examples that work: Outfit + Inter, Space Grotesk + Inter, Sora + Inter, Cormorant Garamond + Inter, Playfair Display + Inter. Use the heading font for H1/H2 only — body stays Inter. Cost: 1 extra font load.
18
+
19
+ ### 2. Decorative text-shadow on body type
20
+
21
+ **Why it fails:** Drop shadows on small body text reduce legibility, look amateurish, and date the design to ~2009. They survive in CSS tutorials and never in production work from teams that have shipped a real product.
22
+
23
+ **Fix:** remove all `text-shadow` from body type. Reserve subtle shadows (e.g., `text-shadow: 0 1px 2px rgba(0,0,0,0.1)`) only for text overlaid on busy media (Remotion captions, hero text on photos), and even then prefer a backdrop plate.
24
+
25
+ ### 3. ALL CAPS body paragraphs
26
+
27
+ **Why it fails:** capitals strip ascender/descender variation, slowing reading speed by ~15%. Acceptable for short labels (5–6 chars). Catastrophic for sentences.
28
+
29
+ **Fix:** sentence case for body. Reserve ALL CAPS for navigation labels, badges, and short button text. Always pair caps with `letter-spacing: +0.05em` minimum.
30
+
31
+ ---
32
+
33
+ ## Color
34
+
35
+ ### 4. Purple-to-blue gradient hero
36
+
37
+ **Why it fails:** universally read as "AI demo." The default Vercel template, the OpenAI brand, every demo of every JavaScript framework launch in 2023–2024. Visual recognition is instant: this is generic.
38
+
39
+ **Fix:** commit to a single dominant tone. If a gradient is wanted, use within-hue (`oklch(15% 0.1 264) → oklch(35% 0.15 264)`) or temperature-shift (warm → cool with low saturation). Never default-purple → default-blue.
40
+
41
+ ### 5. Gray text on colored background
42
+
43
+ **Why it fails:** `#9CA3AF` on `#3B82F6` is 2.4:1 contrast — fails WCAG AA. The most common accessibility miss in AI-generated UIs. Looks "fine" until tested.
44
+
45
+ **Fix:** for text on colored surface, use a tint of the background (lightened/darkened version) or a high-contrast neutral (`#FFFFFF` / `#0F172A`). Always verify with browser DevTools contrast checker.
46
+
47
+ ### 6. Pure #000 or pure #FFF
48
+
49
+ **Why it fails:** pure black backgrounds crush detail under any film grain or photographic content. Pure white text on dark glares. Both signal "no thought given to the visual."
50
+
51
+ **Fix:** tint your neutrals. `oklch(14% 0.025 264)` for cool dark backgrounds. `oklch(98% 0.01 80)` for warm light. The viewer can't name why it feels better, but it does.
52
+
53
+ ---
54
+
55
+ ## Motion
56
+
57
+ ### 7. Bounce or elastic easing
58
+
59
+ **Why it fails:** `ease: 'bounce'` and `cubic-bezier(0.68, -0.55, 0.265, 1.55)` were briefly popular ~2014. Today they read as juvenile or untrained. Used universally in AI-generated demos.
60
+
61
+ **Fix:** use `cubic-bezier(0.16, 1, 0.3, 1)` for entrances (smooth ease-out). Use spring physics with `stiffness: 300, damping: 30` for natural-feeling motion. Reserve bounce for explicitly playful contexts (kids' apps, game UI), and even then sparingly.
62
+
63
+ ### 8. Parallax abuse on every scroll element
64
+
65
+ **Why it fails:** parallax on the hero alone is fine. Parallax on every section creates seasickness, fails on low-power devices, and ignores `prefers-reduced-motion`. The user experiences it as "this site is slow."
66
+
67
+ **Fix:** parallax on at most one element per page (usually a hero background). Always wrapped in `@media (prefers-reduced-motion: no-preference)`. Use `transform: translateY()` (GPU-accelerated) — never animate `top/bottom`.
68
+
69
+ ### 9. Autoplay video with sound
70
+
71
+ **Why it fails:** browsers block this by default for good reason. When it does play, users instinctively close the tab. Hostile UX.
72
+
73
+ **Fix:** autoplay muted only, with a clear unmute affordance. For Remotion output: never embed audio in a video that's expected to autoplay on a feed (Instagram, TikTok handle this — but landing-page hero videos must mute by default).
74
+
75
+ ---
76
+
77
+ ## Composition
78
+
79
+ ### 10. Card nested inside card
80
+
81
+ **Why it fails:** `border + bg-white + shadow` inside another `border + bg-white + shadow` reads as visual noise without information gain. The eye sees two borders where one would communicate the same hierarchy.
82
+
83
+ **Fix:** flatten the inner card. Use spacing and typography to separate the inner content from the outer container. If the inner element really needs a container, drop the border (`bg-surface-elevated` only) so it reads as a layer, not a separate widget.
84
+
85
+ ### 11. Centered everything
86
+
87
+ **Why it fails:** centered hero, centered features in a row, centered testimonials, centered CTA. Symmetric and forgettable. The page has no rhythm because every element shares the same horizontal axis.
88
+
89
+ **Fix:** vary composition by section. Hero asymmetric (60/40 split, image right). Features in a 2-up grid offset left. One full-bleed image. Testimonials in a horizontal carousel. Single base alignment per section, but vary across sections.
90
+
91
+ ### 12. Equal visual weight across navigation items
92
+
93
+ **Why it fails:** "Home / Pricing / Features / About / Contact / Blog / Docs / Login / Sign Up" all in identical font weight and size. The user has no signal about what's primary. Conversion tanks because the eye has nowhere to land.
94
+
95
+ **Fix:** primary action (typically Sign Up / Get Started / Start Free Trial) gets a button treatment with the accent color. Login is secondary text. Other nav items are neutral. Visual hierarchy = clarity.
96
+
97
+ ---
98
+
99
+ ## Microcopy
100
+
101
+ ### 13. "Get Started" as the primary CTA
102
+
103
+ **Why it fails:** "Get Started" is the most-used CTA in AI-generated landing pages because it's safe, generic, and answers no question. Started doing what?
104
+
105
+ **Fix:** describe the outcome. "Build your first video," "Plan your campaign," "Estimate your project," "Try the free 7-day trial." The user reads the button before anything else — make it tell them what happens.
106
+
107
+ ### 14. Em-dash overuse in body copy
108
+
109
+ **Why it fails:** em-dashes are LLM-generated copy's most identifiable tell — every paragraph contains at least one — interrupting flow without earning the pause. (See what just happened.)
110
+
111
+ **Fix:** allow yourself one em-dash per ~150 words maximum. Replace with: a comma if the aside is short, a period and new sentence if standalone, parentheses if truly parenthetical. Read your copy out loud. If you stop at every em-dash, cut some.
112
+
113
+ ### 15. Validation jargon in error messages
114
+
115
+ **Why it fails:** "Invalid format," "Field required," "Constraint violation," "ERR_VALIDATION_FAILED" — these are messages from the validation library, not a human. The user has no path forward.
116
+
117
+ **Fix:** rewrite every error to (a) say what's wrong in human terms, (b) show the correction path. "Invalid format" → "Use a phone number with area code, like (555) 123-4567." Costs nothing in code, transforms the experience.
118
+
119
+ ---
120
+
121
+ ## Cross-references
122
+
123
+ - For typography reasoning behind rules 1–3: read `typography.md` in this skill
124
+ - For color reasoning behind rules 4–6: read `color-and-contrast.md` in this skill
125
+ - For motion reasoning behind rules 7–9: read `motion-design.md` in this skill
126
+ - For composition reasoning behind rules 10–12: read `spatial-design.md` in this skill
127
+ - For microcopy reasoning behind rules 13–15: read `voice-and-microcopy.md` in this skill
128
+ - The `frontend-design` skill anti-patterns section (lines 96–107) is now superseded by this file
129
+
130
+ ## Quick scan
131
+
132
+ Before declaring any design done, confirm:
133
+
134
+ - [ ] Not Inter alone — paired with distinctive heading family
135
+ - [ ] No drop shadows on body type
136
+ - [ ] Body in sentence case (caps reserved for short labels)
137
+ - [ ] No purple→blue gradient
138
+ - [ ] All text/background contrast verified ≥ WCAG AA
139
+ - [ ] Backgrounds tinted (no pure #000/#FFF)
140
+ - [ ] No bounce/elastic easing
141
+ - [ ] No parallax abuse, motion respects reduced-motion
142
+ - [ ] No autoplay with sound
143
+ - [ ] No card-in-card nesting
144
+ - [ ] Composition varies across sections (no centered-everything)
145
+ - [ ] Nav has clear primary/secondary hierarchy
146
+ - [ ] CTAs describe outcomes (no generic "Get Started")
147
+ - [ ] ≤ 1 em-dash per 150 words
148
+ - [ ] All errors say what to do, not just what's wrong
@@ -0,0 +1,87 @@
1
+ # color-and-contrast — Tinted neutrals, OKLCH, intentional weight
2
+
3
+ ## Charter
4
+
5
+ Most AI-generated palettes fail in the same five ways: pure black background, pure white text, three accent colors fighting for attention, gray-on-color combos that fail WCAG, and a purple-to-blue gradient that screams "demo." Beauty in color comes from restraint, perceptual uniformity, and a single accent that earns its place. Tint your neutrals, commit to a dominant tone, and let the color do meaning, not decoration.
6
+
7
+ ## Principles
8
+
9
+ 1. **Never use pure #000 or #FFF.** Pure black backgrounds crush detail; pure white text on dark surfaces glares. Tint backgrounds toward a hue (`oklch(14% 0.025 264)` for cool dark, `oklch(98% 0.01 80)` for warm light). The viewer can't name why it feels better, but it does.
10
+ 2. **OKLCH over HSL.** OKLCH is perceptually uniform — equal lightness values look equally bright across hues. HSL lies (a yellow at 50% lightness looks brighter than a blue at the same value). Use `oklch(L% C H)` everywhere modern browsers support it, with HSL/hex fallbacks via `color-mix()` or build-time conversion.
11
+ 3. **60-30-10 rule.** 60% dominant (background + structural surfaces), 30% secondary (cards, panels, navigation), 10% accent (CTAs, focus rings, key data). Equal-weight palettes are noise.
12
+ 4. **One accent, used everywhere it appears.** A landing page with three different "accent" colors is visually unparseable. If you need urgency + success + warning + info, those are semantic states, not accents.
13
+ 5. **WCAG AA is the floor, not the ceiling.** 4.5:1 for normal text, 3:1 for large text and UI components. AAA (7:1 / 4.5:1) is the bar for healthcare, education, government. Test every text/background pair, every button state, every focus ring.
14
+ 6. **Gray text on colored backgrounds fails most of the time.** `#9CA3AF` on `#3B82F6` is 2.4:1 — fails normal text. Switch to a tint of the background or a high-contrast neutral.
15
+ 7. **Dark mode is not inverted light mode.** Light-mode `#F8FAFC` background does not invert to `#070806`. Dark mode wants its own surface ladder: bg < surface < surface-elevated, with each step ~3-5% lighter.
16
+ 8. **Accent saturation drops in dark mode.** A pure `oklch(60% 0.25 264)` blue that pops on white is jarring on dark. Drop chroma to `0.15-0.18` for dark surfaces.
17
+
18
+ ## Web application
19
+
20
+ **Token architecture:**
21
+
22
+ ```css
23
+ @theme {
24
+ --color-bg: oklch(98% 0.005 80);
25
+ --color-surface: oklch(100% 0 0);
26
+ --color-surface-elevated: oklch(100% 0 0);
27
+ --color-text: oklch(15% 0.02 264);
28
+ --color-text-muted: oklch(46% 0.02 264);
29
+ --color-border: oklch(90% 0.01 264);
30
+ --color-accent: oklch(60% 0.18 264);
31
+ }
32
+ ```
33
+
34
+ Every color token must trace to a semantic role. Never reference raw hex from a component. The `design-system` skill enforces this — see its pre-delivery checklist.
35
+
36
+ **Dark mode pairing:**
37
+
38
+ ```css
39
+ .dark {
40
+ --color-bg: oklch(14% 0.025 264);
41
+ --color-surface: oklch(18% 0.025 264);
42
+ --color-surface-elevated: oklch(22% 0.025 264);
43
+ --color-text: oklch(96% 0.01 264);
44
+ --color-text-muted: oklch(65% 0.02 264);
45
+ --color-border: oklch(28% 0.02 264);
46
+ --color-accent: oklch(70% 0.15 264);
47
+ }
48
+ ```
49
+
50
+ **Verification:** browser DevTools > Inspect > Accessibility tab shows contrast ratios live. Don't ship without checking.
51
+
52
+ ## Remotion application
53
+
54
+ Color in video behaves differently from color on screen:
55
+
56
+ 1. **30 fps + H.264 compression desaturates.** A `chroma 0.25` accent on a static screen renders at `~0.20` after encoding. Bump chroma 15–20% for video sources, then verify after the first render.
57
+ 2. **Pure red bleeds.** `#FF0000` (oklch ~58% 0.25 27) blooms across pixels under H.264 chroma subsampling. Drop to `oklch(55% 0.22 27)` or shift slightly toward orange.
58
+ 3. **`cinematic/ColorGrade` presets do the heavy lifting.** The 10 presets in FF (`dystopia, carnival, noir, golden-hour, cyberpunk, dream, horror, vintage, ice, neon`) are not just LUTs — they shift the entire palette. Use them as the foundation, then layer accents on top.
59
+ 4. **Caption text needs background plates or stronger weight.** White text on busy footage will fail at 4.5:1 over half the frames. `text/SubtitleOverlay` should default to a 70%-opacity black plate behind the text, or a 500-weight font with text-shadow.
60
+
61
+ **Bridge to ColorGrade presets** (read `remotion-bridge.md` for full mapping):
62
+
63
+ - `noir` → desaturated, high contrast, neutral palette only
64
+ - `golden-hour` → warm tint shift, +chroma in oranges, -chroma in blues
65
+ - `cyberpunk` → magenta + cyan duality, near-black background
66
+ - `dream` → low contrast, soft tint, +luminance overall
67
+
68
+ ## Cross-references
69
+
70
+ - For 96 industry palettes by product type: read `design-palette` skill, `references/full-palettes.md`
71
+ - For semantic token enforcement: read `design-system` skill
72
+ - For Tailwind v4 OKLCH setup: read `tailwind-design-system` skill
73
+ - For ColorGrade composition: read `remotion-bridge.md` in this skill
74
+ - For text contrast specifically: read `typography.md` in this skill
75
+
76
+ ## Quick checklist
77
+
78
+ - [ ] No pure #000 or #FFF anywhere
79
+ - [ ] Background tinted toward a hue (cool blue, warm yellow, neutral green-gray)
80
+ - [ ] Single accent color, used consistently
81
+ - [ ] WCAG AA verified for every text/background pair
82
+ - [ ] Focus ring visible at 3:1 minimum against adjacent colors
83
+ - [ ] Dark mode has its own surface ladder, not inverted light mode
84
+ - [ ] Accent chroma reduced ~30% for dark mode
85
+ - [ ] OKLCH used (with hex fallback if needed)
86
+ - [ ] No gray text on colored backgrounds (fails AA)
87
+ - [ ] For Remotion: chroma bumped 15–20% to compensate compression
@@ -0,0 +1,99 @@
1
+ # interaction-design — Forms, focus, loading, feedback
2
+
3
+ ## Charter
4
+
5
+ Interaction design is where most products fail silently. The page looks fine until you tab through it and realize the focus rings vanish, the form gives no feedback on submit, the loading state is a blank screen, and the disabled button doesn't tell you why it's disabled. Beauty in interaction is invisible when it works and devastating when it doesn't. Every state has to be designed — default, hover, active, focus, disabled, loading, error, empty, success.
6
+
7
+ **Note: Most principles in this reference do not apply to Remotion (non-interactive medium). For video targets, skip this file.**
8
+
9
+ ## Principles
10
+
11
+ 1. **Every interactive element has 5 states minimum.** Default, hover, focus, active, disabled. Often: loading, error, success. Designing only the default state is the most common gap.
12
+ 2. **Focus rings are non-negotiable.** Removing the default focus outline without replacing it is an accessibility crime. Use `focus-visible:ring-2 focus-visible:ring-offset-2` minimum. The ring color must hit 3:1 against adjacent surfaces.
13
+ 3. **Touch targets are 44 × 44 px minimum.** Apple HIG, Material guidelines, WCAG 2.5.5 all converge here. Smaller targets are unreachable on mobile. Add invisible padding (`hitSlop` in React Native, generous padding in CSS) if the visual element is smaller.
14
+ 4. **Loading states are mandatory for any async operation.** Skeleton screens beat spinners for perceived performance. Show structure of what's loading. Never show a blank screen for more than 200 ms.
15
+ 5. **Error messages live next to the input that caused them.** A toast notification telling you "form has errors" without showing where is hostile. Display the error inline, in red (with an icon — color alone fails colorblind users), and auto-focus the first invalid field on submit.
16
+ 6. **Disabled states explain why.** A grayed-out button with no tooltip is a dead end. `aria-disabled="true"` with a tooltip explaining "Complete the form to enable" turns frustration into progress.
17
+ 7. **Optimistic UI for fast operations.** Toggle a like, send a message, edit inline — show success immediately, roll back on failure. Waiting for the server makes the app feel slow even when it's not.
18
+ 8. **Undo over confirm.** "Are you sure you want to delete this?" is a tax on every user. A 5-second undo toast handles the same risk without breaking flow. Reserve confirmation dialogs for genuinely destructive, irreversible actions.
19
+
20
+ ## Form design
21
+
22
+ **Progressive disclosure**: show 3–5 fields first, hide advanced options behind "More options ▾". Long forms are abandoned. Even a 2-step wizard converts better than a single 12-field form.
23
+
24
+ **Labels above inputs, always.** Floating labels look clever and fail for screen readers, fail when the field is pre-filled, fail at small sizes. Standard label-above is boring and works perfectly.
25
+
26
+ **Input types matter:**
27
+
28
+ - `type="email"` — auto-correct off, keyboard with `@`
29
+ - `type="tel"` — numeric keypad on mobile
30
+ - `type="url"` — keyboard with `/`, `.`, `:`
31
+ - `type="number"` for actual numbers (not phone numbers)
32
+ - `inputmode="numeric"` for OTP/PIN inputs
33
+
34
+ **Validation timing:**
35
+
36
+ - On blur: format checks (email looks like email, phone has enough digits)
37
+ - On submit: server validation, business rules
38
+ - Never on every keystroke (jarring, especially for password rules)
39
+
40
+ **Submission states:**
41
+
42
+ 1. Idle (default button)
43
+ 2. Submitting (button disabled + spinner inside the button, NOT replacing the button — keeps layout stable)
44
+ 3. Success (brief confirmation, then progress)
45
+ 4. Error (inline, near the bad field, focus moved there, page scrolled into view)
46
+
47
+ **Autosave for long forms.** Forms with 5+ fields should save drafts to localStorage every 2–3 seconds. Lost work from a navigation accident is unacceptable.
48
+
49
+ ## Focus management
50
+
51
+ **Tab order should be logical.** Browser default tab order follows DOM order. If the visual layout differs (e.g., 2-column form), make sure DOM order matches reading order, not visual position.
52
+
53
+ **Skip link as first focusable element.** `<a href="#main" class="sr-only focus:not-sr-only">Skip to content</a>`. Without this, keyboard users wade through nav on every page.
54
+
55
+ **Trap focus in modals.** Tab from inside a modal must stay inside until dismissed. Esc closes. Focus returns to the trigger element on close.
56
+
57
+ **Visible focus on every interactive element.** Buttons, links, inputs, custom controls. The ring must persist for at least 200 ms after activation so the user sees where focus landed.
58
+
59
+ ## Loading patterns
60
+
61
+ **Skeleton screens** > spinners for content load. Match the shape of what's coming.
62
+
63
+ **Optimistic loaders** for buttons: spinner inside the button, button text either disappears or changes to "Saving…", layout stays stable.
64
+
65
+ **Progress bars for known-duration tasks** (file upload, video render). Spinners only when duration is unknown.
66
+
67
+ **No spinners under 200 ms.** Operations that complete in 100 ms with a 50 ms loading flash feel broken. Either show no indicator or guarantee the indicator stays for ≥400 ms.
68
+
69
+ ## Empty states are designed
70
+
71
+ A blank list with "No items" is a missed opportunity. Empty states should:
72
+
73
+ 1. Explain what would be there (context)
74
+ 2. Show the user how to add the first item (action)
75
+ 3. Use illustration sparingly (custom > stock)
76
+
77
+ ## Cross-references
78
+
79
+ - For form patterns full catalog: read `design-ux-patterns` skill, `references/ux-guidelines.md`
80
+ - For motion timing on hover/focus: read `motion-design.md` in this skill
81
+ - For UX copy on errors and labels: read `voice-and-microcopy.md` in this skill
82
+ - For visual focus ring color choices: read `color-and-contrast.md` in this skill
83
+
84
+ ## Quick checklist
85
+
86
+ - [ ] Every interactive element has visible focus state
87
+ - [ ] Touch targets ≥ 44 × 44 px
88
+ - [ ] Loading states on all async operations
89
+ - [ ] Skeleton screens preferred over spinners for content
90
+ - [ ] No spinner flicker under 200 ms
91
+ - [ ] Error messages inline next to the invalid input
92
+ - [ ] Disabled states explain why (tooltip or aria)
93
+ - [ ] Optimistic UI for fast toggles
94
+ - [ ] Undo for reversible destructive actions
95
+ - [ ] Progressive disclosure on long forms
96
+ - [ ] Labels above inputs (no floating labels)
97
+ - [ ] Skip-to-content link as first focusable
98
+ - [ ] Modal focus trap + Esc close + focus return
99
+ - [ ] Tab order matches reading order
@@ -0,0 +1,90 @@
1
+ # motion-design — Easing, stagger, reduced-motion, video-first
2
+
3
+ ## Charter
4
+
5
+ Motion is the language that says "someone cared about this." Static screens can pass for competent; motion is where craftsmanship shows. Most AI-generated motion fails for three reasons: bounce easing (feels dated since 2018), uniform timing across all elements (no rhythm), and zero respect for `prefers-reduced-motion`. Beauty in motion comes from physics-grade easing, deliberate stagger, faster exits than entrances, and never animating just because you can.
6
+
7
+ ## Principles
8
+
9
+ 1. **Use spring physics or cubic-bezier curves, never linear.** Linear easing is robotic. Bounce/elastic feels juvenile. The professional defaults: `ease-out` (cubic-bezier(0.16, 1, 0.3, 1)) for entrances, `ease-in` (cubic-bezier(0.7, 0, 0.84, 0)) for exits, `ease-in-out` for transformations. Or use spring with `stiffness 300, damping 30`.
10
+ 2. **Stagger reveals 50–100 ms apart.** A list of 5 items animating in simultaneously feels like a glitch. Stagger 80 ms apart (so the eye reads the cascade) and the same list feels intentional.
11
+ 3. **Exits are faster than entrances.** Entrance 300–400 ms, exit 150–200 ms. Users perceive fast as "responsive" and slow as "deliberate." Apply the right speed to each.
12
+ 4. **Hover states 100–200 ms.** Anything over 250 ms on hover feels sluggish. Anything under 80 ms feels jumpy. Sweet spot is 150 ms.
13
+ 5. **Respect `prefers-reduced-motion`.** Wrap all non-essential animation in `@media (prefers-reduced-motion: no-preference)`. Page-load animations, scroll-triggered effects, decorative particles — all should disappear when the user has opted out. Loading indicators and progress bars stay (functional motion).
14
+ 6. **Animate transform and opacity, never width/height/margin.** GPU-accelerated properties (transform, opacity, filter) hit 60 fps cheaply. Animating layout properties triggers reflow and stutters on weaker devices.
15
+ 7. **Motion has a rhythm signature.** A product that animates everything at 200 ms feels different from one at 400 ms. Pick a base duration (300 ms recommended) and let it set the tempo.
16
+ 8. **Don't animate just to animate.** A page-load reveal where 47 elements stagger in over 4 seconds is not delightful — it's a tax on the user's attention. Animate to clarify, not to perform.
17
+
18
+ ## Web application
19
+
20
+ **Tokens for consistency:**
21
+
22
+ ```css
23
+ @theme {
24
+ --duration-fast: 150ms;
25
+ --duration-base: 300ms;
26
+ --duration-slow: 500ms;
27
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
28
+ --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
29
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
30
+ }
31
+ ```
32
+
33
+ **Common patterns:**
34
+
35
+ - **Page load reveal** — staggered fade-in-up, 80 ms between elements, 400 ms duration each
36
+ - **Scroll-triggered** — Intersection Observer + transform/opacity, single trigger (don't re-animate on re-scroll)
37
+ - **Hover micro-interactions** — transform: translateY(-2px), scale(1.02), shadow shift — 150 ms `ease-out`
38
+ - **Modal entrance** — backdrop fade-in (200 ms) + modal scale(0.96 → 1) + fade-in (300 ms `ease-out`)
39
+ - **List re-order** — FLIP technique (First Last Invert Play) for smooth reordering
40
+ - **Loading skeleton** — shimmer gradient, 1.5 s loop, no easing (linear is correct here)
41
+
42
+ **Framer Motion (React):** the modern default. Spring presets `default`, `gentle`, `wobbly` cover most cases. `whileHover`, `whileTap`, `whileInView` for declarative interactions.
43
+
44
+ ## Remotion application
45
+
46
+ Video is overwhelmingly a motion medium. The principles above apply, but FF's component library encodes specific behaviors:
47
+
48
+ **`animation/` bucket:**
49
+
50
+ - `SpringEntrance` — spring-based reveal, configurable stiffness/damping
51
+ - `StaggeredList` — automatically staggers child elements 80 ms apart
52
+ - `FadeIn` / `SlideIn` / `ZoomIn` — atomic primitives, used as building blocks
53
+
54
+ **`cinematic/` bucket:**
55
+
56
+ - `CameraMotion` (14 presets): Ken Burns (slow drift), dolly (forward push), pan (lateral), tilt (vertical), drift (random gentle), breathe (zoom in/out cycle). Pick by emotion: Ken Burns = nostalgic, dolly = urgent, breathe = meditative.
57
+ - `TransitionEffect` library: cross-dissolve (default safe choice), fade (clean break), glitch (energy/disruption), wipe (directional movement), flip (reveal). Match the transition to the content shift — same scene = dissolve, scene change = fade, energy spike = glitch.
58
+ - `ParticleSystem` — sparks, confetti, embers, snow, fireflies, glitch-blocks. Use sparingly. One particle effect per video maximum.
59
+
60
+ **Timing for video:**
61
+
62
+ - **Text reveal**: 12 frames (400 ms at 30 fps) for titles, 8 frames for subtitles
63
+ - **Stagger between text lines**: 6–8 frames (200–270 ms at 30 fps)
64
+ - **Transition between scenes**: 18–24 frames (600–800 ms) for narrative content, 6–10 frames for fast-cut energetic
65
+ - **Camera motion duration**: full segment length (don't end the camera move before the cut)
66
+
67
+ **`dataviz/Counter` arrival pacing:**
68
+ A counter from 0 to 1247 over 60 frames feels different from over 90 frames. Slower for big numbers (financial impact), faster for small numbers (engagement metrics). Always end the count 6 frames before the cut so the viewer reads the final value.
69
+
70
+ ## Cross-references
71
+
72
+ - For Remotion component composition: read `remotion-bridge.md` in this skill
73
+ - For text reveal animations specifically: read `typography.md` in this skill
74
+ - For hover/focus interaction patterns: read `interaction-design.md` in this skill
75
+ - For animation libraries detail: see Merlin's `frontend-ui-animator` skill (if available)
76
+
77
+ ## Quick checklist
78
+
79
+ - [ ] No bounce or elastic easing on UI motion
80
+ - [ ] No linear easing except for loading shimmers
81
+ - [ ] Stagger reveals 50–100 ms apart
82
+ - [ ] Exits faster than entrances
83
+ - [ ] Hover states 100–200 ms
84
+ - [ ] Animate transform/opacity only (no width/height/margin)
85
+ - [ ] `prefers-reduced-motion` respected for non-essential animation
86
+ - [ ] Single base duration token used consistently
87
+ - [ ] For Remotion: camera motion runs the full segment
88
+ - [ ] For Remotion: counter ends 6 frames before cut
89
+ - [ ] For Remotion: max one particle system per video
90
+ - [ ] No animation that exists "just because"
@@ -0,0 +1,187 @@
1
+ # remotion-bridge — Web principles → renderer Remotion components
2
+
3
+ ## Charter
4
+
5
+ This file is the canonical translation layer between the 8 thematic references in this skill and the renderer's 9 Remotion component buckets. When a verb runs against a Remotion target, this file is loaded first — it tells the verb which thematic reference applies to which bucket, and what the bucket-specific overrides are.
6
+
7
+ The 9 buckets in the renderer (`<renderer>/src/components/`):
8
+
9
+ - `animation/` — primitive motion (FadeIn, SlideIn, ZoomIn, SpringEntrance, StaggeredList)
10
+ - `text/` — typographic components (Title, Subtitle, Paragraph, Counter, Typewriter, WordHighlight, SubtitleOverlay)
11
+ - `layout/` — spatial composition (CenteredContent, SplitScreen, Overlay, FullBleed, Grid)
12
+ - `media/` — content carriers (BackgroundMedia, ImageGallery, VideoEmbed, AudioLayer)
13
+ - `scene/` — composed segments (IntroScene, ContentScene, QuoteScene, ListScene, ComparisonScene, DataVizScene, CTAScene, OutroScene)
14
+ - `cinematic/` — high-impact effects (ColorGrade, CameraMotion, ParticleSystem, TransitionEffect, CinematicSegment, VideoLayerStack)
15
+ - `dataviz/` — quantitative storytelling (BarChart, ProgressBar, StatCounter)
16
+ - `education/` — instructional overlays (ClassSubtitles, LowerThird)
17
+ - `music/` — music-video specific (AtmosphericOverlay, LyricsOverlay, EnergyBattery, SegmentTimeline, VideoSegment)
18
+
19
+ ---
20
+
21
+ ## Web principle → Remotion bucket map
22
+
23
+ | Web principle (reference) | Primary Remotion buckets | Notes |
24
+ | ------------------------------ | --------------------------------------------------------------------------------------- | ----------------------------------------------------- |
25
+ | typography.md | `text/`, `education/` | Letter-spacing animatable; weights ≥500 (compression) |
26
+ | color-and-contrast.md | `cinematic/ColorGrade`, all visible buckets | Bump chroma 15–20% to compensate H.264 |
27
+ | spatial-design.md | `layout/`, `scene/` | Safe areas per platform are mandatory |
28
+ | motion-design.md | `animation/`, `cinematic/CameraMotion`, `cinematic/TransitionEffect`, `dataviz/Counter` | Stagger 6–8 frames; durations in frames not ms |
29
+ | interaction-design.md | (skip) | Non-interactive medium |
30
+ | responsive-and-multi-format.md | `layout/`, `scene/` | 9 templates × 3+ aspect ratios; format ≠ crop |
31
+ | voice-and-microcopy.md | `text/`, `education/`, `music/LyricsOverlay` | 17 chars/sec reading speed |
32
+ | anti-patterns.md | All buckets | Same 15 rules apply, with video-specific intensity |
33
+
34
+ ---
35
+
36
+ ## Bucket → reference map (read these per bucket)
37
+
38
+ ### `animation/` (primitive motion)
39
+
40
+ **Read:** motion-design.md (primary), spatial-design.md (for entrance origin), anti-patterns rule 7
41
+
42
+ **Components:**
43
+
44
+ - `FadeIn` / `FadeOut` — opacity 0→1 / 1→0, duration 12–18 frames default
45
+ - `SlideIn` — translate from offset, default `from="bottom"` 24px, 12 frames `ease-out`
46
+ - `ZoomIn` — scale 0.92→1, 12 frames spring (stiffness 300, damping 30)
47
+ - `SpringEntrance` — spring-based combined transform
48
+ - `StaggeredList` — auto-stagger 6 frames between children
49
+
50
+ **Rules:**
51
+
52
+ - Default duration 12 frames (400 ms at 30 fps)
53
+ - Stagger between siblings 6 frames (200 ms)
54
+ - Use spring for character (StaggeredList, SpringEntrance), use ease for clarity (FadeIn, SlideIn)
55
+
56
+ ### `text/` (typographic components)
57
+
58
+ **Read:** typography.md (primary), motion-design.md (for reveals), color-and-contrast.md (for legibility)
59
+
60
+ **Components & rules:**
61
+
62
+ - `Title` — display weight (700+), letter-spacing animates from `+0.08em` → `0` over 12 frames, line height 1.1
63
+ - `Subtitle` — body+1 size, weight 500, no letter-spacing animation
64
+ - `Paragraph` — body size, weight 400, line height 1.4 (tighter than web)
65
+ - `Counter` — tabular-nums always, end count 6 frames before cut
66
+ - `Typewriter` — monospace family, char-reveal animation, fixed-width
67
+ - `WordHighlight` — accent color shift only, no font-family swap
68
+ - `SubtitleOverlay` — weight 500 + text-shadow OR backdrop plate at 70% opacity
69
+
70
+ ### `layout/` (spatial composition)
71
+
72
+ **Read:** spatial-design.md (primary), responsive-and-multi-format.md (for safe areas)
73
+
74
+ **Components & rules:**
75
+
76
+ - `CenteredContent` — used for typographic moments (quotes, single statements)
77
+ - `SplitScreen` — 50/50 by default; before/after, comparison, dialogue
78
+ - `Overlay` — text/graphic over media; requires backdrop plate or text-shadow
79
+ - `FullBleed` — edge-to-edge media, hero shots in 16:9, full-frame in 9:16
80
+ - `Grid` — multi-cell, max 4 cells before viewer loses track
81
+
82
+ **Composition by aspect:**
83
+
84
+ - **9:16 vertical:** vertical hierarchy. Top-third hero, mid-third support, bottom-third CTA (above safe area)
85
+ - **1:1 square:** single focal point, balanced. Avoid wide horizontal layouts.
86
+ - **16:9 wide:** rule of thirds. Lower-third graphics at 80% from top.
87
+
88
+ ### `media/` (content carriers)
89
+
90
+ **Read:** color-and-contrast.md (for media-text contrast), spatial-design.md (for placement)
91
+
92
+ **Components:**
93
+
94
+ - `BackgroundMedia` — image/video, requires gradient overlay if any text on top
95
+ - `ImageGallery` — sequence of stills with transitions
96
+ - `VideoEmbed` — embedded video segment, respects parent safe areas
97
+ - `AudioLayer` — non-visible, but affects pacing decisions
98
+
99
+ ### `scene/` (composed segments)
100
+
101
+ **Read:** all references (scenes are composed of all primitive types)
102
+
103
+ **8 scene types:**
104
+
105
+ - `IntroScene` — title + supporting elements, 60–90 frames typical
106
+ - `ContentScene` — body content, 90–180 frames per beat
107
+ - `QuoteScene` — single statement, large type, generous breathing room
108
+ - `ListScene` — staggered items, 90–150 frames total
109
+ - `ComparisonScene` — uses `layout/SplitScreen`
110
+ - `DataVizScene` — uses `dataviz/` components
111
+ - `CTAScene` — terminal scene, action message, 60–90 frames
112
+ - `OutroScene` — wrap-up, brand mark, 60–90 frames
113
+
114
+ ### `cinematic/` (high-impact effects)
115
+
116
+ **Read:** color-and-contrast.md (for ColorGrade), motion-design.md (for CameraMotion + TransitionEffect)
117
+
118
+ **Components:**
119
+
120
+ - `ColorGrade` (10 presets) — apply at scene level, not per-element
121
+ - `noir` — desaturated, high contrast, neutrals only
122
+ - `golden-hour` — warm tint, +chroma oranges, -chroma blues
123
+ - `dystopia` — desaturated, cold, low chroma overall
124
+ - `carnival` — high saturation, mixed warm hues
125
+ - `cyberpunk` — magenta + cyan duality, near-black bg
126
+ - `dream` — low contrast, soft tint, +luminance
127
+ - `horror` — desaturated, high contrast, green-tinted shadows
128
+ - `vintage` — warm fade, lifted blacks, lower contrast
129
+ - `ice` — cool tint, +chroma blues, -chroma warms
130
+ - `neon` — high saturation, dark bg, glow effects
131
+ - `CameraMotion` (14 presets) — Ken Burns, dolly, pan, tilt, drift, breathe + variants. Pick by emotion.
132
+ - `ParticleSystem` — sparks, confetti, embers, snow, fireflies, glitch-blocks. **Max one per video.**
133
+ - `TransitionEffect` — cross-dissolve (default), fade, glitch (energy), wipe (direction), flip (reveal)
134
+ - `CinematicSegment` — composes ColorGrade + CameraMotion + TransitionEffect into a unit
135
+ - `VideoLayerStack` — max 4 layers per segment
136
+
137
+ ### `dataviz/` (quantitative)
138
+
139
+ **Read:** typography.md (for tabular nums), motion-design.md (for arrival pacing), color-and-contrast.md
140
+
141
+ **Components:**
142
+
143
+ - `BarChart` — animated reveal, stagger bars 6 frames
144
+ - `ProgressBar` — animated fill, end 6 frames before cut
145
+ - `StatCounter` — count 0→N over 60 frames typical, tabular-nums
146
+
147
+ ### `education/` (instructional)
148
+
149
+ **Read:** typography.md (for caption type), voice-and-microcopy.md (for tone), color-and-contrast.md
150
+
151
+ **Components:**
152
+
153
+ - `ClassSubtitles` — natural phrase-boundary breaks, never mid-clause, max 50 chars/cue at 17 chars/sec
154
+ - `LowerThird` — 3 lines max (name / role / context), positioned 80% from top in 16:9
155
+
156
+ ### `music/` (music-video specific)
157
+
158
+ **Read:** motion-design.md (for sync), voice-and-microcopy.md (for lyrics), color-and-contrast.md
159
+
160
+ **Components:**
161
+
162
+ - `AtmosphericOverlay` — color-tinted layer for mood
163
+ - `LyricsOverlay` — cue-word timed accent shifts
164
+ - `EnergyBattery` — visualization of segment energy
165
+ - `SegmentTimeline` — meta-component showing structure
166
+ - `VideoSegment` — base music-video segment unit
167
+
168
+ ---
169
+
170
+ ## Verb-specific Remotion overrides
171
+
172
+ When these verbs run on Remotion targets, additional rules apply:
173
+
174
+ | Verb | Additional rule |
175
+ | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
176
+ | `verb-cinematic` | Stack ColorGrade + CameraMotion + TransitionEffect. Pick all three from the same emotional register (e.g., noir + dolly + glitch for dystopia). |
177
+ | `verb-animate` | Default to `cinematic/CameraMotion` over `animation/` primitives for scenes; reserve `animation/` for individual element entrances. |
178
+ | `verb-colorize` | Always start with a ColorGrade preset before tweaking individual elements. |
179
+ | `verb-typeset` | Verify weights ≥500 for compression survival. |
180
+ | `verb-rebrand` | Choose ColorGrade preset first; let it dictate accent shifts across all `text/` components. |
181
+ | `verb-overdrive` | Maximum stack: ColorGrade + CameraMotion + ParticleSystem + 2 TransitionEffect variants per scene transition. Use sparingly. |
182
+
183
+ ## Cross-references
184
+
185
+ - For each thematic reference: see the corresponding `references/<name>.md` in this skill
186
+ - For actual component implementations: `<your-renderer>/src/components/<bucket>/`
187
+ - For schemas (Zod): `<your-renderer>/src/schemas/`