@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.
- package/.claude/CLAUDE.md +216 -0
- package/.claude/hooks/README-license-gate.md +45 -0
- package/.claude/hooks/auto-summarize.js +47 -0
- package/.claude/hooks/context-monitor.js +60 -0
- package/.claude/hooks/doc-sync.js +111 -0
- package/.claude/hooks/license-gate.cjs +59 -0
- package/.claude/hooks/session-reset.js +27 -0
- package/.claude/hooks/thoughts-indexer.js +80 -0
- package/.claude/rules/merlin-constitution.md +27 -0
- package/.merlin-core/commands/README.md +19 -0
- package/.merlin-core/commands/founder-mode.md +51 -0
- package/.merlin-core/commands/git/commit.md +35 -0
- package/.merlin-core/commands/git/describe-pr.md +43 -0
- package/.merlin-core/commands/git/safe-commit.md +182 -0
- package/.merlin-core/commands/implementation/implement-plan.md +129 -0
- package/.merlin-core/commands/implementation/oneshot.md +63 -0
- package/.merlin-core/commands/implementation/tdd.md +152 -0
- package/.merlin-core/commands/planning/create-plan.md +184 -0
- package/.merlin-core/commands/planning/iterate-plan.md +45 -0
- package/.merlin-core/commands/planning/validate-plan.md +48 -0
- package/.merlin-core/commands/research/analyze-issue.md +155 -0
- package/.merlin-core/commands/research/research-codebase.md +157 -0
- package/.merlin-core/commands/review/adversarial-review.md +112 -0
- package/.merlin-core/commands/review/check.md +91 -0
- package/.merlin-core/commands/review/debug.md +135 -0
- package/.merlin-core/commands/review/doubts.md +178 -0
- package/.merlin-core/commands/review/engineering-audit.md +87 -0
- package/.merlin-core/commands/review/local-review.md +48 -0
- package/.merlin-core/commands/review/verify-goals.md +83 -0
- package/.merlin-core/commands/session/capture-feedback.md +74 -0
- package/.merlin-core/commands/session/capture-learning.md +155 -0
- package/.merlin-core/commands/session/check-objectives.md +85 -0
- package/.merlin-core/commands/session/conclude.md +125 -0
- package/.merlin-core/commands/session/create-handoff.md +88 -0
- package/.merlin-core/commands/session/create-objective.md +111 -0
- package/.merlin-core/commands/session/create-process.md +105 -0
- package/.merlin-core/commands/session/create-reminder.md +86 -0
- package/.merlin-core/commands/session/fast-start.md +261 -0
- package/.merlin-core/commands/session/recall-learnings.md +79 -0
- package/.merlin-core/commands/session/recall-processes.md +74 -0
- package/.merlin-core/commands/session/resume-handoff.md +51 -0
- package/.merlin-core/commands/session/run-process.md +53 -0
- package/.merlin-core/commands/special/beauty.md +89 -0
- package/.merlin-core/commands/special/common-ground.md +114 -0
- package/.merlin-core/commands/special/elicit.md +98 -0
- package/.merlin-core/commands/special/party.md +66 -0
- package/.merlin-core/commands/special/scrape.md +78 -0
- package/.merlin-core/commands/special/skill-audit.md +128 -0
- package/.merlin-core/commands/special/start-here.md +132 -0
- package/.merlin-core/constitution.md +442 -0
- package/.merlin-core/core/README.md +19 -0
- package/.merlin-core/core/alkimia/README.md +20 -0
- package/.merlin-core/core/alkimia/context/context-tracker.js +209 -0
- package/.merlin-core/core/alkimia/domain/domain-loader.js +215 -0
- package/.merlin-core/core/alkimia/engine.js +284 -0
- package/.merlin-core/core/alkimia/layers/l0-constitution.js +47 -0
- package/.merlin-core/core/alkimia/layers/l1-global.js +58 -0
- package/.merlin-core/core/alkimia/layers/l2-agent.js +58 -0
- package/.merlin-core/core/alkimia/layers/l3-workflow.js +54 -0
- package/.merlin-core/core/alkimia/layers/l4-task.js +45 -0
- package/.merlin-core/core/alkimia/layers/l5-squad.js +161 -0
- package/.merlin-core/core/alkimia/layers/l6-skill.js +520 -0
- package/.merlin-core/core/alkimia/layers/l7-star-command.js +87 -0
- package/.merlin-core/core/alkimia/layers/layer-processor.js +78 -0
- package/.merlin-core/core/alkimia/mandate.js +46 -0
- package/.merlin-core/core/alkimia/memory/doc-sync.js +201 -0
- package/.merlin-core/core/alkimia/memory/document-sharder.js +272 -0
- package/.merlin-core/core/alkimia/memory/git-history-retriever.js +225 -0
- package/.merlin-core/core/alkimia/memory/memory-bridge.js +97 -0
- package/.merlin-core/core/alkimia/memory/session-analyzer.js +400 -0
- package/.merlin-core/core/alkimia/memory/thoughts-indexer.js +477 -0
- package/.merlin-core/core/alkimia/memory/thoughts-provider.js +603 -0
- package/.merlin-core/core/alkimia/output/formatter.js +464 -0
- package/.merlin-core/core/alkimia/security/content-sanitizer.js +140 -0
- package/.merlin-core/core/alkimia/skill-importer.js +440 -0
- package/.merlin-core/core/alkimia/squads/default/.synapse/manifest +17 -0
- package/.merlin-core/core/alkimia/utils/frontmatter.js +321 -0
- package/.merlin-core/core/alkimia/utils/tokens.js +24 -0
- package/.merlin-core/core/approval/README.md +16 -0
- package/.merlin-core/core/approval/approval-engine.js +380 -0
- package/.merlin-core/core/approval/channels/cli-channel.js +50 -0
- package/.merlin-core/core/config/README.md +17 -0
- package/.merlin-core/core/config/config-cache.js +182 -0
- package/.merlin-core/core/config/config-loader.js +279 -0
- package/.merlin-core/core/config/config-resolver.js +411 -0
- package/.merlin-core/core/config/env-interpolator.js +123 -0
- package/.merlin-core/core/config/merge-utils.js +102 -0
- package/.merlin-core/core/config/schemas/core-config.schema.json +41 -0
- package/.merlin-core/core/config/schemas/framework-config.schema.json +24 -0
- package/.merlin-core/core/config/schemas/local-config.schema.json +23 -0
- package/.merlin-core/core/config/schemas/project-config.schema.json +189 -0
- package/.merlin-core/core/docs-consistency.js +140 -0
- package/.merlin-core/core/events/event-bus.js +344 -0
- package/.merlin-core/core/events/hook-handler.js +419 -0
- package/.merlin-core/core/execution/README.md +17 -0
- package/.merlin-core/core/execution/attempt-journal.js +380 -0
- package/.merlin-core/core/execution/autonomous-build-loop.js +637 -0
- package/.merlin-core/core/execution/build-orchestrator.js +296 -0
- package/.merlin-core/core/execution/build-state-manager.js +196 -0
- package/.merlin-core/core/execution/context-injector.js +204 -0
- package/.merlin-core/core/execution/cron-engine.js +247 -0
- package/.merlin-core/core/execution/cron-expression.js +148 -0
- package/.merlin-core/core/execution/env-preflight.js +423 -0
- package/.merlin-core/core/execution/guardrail-engine.js +745 -0
- package/.merlin-core/core/execution/heartbeat-engine.js +198 -0
- package/.merlin-core/core/execution/model-router.js +282 -0
- package/.merlin-core/core/execution/parallel-executor.js +378 -0
- package/.merlin-core/core/execution/parallel-monitor.js +201 -0
- package/.merlin-core/core/execution/party-session.js +311 -0
- package/.merlin-core/core/execution/rate-limit-manager.js +152 -0
- package/.merlin-core/core/execution/result-aggregator.js +215 -0
- package/.merlin-core/core/execution/semantic-merge-engine.js +320 -0
- package/.merlin-core/core/execution/subagent-dispatcher.js +721 -0
- package/.merlin-core/core/execution/success-verifier.js +227 -0
- package/.merlin-core/core/execution/task-metadata.js +105 -0
- package/.merlin-core/core/execution/team-executor.js +195 -0
- package/.merlin-core/core/execution/two-tier-editor.js +290 -0
- package/.merlin-core/core/execution/version-snapshot.js +294 -0
- package/.merlin-core/core/execution/wave-executor.js +224 -0
- package/.merlin-core/core/health-check/health-engine.js +415 -0
- package/.merlin-core/core/licensing/activation.js +281 -0
- package/.merlin-core/core/licensing/crc.js +103 -0
- package/.merlin-core/core/licensing/entitlement.js +99 -0
- package/.merlin-core/core/licensing/fingerprint.js +104 -0
- package/.merlin-core/core/licensing/gate.js +133 -0
- package/.merlin-core/core/licensing/hmac.js +42 -0
- package/.merlin-core/core/licensing/key.js +144 -0
- package/.merlin-core/core/licensing/license.js +212 -0
- package/.merlin-core/core/mcp/README.md +16 -0
- package/.merlin-core/core/mcp/browser-capability.js +191 -0
- package/.merlin-core/core/mcp/capability-mapper.js +92 -0
- package/.merlin-core/core/mcp/mcp-connector.js +278 -0
- package/.merlin-core/core/mcp/mcp-registry.js +101 -0
- package/.merlin-core/core/orchestration/README.md +17 -0
- package/.merlin-core/core/orchestration/agent-invoker.js +456 -0
- package/.merlin-core/core/orchestration/condition-evaluator.js +250 -0
- package/.merlin-core/core/orchestration/decision-tree.js +192 -0
- package/.merlin-core/core/orchestration/executor-assignment.js +372 -0
- package/.merlin-core/core/orchestration/gate-evaluator.js +653 -0
- package/.merlin-core/core/orchestration/intent-classifier.js +579 -0
- package/.merlin-core/core/orchestration/lock-manager.js +308 -0
- package/.merlin-core/core/orchestration/master-orchestrator.js +363 -0
- package/.merlin-core/core/orchestration/phase-tool-masks.js +194 -0
- package/.merlin-core/core/orchestration/recovery-handler.js +402 -0
- package/.merlin-core/core/orchestration/reflect-checkpoint.js +431 -0
- package/.merlin-core/core/orchestration/session-state.js +430 -0
- package/.merlin-core/core/orchestration/skill-dispatcher.js +255 -0
- package/.merlin-core/core/orchestration/step-loader.js +226 -0
- package/.merlin-core/core/orchestration/workflow-executor.js +864 -0
- package/.merlin-core/core/process/executor.js +231 -0
- package/.merlin-core/core/process/process-file.js +50 -0
- package/.merlin-core/core/process/secret-scan.js +86 -0
- package/.merlin-core/core/process/signature.js +77 -0
- package/.merlin-core/core/quality-gates/README.md +17 -0
- package/.merlin-core/core/quality-gates/layer1-precommit.js +110 -0
- package/.merlin-core/core/quality-gates/layer2-pr-automation.js +116 -0
- package/.merlin-core/core/quality-gates/layer3-human-review.js +133 -0
- package/.merlin-core/core/registry/service-registry.js +140 -0
- package/.merlin-core/core-config.yaml +159 -0
- package/.merlin-core/development/README.md +17 -0
- package/.merlin-core/development/agents/README.md +16 -0
- package/.merlin-core/development/agents/analyst.md +214 -0
- package/.merlin-core/development/agents/architect.md +166 -0
- package/.merlin-core/development/agents/data-engineer.md +154 -0
- package/.merlin-core/development/agents/dev.md +203 -0
- package/.merlin-core/development/agents/devops.md +236 -0
- package/.merlin-core/development/agents/grimorio.md +125 -0
- package/.merlin-core/development/agents/merlin-master.md +173 -0
- package/.merlin-core/development/agents/meta.md +190 -0
- package/.merlin-core/development/agents/pm.md +145 -0
- package/.merlin-core/development/agents/po.md +172 -0
- package/.merlin-core/development/agents/qa.md +275 -0
- package/.merlin-core/development/agents/researcher.md +218 -0
- package/.merlin-core/development/agents/scout.md +179 -0
- package/.merlin-core/development/agents/sm.md +148 -0
- package/.merlin-core/development/agents/ux.md +169 -0
- package/.merlin-core/development/agents/web-researcher.md +203 -0
- package/.merlin-core/development/checklists/adversarial-review-checklist.md +70 -0
- package/.merlin-core/development/checklists/operations-ci-checklist.md +40 -0
- package/.merlin-core/development/checklists/operations-deploy-checklist.md +54 -0
- package/.merlin-core/development/checklists/operations-publish-checklist.md +47 -0
- package/.merlin-core/development/checklists/source-verification-checklist.md +38 -0
- package/.merlin-core/development/templates/HEARTBEAT-template.md +46 -0
- package/.merlin-core/development/templates/ears-requirements-template.md +93 -0
- package/.merlin-core/development/templates/handoff-template.md +50 -0
- package/.merlin-core/development/templates/prd-template.md +62 -0
- package/.merlin-core/development/templates/research-template.md +53 -0
- package/.merlin-core/development/templates/spec-template.md +84 -0
- package/.merlin-core/development/workflows/brownfield-discovery.yaml +166 -0
- package/.merlin-core/development/workflows/brownfield-service.yaml +52 -0
- package/.merlin-core/development/workflows/development-cycle.yaml +57 -0
- package/.merlin-core/development/workflows/epic-orchestration.yaml +47 -0
- package/.merlin-core/development/workflows/folloni-funnel.yaml +177 -0
- package/.merlin-core/development/workflows/greenfield-fullstack.yaml +167 -0
- package/.merlin-core/development/workflows/greenfield-service.yaml +56 -0
- package/.merlin-core/development/workflows/qa-loop.yaml +115 -0
- package/.merlin-core/development/workflows/spec-pipeline.yaml +185 -0
- package/.merlin-core/development/workflows/steps/folloni-01-research.yaml +35 -0
- package/.merlin-core/development/workflows/steps/folloni-02-architecture.yaml +41 -0
- package/.merlin-core/development/workflows/steps/folloni-03-implementation.yaml +52 -0
- package/.merlin-core/development/workflows/story-development-cycle.yaml +67 -0
- package/.merlin-core/docs/GUIDE.md +413 -0
- package/.merlin-core/docs/merlin-commands-guide-pt.md +183 -0
- package/.merlin-core/framework-config.yaml +148 -0
- package/.merlin-core/hooks/README.md +16 -0
- package/.merlin-core/hooks/precompact-memory-flush.js +69 -0
- package/.merlin-core/hooks/pretooluse-remote-approve.js +113 -0
- package/.merlin-core/hooks/spikes/spike-b-hook.js +70 -0
- package/.merlin-core/hooks/spikes/spike-b-stub.js +70 -0
- package/.merlin-core/index.js +91 -0
- package/.merlin-core/local-config.yaml.template +31 -0
- package/.merlin-core/mcp-servers/lsp-bridge/index.js +397 -0
- package/.merlin-core/modules/scraping/module.json +23 -0
- package/.merlin-core/project-config.yaml +89 -0
- package/.merlin-core/schemas/README.md +18 -0
- package/.merlin-core/schemas/agent-hook-schema.json +152 -0
- package/.merlin-core/schemas/agent-schema.json +31 -0
- package/.merlin-core/schemas/command-schema.json +18 -0
- package/.merlin-core/schemas/feedback-schema.json +36 -0
- package/.merlin-core/schemas/handoff-schema.json +19 -0
- package/.merlin-core/schemas/learning-schema.json +51 -0
- package/.merlin-core/schemas/module.schema.json +124 -0
- package/.merlin-core/schemas/must-haves-schema.json +95 -0
- package/.merlin-core/schemas/objective-schema.json +23 -0
- package/.merlin-core/schemas/plan-schema.json +20 -0
- package/.merlin-core/schemas/process-schema.json +82 -0
- package/.merlin-core/schemas/reminder-schema.json +20 -0
- package/.merlin-core/schemas/skill-eval-schema.json +92 -0
- package/.merlin-core/schemas/skill-schema.json +77 -0
- package/.merlin-core/schemas/workflow-schema.json +38 -0
- package/.merlin-core/skills/README.md +16 -0
- package/.merlin-core/skills/domain/azure-cloud/SKILL.md +211 -0
- package/.merlin-core/skills/domain/azure-cloud/references/appinsights-instrumentation.md +63 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-compliance.md +99 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-cost-optimization.md +419 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-deploy.md +82 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-diagnostics.md +130 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-prepare.md +134 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-quotas.md +290 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-rbac.md +11 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-lookup.md +97 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-visualizer.md +178 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-storage.md +91 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-validate.md +58 -0
- package/.merlin-core/skills/domain/azure-cloud/references/entra-app-registration.md +192 -0
- package/.merlin-core/skills/domain/browser-automation/SKILL.md +311 -0
- package/.merlin-core/skills/domain/browser-automation/references/agent-browser-skill.md +632 -0
- package/.merlin-core/skills/domain/browser-automation/references/authentication.md +308 -0
- package/.merlin-core/skills/domain/browser-automation/references/commands.md +266 -0
- package/.merlin-core/skills/domain/browser-automation/references/profiling.md +120 -0
- package/.merlin-core/skills/domain/browser-automation/references/proxy-support.md +194 -0
- package/.merlin-core/skills/domain/browser-automation/references/session-management.md +194 -0
- package/.merlin-core/skills/domain/browser-automation/references/snapshot-refs.md +196 -0
- package/.merlin-core/skills/domain/browser-automation/references/video-recording.md +173 -0
- package/.merlin-core/skills/domain/browser-automation/templates/authenticated-session.sh +105 -0
- package/.merlin-core/skills/domain/browser-automation/templates/capture-workflow.sh +69 -0
- package/.merlin-core/skills/domain/browser-automation/templates/form-automation.sh +62 -0
- package/.merlin-core/skills/domain/digital-marketing/SKILL.md +292 -0
- package/.merlin-core/skills/domain/digital-marketing/references/content-strategy.md +320 -0
- package/.merlin-core/skills/domain/digital-marketing/references/copy-formats.md +298 -0
- package/.merlin-core/skills/domain/digital-marketing/references/copy-methodology.md +180 -0
- package/.merlin-core/skills/domain/digital-marketing/references/email-sequences.md +135 -0
- package/.merlin-core/skills/domain/digital-marketing/references/launch-strategy.md +213 -0
- package/.merlin-core/skills/domain/digital-marketing/references/pricing-strategy.md +160 -0
- package/.merlin-core/skills/domain/digital-marketing/references/programmatic-seo.md +237 -0
- package/.merlin-core/skills/domain/digital-marketing/references/revops-lifecycle.md +170 -0
- package/.merlin-core/skills/domain/digital-marketing/references/revops-operations.md +167 -0
- package/.merlin-core/skills/domain/digital-marketing/references/schema-markup.md +190 -0
- package/.merlin-core/skills/domain/digital-marketing/references/strategy-frameworks.md +324 -0
- package/.merlin-core/skills/domain/digital-marketing/references/traffic-management.md +350 -0
- package/.merlin-core/skills/domain/expo-native-ui/SKILL.md +348 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/animations.md +220 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/api-routes.md +361 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/cicd-workflows.md +84 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/controls.md +266 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/data-fetching.md +553 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/deployment-stores.md +1353 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/deployment.md +183 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/dev-client.md +166 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/dom-components.md +410 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/form-sheet.md +253 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/gradients.md +117 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/icons.md +218 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/media.md +245 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/platform-native.md +75 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/route-structure.md +229 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/search.md +249 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/storage.md +121 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/tabs.md +433 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/tailwind-native.md +473 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/toolbar-and-headers.md +284 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/upgrading-guides.md +674 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/upgrading.md +127 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/visual-effects.md +199 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/webgpu-three.md +605 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/zoom-transitions.md +161 -0
- package/.merlin-core/skills/domain/marketing-ops/SKILL.md +117 -0
- package/.merlin-core/skills/domain/marketing-ops/references/_index.md +78 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/generative-tools.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/platform-specs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative.md +251 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/ad-copy-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/audience-targeting.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/conversion-tracking.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/platform-setup-checklists.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads.md +322 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-patterns.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-types.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/platform-ranking-factors.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo.md +388 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/apple-specs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/benchmarks.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/google-play-specs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/report-template.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/scoring-criteria.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso.md +316 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/co-marketing.md +305 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/community-marketing.md +169 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/tool-reference.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling.md +442 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/content-architecture.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors.md +281 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/content-strategy.md +16 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/directory-list.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/positioning-variations.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/submission-tracker-template.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions.md +396 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools/references/tool-types.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools.md +196 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/image/references/ai-image-prompting.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/image.md +352 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/launch.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/benchmarks.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/format-guide.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets.md +333 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/programmatic-seo.md +16 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/schema.md +16 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/ai-writing-detection.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/international-seo.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit.md +546 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/mermaid-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/navigation-patterns.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/site-type-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture.md +371 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platform-limits.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platforms.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/post-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/reverse-engineering.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/short-form-video.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social.md +431 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/video/references/ai-video-prompting.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/video.md +353 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/sample-size-guide.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/test-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing.md +379 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/event-library.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/ga4-implementation.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/gtm-implementation.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics.md +323 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/copy-editing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/copywriting.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/experiments.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/form.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/cro.md +211 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/emails.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls/references/experiments.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls.md +255 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/popups.md +518 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/pricing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/deck-frameworks.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/demo-scripts.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/objection-library.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/one-pager-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement.md +371 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/signup.md +406 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/co-marketing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/community-marketing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/affiliate-programs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/program-examples.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals.md +278 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research/references/source-guides.md +425 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research.md +284 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas/references/ideas-by-category.md +216 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas.md +188 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-psychology.md +532 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/product-marketing.md +276 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/cancel-flow-patterns.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/dunning-playbook.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention.md +442 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding/references/experiments.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding.md +243 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-lifecycle.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-operations.md +18 -0
- package/.merlin-core/skills/domain/n8n-automation/SKILL.md +149 -0
- package/.merlin-core/skills/domain/n8n-automation/references/code-javascript.md +3744 -0
- package/.merlin-core/skills/domain/n8n-automation/references/code-python.md +3293 -0
- package/.merlin-core/skills/domain/n8n-automation/references/expression-syntax.md +1662 -0
- package/.merlin-core/skills/domain/n8n-automation/references/mcp-tools-expert.md +2111 -0
- package/.merlin-core/skills/domain/n8n-automation/references/node-configuration.md +2523 -0
- package/.merlin-core/skills/domain/n8n-automation/references/validation-expert.md +2491 -0
- package/.merlin-core/skills/domain/n8n-automation/references/workflow-patterns.md +4624 -0
- package/.merlin-core/skills/domain/ops-manual/SKILL.md +225 -0
- package/.merlin-core/skills/domain/ops-manual/references/elicitation-questions.md +141 -0
- package/.merlin-core/skills/domain/ops-manual/references/external-skills-registry.md +63 -0
- package/.merlin-core/skills/domain/ops-manual/references/operations-template.yaml +132 -0
- package/.merlin-core/skills/domain/remotion-best-practices/SKILL.md +99 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/3d.md +86 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/animations.md +27 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets.md +78 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/audio.md +172 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/calculate-metadata.md +131 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/can-decode.md +75 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/charts.md +68 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/compositions.md +154 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/display-captions.md +126 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/extract-frames.md +229 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/fonts.md +152 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/gifs.md +144 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/images.md +134 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/lottie.md +70 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/maps.md +414 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-text.md +143 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/parameters.md +109 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/sequencing.md +118 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/tailwind.md +11 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/text-animations.md +20 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/timing.md +179 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/transitions.md +137 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/trimming.md +51 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/videos.md +171 -0
- package/.merlin-core/skills/domain/resend-email/SKILL.md +377 -0
- package/.merlin-core/skills/general/adversarial-review/SKILL.md +144 -0
- package/.merlin-core/skills/general/api-design/SKILL.md +513 -0
- package/.merlin-core/skills/general/apify-scrape/SKILL.md +137 -0
- package/.merlin-core/skills/general/apify-scrape/scripts/apify-scrape.sh +68 -0
- package/.merlin-core/skills/general/backup/SKILL.md +87 -0
- package/.merlin-core/skills/general/blkskrn/SKILL.md +392 -0
- package/.merlin-core/skills/general/blkskrn/references/animation-patterns.md +521 -0
- package/.merlin-core/skills/general/blkskrn/references/design-system.md +637 -0
- package/.merlin-core/skills/general/blkskrn/references/html-templates.md +440 -0
- package/.merlin-core/skills/general/blkskrn/references/presenter-template.md +45 -0
- package/.merlin-core/skills/general/blkskrn/references/slide-types.md +424 -0
- package/.merlin-core/skills/general/blkskrn/scripts/canvas-manager.js +502 -0
- package/.merlin-core/skills/general/blkskrn/scripts/presenter.js +90 -0
- package/.merlin-core/skills/general/blkskrn/templates/presenter.html +273 -0
- package/.merlin-core/skills/general/blkskrn/templates/slide-base.html +277 -0
- package/.merlin-core/skills/general/blkskrn/templates/viewer.html +165 -0
- package/.merlin-core/skills/general/browser-takeover/SKILL.md +53 -0
- package/.merlin-core/skills/general/claude-api/SKILL.md +90 -0
- package/.merlin-core/skills/general/code-javascript/SKILL.md +268 -0
- package/.merlin-core/skills/general/code-python/SKILL.md +424 -0
- package/.merlin-core/skills/general/code-style/SKILL.md +97 -0
- package/.merlin-core/skills/general/code-typescript/SKILL.md +361 -0
- package/.merlin-core/skills/general/cold-email/SKILL.md +164 -0
- package/.merlin-core/skills/general/cold-email/references/benchmarks.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/follow-up-sequences.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/frameworks.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/personalization.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/subject-lines.md +18 -0
- package/.merlin-core/skills/general/container-security/SKILL.md +462 -0
- package/.merlin-core/skills/general/context-management/SKILL.md +79 -0
- package/.merlin-core/skills/general/copy-editing/SKILL.md +501 -0
- package/.merlin-core/skills/general/copy-editing/references/checklist.md +18 -0
- package/.merlin-core/skills/general/copy-editing/references/content-refresh.md +18 -0
- package/.merlin-core/skills/general/copy-editing/references/plain-english-alternatives.md +18 -0
- package/.merlin-core/skills/general/copywriting/SKILL.md +294 -0
- package/.merlin-core/skills/general/copywriting/references/copy-frameworks.md +392 -0
- package/.merlin-core/skills/general/copywriting/references/natural-transitions.md +276 -0
- package/.merlin-core/skills/general/database/SKILL.md +561 -0
- package/.merlin-core/skills/general/database/references/postgres-concurrency.md +182 -0
- package/.merlin-core/skills/general/database/references/postgres-connections.md +97 -0
- package/.merlin-core/skills/general/database/references/postgres-data-patterns.md +159 -0
- package/.merlin-core/skills/general/database/references/postgres-monitoring.md +136 -0
- package/.merlin-core/skills/general/database/references/postgres-rls.md +140 -0
- package/.merlin-core/skills/general/database-provision/SKILL.md +56 -0
- package/.merlin-core/skills/general/deploy/SKILL.md +65 -0
- package/.merlin-core/skills/general/design-inspiration/SKILL.md +146 -0
- package/.merlin-core/skills/general/design-palette/SKILL.md +99 -0
- package/.merlin-core/skills/general/design-palette/references/full-palettes.md +144 -0
- package/.merlin-core/skills/general/design-system/SKILL.md +94 -0
- package/.merlin-core/skills/general/design-typography/SKILL.md +115 -0
- package/.merlin-core/skills/general/design-typography/references/full-pairings.md +144 -0
- package/.merlin-core/skills/general/design-ux-patterns/SKILL.md +155 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/charts-data-guidelines.md +197 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/landing-patterns.md +199 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/professional-ui-checklist.md +56 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/style-catalog.md +89 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/ux-guidelines.md +837 -0
- package/.merlin-core/skills/general/discover-cloud/SKILL.md +108 -0
- package/.merlin-core/skills/general/doc-sync/SKILL.md +52 -0
- package/.merlin-core/skills/general/document-sharding/SKILL.md +53 -0
- package/.merlin-core/skills/general/docx/SKILL.md +418 -0
- package/.merlin-core/skills/general/docx/references/windows-setup.md +27 -0
- package/.merlin-core/skills/general/docx/scripts/__init__.py +1 -0
- package/.merlin-core/skills/general/docx/scripts/accept_changes.py +135 -0
- package/.merlin-core/skills/general/docx/scripts/comment.py +318 -0
- package/.merlin-core/skills/general/docx/scripts/office/__init__.py +0 -0
- package/.merlin-core/skills/general/docx/scripts/office/helpers/__init__.py +0 -0
- package/.merlin-core/skills/general/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/.merlin-core/skills/general/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/.merlin-core/skills/general/docx/scripts/office/pack.py +159 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.merlin-core/skills/general/docx/scripts/office/soffice.py +183 -0
- package/.merlin-core/skills/general/docx/scripts/office/unpack.py +132 -0
- package/.merlin-core/skills/general/docx/scripts/office/validate.py +111 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/__init__.py +15 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/base.py +847 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/docx.py +446 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/pptx.py +275 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/redlining.py +247 -0
- package/.merlin-core/skills/general/docx/scripts/templates/comments.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/commentsExtended.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/commentsIds.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/people.xml +3 -0
- package/.merlin-core/skills/general/elicitation/SKILL.md +188 -0
- package/.merlin-core/skills/general/engineering-audit/SKILL.md +122 -0
- package/.merlin-core/skills/general/find-and-edit/SKILL.md +102 -0
- package/.merlin-core/skills/general/first-party-docs/SKILL.md +51 -0
- package/.merlin-core/skills/general/frontend-design/SKILL.md +204 -0
- package/.merlin-core/skills/general/guardrails/SKILL.md +144 -0
- package/.merlin-core/skills/general/image-gen/SKILL.md +49 -0
- package/.merlin-core/skills/general/learning-capture/SKILL.md +192 -0
- package/.merlin-core/skills/general/lgpd-compliance-audit/SKILL.md +448 -0
- package/.merlin-core/skills/general/load-testing/SKILL.md +114 -0
- package/.merlin-core/skills/general/load-testing/docker/Dockerfile.dashboard +21 -0
- package/.merlin-core/skills/general/load-testing/docker/docker-compose.locust.yml +39 -0
- package/.merlin-core/skills/general/load-testing/requirements.txt +1 -0
- package/.merlin-core/skills/general/load-testing/scripts/compare_baseline.py +172 -0
- package/.merlin-core/skills/general/load-testing/scripts/run_local.py +245 -0
- package/.merlin-core/skills/general/load-testing/templates/load_shape_stepped.py +35 -0
- package/.merlin-core/skills/general/load-testing/templates/locustfile_dashboard.py +47 -0
- package/.merlin-core/skills/general/load-testing/templates/threshold_hook.py +36 -0
- package/.merlin-core/skills/general/mage-beauty/SKILL.md +89 -0
- package/.merlin-core/skills/general/mage-beauty/references/anti-patterns.md +148 -0
- package/.merlin-core/skills/general/mage-beauty/references/color-and-contrast.md +87 -0
- package/.merlin-core/skills/general/mage-beauty/references/interaction-design.md +99 -0
- package/.merlin-core/skills/general/mage-beauty/references/motion-design.md +90 -0
- package/.merlin-core/skills/general/mage-beauty/references/remotion-bridge.md +187 -0
- package/.merlin-core/skills/general/mage-beauty/references/responsive-and-multi-format.md +98 -0
- package/.merlin-core/skills/general/mage-beauty/references/spatial-design.md +88 -0
- package/.merlin-core/skills/general/mage-beauty/references/typography.md +60 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-adapt.md +102 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-animate.md +97 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-audit.md +99 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-bolder.md +94 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-cinematic.md +128 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-clarify.md +107 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-colorize.md +106 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-critique.md +88 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-delight.md +98 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-distill.md +97 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-harden.md +79 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-layout.md +104 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-onboard.md +98 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-optimize.md +124 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-overdrive.md +105 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-polish.md +91 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-quieter.md +95 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-rebrand.md +127 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-shape.md +160 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-typeset.md +109 -0
- package/.merlin-core/skills/general/mage-beauty/references/voice-and-microcopy.md +137 -0
- package/.merlin-core/skills/general/mcp-builder/SKILL.md +92 -0
- package/.merlin-core/skills/general/network-debug/SKILL.md +51 -0
- package/.merlin-core/skills/general/next-best-practices/SKILL.md +177 -0
- package/.merlin-core/skills/general/next-best-practices/references/async-patterns.md +87 -0
- package/.merlin-core/skills/general/next-best-practices/references/bundling.md +182 -0
- package/.merlin-core/skills/general/next-best-practices/references/data-patterns.md +306 -0
- package/.merlin-core/skills/general/next-best-practices/references/debug-tricks.md +125 -0
- package/.merlin-core/skills/general/next-best-practices/references/directives.md +74 -0
- package/.merlin-core/skills/general/next-best-practices/references/error-handling.md +232 -0
- package/.merlin-core/skills/general/next-best-practices/references/file-conventions.md +141 -0
- package/.merlin-core/skills/general/next-best-practices/references/font.md +257 -0
- package/.merlin-core/skills/general/next-best-practices/references/functions.md +108 -0
- package/.merlin-core/skills/general/next-best-practices/references/hydration-error.md +88 -0
- package/.merlin-core/skills/general/next-best-practices/references/image.md +179 -0
- package/.merlin-core/skills/general/next-best-practices/references/metadata.md +296 -0
- package/.merlin-core/skills/general/next-best-practices/references/parallel-routes.md +298 -0
- package/.merlin-core/skills/general/next-best-practices/references/route-handlers.md +146 -0
- package/.merlin-core/skills/general/next-best-practices/references/rsc-boundaries.md +164 -0
- package/.merlin-core/skills/general/next-best-practices/references/runtime-selection.md +40 -0
- package/.merlin-core/skills/general/next-best-practices/references/scripts.md +141 -0
- package/.merlin-core/skills/general/next-best-practices/references/self-hosting.md +384 -0
- package/.merlin-core/skills/general/next-best-practices/references/suspense-boundaries.md +67 -0
- package/.merlin-core/skills/general/next-steps/SKILL.md +43 -0
- package/.merlin-core/skills/general/party-mode/SKILL.md +57 -0
- package/.merlin-core/skills/general/pdf/SKILL.md +298 -0
- package/.merlin-core/skills/general/pdf/references/forms.md +312 -0
- package/.merlin-core/skills/general/pdf/references/reference.md +640 -0
- package/.merlin-core/skills/general/pdf/references/windows-setup.md +40 -0
- package/.merlin-core/skills/general/pdf/scripts/check_bounding_boxes.py +65 -0
- package/.merlin-core/skills/general/pdf/scripts/check_fillable_fields.py +11 -0
- package/.merlin-core/skills/general/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/.merlin-core/skills/general/pdf/scripts/create_validation_image.py +37 -0
- package/.merlin-core/skills/general/pdf/scripts/extract_form_field_info.py +122 -0
- package/.merlin-core/skills/general/pdf/scripts/extract_form_structure.py +115 -0
- package/.merlin-core/skills/general/pdf/scripts/fill_fillable_fields.py +98 -0
- package/.merlin-core/skills/general/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/.merlin-core/skills/general/pptx/SKILL.md +133 -0
- package/.merlin-core/skills/general/pptx/references/editing.md +213 -0
- package/.merlin-core/skills/general/pptx/references/pptxgenjs.md +581 -0
- package/.merlin-core/skills/general/pptx/references/windows-setup.md +27 -0
- package/.merlin-core/skills/general/pptx/scripts/__init__.py +0 -0
- package/.merlin-core/skills/general/pptx/scripts/add_slide.py +195 -0
- package/.merlin-core/skills/general/pptx/scripts/clean.py +286 -0
- package/.merlin-core/skills/general/pptx/scripts/thumbnail.py +289 -0
- package/.merlin-core/skills/general/property-testing/SKILL.md +214 -0
- package/.merlin-core/skills/general/purge-leaked-secret/SKILL.md +383 -0
- package/.merlin-core/skills/general/reflection/SKILL.md +100 -0
- package/.merlin-core/skills/general/secret-safe-commit/SKILL.md +246 -0
- package/.merlin-core/skills/general/secret-safe-commit/templates/.gitleaks.toml +91 -0
- package/.merlin-core/skills/general/secret-safe-commit/templates/.pre-commit-config.yaml +57 -0
- package/.merlin-core/skills/general/secret-safe-commit/templates/secret-scan.yml +48 -0
- package/.merlin-core/skills/general/semantic-search/SKILL.md +79 -0
- package/.merlin-core/skills/general/skill-creator/SKILL.md +342 -0
- package/.merlin-core/skills/general/skill-creator/agents/analyzer.md +283 -0
- package/.merlin-core/skills/general/skill-creator/agents/comparator.md +211 -0
- package/.merlin-core/skills/general/skill-creator/agents/grader.md +227 -0
- package/.merlin-core/skills/general/skill-creator/assets/eval_review.html +146 -0
- package/.merlin-core/skills/general/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.merlin-core/skills/general/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.merlin-core/skills/general/skill-creator/references/schemas.md +439 -0
- package/.merlin-core/skills/general/skill-creator/scripts/__init__.py +0 -0
- package/.merlin-core/skills/general/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.merlin-core/skills/general/skill-creator/scripts/generate_report.py +326 -0
- package/.merlin-core/skills/general/skill-creator/scripts/improve_description.py +247 -0
- package/.merlin-core/skills/general/skill-creator/scripts/package_skill.py +136 -0
- package/.merlin-core/skills/general/skill-creator/scripts/quick_validate.py +103 -0
- package/.merlin-core/skills/general/skill-creator/scripts/run_eval.py +310 -0
- package/.merlin-core/skills/general/skill-creator/scripts/run_loop.py +328 -0
- package/.merlin-core/skills/general/skill-creator/scripts/utils.py +47 -0
- package/.merlin-core/skills/general/start-here/SKILL.md +63 -0
- package/.merlin-core/skills/general/start-here/recipes.json +758 -0
- package/.merlin-core/skills/general/start-here/recipes.schema.json +57 -0
- package/.merlin-core/skills/general/static-analysis/SKILL.md +151 -0
- package/.merlin-core/skills/general/tailwind-design-system/SKILL.md +201 -0
- package/.merlin-core/skills/general/tailwind-design-system/references/advanced-v4.md +152 -0
- package/.merlin-core/skills/general/tailwind-design-system/references/component-patterns.md +353 -0
- package/.merlin-core/skills/general/teach-method/SKILL.md +86 -0
- package/.merlin-core/skills/general/team-execution/SKILL.md +67 -0
- package/.merlin-core/skills/general/testing/SKILL.md +412 -0
- package/.merlin-core/skills/general/token-economy/SKILL.md +55 -0
- package/.merlin-core/skills/general/vps-security-hardening/SKILL.md +406 -0
- package/.merlin-core/skills/general/web-quality/SKILL.md +180 -0
- package/.merlin-core/skills/general/webapp-testing/SKILL.md +153 -0
- package/.merlin-core/skills/general/webapp-testing/scripts/screenshot_compare.py +72 -0
- package/.merlin-core/skills/general/webapp-testing/scripts/with_server.py +103 -0
- package/.merlin-core/skills/general/xlsx/SKILL.md +167 -0
- package/.merlin-core/skills/general/xlsx/references/nodejs-sheetjs-styled-reports.md +141 -0
- package/.merlin-core/skills/general/xlsx/references/windows-setup.md +17 -0
- package/.merlin-core/skills/general/xlsx/scripts/recalc.py +184 -0
- package/.merlin-core/skills/general/xlsx/scripts/styled-report.js +130 -0
- package/.merlin-core/skills/general/yolo-mode/SKILL.md +60 -0
- package/.merlin-core/skills/general/youtube-transcript/SKILL.md +177 -0
- package/.merlin-core/skills/general/youtube-transcript/scripts/fetch_transcript.py +188 -0
- package/.merlin-core/skills/general/youtube-transcript/scripts/gladia_transcribe.mjs +230 -0
- package/.merlin-core/tools/commands/activate.js +72 -0
- package/.merlin-core/tools/commands/archive-thoughts.js +181 -0
- package/.merlin-core/tools/commands/backup.js +156 -0
- package/.merlin-core/tools/commands/certify-process.js +196 -0
- package/.merlin-core/tools/commands/convert.js +87 -0
- package/.merlin-core/tools/commands/cron.js +147 -0
- package/.merlin-core/tools/commands/disable.js +73 -0
- package/.merlin-core/tools/commands/doc-sync.js +127 -0
- package/.merlin-core/tools/commands/eval-skill.js +193 -0
- package/.merlin-core/tools/commands/frontmatter.js +49 -0
- package/.merlin-core/tools/commands/heartbeat.js +43 -0
- package/.merlin-core/tools/commands/index-thoughts.js +35 -0
- package/.merlin-core/tools/commands/install-remote-approve.js +184 -0
- package/.merlin-core/tools/commands/install.js +81 -0
- package/.merlin-core/tools/commands/lib/__verify__/diff-reports.js +170 -0
- package/.merlin-core/tools/commands/lib/fs-safe.js +186 -0
- package/.merlin-core/tools/commands/lib/preflight.js +607 -0
- package/.merlin-core/tools/commands/lib/preserve.js +232 -0
- package/.merlin-core/tools/commands/lib/project-config.template.yaml +69 -0
- package/.merlin-core/tools/commands/lib/report.js +231 -0
- package/.merlin-core/tools/commands/lib/settings-merge.js +134 -0
- package/.merlin-core/tools/commands/license.js +52 -0
- package/.merlin-core/tools/commands/list.js +125 -0
- package/.merlin-core/tools/commands/migrate-alkimia.js +271 -0
- package/.merlin-core/tools/commands/modules.js +68 -0
- package/.merlin-core/tools/commands/provision.js +83 -0
- package/.merlin-core/tools/commands/prune-feedback.js +114 -0
- package/.merlin-core/tools/commands/run-process.js +28 -0
- package/.merlin-core/tools/commands/state.js +79 -0
- package/.merlin-core/tools/commands/sync-bridges.js +197 -0
- package/.merlin-core/tools/commands/upgrade.js +1135 -0
- package/.merlin-core/tools/commands/validate-recipes.js +218 -0
- package/.merlin-core/tools/commands/validate.js +159 -0
- package/.merlin-core/tools/commands/yolo.js +82 -0
- package/.merlin-core/tools/compose-rules.mjs +179 -0
- package/.merlin-core/tools/disable-module.mjs +150 -0
- package/.merlin-core/tools/lib/deployer.mjs +131 -0
- package/.merlin-core/tools/lib/modules-activation.mjs +225 -0
- package/.merlin-core/tools/merlin-tools.js +153 -0
- package/.merlin-core/tools/migrate-frontmatter-v3.js +192 -0
- package/.merlin-core/tools/modules-catalog.mjs +174 -0
- package/.merlin-core/tools/provision-module.mjs +191 -0
- package/.merlin-core/tools/verify-module.mjs +99 -0
- package/.merlin-core/tools/vps-security-audit.sh +234 -0
- package/INSTALL.md +312 -0
- package/LICENSE +118 -0
- package/PRIVACY-LICENSING.md +65 -0
- package/README.md +391 -0
- package/bin/README.md +15 -0
- package/bin/convert-to-merlin.sh +109 -0
- package/bin/fleet-patch-hooks.sh +144 -0
- package/bin/fleet-patch-v3-fixes.sh +127 -0
- package/bin/merlin-init.js +232 -0
- package/bin/merlin.js +321 -0
- package/package.json +127 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# responsive-and-multi-format — Web breakpoints + video aspect ratios
|
|
2
|
+
|
|
3
|
+
## Charter
|
|
4
|
+
|
|
5
|
+
Responsive design used to mean "make the desktop layout shrink." That mental model is broken. Today's rule: design for 375 px first, expand outward. Plus, for FF's video pipeline, the format isn't just a screen size — it's a fundamentally different composition. A 1080×1920 vertical reel is not a cropped 1920×1080 video. Beauty in responsive design comes from honoring each canvas as its own thing, not as a derivative of another.
|
|
6
|
+
|
|
7
|
+
## Principles
|
|
8
|
+
|
|
9
|
+
1. **Mobile-first is a discipline, not a hashtag.** Start the CSS from no media query (mobile defaults), add `@media (width >= 768px)` for tablet expansions, `@media (width >= 1024px)` for laptop, `@media (width >= 1440px)` for wide desktop. Reverse-engineering from desktop is harder.
|
|
10
|
+
2. **Breakpoints by content, not by device.** Devices come and go. Content needs change at specific widths — when a card hits 320 px, when text drops below 65 ch, when a 2-column grid no longer fits 2 useful columns. Use logical breakpoints, not "iPhone 14".
|
|
11
|
+
3. **Fluid typography over breakpoint typography.** `font-size: clamp(1rem, 2vw + 0.5rem, 1.5rem)` smoothly scales from mobile to desktop without 6 step changes. Tailwind v4 supports this natively.
|
|
12
|
+
4. **Container queries for components.** A card sidebar component shouldn't care about the viewport — it should care about its container. `@container` (now widely supported) lets components be self-aware.
|
|
13
|
+
5. **No horizontal scroll on mobile.** Test at 375 px. Use `overflow-x: hidden` only as the absolute last resort. Real fix: contain widths, use `min-w-0` on flex children, set `max-width: 100vw` on rebellious elements.
|
|
14
|
+
6. **16 px minimum body text on mobile.** Smaller fonts trigger iOS auto-zoom on form focus. Universally bad UX. Even labels at 14 px should bump up if they're inside a tappable area.
|
|
15
|
+
7. **Touch-first on mobile.** No hover-only interactions. Every hover state needs a tap equivalent. Tooltips become tap-to-reveal popovers.
|
|
16
|
+
8. **For video formats: each aspect ratio is a redesign, not a crop.** The focal element, hierarchy, and safe areas differ. A talking-head shot for 16:9 needs to crop tighter for 9:16, and the lower-third graphic moves entirely.
|
|
17
|
+
|
|
18
|
+
## Web breakpoints
|
|
19
|
+
|
|
20
|
+
**The four-tier system:**
|
|
21
|
+
| Tier | Min width | Use case |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Mobile | 375 px (default) | Phones, narrow viewports |
|
|
24
|
+
| Tablet | 768 px | iPad portrait, landscape phones, narrow laptops |
|
|
25
|
+
| Laptop | 1024 px | iPad landscape, smaller laptops, half-screen browsers |
|
|
26
|
+
| Desktop | 1440 px | Full-screen modern displays |
|
|
27
|
+
|
|
28
|
+
Tailwind v4 default: `sm:` 640, `md:` 768, `lg:` 1024, `xl:` 1280, `2xl:` 1536. Many teams override `sm` to 480 to better match real phone landscape.
|
|
29
|
+
|
|
30
|
+
**Test viewport widths**: 375 (iPhone SE), 414 (iPhone Pro), 768 (iPad), 1024 (iPad landscape), 1440 (laptop), 1920 (desktop). Anything that breaks at any of these fails.
|
|
31
|
+
|
|
32
|
+
**Common responsive patterns:**
|
|
33
|
+
|
|
34
|
+
- **Stack-to-grid** — single column mobile, 2-col tablet, 3-col laptop. Use `grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
|
|
35
|
+
- **Sidebar collapse** — hidden mobile (drawer/sheet), inline tablet+, persistent laptop+
|
|
36
|
+
- **Nav switch** — hamburger mobile, full nav tablet+, mega-menu desktop
|
|
37
|
+
- **Container reflow** — image+text side-by-side on desktop, stacked on mobile, image first or last by hierarchy
|
|
38
|
+
|
|
39
|
+
## Remotion multi-format
|
|
40
|
+
|
|
41
|
+
**FF's 9 templates × 3+ dimensions:**
|
|
42
|
+
|
|
43
|
+
| Template | Format | Dimensions | Aspect | Use case |
|
|
44
|
+
| --------------- | ----------------------- | ------------------------------- | ------ | ----------------------------- |
|
|
45
|
+
| SocialVertical | tiktok | 1080×1920 | 9:16 | TikTok, Instagram Reels |
|
|
46
|
+
| Widescreen | widescreen | 1920×1080 | 16:9 | YouTube, web embeds |
|
|
47
|
+
| SocialSquare | square | 1080×1080 | 1:1 | Instagram feed legacy |
|
|
48
|
+
| Educational | widescreen | 1920×1080 | 16:9 | Course content, tutorials |
|
|
49
|
+
| Promotional | tiktok | 1080×1920 | 9:16 | Promo reels, ads |
|
|
50
|
+
| Storytelling | widescreen | 1920×1080 | 16:9 | Long-form narrative |
|
|
51
|
+
| ProductShowcase | widescreen | 1920×1080 | 16:9 | Product demos |
|
|
52
|
+
| CarouselSlide | square/portrait/stories | 1080×1080, 1080×1350, 1080×1920 | mixed | Static IG carousel |
|
|
53
|
+
| VerticalClip | stories | 1080×1920 | 9:16 | Subtitled clips, face-tracked |
|
|
54
|
+
|
|
55
|
+
**Safe-area zones per platform:**
|
|
56
|
+
|
|
57
|
+
- **Instagram Reels (1080×1920):** top 200 px (username overlay), bottom 250 px (caption + UI), right 80 px (action buttons). Place primary content in the central 980×1470 region.
|
|
58
|
+
- **TikTok (1080×1920):** top 150 px (caption text), bottom 200 px (action bar), right 100 px (icons). Central 880×1570 region.
|
|
59
|
+
- **YouTube (1920×1080):** top 50 px (title overlay first 8 s), bottom 80 px (controls/end-screen). Central 1820×950.
|
|
60
|
+
- **Instagram Feed (1080×1080):** 5% margin every side (54 px). Central 972×972.
|
|
61
|
+
- **Stories (1080×1920):** top 200 px reserved (poll/sticker UI), bottom 100 px (action UI). Central 1080×1620.
|
|
62
|
+
|
|
63
|
+
**Format-specific composition rules:**
|
|
64
|
+
|
|
65
|
+
1. **Vertical (9:16):** vertical hierarchy. Hero element top-third, supporting middle-third, CTA bottom-third (above safe area).
|
|
66
|
+
2. **Square (1:1):** balanced composition. Single focal point center or rule-of-thirds. Avoid wide horizontal layouts.
|
|
67
|
+
3. **Wide (16:9):** rule of thirds. Lower-third graphics 80% from top. Title cards take advantage of horizontal space.
|
|
68
|
+
4. **Portrait (4:5, 1080×1350):** vertical hierarchy with more breathing room than 9:16. Good for IG feed if vertical reels not fitting.
|
|
69
|
+
|
|
70
|
+
## Cross-references
|
|
71
|
+
|
|
72
|
+
- For touch-target rules and mobile interaction: read `interaction-design.md` in this skill
|
|
73
|
+
- For typography sizing across breakpoints: read `typography.md` in this skill
|
|
74
|
+
- For Remotion bucket-by-bucket details: read `remotion-bridge.md` in this skill
|
|
75
|
+
- For Tailwind v4 breakpoint customization: read `tailwind-design-system` skill
|
|
76
|
+
|
|
77
|
+
## Quick checklist
|
|
78
|
+
|
|
79
|
+
**Web:**
|
|
80
|
+
|
|
81
|
+
- [ ] Designed mobile-first (375 px baseline)
|
|
82
|
+
- [ ] Tested at 375 / 768 / 1024 / 1440
|
|
83
|
+
- [ ] No horizontal scroll on mobile
|
|
84
|
+
- [ ] Body text ≥ 16 px on mobile
|
|
85
|
+
- [ ] Container queries used where component reflow needed
|
|
86
|
+
- [ ] Fluid typography (clamp) where appropriate
|
|
87
|
+
- [ ] No hover-only interactions
|
|
88
|
+
- [ ] Sidebar/nav patterns match the 4-tier system
|
|
89
|
+
|
|
90
|
+
**Remotion:**
|
|
91
|
+
|
|
92
|
+
- [ ] Format chosen first, composition designed for it (not cropped)
|
|
93
|
+
- [ ] Safe-area zones respected for target platform
|
|
94
|
+
- [ ] Vertical compositions use vertical hierarchy
|
|
95
|
+
- [ ] Wide compositions use rule of thirds
|
|
96
|
+
- [ ] Square compositions are balanced/centered
|
|
97
|
+
- [ ] Lower-third graphic positioned at 80% bottom for wide formats
|
|
98
|
+
- [ ] No critical content in platform UI overlays
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# spatial-design — Asymmetry, negative space, intentional grid breaks
|
|
2
|
+
|
|
3
|
+
## Charter
|
|
4
|
+
|
|
5
|
+
Most AI-generated layouts default to a centered column with evenly-spaced cards on a 12-column grid. The result is symmetric, balanced, and forgettable. Beauty in space comes from intentional asymmetry, negative space treated as a design element rather than waste, and grid breaks that signal hierarchy. The grid is a tool, not a cage.
|
|
6
|
+
|
|
7
|
+
## Principles
|
|
8
|
+
|
|
9
|
+
1. **Negative space is content.** Whitespace is not empty — it directs attention, signals luxury, and gives the eye somewhere to rest. The most expensive products in the world (Apple, Hermès, Aesop) use more whitespace than competitors, not less.
|
|
10
|
+
2. **Asymmetric layouts feel alive.** A centered hero with three centered feature columns underneath looks like a template. Off-center the hero, weight one feature larger than the others, let an element extend beyond the grid container. The page gains rhythm.
|
|
11
|
+
3. **Use a spacing scale.** 4px or 8px base. Tokens: `space-1` (4) / `space-2` (8) / `space-3` (12) / `space-4` (16) / `space-6` (24) / `space-8` (32) / `space-12` (48) / `space-16` (64). Arbitrary `padding: 19px` is the surest sign of an undisciplined hand.
|
|
12
|
+
4. **Section padding is bigger than you think.** Mobile sections want `space-12` to `space-16` (48–64 px) of vertical breathing room. Desktop wants `space-24` (96 px) or more. AI-generated sites consistently under-pad and feel cramped.
|
|
13
|
+
5. **Break the grid with one element per section.** A photo that bleeds full-width while the text stays in the 12-col grid. A pull quote at 80% width while the body sits at 65 ch. One break per section creates rhythm; three breaks creates chaos.
|
|
14
|
+
6. **Layer with overlap.** Cards overlapping the section above. Photos overlapping a band of color. A heading kissing the edge of an image. Overlap signals depth and intention.
|
|
15
|
+
7. **Container queries over breakpoints when possible.** A card that needs to reflow when its container is narrow shouldn't depend on the viewport — it should query its container.
|
|
16
|
+
8. **Max-width discipline.** Body content at `max-w-prose` (~65 ch). Marketing sections at `max-w-7xl` (1280 px) or wider. Full-bleed media at viewport. Mixing these creates the right tension.
|
|
17
|
+
|
|
18
|
+
## Web application
|
|
19
|
+
|
|
20
|
+
**Spacing tokens** in Tailwind v4:
|
|
21
|
+
|
|
22
|
+
```css
|
|
23
|
+
@theme {
|
|
24
|
+
--spacing-section-y: 6rem; /* 96px */
|
|
25
|
+
--spacing-section-x: 1.5rem; /* 24px mobile */
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@media (width >= 768px) {
|
|
29
|
+
:root {
|
|
30
|
+
--spacing-section-x: 4rem;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Grid breaks** examples:
|
|
36
|
+
|
|
37
|
+
- Bleed photo: `<img class="w-screen relative left-1/2 -translate-x-1/2">` inside a constrained container
|
|
38
|
+
- Off-center hero: 5/12 + 7/12 columns, body left, image right
|
|
39
|
+
- Layered card: `mt-[-4rem] z-10` to lift over previous section
|
|
40
|
+
|
|
41
|
+
**Common compositions:**
|
|
42
|
+
|
|
43
|
+
- **Bento grid** — Apple-style feature showcase. Mixed-size cells. One large + several smaller.
|
|
44
|
+
- **Editorial** — long-form content, single column, generous margins, breakable for pull quotes
|
|
45
|
+
- **Dashboard** — dense, information-first, reduced spacing scale
|
|
46
|
+
- **Marketing** — punchy, alternating sections, full-bleed mixed with constrained
|
|
47
|
+
- **App shell** — sidebar + main, sticky header, scrollable region
|
|
48
|
+
|
|
49
|
+
## Remotion application
|
|
50
|
+
|
|
51
|
+
Video composition is spatial design at high stakes — every pixel is intentional because the viewer can't pause to re-read.
|
|
52
|
+
|
|
53
|
+
1. **Safe areas matter.** Bottom 250 px on Instagram is hidden under captions. Bottom 200 px on TikTok is the action bar. Top 100 px on YouTube has the title overlay. Place nothing important there.
|
|
54
|
+
2. **Rule of thirds for cinematic shots.** `cinematic/CameraMotion` Ken Burns presets respect this — the focal point lands on a third intersection. Don't compose center-frame for cinematic templates.
|
|
55
|
+
3. **Layout components in FF:**
|
|
56
|
+
- `layout/SplitScreen` — two-up composition, perfect for before/after, comparison, dialogue
|
|
57
|
+
- `layout/Overlay` — text or graphic over background media, requires contrast plate
|
|
58
|
+
- `layout/FullBleed` — edge-to-edge media, used for hero shots in 16:9 templates
|
|
59
|
+
- `layout/Grid` — multi-cell composition, max 4 cells before the eye loses track
|
|
60
|
+
- `layout/CenteredContent` — for typographic moments, quotes, single-statement frames
|
|
61
|
+
4. **Vertical, square, wide need different layouts.** A composition that works at 1920×1080 fails at 1080×1920. Plan the focal element first, then crop the surroundings.
|
|
62
|
+
|
|
63
|
+
**Format-specific grids:**
|
|
64
|
+
|
|
65
|
+
- **1080×1920 (vertical/Reels/TikTok):** central column at 80% width, top 200 px reserved for username/sound, bottom 250 px reserved for captions
|
|
66
|
+
- **1080×1080 (square/Carousel):** 5% margin all sides, central focal point, max one secondary element
|
|
67
|
+
- **1920×1080 (wide/YouTube):** rule-of-thirds composition, lower-third graphic at 80% bottom band
|
|
68
|
+
- **1080×1350 (portrait/Feed):** 5% margin, vertical hierarchy preferred over horizontal
|
|
69
|
+
|
|
70
|
+
## Cross-references
|
|
71
|
+
|
|
72
|
+
- For 30-pattern landing-page catalog: read `design-ux-patterns` skill, `references/landing-patterns.md`
|
|
73
|
+
- For Tailwind v4 spacing tokens: read `tailwind-design-system` skill
|
|
74
|
+
- For Remotion layout components in detail: read `remotion-bridge.md` in this skill
|
|
75
|
+
- For motion timing inside layouts: read `motion-design.md` in this skill
|
|
76
|
+
|
|
77
|
+
## Quick checklist
|
|
78
|
+
|
|
79
|
+
- [ ] Spacing scale tokens used everywhere — no arbitrary px values
|
|
80
|
+
- [ ] Section padding generous (mobile ≥48 px Y, desktop ≥96 px Y)
|
|
81
|
+
- [ ] At least one intentional grid break per major section
|
|
82
|
+
- [ ] Asymmetric composition where appropriate (no everything-centered)
|
|
83
|
+
- [ ] Negative space treated as a design element
|
|
84
|
+
- [ ] Container queries used for component-level reflow
|
|
85
|
+
- [ ] Max-width discipline (prose, marketing, full-bleed are distinct)
|
|
86
|
+
- [ ] For Remotion: safe-area zones respected per platform
|
|
87
|
+
- [ ] For Remotion: format-specific composition (vertical ≠ wide ≠ square)
|
|
88
|
+
- [ ] Layer with overlap where depth is wanted
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# typography — Type as identity carrier
|
|
2
|
+
|
|
3
|
+
## Charter
|
|
4
|
+
|
|
5
|
+
Type is the loudest carrier of identity in any interface. Most AI-generated UIs lose immediately because they default to Inter or Geist for everything — the fonts that say "this was made by an LLM in 2025." A confident type system pairs on contrast, commits to a scale, and earns its hierarchy through weight and size, not through 47 different colors.
|
|
6
|
+
|
|
7
|
+
## Principles
|
|
8
|
+
|
|
9
|
+
1. **Pair on contrast, never on similarity.** The strongest pairings put a serif against a sans, a display against a humanist body, or a thin geometric heading against a slab body. Two grotesques are noise.
|
|
10
|
+
2. **Use a modular scale.** 1.25 (major third) is the safe default. 1.333 (perfect fourth) for editorial. 1.125 (major second) for data-dense dashboards. Never set arbitrary pixel sizes.
|
|
11
|
+
3. **Body type ≥ 16px on screen.** 14px is for labels and metadata only. Smaller body text fails legibility at 1m viewing distance, fails iOS auto-zoom on form inputs, and signals "I do not respect the reader."
|
|
12
|
+
4. **Line height carries hierarchy.** 1.5 for body paragraphs. 1.2 for headings (so they feel architectural). 1.7 for long-form reading. Mixing these wrong creates the feeling that the page is "off" without the user being able to name why.
|
|
13
|
+
5. **Line length 65–75 characters.** Beyond that, the eye loses the next line. Below 45, the rhythm gets choppy. Use `max-w-prose` in Tailwind or `max-width: 65ch` in CSS.
|
|
14
|
+
6. **Limit weights.** Load 3 weights per family, max. Regular 400 + Medium 500 + Bold 700 covers 95% of cases. Variable fonts let you avoid this rule entirely — load one file, use any weight.
|
|
15
|
+
7. **Letter-spacing scales inversely with size.** H1 wants `-0.02em` to `-0.04em` (large letters need tightening). Body wants `0`. ALL CAPS labels want `+0.05em` to `+0.1em`. Default letter-spacing on display sizes always looks loose.
|
|
16
|
+
8. **Numerals matter.** For data, use tabular figures (`font-variant-numeric: tabular-nums`) so columns align. For prose, use proportional. For prices, lining figures over old-style.
|
|
17
|
+
|
|
18
|
+
## Web application
|
|
19
|
+
|
|
20
|
+
- **Loading**: `font-display: swap` always, never block on font load
|
|
21
|
+
- **next/font**: `next/font/google` is preferred over manual `<link>` — auto-subsets and self-hosts at build time
|
|
22
|
+
- **CSS variables**: declare `--font-heading` and `--font-body` once at `:root`, reference everywhere
|
|
23
|
+
- **Variable fonts**: `Inter Variable`, `Outfit`, `Space Grotesk`, `Source Serif 4` — use the variable axis (`wght`, `slnt`, `opsz`) instead of loading multiple files
|
|
24
|
+
- **Fallback stacks**: every custom font needs a `system-ui, -apple-system, sans-serif` fallback so FOUT doesn't break layout
|
|
25
|
+
|
|
26
|
+
## Remotion application
|
|
27
|
+
|
|
28
|
+
Video typography behaves differently. Three rules override the web defaults:
|
|
29
|
+
|
|
30
|
+
1. **Letter-spacing is animatable**, and animating it from `+0.1em` → `0` over 12 frames creates the most-used text reveal in the cinematic component bucket. Use it for `text/Title` and `text/Subtitle` entrances.
|
|
31
|
+
2. **Compression breaks thin weights.** Anything under 400 weight degrades visibly at 8 Mbps H.264. Default to 500 minimum for Remotion text components.
|
|
32
|
+
3. **Line height is taller in video.** Body text on screen wants 1.5; subtitles in `text/SubtitleOverlay` want 1.35–1.4 because the viewer's eye doesn't stay on a single block — they're reading bursts. Long line height in video feels lazy, not generous.
|
|
33
|
+
|
|
34
|
+
Component-specific:
|
|
35
|
+
|
|
36
|
+
- `text/Title` — display weight, tight letter-spacing, animated entrance
|
|
37
|
+
- `text/Subtitle` — body+1 size, regular weight, no letter-spacing animation (loses readability)
|
|
38
|
+
- `text/Typewriter` — monospace family, fixed-width, character-reveal animation
|
|
39
|
+
- `text/SubtitleOverlay` — caption weight (500), background plate or text-shadow for legibility on any video, max 2 lines per cue
|
|
40
|
+
- `text/WordHighlight` — body family, accent color shift on cue word, no font-family swap (visually unstable)
|
|
41
|
+
|
|
42
|
+
## Cross-references
|
|
43
|
+
|
|
44
|
+
- For full font-pairing catalog: read `design-typography` skill, especially `references/full-pairings.md` (57 pairings)
|
|
45
|
+
- For OKLCH on type colors: read `color-and-contrast.md` in this skill
|
|
46
|
+
- For motion timing of text reveals: read `motion-design.md` in this skill
|
|
47
|
+
- For caption tone and brevity (paired with type): read `voice-and-microcopy.md`
|
|
48
|
+
|
|
49
|
+
## Quick checklist
|
|
50
|
+
|
|
51
|
+
- [ ] Body type ≥ 16 px (or 500 weight in video)
|
|
52
|
+
- [ ] Maximum 2 font families (heading + body, or single family)
|
|
53
|
+
- [ ] Maximum 3 weights per family loaded
|
|
54
|
+
- [ ] Modular scale (1.25 default) — no arbitrary px sizes
|
|
55
|
+
- [ ] Line height: 1.5 body / 1.2 heading / 1.4 video subtitles / 1.7 long-form
|
|
56
|
+
- [ ] Line length 65–75 ch on web body
|
|
57
|
+
- [ ] Letter-spacing: negative on display, neutral on body, positive on caps
|
|
58
|
+
- [ ] Tabular figures for data tables and prices
|
|
59
|
+
- [ ] `font-display: swap` on every Google Font import
|
|
60
|
+
- [ ] Tight pairing rationale documented (why these two fonts)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# verb-adapt — Different devices for web, different formats for Remotion
|
|
2
|
+
|
|
3
|
+
## Trigger
|
|
4
|
+
|
|
5
|
+
User invokes `/beauty adapt [target]` or asks to "make this work on mobile," "adapt for tablet," "redo this for vertical," "we need a square version of this video." Translates an existing design into a new viewport (web) or a new aspect ratio (Remotion).
|
|
6
|
+
|
|
7
|
+
## Inputs
|
|
8
|
+
|
|
9
|
+
- A target that exists in one canvas
|
|
10
|
+
- A new canvas to translate to (e.g., desktop → mobile, 16:9 → 9:16)
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
1. Read `references/responsive-and-multi-format.md` (primary). For Remotion: `remotion-bridge.md` (format-specific composition).
|
|
15
|
+
2. **Don't crop. Recompose.** A 16:9 design cropped to 9:16 looks broken because the focal element wasn't designed for vertical. Treat each canvas as its own design.
|
|
16
|
+
3. **For web (desktop → mobile or vice versa):**
|
|
17
|
+
- Identify the **single primary action** on each viewport (mobile users have less patience)
|
|
18
|
+
- Stack columns vertically on mobile (mobile-first)
|
|
19
|
+
- Replace hover-only interactions with tap equivalents
|
|
20
|
+
- Bump body text to 16 px minimum
|
|
21
|
+
- Test at 375 / 768 / 1024 / 1440
|
|
22
|
+
- Container queries for component-level reflow
|
|
23
|
+
4. **For Remotion (16:9 → 9:16, etc.):**
|
|
24
|
+
- Identify the focal element first (the thing that must read regardless of crop)
|
|
25
|
+
- Recompose around it: vertical hierarchy for 9:16, balanced for 1:1, rule-of-thirds for 16:9
|
|
26
|
+
- Recompute safe areas for the target platform (Instagram captions, TikTok bottom bar, YouTube end-screen)
|
|
27
|
+
- Adjust line breaks in captions (vertical can hold 2-line captions tighter than wide)
|
|
28
|
+
- Camera motion may need different preset (Ken Burns reads differently in 9:16)
|
|
29
|
+
|
|
30
|
+
## Output
|
|
31
|
+
|
|
32
|
+
A new variant of the target file (or a section of it) for the new canvas + a log of what changed.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Adapt applied (16:9 widescreen → 9:16 vertical):
|
|
36
|
+
- Layout: layout/SplitScreen → layout/CenteredContent (vertical hierarchy)
|
|
37
|
+
- Hero text: 80% width → 90% width
|
|
38
|
+
- Subtitle: hidden in 16:9 → shown in 9:16 (vertical has more space top-to-bottom)
|
|
39
|
+
- Camera: cinematic/CameraMotion preset="dolly" → "ken-burns" (drift reads better vertically)
|
|
40
|
+
- Top 200 px reserved (Instagram username), bottom 250 px (caption)
|
|
41
|
+
- Lower-third graphic moved to upper-third (16:9 lower-third position is in safe area for 9:16)
|
|
42
|
+
- TransitionEffect unchanged (cross-dissolve works in both formats)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Pre-checks
|
|
46
|
+
|
|
47
|
+
- [ ] Recomposed (not cropped)
|
|
48
|
+
- [ ] Primary focal element preserved across formats
|
|
49
|
+
- [ ] Safe areas respected for target platform
|
|
50
|
+
- [ ] For web: tested at 375 / 768 / 1024 / 1440
|
|
51
|
+
- [ ] For web: hover replaced with tap on mobile
|
|
52
|
+
- [ ] For web: body ≥ 16 px, no horizontal scroll
|
|
53
|
+
- [ ] For Remotion: format-appropriate composition (vertical/square/wide)
|
|
54
|
+
- [ ] For Remotion: caption breaks adjusted for new aspect
|
|
55
|
+
- [ ] For Remotion: camera motion preset re-evaluated
|
|
56
|
+
|
|
57
|
+
## Examples
|
|
58
|
+
|
|
59
|
+
**Web target adapt pass (desktop → mobile):**
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
File: components/landing/Pricing.tsx
|
|
63
|
+
|
|
64
|
+
Desktop (1440):
|
|
65
|
+
- 3 plan cards in a row, 4 features visible per card
|
|
66
|
+
- Hover reveals additional details
|
|
67
|
+
- Comparison table below cards (full-width)
|
|
68
|
+
|
|
69
|
+
Mobile (375) adapted:
|
|
70
|
+
- Stack: 3 cards vertically, "Most popular" plan first (highest intent)
|
|
71
|
+
- All features visible (no hover-only details on mobile — replaced with tap-to-expand)
|
|
72
|
+
- Comparison table → "View full comparison" link to a separate route
|
|
73
|
+
- CTA buttons sticky to bottom on long card scroll
|
|
74
|
+
- Touch targets bumped: py-2 → py-4 (min 44 px)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Remotion target adapt pass (16:9 → 9:16):**
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
File: scene/IntroScene-vertical.tsx (new variant of scene/IntroScene.tsx)
|
|
81
|
+
|
|
82
|
+
16:9 original:
|
|
83
|
+
- layout/SplitScreen 50/50: hero photo right, text left
|
|
84
|
+
- Title at top-left, subtitle below
|
|
85
|
+
- LowerThird at 80% from top (rule of thirds)
|
|
86
|
+
|
|
87
|
+
9:16 adapted:
|
|
88
|
+
- layout/CenteredContent stacked vertically
|
|
89
|
+
- Hero photo: top half (full-width)
|
|
90
|
+
- Text: bottom half (above 250 px caption safe area)
|
|
91
|
+
- Title at vertical-third intersection (recomposed for vertical)
|
|
92
|
+
- LowerThird removed (would compete with caption zone)
|
|
93
|
+
- Top 200 px reserved (Instagram username overlay)
|
|
94
|
+
- Camera preset changed: pan-right → ken-burns (vertical drift)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Cross-references
|
|
98
|
+
|
|
99
|
+
- Cites: `responsive-and-multi-format.md` (primary), `remotion-bridge.md` (Remotion targets), `spatial-design.md`
|
|
100
|
+
- For Tailwind v4 responsive patterns: `tailwind-design-system` skill
|
|
101
|
+
- For 9 FF templates by aspect: `responsive-and-multi-format.md`
|
|
102
|
+
- Companion: `verb-layout` (composition fixes for the new canvas)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# verb-animate — Add purposeful motion
|
|
2
|
+
|
|
3
|
+
## Trigger
|
|
4
|
+
|
|
5
|
+
User invokes `/beauty animate [target]` or asks to "add motion here," "this feels static," "give this some life," "animate the entrance." Adds motion that **earns its place** — every animation must clarify hierarchy or guide attention, never just exist.
|
|
6
|
+
|
|
7
|
+
## Inputs
|
|
8
|
+
|
|
9
|
+
- A target that's static or under-animated
|
|
10
|
+
- Optional: motion intent ("entrance only", "hover states", "scroll-triggered")
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
1. Read `references/motion-design.md` (primary). For Remotion: also `remotion-bridge.md`.
|
|
15
|
+
2. Identify what motion would serve:
|
|
16
|
+
- **Entrance** — page load, modal open, content reveal
|
|
17
|
+
- **State change** — hover, focus, active, loading
|
|
18
|
+
- **Scroll-triggered** — section reveal as it enters viewport
|
|
19
|
+
- **Data update** — number changes, list reorders, card moves
|
|
20
|
+
- **Pacing** (Remotion only) — scene transitions, beat emphasis
|
|
21
|
+
3. Apply with discipline:
|
|
22
|
+
- **Use transform + opacity only** (GPU-accelerated)
|
|
23
|
+
- **Stagger 50–100 ms** (web) / **6–8 frames** (Remotion at 30fps)
|
|
24
|
+
- **Exits faster than entrances** (~150 ms vs ~300 ms)
|
|
25
|
+
- **Hover at 150 ms**, focus at same
|
|
26
|
+
- **prefers-reduced-motion** respected — wrap or use `useReducedMotion()`
|
|
27
|
+
4. For Remotion: pick from the FF library — `animation/SpringEntrance`, `animation/StaggeredList`, `animation/FadeIn/SlideIn/ZoomIn`. For scenes: `cinematic/CameraMotion` and `cinematic/TransitionEffect`.
|
|
28
|
+
|
|
29
|
+
## Output
|
|
30
|
+
|
|
31
|
+
Target with motion added + token references used.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Animate applied:
|
|
35
|
+
- Hero entrance: Title fade-up 400ms ease-out, stagger 80ms between H1 / subtitle / CTA
|
|
36
|
+
- Cards: hover translateY(-2px) + shadow-shift, 150ms ease-out
|
|
37
|
+
- List item add: layout animation 250ms (Framer Motion)
|
|
38
|
+
- Reduced-motion: all decorative animation disabled, only loading retained
|
|
39
|
+
- Tokens: --duration-base 300ms, --ease-out cubic-bezier(0.16, 1, 0.3, 1)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Pre-checks
|
|
43
|
+
|
|
44
|
+
- [ ] Every animation has a purpose (clarifies hierarchy or guides attention)
|
|
45
|
+
- [ ] No bounce/elastic easing (anti-pattern #7)
|
|
46
|
+
- [ ] No animation on width/height/margin (use transform/opacity)
|
|
47
|
+
- [ ] prefers-reduced-motion respected
|
|
48
|
+
- [ ] Stagger 50–100 ms (web) / 6–8 frames (Remotion)
|
|
49
|
+
- [ ] Exits faster than entrances
|
|
50
|
+
- [ ] Hover 100–200 ms
|
|
51
|
+
- [ ] No element animating "just because"
|
|
52
|
+
- [ ] For Remotion: camera motion runs full segment length
|
|
53
|
+
- [ ] For Remotion: ColorGrade applied at scene level if cinematic intent
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
**Web target animate pass:**
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
File: components/landing/Hero.tsx
|
|
61
|
+
|
|
62
|
+
Before:
|
|
63
|
+
- All elements appear instantly on load, no entrance
|
|
64
|
+
- Buttons static on hover
|
|
65
|
+
|
|
66
|
+
After:
|
|
67
|
+
- Page-load reveal: H1 fadeUp 400ms ease-out → subtitle 480ms (stagger 80ms) → CTA 560ms
|
|
68
|
+
- Hero image: scale(0.98) → 1 + opacity 0 → 1, 600ms ease-out
|
|
69
|
+
- Button hover: translateY(-2px) + shadow-shift, 150ms
|
|
70
|
+
- Wrapped in @media (prefers-reduced-motion: no-preference)
|
|
71
|
+
- Used Framer Motion's <motion.div> with whileInView for scroll-triggered subsequent sections
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Remotion target animate pass:**
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
File: scene/ListScene.tsx
|
|
78
|
+
|
|
79
|
+
Before:
|
|
80
|
+
- 5 list items appear simultaneously — feels glitchy
|
|
81
|
+
- No camera motion
|
|
82
|
+
- Hard cut transition out
|
|
83
|
+
|
|
84
|
+
After:
|
|
85
|
+
- Wrapped items in animation/StaggeredList (6-frame stagger between siblings)
|
|
86
|
+
- Each item uses animation/SlideIn from="bottom" 24px / 12-frame spring
|
|
87
|
+
- Added cinematic/CameraMotion preset="drift" (gentle background motion)
|
|
88
|
+
- Out-transition: cinematic/TransitionEffect preset="cross-dissolve" 18 frames
|
|
89
|
+
|
|
90
|
+
Scene now reads: list arrives intentionally instead of all-at-once.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Cross-references
|
|
94
|
+
|
|
95
|
+
- Cites: `motion-design.md`, `remotion-bridge.md` (Remotion only), `interaction-design.md` (for state changes)
|
|
96
|
+
- For framer-motion specifics: see Merlin's `frontend-ui-animator` or `ui-animation` skill
|
|
97
|
+
- Companion: `verb-delight` (motion that creates joy, beyond just reveal animations)
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# verb-audit — Technical quality checks (a11y/perf/correctness)
|
|
2
|
+
|
|
3
|
+
## Trigger
|
|
4
|
+
|
|
5
|
+
User invokes `/beauty audit [target]` or asks to "check accessibility," "audit this for performance," "verify WCAG," "check render performance." This verb runs **technical** checks (mechanically verifiable), distinct from `verb-critique` which does subjective design review.
|
|
6
|
+
|
|
7
|
+
## Inputs
|
|
8
|
+
|
|
9
|
+
- A target file or component
|
|
10
|
+
- Optional: scope flag ("a11y only", "perf only", "all")
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
1. Detect target type (web vs Remotion).
|
|
15
|
+
2. **For web targets:**
|
|
16
|
+
- Read `references/interaction-design.md` (focus, touch targets, loading states)
|
|
17
|
+
- Read `references/color-and-contrast.md` (WCAG verification)
|
|
18
|
+
- Read `references/responsive-and-multi-format.md` (breakpoint testing)
|
|
19
|
+
- Run mental checks: WCAG AA contrast on every text/bg pair, focus-visible on every interactive element, 44 px touch targets, prefers-reduced-motion wrapping, image alt text, heading hierarchy (no skipped levels), keyboard navigation
|
|
20
|
+
3. **For Remotion targets:**
|
|
21
|
+
- Read `references/remotion-bridge.md` (bucket-specific render performance)
|
|
22
|
+
- Read `references/responsive-and-multi-format.md` (safe-area zones)
|
|
23
|
+
- Run mental checks: weights ≥500 (H.264 compression), particle count ≤1 per video, max 4 layers per VideoLayerStack, captions ≤17 chars/sec, safe areas respected for target platform, ColorGrade applied at scene level not per-element
|
|
24
|
+
4. Categorize findings: CRITICAL (data-loss / total fail), HIGH (broken UX), MEDIUM (degraded UX), LOW (polish).
|
|
25
|
+
5. For each finding, output: location → problem → impact → fix (specific values).
|
|
26
|
+
|
|
27
|
+
## Output
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
[CRITICAL/HIGH/MEDIUM/LOW] Issue title
|
|
31
|
+
Where: file:line or "Hero section"
|
|
32
|
+
Problem: <specific>
|
|
33
|
+
Impact: <user-facing consequence>
|
|
34
|
+
Fix: <exact change with values>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Plus a totals line: e.g., `0 CRITICAL / 2 HIGH / 5 MEDIUM / 3 LOW = 10 findings`.
|
|
38
|
+
|
|
39
|
+
## Pre-checks
|
|
40
|
+
|
|
41
|
+
- [ ] Every finding has a specific fix, not "improve X"
|
|
42
|
+
- [ ] CRITICAL reserved for actual data-loss or total fail (not polish)
|
|
43
|
+
- [ ] WCAG ratios calculated and cited (e.g., "2.4:1, fails AA 4.5:1")
|
|
44
|
+
- [ ] For Remotion: safe-area zones cited by exact pixel values per platform
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
|
|
48
|
+
**Web target audit:**
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
[HIGH] Touch target too small
|
|
52
|
+
Where: components/MobileNav.tsx:34 (close button)
|
|
53
|
+
Problem: 32×32 px tap target, below 44 px WCAG 2.5.5
|
|
54
|
+
Impact: Mis-taps on mobile, accessibility fail
|
|
55
|
+
Fix: Add `p-3` (12 px padding) or set explicit `size-11` (44 px)
|
|
56
|
+
|
|
57
|
+
[MEDIUM] No focus ring on custom button
|
|
58
|
+
Where: components/Button.tsx:18
|
|
59
|
+
Problem: `outline-none` without replacement
|
|
60
|
+
Impact: Keyboard users lose focus indication
|
|
61
|
+
Fix: Add `focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary`
|
|
62
|
+
|
|
63
|
+
[LOW] Reduced-motion not respected
|
|
64
|
+
Where: animations/HeroReveal.tsx:12
|
|
65
|
+
Problem: Animation runs unconditionally
|
|
66
|
+
Impact: Motion-sensitive users get unwanted animation
|
|
67
|
+
Fix: Wrap in `@media (prefers-reduced-motion: no-preference)` or use Framer Motion's `useReducedMotion()`
|
|
68
|
+
|
|
69
|
+
Totals: 0 CRITICAL / 1 HIGH / 1 MEDIUM / 1 LOW = 3 findings
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Remotion target audit:**
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
[HIGH] Caption reading speed exceeds limit
|
|
76
|
+
Where: scene/ContentScene.tsx (cue at 0:04–0:06)
|
|
77
|
+
Problem: 62 chars in 2 seconds = 31 chars/sec, exceeds 17 ch/s comfort threshold
|
|
78
|
+
Impact: Viewers can't read caption before it disappears
|
|
79
|
+
Fix: Split into two cues at natural phrase boundary, or extend duration to 3.7 s
|
|
80
|
+
|
|
81
|
+
[MEDIUM] Title weight too thin for compression
|
|
82
|
+
Where: text/Title in IntroScene
|
|
83
|
+
Problem: weight 300, degrades visibly at 8 Mbps H.264
|
|
84
|
+
Impact: Letterforms look broken in delivered video
|
|
85
|
+
Fix: Bump to weight 500 minimum, ideally 600 for display sizes
|
|
86
|
+
|
|
87
|
+
[LOW] No ColorGrade on scene
|
|
88
|
+
Where: scene/IntroScene.tsx
|
|
89
|
+
Problem: scene renders untreated; default palette feels untouched
|
|
90
|
+
Impact: Visual identity weaker than peer scenes with grade applied
|
|
91
|
+
Fix: Wrap scene in `cinematic/ColorGrade preset="golden-hour"` or appropriate emotional preset
|
|
92
|
+
|
|
93
|
+
Totals: 0 CRITICAL / 1 HIGH / 1 MEDIUM / 1 LOW = 3 findings
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Cross-references
|
|
97
|
+
|
|
98
|
+
- Cites: `interaction-design.md`, `color-and-contrast.md`, `responsive-and-multi-format.md`, `remotion-bridge.md`
|
|
99
|
+
- Web a11y standards from `design-ux-patterns` skill (119 UX rules)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# verb-bolder — Amplify timid designs
|
|
2
|
+
|
|
3
|
+
## Trigger
|
|
4
|
+
|
|
5
|
+
User invokes `/beauty bolder [target]` or asks to "make this bolder," "amplify this," "this is too safe," "more confidence in this design," "go bigger." This verb pushes the existing direction further — it doesn't change direction, it commits harder to the one already there.
|
|
6
|
+
|
|
7
|
+
## Inputs
|
|
8
|
+
|
|
9
|
+
- A target that feels muted, hedged, or under-committed
|
|
10
|
+
- Optional: a dimension to amplify ("bolder typography only", "bolder color")
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
1. Read `verb-critique`'s output mentally — identify which dimensions feel timid: type weight too light, color too muted, spacing too cramped, motion too subtle, microcopy too cautious.
|
|
15
|
+
2. Read references for the dimensions to amplify: `typography.md` for type, `color-and-contrast.md` for color, `spatial-design.md` for composition, `motion-design.md` for motion, `voice-and-microcopy.md` for copy.
|
|
16
|
+
3. Apply a **2x rule** per amplified dimension:
|
|
17
|
+
- **Type:** display weight 500 → 700, size up one scale step, letter-spacing more negative
|
|
18
|
+
- **Color:** chroma bumped 30%, accent used in more places, contrast ratio raised one bracket
|
|
19
|
+
- **Composition:** section padding doubled, hero takes more vertical space, one element bleeds full-width
|
|
20
|
+
- **Motion:** entrance duration shortened (snappier), stagger more pronounced, hover scale 1.02 → 1.05
|
|
21
|
+
- **Microcopy:** verbs more declarative, hero copy 50% shorter and 100% more direct
|
|
22
|
+
4. Verify pre-checks — bolder must not break anti-patterns (e.g., bolder color ≠ purple-to-blue gradient).
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
|
|
26
|
+
The target file with amplifications applied. Plus a "before/after" log:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Bolder applied:
|
|
30
|
+
- H1: weight 600 → 800, size text-4xl → text-6xl, letter-spacing -0.02em → -0.04em
|
|
31
|
+
- Accent color chroma: 0.15 → 0.20
|
|
32
|
+
- Hero section padding: py-16 → py-32 (doubled)
|
|
33
|
+
- Entrance reveal: 400ms → 250ms (snappier)
|
|
34
|
+
- Hero copy: "Welcome to our platform that helps teams collaborate more effectively" → "Build faster. Together."
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Pre-checks
|
|
38
|
+
|
|
39
|
+
- [ ] No anti-patterns introduced (bigger ≠ purple gradient, bolder color ≠ pure red on pure black)
|
|
40
|
+
- [ ] WCAG AA still passes (bolder color must verify contrast)
|
|
41
|
+
- [ ] Touch targets still ≥ 44 px (bigger UI ≠ accidentally smaller buttons)
|
|
42
|
+
- [ ] Reduced-motion still respected (snappier ≠ unconditional motion)
|
|
43
|
+
- [ ] Microcopy still helpful, not cryptic (shorter ≠ vague)
|
|
44
|
+
- [ ] For Remotion: amplified motion still respects safe areas + format
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
|
|
48
|
+
**Web target bolder pass:**
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
File: components/Hero.tsx
|
|
52
|
+
|
|
53
|
+
Before:
|
|
54
|
+
- H1 "Welcome to Lampada — your analytics platform" / weight 500, text-3xl
|
|
55
|
+
- Subtitle text-base, weight 400, text-gray-600
|
|
56
|
+
- CTA "Sign Up" / py-2 px-4
|
|
57
|
+
- Section py-16
|
|
58
|
+
- Background bg-white
|
|
59
|
+
|
|
60
|
+
After:
|
|
61
|
+
- H1 "See your data clearly." / weight 800, text-6xl, letter-spacing -0.04em
|
|
62
|
+
- Subtitle text-xl, weight 500, text-gray-900
|
|
63
|
+
- CTA "Start your free 14-day trial" / py-4 px-8 / bg-primary
|
|
64
|
+
- Section py-32
|
|
65
|
+
- Background bg-[oklch(98%_0.01_264)] (tinted, more deliberate)
|
|
66
|
+
- Added: H1 stagger reveals at 8 frames (snappier than default 12)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Remotion target bolder pass:**
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
File: scene/IntroScene.tsx
|
|
73
|
+
|
|
74
|
+
Before:
|
|
75
|
+
- Title weight 500, no letter-spacing animation
|
|
76
|
+
- Subtitle reveals 18 frames after Title
|
|
77
|
+
- No ColorGrade
|
|
78
|
+
- Camera static
|
|
79
|
+
|
|
80
|
+
After:
|
|
81
|
+
- Title weight 800, letter-spacing animates +0.10em → 0 over 12 frames
|
|
82
|
+
- Subtitle reveals 6 frames after Title (compressed stagger, more energy)
|
|
83
|
+
- Wrapped in cinematic/ColorGrade preset="cyberpunk" (high-impact emotion)
|
|
84
|
+
- Added cinematic/CameraMotion preset="dolly" (forward push, urgency)
|
|
85
|
+
- Added cinematic/TransitionEffect preset="glitch" on out-transition (matches energy)
|
|
86
|
+
|
|
87
|
+
Bolder verdict: scene now reads as cinematic, not corporate.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Cross-references
|
|
91
|
+
|
|
92
|
+
- Cites: `typography.md`, `color-and-contrast.md`, `spatial-design.md`, `motion-design.md`, `voice-and-microcopy.md`
|
|
93
|
+
- For Remotion: `remotion-bridge.md` (cinematic stack composition)
|
|
94
|
+
- Antagonist verb: `verb-quieter` (use that to tone down over-bold designs)
|