@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,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-typography
|
|
3
|
+
description: Font pairing intelligence — curated pairings by mood and industry, with ready-to-use CSS imports and Tailwind configs.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: merlin-framework
|
|
7
|
+
version: "3.0.0"
|
|
8
|
+
auto_activate: [typography, typeface, font-pairing, type-scale, google-fonts]
|
|
9
|
+
file_triggers: [*.css, *.scss, tailwind.config.*]
|
|
10
|
+
tool_reminders: [Maximum 2 font families per project — one for headings, one for body (or single family for both), Minimum 16px body font size — never smaller for readability, Always provide Google Fonts import or next/font config for chosen pairing]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Font Selection Workflow
|
|
14
|
+
|
|
15
|
+
1. **Identify mood** — What feeling should the typography convey? (professional, playful, elegant, technical, friendly)
|
|
16
|
+
2. **Match industry** — Use the product type to narrow category (Serif+Sans for luxury, Mono+Sans for dev tools, etc.)
|
|
17
|
+
3. **Select pairing** — Pick from the quick reference table below or the full catalog in `references/full-pairings.md`
|
|
18
|
+
4. **Implement** — Use the provided CSS import / Tailwind config from the catalog
|
|
19
|
+
5. **Verify** — Check line height (1.5 body, 1.2 headings), line length (65-75ch), and minimum 16px body
|
|
20
|
+
|
|
21
|
+
## Quick Reference: Top 20 Font Pairings
|
|
22
|
+
|
|
23
|
+
| # | Pairing Name | Heading | Body | Category | Best For |
|
|
24
|
+
| --- | ------------------- | --------------------- | --------------------- | ------------ | ----------------------------- |
|
|
25
|
+
| 1 | Classic Elegant | Playfair Display | Inter | Serif + Sans | Luxury, fashion, editorial |
|
|
26
|
+
| 2 | Modern Professional | Poppins | Inter | Sans + Sans | SaaS, corporate, clean |
|
|
27
|
+
| 3 | Tech Startup | Space Grotesk | DM Sans | Sans + Sans | Startups, tech, modern |
|
|
28
|
+
| 4 | Editorial Premium | Lora | Source Sans 3 | Serif + Sans | Blogs, magazines, content |
|
|
29
|
+
| 5 | Minimal Swiss | Inter | Inter | Sans + Sans | Minimal, dashboard, utility |
|
|
30
|
+
| 6 | Creative Bold | Sora | Nunito | Sans + Sans | Creative, portfolio, agency |
|
|
31
|
+
| 7 | Corporate Trust | Merriweather | Open Sans | Serif + Sans | Finance, legal, consulting |
|
|
32
|
+
| 8 | Friendly Warm | Quicksand | Nunito | Sans + Sans | Education, kids, casual |
|
|
33
|
+
| 9 | Developer Mono | JetBrains Mono | IBM Plex Sans | Mono + Sans | Dev tools, code, technical |
|
|
34
|
+
| 10 | Luxury Display | Cormorant Garamond | Montserrat | Serif + Sans | Luxury, spa, high-end |
|
|
35
|
+
| 11 | News Editorial | Source Serif 4 | Source Sans 3 | Serif + Sans | News, publishing, long-form |
|
|
36
|
+
| 12 | Geometric Clean | Outfit | Work Sans | Sans + Sans | Modern SaaS, fintech |
|
|
37
|
+
| 13 | Playful Rounded | Nunito | Quicksand | Sans + Sans | Kids, games, casual apps |
|
|
38
|
+
| 14 | Brutalist Raw | Space Mono | Space Mono | Mono + Mono | Portfolio, creative, bold |
|
|
39
|
+
| 15 | Healthcare Calm | Libre Franklin | Lato | Sans + Sans | Healthcare, wellness, calm |
|
|
40
|
+
| 16 | E-commerce Trust | Rubik | Open Sans | Sans + Sans | E-commerce, marketplace |
|
|
41
|
+
| 17 | Dashboard Data | IBM Plex Sans | IBM Plex Mono | Sans + Mono | Dashboards, analytics, data |
|
|
42
|
+
| 18 | Crypto Web3 | Orbitron | Exo 2 | Sans + Sans | Crypto, Web3, futuristic |
|
|
43
|
+
| 19 | Accessibility First | Atkinson Hyperlegible | Atkinson Hyperlegible | Sans + Sans | Accessibility-critical, gov |
|
|
44
|
+
| 20 | Restaurant Charm | Playfair Display | Lato | Serif + Sans | Restaurant, food, hospitality |
|
|
45
|
+
|
|
46
|
+
For the complete 57-pairing catalog with CSS imports and Tailwind configs, read `references/full-pairings.md`.
|
|
47
|
+
|
|
48
|
+
## Implementation Patterns
|
|
49
|
+
|
|
50
|
+
**Vanilla CSS (Google Fonts):**
|
|
51
|
+
|
|
52
|
+
```css
|
|
53
|
+
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Poppins:wght@600;700&display=swap");
|
|
54
|
+
|
|
55
|
+
:root {
|
|
56
|
+
--font-heading: "Poppins", sans-serif;
|
|
57
|
+
--font-body: "Inter", sans-serif;
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Tailwind CSS:**
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
// tailwind.config.js
|
|
65
|
+
module.exports = {
|
|
66
|
+
theme: {
|
|
67
|
+
fontFamily: {
|
|
68
|
+
heading: ["Poppins", "sans-serif"],
|
|
69
|
+
body: ["Inter", "sans-serif"],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Next.js (next/font — best performance):**
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
import { Inter, Poppins } from "next/font/google";
|
|
79
|
+
|
|
80
|
+
const inter = Inter({ subsets: ["latin"], variable: "--font-body" });
|
|
81
|
+
const poppins = Poppins({
|
|
82
|
+
weight: ["600", "700"],
|
|
83
|
+
subsets: ["latin"],
|
|
84
|
+
variable: "--font-heading",
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export default function RootLayout({ children }) {
|
|
88
|
+
return (
|
|
89
|
+
<html className={`${inter.variable} ${poppins.variable}`}>{children}</html>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Typography Rules
|
|
95
|
+
|
|
96
|
+
**Type Scale (1.25 ratio — major third):**
|
|
97
|
+
|
|
98
|
+
| Token | Size | Use |
|
|
99
|
+
| --------- | --------------- | ---------------------- |
|
|
100
|
+
| text-xs | 12px / 0.75rem | Captions, fine print |
|
|
101
|
+
| text-sm | 14px / 0.875rem | Labels, secondary text |
|
|
102
|
+
| text-base | 16px / 1rem | Body text (minimum) |
|
|
103
|
+
| text-lg | 20px / 1.25rem | Lead paragraphs |
|
|
104
|
+
| text-xl | 25px / 1.563rem | H4, card titles |
|
|
105
|
+
| text-2xl | 31px / 1.953rem | H3, section titles |
|
|
106
|
+
| text-3xl | 39px / 2.441rem | H2, page titles |
|
|
107
|
+
| text-4xl | 49px / 3.052rem | H1, hero titles |
|
|
108
|
+
|
|
109
|
+
**Line Height:** 1.5 for body text, 1.2 for headings, 1.7 for long-form reading
|
|
110
|
+
|
|
111
|
+
**Line Length:** 65-75 characters per line for optimal readability (use `max-w-prose` in Tailwind)
|
|
112
|
+
|
|
113
|
+
**Font Weights:** Limit to 3 weights per family (e.g., 400 regular, 500 medium, 700 bold) to minimize load
|
|
114
|
+
|
|
115
|
+
**Font Loading:** Always use `display=swap` for Google Fonts to prevent FOIT (Flash of Invisible Text)
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Complete Font Pairing Catalog (57 Pairings)
|
|
2
|
+
|
|
3
|
+
> Reference data for the design-typography skill. Agents should Read this file when they need the full pairing catalog with implementation code.
|
|
4
|
+
|
|
5
|
+
## Serif + Sans Serif Pairings (1-15)
|
|
6
|
+
|
|
7
|
+
| # | Pairing Name | Heading | Body | Mood | Best For | Google Fonts URL |
|
|
8
|
+
| --- | ----------------- | ------------------ | ------------- | ------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| 1 | Classic Elegant | Playfair Display | Inter | Elegant, sophisticated | Luxury, fashion, editorial | fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&family=Inter:wght@400;500;600 |
|
|
10
|
+
| 2 | Editorial Premium | Lora | Source Sans 3 | Warm, authoritative | Blogs, magazines, content | fonts.googleapis.com/css2?family=Lora:wght@500;600;700&family=Source+Sans+3:wght@400;500;600 |
|
|
11
|
+
| 3 | Corporate Trust | Merriweather | Open Sans | Trustworthy, professional | Finance, legal, consulting | fonts.googleapis.com/css2?family=Merriweather:wght@700&family=Open+Sans:wght@400;500;600 |
|
|
12
|
+
| 4 | Luxury Display | Cormorant Garamond | Montserrat | Refined, premium | Luxury, spa, high-end | fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Montserrat:wght@400;500 |
|
|
13
|
+
| 5 | News Editorial | Source Serif 4 | Source Sans 3 | Authoritative, readable | News, publishing | fonts.googleapis.com/css2?family=Source+Serif+4:wght@600;700&family=Source+Sans+3:wght@400;500 |
|
|
14
|
+
| 6 | Restaurant Charm | Playfair Display | Lato | Warm, inviting | Restaurant, food | fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&family=Lato:wght@400;700 |
|
|
15
|
+
| 7 | Storytelling | Vollkorn | Karla | Narrative, warm | Storytelling, blogs | fonts.googleapis.com/css2?family=Vollkorn:wght@600;700&family=Karla:wght@400;500 |
|
|
16
|
+
| 8 | Academic Classic | Crimson Pro | Work Sans | Scholarly, clear | University, academic | fonts.googleapis.com/css2?family=Crimson+Pro:wght@600;700&family=Work+Sans:wght@400;500 |
|
|
17
|
+
| 9 | Boutique Refined | DM Serif Display | DM Sans | Elegant, modern | Boutique, artisan | fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@400;500;700 |
|
|
18
|
+
| 10 | Heritage | Bitter | Cabin | Grounded, reliable | Heritage brands, artisan | fonts.googleapis.com/css2?family=Bitter:wght@600;700&family=Cabin:wght@400;500;600 |
|
|
19
|
+
| 11 | Legal Formal | Noto Serif | Noto Sans | Formal, universal | Legal, government | fonts.googleapis.com/css2?family=Noto+Serif:wght@600;700&family=Noto+Sans:wght@400;500;600 |
|
|
20
|
+
| 12 | Magazine Style | Fraunces | Commissioner | Expressive, editorial | Magazine, lifestyle | fonts.googleapis.com/css2?family=Fraunces:wght@600;700&family=Commissioner:wght@400;500 |
|
|
21
|
+
| 13 | Wedding Romantic | Cormorant Garamond | Quicksand | Romantic, gentle | Wedding, events | fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Quicksand:wght@400;500 |
|
|
22
|
+
| 14 | Book Layout | Libre Baskerville | Source Sans 3 | Classic, readable | Long-form reading | fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&family=Source+Sans+3:wght@400;500 |
|
|
23
|
+
| 15 | Museum / Gallery | Spectral | Inter | Curated, refined | Art, gallery, museum | fonts.googleapis.com/css2?family=Spectral:wght@500;600;700&family=Inter:wght@400;500 |
|
|
24
|
+
|
|
25
|
+
## Sans + Sans Pairings (16-38)
|
|
26
|
+
|
|
27
|
+
| # | Pairing Name | Heading | Body | Mood | Best For | Google Fonts URL |
|
|
28
|
+
| --- | ------------------- | --------------------- | --------------------- | ---------------------- | --------------------------- | --------------------------------------------------------------------------------------------- |
|
|
29
|
+
| 16 | Modern Professional | Poppins | Inter | Clean, professional | SaaS, corporate | fonts.googleapis.com/css2?family=Poppins:wght@600;700&family=Inter:wght@400;500;600 |
|
|
30
|
+
| 17 | Tech Startup | Space Grotesk | DM Sans | Modern, technical | Startups, tech | fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=DM+Sans:wght@400;500 |
|
|
31
|
+
| 18 | Minimal Swiss | Inter | Inter | Minimal, utility | Dashboards, utility | fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700 |
|
|
32
|
+
| 19 | Creative Bold | Sora | Nunito | Creative, energetic | Portfolio, agency | fonts.googleapis.com/css2?family=Sora:wght@600;700&family=Nunito:wght@400;500;600 |
|
|
33
|
+
| 20 | Friendly Warm | Quicksand | Nunito | Friendly, approachable | Education, kids | fonts.googleapis.com/css2?family=Quicksand:wght@500;600;700&family=Nunito:wght@400;500 |
|
|
34
|
+
| 21 | Geometric Clean | Outfit | Work Sans | Geometric, clean | Fintech, modern SaaS | fonts.googleapis.com/css2?family=Outfit:wght@500;600;700&family=Work+Sans:wght@400;500 |
|
|
35
|
+
| 22 | Playful Rounded | Nunito | Quicksand | Playful, soft | Kids, games, casual | fonts.googleapis.com/css2?family=Nunito:wght@600;700&family=Quicksand:wght@400;500 |
|
|
36
|
+
| 23 | Healthcare Calm | Libre Franklin | Lato | Calm, trustworthy | Healthcare, wellness | fonts.googleapis.com/css2?family=Libre+Franklin:wght@500;600;700&family=Lato:wght@400;700 |
|
|
37
|
+
| 24 | E-commerce Trust | Rubik | Open Sans | Trustworthy, practical | E-commerce, marketplace | fonts.googleapis.com/css2?family=Rubik:wght@500;600;700&family=Open+Sans:wght@400;500;600 |
|
|
38
|
+
| 25 | Crypto Web3 | Orbitron | Exo 2 | Futuristic, technical | Crypto, Web3 | fonts.googleapis.com/css2?family=Orbitron:wght@500;600;700&family=Exo+2:wght@400;500 |
|
|
39
|
+
| 26 | Sports Energy | Barlow Condensed | Barlow | Dynamic, athletic | Sports, fitness | fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700&family=Barlow:wght@400;500 |
|
|
40
|
+
| 27 | Fintech Precision | Plus Jakarta Sans | Inter | Sharp, precise | Fintech, trading | fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700&family=Inter:wght@400;500 |
|
|
41
|
+
| 28 | Social Friendly | Manrope | Nunito Sans | Friendly, social | Social media, community | fonts.googleapis.com/css2?family=Manrope:wght@500;600;700&family=Nunito+Sans:wght@400;500 |
|
|
42
|
+
| 29 | Government Neutral | Public Sans | Public Sans | Neutral, accessible | Government, civic | fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700 |
|
|
43
|
+
| 30 | Startup Fresh | Albert Sans | DM Sans | Fresh, modern | Startup, product | fonts.googleapis.com/css2?family=Albert+Sans:wght@500;600;700&family=DM+Sans:wght@400;500 |
|
|
44
|
+
| 31 | Data Dashboard | Geist | Geist | Technical, clean | Dashboards, analytics | Self-hosted (Vercel Geist) — use next/font/local |
|
|
45
|
+
| 32 | Accessibility | Atkinson Hyperlegible | Atkinson Hyperlegible | Clear, accessible | Accessibility-critical, gov | fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700 |
|
|
46
|
+
| 33 | Travel Adventure | Josefin Sans | Raleway | Adventurous, open | Travel, outdoor | fonts.googleapis.com/css2?family=Josefin+Sans:wght@600;700&family=Raleway:wght@400;500 |
|
|
47
|
+
| 34 | Music Bold | Urbanist | Outfit | Bold, rhythmic | Music, entertainment | fonts.googleapis.com/css2?family=Urbanist:wght@600;700;800&family=Outfit:wght@400;500 |
|
|
48
|
+
| 35 | Real Estate | Lexend | Inter | Clear, trustworthy | Real estate, property | fonts.googleapis.com/css2?family=Lexend:wght@500;600;700&family=Inter:wght@400;500 |
|
|
49
|
+
| 36 | Science Research | IBM Plex Sans | IBM Plex Sans | Technical, precise | Science, research | fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700 |
|
|
50
|
+
| 37 | Non-Profit Warm | Cabin | Hind | Warm, inclusive | Non-profit, NGO | fonts.googleapis.com/css2?family=Cabin:wght@500;600;700&family=Hind:wght@400;500 |
|
|
51
|
+
| 38 | Kids Bubble | Baloo 2 | Nunito | Fun, bubbly | Kids apps, children | fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700&family=Nunito:wght@400;500 |
|
|
52
|
+
|
|
53
|
+
## Monospace & Display Pairings (39-50)
|
|
54
|
+
|
|
55
|
+
| # | Pairing Name | Heading | Body | Mood | Best For | Google Fonts URL |
|
|
56
|
+
| --- | ----------------- | ---------------- | -------------- | -------------------- | ----------------------- | ------------------------------------------------------------------------------------------------- |
|
|
57
|
+
| 39 | Developer Mono | JetBrains Mono | IBM Plex Sans | Technical, precise | Dev tools, code docs | fonts.googleapis.com/css2?family=JetBrains+Mono:wght@500;700&family=IBM+Plex+Sans:wght@400;500 |
|
|
58
|
+
| 40 | Dashboard Data | IBM Plex Sans | IBM Plex Mono | Data-focused | Dashboards, analytics | fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500 |
|
|
59
|
+
| 41 | Brutalist Raw | Space Mono | Space Mono | Raw, bold | Portfolio, creative | fonts.googleapis.com/css2?family=Space+Mono:wght@400;700 |
|
|
60
|
+
| 42 | Terminal | Fira Code | Fira Sans | Hacker, terminal | Developer tools, CLI | fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;700&family=Fira+Sans:wght@400;500 |
|
|
61
|
+
| 43 | Retro Code | VT323 | Press Start 2P | Retro, pixel | Gaming retro, nostalgic | fonts.googleapis.com/css2?family=VT323&family=Press+Start+2P |
|
|
62
|
+
| 44 | Typewriter | Courier Prime | Lato | Typewriter, literary | Writing, publishing | fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&family=Lato:wght@400;700 |
|
|
63
|
+
| 45 | Science Fiction | Orbitron | Rajdhani | Sci-fi, futuristic | Gaming, sci-fi | fonts.googleapis.com/css2?family=Orbitron:wght@500;700&family=Rajdhani:wght@400;500;600 |
|
|
64
|
+
| 46 | Pixel Retro | Press Start 2P | VT323 | Pixelated, arcade | Retro gaming | fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323 |
|
|
65
|
+
| 47 | Handwritten Touch | Caveat | Inter | Personal, hand-drawn | Personal brand, casual | fonts.googleapis.com/css2?family=Caveat:wght@500;600;700&family=Inter:wght@400;500 |
|
|
66
|
+
| 48 | Neon Display | Bungee | DM Sans | Bold, attention | Posters, landing hero | fonts.googleapis.com/css2?family=Bungee&family=DM+Sans:wght@400;500 |
|
|
67
|
+
| 49 | Graffiti | Permanent Marker | Roboto | Street, urban | Street culture, youth | fonts.googleapis.com/css2?family=Permanent+Marker&family=Roboto:wght@400;500 |
|
|
68
|
+
| 50 | Calligraphy | Great Vibes | Montserrat | Calligraphic, formal | Wedding, invitations | fonts.googleapis.com/css2?family=Great+Vibes&family=Montserrat:wght@400;500 |
|
|
69
|
+
|
|
70
|
+
## Specialized Pairings (51-57)
|
|
71
|
+
|
|
72
|
+
| # | Pairing Name | Heading | Body | Mood | Best For | Google Fonts URL |
|
|
73
|
+
| --- | --------------- | -------------------- | ---------------- | ----------------- | -------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| 51 | Japanese Modern | Zen Kaku Gothic New | Noto Sans JP | Modern Japanese | Japanese market | fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@500;700&family=Noto+Sans+JP:wght@400;500 |
|
|
75
|
+
| 52 | Arabic Elegant | Noto Naskh Arabic | Noto Sans Arabic | Elegant Arabic | Arabic market | fonts.googleapis.com/css2?family=Noto+Naskh+Arabic:wght@500;700&family=Noto+Sans+Arabic:wght@400;500 |
|
|
76
|
+
| 53 | Korean Clean | Noto Sans KR | Noto Sans KR | Clean Korean | Korean market | fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700 |
|
|
77
|
+
| 54 | Chinese Modern | Noto Sans SC | Noto Sans SC | Modern Chinese | Chinese (Simplified) | fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700 |
|
|
78
|
+
| 55 | Hindi Universal | Noto Sans Devanagari | Noto Sans | Clear Hindi | Hindi/Devanagari | fonts.googleapis.com/css2?family=Noto+Sans+Devanagari:wght@400;500;700&family=Noto+Sans:wght@400;500 |
|
|
79
|
+
| 56 | Variable Weight | Inter Variable | Inter Variable | Flexible, modern | Performance-critical | fonts.googleapis.com/css2?family=Inter:wght@100..900 |
|
|
80
|
+
| 57 | System Stack | system-ui | system-ui | Native, zero-load | Performance-extreme | No import needed — use system-ui, -apple-system, BlinkMacSystemFont |
|
|
81
|
+
|
|
82
|
+
## Tailwind Config Templates
|
|
83
|
+
|
|
84
|
+
### Serif + Sans Pattern
|
|
85
|
+
|
|
86
|
+
```js
|
|
87
|
+
module.exports = {
|
|
88
|
+
theme: {
|
|
89
|
+
fontFamily: {
|
|
90
|
+
heading: ["Playfair Display", "Georgia", "serif"],
|
|
91
|
+
body: ["Inter", "system-ui", "sans-serif"],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Sans + Sans Pattern
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
module.exports = {
|
|
101
|
+
theme: {
|
|
102
|
+
fontFamily: {
|
|
103
|
+
heading: ["Poppins", "sans-serif"],
|
|
104
|
+
body: ["Inter", "system-ui", "sans-serif"],
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Mono + Sans Pattern (Dev Tools)
|
|
111
|
+
|
|
112
|
+
```js
|
|
113
|
+
module.exports = {
|
|
114
|
+
theme: {
|
|
115
|
+
fontFamily: {
|
|
116
|
+
heading: ["JetBrains Mono", "monospace"],
|
|
117
|
+
body: ["IBM Plex Sans", "sans-serif"],
|
|
118
|
+
mono: ["JetBrains Mono", "Fira Code", "monospace"],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Next.js Font Optimization Pattern
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
import { Inter, Playfair_Display } from 'next/font/google'
|
|
128
|
+
|
|
129
|
+
const inter = Inter({
|
|
130
|
+
subsets: ['latin'],
|
|
131
|
+
variable: '--font-body',
|
|
132
|
+
display: 'swap',
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
const playfair = Playfair_Display({
|
|
136
|
+
subsets: ['latin'],
|
|
137
|
+
variable: '--font-heading',
|
|
138
|
+
display: 'swap',
|
|
139
|
+
weight: ['600', '700'],
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
// In layout.tsx:
|
|
143
|
+
<html className={`${inter.variable} ${playfair.variable}`}>
|
|
144
|
+
```
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-ux-patterns
|
|
3
|
+
description: UX pattern intelligence — landing page architectures, chart type selection, forms & feedback, navigation patterns, data visualization, and 133 critical UX guidelines for building production-grade interfaces.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: merlin-framework
|
|
7
|
+
version: "3.0.0"
|
|
8
|
+
auto_activate: [ux-pattern, landing-page, dashboard-design, conversion-funnel, usability]
|
|
9
|
+
file_triggers: [*.html, *.tsx, *.jsx, *.vue]
|
|
10
|
+
tool_reminders: [Select a landing page pattern BEFORE building — match it to the product type, Touch targets must be 44x44px minimum on all interactive elements, Always implement loading states for async operations — never leave the user without feedback]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Landing Page Pattern Selection
|
|
14
|
+
|
|
15
|
+
Choose the pattern that matches the product type and conversion goal:
|
|
16
|
+
|
|
17
|
+
| # | Pattern | Best For | Key Sections | Conversion Strategy |
|
|
18
|
+
| --- | ------------------------ | ----------------------------- | ---------------------------------------------------- | -------------------------- |
|
|
19
|
+
| 1 | Hero + Features + CTA | SaaS, general products | Hero, feature grid, pricing, CTA | Feature-driven persuasion |
|
|
20
|
+
| 2 | Hero + Social Proof | E-commerce, marketplaces | Hero, testimonials, logos, CTA | Trust-driven conversion |
|
|
21
|
+
| 3 | Feature-Rich Showcase | Complex products, B2B | Hero, feature details, comparison, demo CTA | Detail-driven evaluation |
|
|
22
|
+
| 4 | Minimal Single Column | Micro SaaS, simple tools | Hero, brief description, single CTA | Friction-free signup |
|
|
23
|
+
| 5 | Interactive Product Demo | AI tools, dev tools | Hero, live demo embed, features, CTA | Try-before-buy |
|
|
24
|
+
| 6 | Trust & Authority | Finance, healthcare, legal | Hero, credentials, case studies, compliance badges | Authority-driven trust |
|
|
25
|
+
| 7 | Storytelling-Driven | Brand, travel, lifestyle | Full-width sections, narrative flow, emotional CTA | Emotion-driven narrative |
|
|
26
|
+
| 8 | Video-First | Media, entertainment, courses | Hero video, benefits, testimonials | Visual-first engagement |
|
|
27
|
+
| 9 | Comparison Table | B2B, SaaS with tiers | Hero, competitor/plan comparison, CTA | Comparison-driven decision |
|
|
28
|
+
| 10 | Lead Magnet | Newsletters, content, courses | Hero, value prop, email capture, sample content | Content-gated capture |
|
|
29
|
+
| 11 | Pricing Page | SaaS, subscription services | Plan cards, feature matrix, FAQ, CTA | Price-anchored decision |
|
|
30
|
+
| 12 | Waitlist / Coming Soon | Pre-launch, beta products | Hero, teaser, email capture, countdown | Scarcity-driven signup |
|
|
31
|
+
| 13 | App Store Style | Mobile apps | Hero with device mockup, features, reviews, download | App-store conversion |
|
|
32
|
+
| 14 | Bento Grid Showcase | Design-forward, Apple-style | Bento grid cards, visual features, minimal text | Visual-first discovery |
|
|
33
|
+
| 15 | Funnel 3-Step | High-intent conversion | Step 1 hook, Step 2 qualify, Step 3 convert | Progressive commitment |
|
|
34
|
+
|
|
35
|
+
For the complete 30-pattern catalog with section breakdowns, read `references/landing-patterns.md`.
|
|
36
|
+
|
|
37
|
+
## Chart Type Selection
|
|
38
|
+
|
|
39
|
+
Match the data goal to the right visualization:
|
|
40
|
+
|
|
41
|
+
| Data Goal | Chart Type | Library Recommendation | Accessibility |
|
|
42
|
+
| ------------------ | ---------------------- | ---------------------- | ------------------------------- |
|
|
43
|
+
| Trend over time | Line chart | Recharts, Chart.js | Add data table alt |
|
|
44
|
+
| Compare categories | Bar chart (vertical) | Recharts, Nivo | Color-blind safe palette |
|
|
45
|
+
| Part-to-whole | Donut / Pie chart | Recharts, D3 | Label each segment |
|
|
46
|
+
| Ranking / sorted | Horizontal bar | Recharts, Nivo | Order by value |
|
|
47
|
+
| Correlation | Scatter plot | Nivo, D3 | Tooltip on each point |
|
|
48
|
+
| Distribution | Histogram / Box plot | D3, Plotly | Label axes clearly |
|
|
49
|
+
| Geographic | Choropleth map | D3, Mapbox | Pattern fills + color |
|
|
50
|
+
| Flow / funnel | Sankey / Funnel | D3, Nivo | Label each stage |
|
|
51
|
+
| Progress | Gauge / Progress bar | Custom, Recharts | Numeric + visual |
|
|
52
|
+
| Hierarchy | Treemap / Sunburst | D3, Nivo | Breadcrumb navigation |
|
|
53
|
+
| Real-time | Streaming line | D3, custom WebSocket | Update rate indicator |
|
|
54
|
+
| Comparison matrix | Heatmap | Nivo, D3 | Numeric labels in cells |
|
|
55
|
+
| Financial | Candlestick | Lightweight Charts | OHLC tooltip |
|
|
56
|
+
| Network | Node graph | D3, Cytoscape | Focus + zoom controls |
|
|
57
|
+
| Forecast | Line + confidence band | D3, Recharts custom | Distinguish actual vs predicted |
|
|
58
|
+
|
|
59
|
+
## Critical UX Rules (HIGH Severity)
|
|
60
|
+
|
|
61
|
+
These rules are non-negotiable for production interfaces:
|
|
62
|
+
|
|
63
|
+
**Accessibility:**
|
|
64
|
+
|
|
65
|
+
- Color contrast: 4.5:1 minimum for normal text, 3:1 for large text and UI components
|
|
66
|
+
- Never rely on color alone — use icons, patterns, or text labels alongside color
|
|
67
|
+
- All images need alt text (decorative images: `alt=""`)
|
|
68
|
+
- Heading hierarchy: never skip levels (h1 -> h2 -> h3, not h1 -> h3)
|
|
69
|
+
- Keyboard navigation: all interactive elements reachable via Tab, activatable via Enter/Space
|
|
70
|
+
- Skip link: provide "Skip to content" link as first focusable element
|
|
71
|
+
|
|
72
|
+
**Touch & Interaction:**
|
|
73
|
+
|
|
74
|
+
- Touch targets: 44x44px minimum (48x48px recommended) with 8px spacing between targets
|
|
75
|
+
- Focus states: visible focus ring on ALL interactive elements (never `outline: none` without replacement)
|
|
76
|
+
- Hover states: must not cause layout shifts — use transform/opacity, not size changes
|
|
77
|
+
- Loading states: show skeleton/spinner for ANY async operation — never leave blank screen
|
|
78
|
+
- Disabled states: use `aria-disabled` + visual dimming, explain WHY it's disabled
|
|
79
|
+
|
|
80
|
+
**Forms:**
|
|
81
|
+
|
|
82
|
+
- Labels: every input MUST have a visible label (not just placeholder)
|
|
83
|
+
- Error messages: display inline near the input, not just as toast notifications
|
|
84
|
+
- Input types: use correct HTML5 types (`type="email"`, `type="tel"`, `type="url"`)
|
|
85
|
+
- Submit feedback: disable button + show spinner during submission, show success/error after
|
|
86
|
+
|
|
87
|
+
**Responsive:**
|
|
88
|
+
|
|
89
|
+
- Mobile-first: design for 375px first, then scale up
|
|
90
|
+
- Font size: minimum 16px body text (prevents iOS zoom on input focus)
|
|
91
|
+
- No horizontal scroll: test at all breakpoints, use `overflow-x: hidden` only as last resort
|
|
92
|
+
- Viewport meta: always include `<meta name="viewport" content="width=device-width, initial-scale=1">`
|
|
93
|
+
|
|
94
|
+
**Performance:**
|
|
95
|
+
|
|
96
|
+
- Image optimization: use WebP/AVIF with `<picture>` fallbacks, set explicit width/height to prevent CLS
|
|
97
|
+
- Lazy loading: `loading="lazy"` on below-fold images
|
|
98
|
+
- prefers-reduced-motion: wrap all animations in `@media (prefers-reduced-motion: no-preference)`
|
|
99
|
+
- Transition duration: 150-300ms for micro-interactions, never exceed 500ms
|
|
100
|
+
|
|
101
|
+
## UI Style Quick Reference
|
|
102
|
+
|
|
103
|
+
Top 15 styles for rapid style selection:
|
|
104
|
+
|
|
105
|
+
| Style | Best For | Complexity | Accessibility |
|
|
106
|
+
| -------------------- | ------------------------ | ---------- | ------------- |
|
|
107
|
+
| Minimalism | Corporate, SaaS, content | Low | WCAG AAA |
|
|
108
|
+
| Glassmorphism | SaaS, fintech, modern | Medium | Ensure 4.5:1 |
|
|
109
|
+
| Flat Design | E-commerce, mobile | Low | WCAG AAA |
|
|
110
|
+
| Dark Mode | Dev tools, dashboards | Low | WCAG AAA |
|
|
111
|
+
| Brutalism | Portfolio, creative | Low | WCAG AAA |
|
|
112
|
+
| Neumorphism | Mobile, wellness | Medium | Contrast risk |
|
|
113
|
+
| AI-Native UI | AI products, chatbots | Low | WCAG AA |
|
|
114
|
+
| Bento Grid | Feature showcase | Low | WCAG AA |
|
|
115
|
+
| Cyberpunk UI | Gaming, crypto | Medium | Custom |
|
|
116
|
+
| Neubrutalism | Startups, bold | Low | WCAG AAA |
|
|
117
|
+
| Swiss Modernism | Corporate, legal | Low | WCAG AAA |
|
|
118
|
+
| Organic Biophilic | Sustainability, food | Low | WCAG AA |
|
|
119
|
+
| Conversion-Optimized | Landing pages | Medium | WCAG AA |
|
|
120
|
+
| Data-Dense Dashboard | Analytics, BI | Medium | Custom |
|
|
121
|
+
| Editorial Grid | Magazine, publishing | Low | WCAG AA |
|
|
122
|
+
|
|
123
|
+
For the full 67-style catalog with all properties, read `references/style-catalog.md`.
|
|
124
|
+
|
|
125
|
+
## Forms & Feedback (Quick Rules)
|
|
126
|
+
|
|
127
|
+
The most overlooked form UX issues that make interfaces feel broken:
|
|
128
|
+
|
|
129
|
+
- **Progressive disclosure** — Show basic fields first; reveal advanced options behind a toggle. Never overwhelm upfront.
|
|
130
|
+
- **Focus management** — After submit error, auto-focus the first invalid field and scroll it into view
|
|
131
|
+
- **Error summary** — For multiple errors, show a summary at the top with anchor links to each field
|
|
132
|
+
- **Form autosave** — Long forms (5+ fields) should auto-save drafts to prevent data loss on navigation
|
|
133
|
+
- **Undo support** — Destructive/bulk actions need a time-limited undo toast, not just a confirmation dialog
|
|
134
|
+
|
|
135
|
+
For the complete 119-rule guidelines (including 12 advanced form rules), read `references/ux-guidelines.md`.
|
|
136
|
+
|
|
137
|
+
## Navigation Patterns (Quick Rules)
|
|
138
|
+
|
|
139
|
+
Navigation mistakes that make apps feel confusing:
|
|
140
|
+
|
|
141
|
+
- **Bottom nav limit** — Maximum 5 items, always with both icon and text label
|
|
142
|
+
- **Adaptive navigation** — Large screens (≥1024px) use sidebar; small screens use bottom nav or top bar
|
|
143
|
+
- **State preservation** — Back navigation must restore scroll position, filters, and input values
|
|
144
|
+
- **Modal vs navigation** — Modals are for confirmations and self-contained tasks, never for primary user flows
|
|
145
|
+
- **Persistent nav** — Core navigation must remain reachable from deep pages; never hide it entirely
|
|
146
|
+
|
|
147
|
+
For the complete 20 navigation rules, read `references/ux-guidelines.md`.
|
|
148
|
+
|
|
149
|
+
## Charts & Data Visualization
|
|
150
|
+
|
|
151
|
+
For chart type selection, see the table above. For comprehensive data visualization UX rules (30 rules covering accessibility, responsive behavior, interaction patterns, and anti-patterns), read `references/charts-data-guidelines.md`.
|
|
152
|
+
|
|
153
|
+
## Pre-Delivery Checklist
|
|
154
|
+
|
|
155
|
+
For an expanded professional UI checklist (37 items across visual quality, interaction, light/dark mode, layout, and accessibility), read `references/professional-ui-checklist.md`.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Charts & Data Visualization Guidelines (30 Rules)
|
|
2
|
+
|
|
3
|
+
> Reference data for the design-ux-patterns skill. Rules for accessible, performant, and user-friendly data visualization.
|
|
4
|
+
> Source: Cherry-picked from ui-ux-pro-max (nextlevelbuilder, v2.2.1) — adapted for Merlin ecosystem.
|
|
5
|
+
|
|
6
|
+
## Chart Type Selection (1-3)
|
|
7
|
+
|
|
8
|
+
### 1. Match Chart to Data Type
|
|
9
|
+
|
|
10
|
+
- **Do:** Use line charts for trends over time, bar charts for category comparison, donut/pie for part-to-whole, scatter for correlation
|
|
11
|
+
- **Don't:** Use pie charts for comparing values or line charts for categorical data — match the chart to what the data communicates
|
|
12
|
+
- **Severity:** High
|
|
13
|
+
|
|
14
|
+
### 2. Accessible Color Palettes
|
|
15
|
+
|
|
16
|
+
- **Do:** Use accessible color palettes that work for colorblind users. Supplement color with patterns, textures, or shapes.
|
|
17
|
+
- **Don't:** Rely on red/green distinction or use color alone to differentiate data series
|
|
18
|
+
- **Severity:** Critical
|
|
19
|
+
|
|
20
|
+
### 3. Data Table Alternative
|
|
21
|
+
|
|
22
|
+
- **Do:** Provide a table alternative for every chart — charts alone are not screen-reader friendly
|
|
23
|
+
- **Don't:** Ship charts without any text/table fallback for users who can't see the visualization
|
|
24
|
+
- **Severity:** High
|
|
25
|
+
- **Code:** `<details><summary>View data table</summary><table>...</table></details>`
|
|
26
|
+
|
|
27
|
+
## Labels & Readability (4-10)
|
|
28
|
+
|
|
29
|
+
### 4. Legend Visibility
|
|
30
|
+
|
|
31
|
+
- **Do:** Always show the legend. Position it near the chart, not detached below a scroll fold.
|
|
32
|
+
- **Don't:** Hide the legend or place it where users must scroll to find it
|
|
33
|
+
- **Severity:** High
|
|
34
|
+
|
|
35
|
+
### 5. Axis Labels
|
|
36
|
+
|
|
37
|
+
- **Do:** Label both axes with units and readable scale. Use abbreviations for large numbers (1K, 1M).
|
|
38
|
+
- **Don't:** Truncate, rotate, or cram axis labels on small screens — simplify the scale instead
|
|
39
|
+
- **Severity:** High
|
|
40
|
+
|
|
41
|
+
### 6. Axis Readability
|
|
42
|
+
|
|
43
|
+
- **Do:** Maintain readable tick spacing. Auto-skip ticks on small screens to prevent overlap.
|
|
44
|
+
- **Don't:** Render all ticks regardless of space — cramped labels are unreadable
|
|
45
|
+
- **Severity:** Medium
|
|
46
|
+
|
|
47
|
+
### 7. Number Formatting
|
|
48
|
+
|
|
49
|
+
- **Do:** Use locale-aware formatting for numbers, dates, and currencies on axes and labels
|
|
50
|
+
- **Don't:** Display raw numbers (1000000) or ambiguous date formats (01/02/03)
|
|
51
|
+
- **Severity:** Medium
|
|
52
|
+
|
|
53
|
+
### 8. Direct Labeling
|
|
54
|
+
|
|
55
|
+
- **Do:** For small datasets (≤5 series), label values directly on the chart to reduce eye travel to legend
|
|
56
|
+
- **Don't:** Force users to match colors between distant legend and chart for simple datasets
|
|
57
|
+
- **Severity:** Low
|
|
58
|
+
|
|
59
|
+
### 9. Time Scale Clarity
|
|
60
|
+
|
|
61
|
+
- **Do:** Time series charts must clearly label time granularity (day/week/month) and offer switching between scales
|
|
62
|
+
- **Don't:** Show time axis without indicating granularity — users can't interpret the data correctly
|
|
63
|
+
- **Severity:** Medium
|
|
64
|
+
|
|
65
|
+
### 10. Legend Interactive
|
|
66
|
+
|
|
67
|
+
- **Do:** Make legends clickable to toggle series visibility — helps users focus on specific data
|
|
68
|
+
- **Don't:** Use static legends when multiple series overlap and obscure each other
|
|
69
|
+
- **Severity:** Low
|
|
70
|
+
|
|
71
|
+
## Accessibility (11-17)
|
|
72
|
+
|
|
73
|
+
### 11. Pattern & Texture
|
|
74
|
+
|
|
75
|
+
- **Do:** Supplement color with patterns (hatching, dots, dashes) so data is distinguishable without color
|
|
76
|
+
- **Don't:** Differentiate data series by color alone — fails WCAG and excludes colorblind users
|
|
77
|
+
- **Severity:** Critical
|
|
78
|
+
|
|
79
|
+
### 12. Contrast for Data Elements
|
|
80
|
+
|
|
81
|
+
- **Do:** Data lines/bars vs background must meet ≥3:1 contrast. Data text labels must meet ≥4.5:1.
|
|
82
|
+
- **Don't:** Use light-colored data elements on light backgrounds or dark on dark
|
|
83
|
+
- **Severity:** High
|
|
84
|
+
|
|
85
|
+
### 13. Focusable Elements
|
|
86
|
+
|
|
87
|
+
- **Do:** Interactive chart elements (points, bars, slices) must be keyboard-navigable with Tab/Arrow keys
|
|
88
|
+
- **Don't:** Make chart elements mouse-only — keyboard users are locked out of the data
|
|
89
|
+
- **Severity:** High
|
|
90
|
+
|
|
91
|
+
### 14. Screen Reader Summary
|
|
92
|
+
|
|
93
|
+
- **Do:** Provide a text summary or `aria-label` describing the chart's key insight (e.g., "Revenue grew 23% in Q4")
|
|
94
|
+
- **Don't:** Leave charts without any accessible description — screen readers see nothing
|
|
95
|
+
- **Severity:** High
|
|
96
|
+
- **Code:** `<figure role="img" aria-label="Revenue trend: 23% growth in Q4 2025"><canvas id="chart"></canvas></figure>`
|
|
97
|
+
|
|
98
|
+
### 15. Tooltip Keyboard Access
|
|
99
|
+
|
|
100
|
+
- **Do:** Tooltip content must be keyboard-reachable — not hover-only. Use focus events to trigger tooltips.
|
|
101
|
+
- **Don't:** Rely on mouse hover alone for showing data values in charts
|
|
102
|
+
- **Severity:** High
|
|
103
|
+
|
|
104
|
+
### 16. Sortable Table State
|
|
105
|
+
|
|
106
|
+
- **Do:** Data tables must support sorting with `aria-sort` indicating current sort state and direction
|
|
107
|
+
- **Don't:** Implement visual sort indicators without accessible state announcement
|
|
108
|
+
- **Severity:** Medium
|
|
109
|
+
- **Code:** `<th aria-sort="ascending">Revenue</th>`
|
|
110
|
+
|
|
111
|
+
### 17. Animation Respects Motion
|
|
112
|
+
|
|
113
|
+
- **Do:** Chart entrance animations must respect `prefers-reduced-motion`. Data should be readable immediately.
|
|
114
|
+
- **Don't:** Gate data comprehension behind mandatory animation that can't be skipped
|
|
115
|
+
- **Severity:** Medium
|
|
116
|
+
|
|
117
|
+
## Responsive & Performance (18-23)
|
|
118
|
+
|
|
119
|
+
### 18. Responsive Charts
|
|
120
|
+
|
|
121
|
+
- **Do:** Charts must reflow or simplify on small screens — use horizontal bar instead of vertical, fewer ticks, smaller legends
|
|
122
|
+
- **Don't:** Render desktop-sized charts on mobile that require horizontal scrolling
|
|
123
|
+
- **Severity:** High
|
|
124
|
+
|
|
125
|
+
### 19. Large Dataset Handling
|
|
126
|
+
|
|
127
|
+
- **Do:** For 1000+ data points, aggregate or sample the data. Provide drill-down for detail.
|
|
128
|
+
- **Don't:** Render all data points at once — it's slow, cluttered, and incomprehensible
|
|
129
|
+
- **Severity:** Medium
|
|
130
|
+
|
|
131
|
+
### 20. Loading State
|
|
132
|
+
|
|
133
|
+
- **Do:** Show skeleton or shimmer placeholder while chart data loads. Include axis frame to indicate what's coming.
|
|
134
|
+
- **Don't:** Show an empty blank area or only a spinner with no context while chart loads
|
|
135
|
+
- **Severity:** Medium
|
|
136
|
+
|
|
137
|
+
### 21. Empty Data State
|
|
138
|
+
|
|
139
|
+
- **Do:** Show meaningful empty state when no data exists — "No data yet" with guidance or action to generate data
|
|
140
|
+
- **Don't:** Render empty axes, a blank chart area, or a broken visualization when there's no data
|
|
141
|
+
- **Severity:** Medium
|
|
142
|
+
|
|
143
|
+
### 22. Tooltip on Interact
|
|
144
|
+
|
|
145
|
+
- **Do:** Provide tooltips with exact values on hover (web) or tap (mobile). Include data point context.
|
|
146
|
+
- **Don't:** Force users to estimate values from axis position alone — exact numbers matter
|
|
147
|
+
- **Severity:** High
|
|
148
|
+
|
|
149
|
+
### 23. Touch Target for Charts
|
|
150
|
+
|
|
151
|
+
- **Do:** Interactive chart elements (data points, pie slices) must have ≥44px tap area. Expand on touch if needed.
|
|
152
|
+
- **Don't:** Render tiny data points on mobile that require pixel-perfect taps
|
|
153
|
+
- **Severity:** High
|
|
154
|
+
|
|
155
|
+
## Anti-Patterns (24-30)
|
|
156
|
+
|
|
157
|
+
### 24. No Pie Overuse
|
|
158
|
+
|
|
159
|
+
- **Do:** Limit pie/donut charts to ≤5 categories. For more categories, switch to horizontal bar chart.
|
|
160
|
+
- **Don't:** Use pie charts with 8+ tiny slices — they become unreadable and impossible to compare
|
|
161
|
+
- **Severity:** Medium
|
|
162
|
+
|
|
163
|
+
### 25. Data Density
|
|
164
|
+
|
|
165
|
+
- **Do:** Limit information density per chart — one chart, one message. Split complex data into multiple charts.
|
|
166
|
+
- **Don't:** Pack 5 different metrics into one chart hoping the user will figure it out
|
|
167
|
+
- **Severity:** Medium
|
|
168
|
+
|
|
169
|
+
### 26. Trend Emphasis
|
|
170
|
+
|
|
171
|
+
- **Do:** Emphasize data trends over decoration. Clean lines, minimal shadows, focused visual hierarchy.
|
|
172
|
+
- **Don't:** Add heavy gradients, 3D effects, or shadows that obscure the actual data
|
|
173
|
+
- **Severity:** Medium
|
|
174
|
+
|
|
175
|
+
### 27. Gridline Subtlety
|
|
176
|
+
|
|
177
|
+
- **Do:** Grid lines should be low-contrast (e.g., gray-200) so they guide the eye without competing with data
|
|
178
|
+
- **Don't:** Use dark or heavy grid lines that visually dominate the data series
|
|
179
|
+
- **Severity:** Low
|
|
180
|
+
|
|
181
|
+
### 28. Error State
|
|
182
|
+
|
|
183
|
+
- **Do:** Data load failure must show a clear error message with retry action, not a broken or empty chart
|
|
184
|
+
- **Don't:** Silently fail or show broken axes when the API call fails
|
|
185
|
+
- **Severity:** High
|
|
186
|
+
|
|
187
|
+
### 29. Export Option
|
|
188
|
+
|
|
189
|
+
- **Do:** For data-heavy products, offer CSV or image export of chart data for offline analysis
|
|
190
|
+
- **Don't:** Lock users into on-screen-only data viewing when they need to share or analyze further
|
|
191
|
+
- **Severity:** Low
|
|
192
|
+
|
|
193
|
+
### 30. Drill-Down Consistency
|
|
194
|
+
|
|
195
|
+
- **Do:** Drill-down interactions must maintain a clear back-path and hierarchy breadcrumb
|
|
196
|
+
- **Don't:** Let users drill into chart details with no way to navigate back to the overview
|
|
197
|
+
- **Severity:** Medium
|