@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,837 @@
|
|
|
1
|
+
# Complete UX Guidelines (133 Rules)
|
|
2
|
+
|
|
3
|
+
> Reference data for the design-ux-patterns skill. Organized by category with do/don't and code examples.
|
|
4
|
+
|
|
5
|
+
## Navigation (1-20)
|
|
6
|
+
|
|
7
|
+
### 1. Smooth Scroll Behavior
|
|
8
|
+
|
|
9
|
+
- **Do:** `html { scroll-behavior: smooth; }` with `prefers-reduced-motion` override
|
|
10
|
+
- **Don't:** Use JavaScript-based smooth scroll that ignores motion preferences
|
|
11
|
+
- **Severity:** Medium
|
|
12
|
+
|
|
13
|
+
### 2. Sticky Navigation
|
|
14
|
+
|
|
15
|
+
- **Do:** `position: sticky; top: 0; z-index: 50;` with shadow on scroll
|
|
16
|
+
- **Don't:** Use `position: fixed` which removes element from flow
|
|
17
|
+
- **Severity:** Medium
|
|
18
|
+
|
|
19
|
+
### 3. Active Navigation State
|
|
20
|
+
|
|
21
|
+
- **Do:** Highlight current page/section with `aria-current="page"` + visual indicator
|
|
22
|
+
- **Don't:** Rely only on color change without accessible markup
|
|
23
|
+
- **Severity:** High
|
|
24
|
+
|
|
25
|
+
### 4. Back Button Support
|
|
26
|
+
|
|
27
|
+
- **Do:** Use proper routing that supports browser back/forward navigation
|
|
28
|
+
- **Don't:** Break browser history with `window.location.replace()` for internal navigation
|
|
29
|
+
- **Severity:** High
|
|
30
|
+
|
|
31
|
+
### 5. Deep Linking
|
|
32
|
+
|
|
33
|
+
- **Do:** Every significant view should have a unique URL for sharing/bookmarking
|
|
34
|
+
- **Don't:** Use client-side state that can't be reconstructed from the URL
|
|
35
|
+
- **Severity:** Medium
|
|
36
|
+
|
|
37
|
+
### 6. Breadcrumbs
|
|
38
|
+
|
|
39
|
+
- **Do:** Use `<nav aria-label="Breadcrumb"><ol>` with structured data
|
|
40
|
+
- **Don't:** Use `<div>` with `>` separators and no semantic markup
|
|
41
|
+
- **Severity:** Medium
|
|
42
|
+
|
|
43
|
+
### 7. Bottom Nav Limit
|
|
44
|
+
|
|
45
|
+
- **Do:** Maximum 5 items in bottom navigation. Always include both icon and text label.
|
|
46
|
+
- **Don't:** Cram 6+ items into bottom nav or use icon-only navigation items
|
|
47
|
+
- **Severity:** High
|
|
48
|
+
|
|
49
|
+
### 8. Drawer Usage
|
|
50
|
+
|
|
51
|
+
- **Do:** Use drawer/sidebar for secondary navigation (settings, account, help), not primary actions
|
|
52
|
+
- **Don't:** Place primary navigation actions inside a hamburger menu — they become invisible
|
|
53
|
+
- **Severity:** High
|
|
54
|
+
|
|
55
|
+
### 9. Nav Label + Icon
|
|
56
|
+
|
|
57
|
+
- **Do:** Navigation items must have both icon and text label for discoverability
|
|
58
|
+
- **Don't:** Use icon-only navigation — it harms discoverability and forces users to guess meaning
|
|
59
|
+
- **Severity:** High
|
|
60
|
+
|
|
61
|
+
### 10. Nav Hierarchy
|
|
62
|
+
|
|
63
|
+
- **Do:** Clearly separate primary navigation (tabs/bottom bar) from secondary (drawer/settings)
|
|
64
|
+
- **Don't:** Mix navigation levels — tab bar items should not open drawers or nested tab bars
|
|
65
|
+
- **Severity:** Medium
|
|
66
|
+
|
|
67
|
+
### 11. Modal Escape
|
|
68
|
+
|
|
69
|
+
- **Do:** Modals and sheets must offer a clear close/dismiss affordance. Support swipe-down on mobile.
|
|
70
|
+
- **Don't:** Trap users in modals without visible close button or gesture support
|
|
71
|
+
- **Severity:** High
|
|
72
|
+
|
|
73
|
+
### 12. Search Accessible
|
|
74
|
+
|
|
75
|
+
- **Do:** Search must be easily reachable (top bar or dedicated tab). Provide recent and suggested queries.
|
|
76
|
+
- **Don't:** Bury search behind multiple taps or hide it in a menu
|
|
77
|
+
- **Severity:** Medium
|
|
78
|
+
|
|
79
|
+
### 13. State Preservation
|
|
80
|
+
|
|
81
|
+
- **Do:** Navigating back must restore previous scroll position, filter state, and input values
|
|
82
|
+
- **Don't:** Reset page state on back navigation — users lose their place and work
|
|
83
|
+
- **Severity:** High
|
|
84
|
+
|
|
85
|
+
### 14. Gesture Nav Support
|
|
86
|
+
|
|
87
|
+
- **Do:** Support system gesture navigation (iOS swipe-back, Android predictive back) without conflict
|
|
88
|
+
- **Don't:** Override system gestures with custom swipe handlers on the same edge
|
|
89
|
+
- **Severity:** Medium
|
|
90
|
+
|
|
91
|
+
### 15. Adaptive Navigation
|
|
92
|
+
|
|
93
|
+
- **Do:** Large screens (≥1024px) use sidebar navigation. Small screens use bottom nav or top bar.
|
|
94
|
+
- **Don't:** Force the same navigation layout across all screen sizes
|
|
95
|
+
- **Severity:** Medium
|
|
96
|
+
|
|
97
|
+
### 16. Back Stack Integrity
|
|
98
|
+
|
|
99
|
+
- **Do:** Back button behavior must be predictable — always return to the previous screen in the stack
|
|
100
|
+
- **Don't:** Silently reset the navigation stack or unexpectedly jump to home on back press
|
|
101
|
+
- **Severity:** High
|
|
102
|
+
|
|
103
|
+
### 17. Navigation Consistency
|
|
104
|
+
|
|
105
|
+
- **Do:** Navigation placement and structure must stay the same across all pages of the application
|
|
106
|
+
- **Don't:** Change navigation layout, position, or items depending on the current page
|
|
107
|
+
- **Severity:** High
|
|
108
|
+
|
|
109
|
+
### 18. Modal vs Navigation
|
|
110
|
+
|
|
111
|
+
- **Do:** Use modals for confirmations, alerts, and self-contained tasks. Use navigation for primary user flows.
|
|
112
|
+
- **Don't:** Use modals as navigation screens — they break the user's mental model and back button behavior
|
|
113
|
+
- **Severity:** Medium
|
|
114
|
+
|
|
115
|
+
### 19. Focus on Route Change
|
|
116
|
+
|
|
117
|
+
- **Do:** After page/route transition, move focus to the main content region for screen reader users
|
|
118
|
+
- **Don't:** Leave focus on the previous page's navigation element after route change
|
|
119
|
+
- **Severity:** High
|
|
120
|
+
|
|
121
|
+
### 20. Persistent Nav
|
|
122
|
+
|
|
123
|
+
- **Do:** Core navigation must remain reachable from deep pages — never hide it entirely in sub-flows
|
|
124
|
+
- **Don't:** Remove global navigation on detail pages, forcing users to use only the back button
|
|
125
|
+
- **Severity:** Medium
|
|
126
|
+
|
|
127
|
+
## Animation (7-14)
|
|
128
|
+
|
|
129
|
+
### 7. Excessive Animation
|
|
130
|
+
|
|
131
|
+
- **Do:** Use subtle, purposeful animations that guide attention (150-300ms)
|
|
132
|
+
- **Don't:** Animate everything or use durations > 500ms for UI transitions
|
|
133
|
+
- **Severity:** High
|
|
134
|
+
|
|
135
|
+
### 8. Animation Duration
|
|
136
|
+
|
|
137
|
+
- **Do:** Micro-interactions: 150-300ms. Page transitions: 300-500ms. Loading: loop until complete.
|
|
138
|
+
- **Don't:** Use the same duration for all animations regardless of context
|
|
139
|
+
- **Severity:** Medium
|
|
140
|
+
|
|
141
|
+
### 9. Reduced Motion
|
|
142
|
+
|
|
143
|
+
- **Do:** `@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }`
|
|
144
|
+
- **Don't:** Ignore the preference or only apply it to some animations
|
|
145
|
+
- **Severity:** Critical
|
|
146
|
+
|
|
147
|
+
### 10. Loading States
|
|
148
|
+
|
|
149
|
+
- **Do:** Show skeleton screens for content, spinners for actions, progress bars for uploads
|
|
150
|
+
- **Don't:** Show blank screens or only text "Loading..."
|
|
151
|
+
- **Severity:** High
|
|
152
|
+
|
|
153
|
+
### 11. Hover vs Tap Distinction
|
|
154
|
+
|
|
155
|
+
- **Do:** Use `@media (hover: hover)` to apply hover effects only on hover-capable devices
|
|
156
|
+
- **Don't:** Apply `:hover` styles that get stuck on touch devices
|
|
157
|
+
- **Severity:** Medium
|
|
158
|
+
|
|
159
|
+
### 12. Continuous Animation
|
|
160
|
+
|
|
161
|
+
- **Do:** Allow users to pause/stop continuous animations (carousels, marquees)
|
|
162
|
+
- **Don't:** Run infinite animations without pause controls (WCAG 2.2.2)
|
|
163
|
+
- **Severity:** High
|
|
164
|
+
|
|
165
|
+
### 13. Transform Performance
|
|
166
|
+
|
|
167
|
+
- **Do:** Animate `transform` and `opacity` only — they run on the compositor thread
|
|
168
|
+
- **Don't:** Animate `width`, `height`, `top`, `left`, `margin`, `padding` — they trigger layout
|
|
169
|
+
- **Severity:** Medium
|
|
170
|
+
|
|
171
|
+
### 14. Easing Functions
|
|
172
|
+
|
|
173
|
+
- **Do:** Use `ease-out` for entrances, `ease-in` for exits, `ease-in-out` for position changes
|
|
174
|
+
- **Don't:** Use `linear` for UI transitions (feels robotic) or custom beziers without testing
|
|
175
|
+
- **Severity:** Low
|
|
176
|
+
|
|
177
|
+
## Layout (15-21)
|
|
178
|
+
|
|
179
|
+
### 15. Z-Index Management
|
|
180
|
+
|
|
181
|
+
- **Do:** Use a z-index scale: base(0), dropdown(100), sticky(200), modal(300), toast(400), tooltip(500)
|
|
182
|
+
- **Don't:** Use arbitrary z-index values (999, 9999, 99999)
|
|
183
|
+
- **Severity:** Medium
|
|
184
|
+
|
|
185
|
+
### 16. Overflow Handling
|
|
186
|
+
|
|
187
|
+
- **Do:** Use `overflow-x: auto` on containers that may overflow, with scroll indicators
|
|
188
|
+
- **Don't:** Use `overflow: hidden` to hide problems — fix the root cause
|
|
189
|
+
- **Severity:** Medium
|
|
190
|
+
|
|
191
|
+
### 17. Fixed Positioning
|
|
192
|
+
|
|
193
|
+
- **Do:** Use `position: fixed` only for persistent UI (nav, FAB, toast). Test on mobile.
|
|
194
|
+
- **Don't:** Use fixed positioning for content that should scroll with the page
|
|
195
|
+
- **Severity:** Medium
|
|
196
|
+
|
|
197
|
+
### 18. Stacking Context
|
|
198
|
+
|
|
199
|
+
- **Do:** Create explicit stacking contexts with `isolation: isolate` on container elements
|
|
200
|
+
- **Don't:** Add `position: relative; z-index` to fix stacking — understand the stacking context
|
|
201
|
+
- **Severity:** Low
|
|
202
|
+
|
|
203
|
+
### 19. Content Jumping (CLS)
|
|
204
|
+
|
|
205
|
+
- **Do:** Reserve space for dynamic content (images, ads, embeds) with explicit dimensions
|
|
206
|
+
- **Don't:** Insert content that pushes existing content down after initial render
|
|
207
|
+
- **Severity:** High
|
|
208
|
+
|
|
209
|
+
### 20. Viewport Units
|
|
210
|
+
|
|
211
|
+
- **Do:** Use `dvh` (dynamic viewport height) for full-screen layouts on mobile
|
|
212
|
+
- **Don't:** Use `100vh` which doesn't account for mobile browser chrome
|
|
213
|
+
- **Severity:** Medium
|
|
214
|
+
|
|
215
|
+
### 21. Container Width
|
|
216
|
+
|
|
217
|
+
- **Do:** Set `max-width` on content containers (1280px typical). Center with `margin: 0 auto`.
|
|
218
|
+
- **Don't:** Let content stretch to full viewport width on large screens
|
|
219
|
+
- **Severity:** Medium
|
|
220
|
+
|
|
221
|
+
## Touch & Mobile (22-27)
|
|
222
|
+
|
|
223
|
+
### 22. Touch Target Size
|
|
224
|
+
|
|
225
|
+
- **Do:** Minimum 44x44px touch target (48x48px recommended). Use padding to expand small elements.
|
|
226
|
+
- **Don't:** Use small icons/links without expanding their touch area
|
|
227
|
+
- **Severity:** Critical
|
|
228
|
+
- **Code:** `button { min-width: 44px; min-height: 44px; }`
|
|
229
|
+
|
|
230
|
+
### 23. Touch Target Spacing
|
|
231
|
+
|
|
232
|
+
- **Do:** Minimum 8px gap between adjacent touch targets
|
|
233
|
+
- **Don't:** Place touch targets directly adjacent with no gap
|
|
234
|
+
- **Severity:** High
|
|
235
|
+
|
|
236
|
+
### 24. Gesture Conflicts
|
|
237
|
+
|
|
238
|
+
- **Do:** Avoid horizontal swipe gestures that conflict with browser back/forward
|
|
239
|
+
- **Don't:** Override system gestures or use swipe for destructive actions without confirmation
|
|
240
|
+
- **Severity:** Medium
|
|
241
|
+
|
|
242
|
+
### 25. Tap Delay
|
|
243
|
+
|
|
244
|
+
- **Do:** Use `touch-action: manipulation` to remove 300ms tap delay
|
|
245
|
+
- **Don't:** Use click handlers without addressing the delay on older mobile browsers
|
|
246
|
+
- **Severity:** Medium
|
|
247
|
+
|
|
248
|
+
### 26. Pull to Refresh
|
|
249
|
+
|
|
250
|
+
- **Do:** If implementing, use `overscroll-behavior-y: contain` to prevent browser PTR conflicts
|
|
251
|
+
- **Don't:** Implement custom PTR that fights with the browser's native behavior
|
|
252
|
+
- **Severity:** Low
|
|
253
|
+
|
|
254
|
+
### 27. Haptic Feedback
|
|
255
|
+
|
|
256
|
+
- **Do:** Use `navigator.vibrate()` sparingly for confirmations on mobile (if supported)
|
|
257
|
+
- **Don't:** Use haptics for routine interactions or without checking API support
|
|
258
|
+
- **Severity:** Low
|
|
259
|
+
|
|
260
|
+
## Interaction States (28-35)
|
|
261
|
+
|
|
262
|
+
### 28. Focus States
|
|
263
|
+
|
|
264
|
+
- **Do:** Visible focus ring on ALL interactive elements. Use `:focus-visible` to avoid showing on click.
|
|
265
|
+
- **Don't:** `outline: none` or `outline: 0` without a replacement focus style
|
|
266
|
+
- **Severity:** Critical
|
|
267
|
+
- **Code:** `*:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }`
|
|
268
|
+
|
|
269
|
+
### 29. Hover States
|
|
270
|
+
|
|
271
|
+
- **Do:** Subtle visual change (opacity, color shift, shadow) that doesn't alter layout
|
|
272
|
+
- **Don't:** Change element size or position on hover — causes layout shifts
|
|
273
|
+
- **Severity:** High
|
|
274
|
+
|
|
275
|
+
### 30. Active States
|
|
276
|
+
|
|
277
|
+
- **Do:** Visual press/click feedback (scale down slightly, darken) for buttons and cards
|
|
278
|
+
- **Don't:** Skip active state — users need feedback that their click registered
|
|
279
|
+
- **Severity:** Medium
|
|
280
|
+
|
|
281
|
+
### 31. Disabled States
|
|
282
|
+
|
|
283
|
+
- **Do:** `opacity: 0.5; cursor: not-allowed; pointer-events: none;` plus `aria-disabled="true"`
|
|
284
|
+
- **Don't:** Only visually dim without preventing interaction or communicating state
|
|
285
|
+
- **Severity:** High
|
|
286
|
+
|
|
287
|
+
### 32. Loading Buttons
|
|
288
|
+
|
|
289
|
+
- **Do:** Replace button text with spinner, set `aria-busy="true"`, disable during load
|
|
290
|
+
- **Don't:** Allow double-clicks or show no feedback during async action
|
|
291
|
+
- **Severity:** High
|
|
292
|
+
|
|
293
|
+
### 33. Error Feedback
|
|
294
|
+
|
|
295
|
+
- **Do:** Inline error near the source, red border + icon + text, `role="alert"` for screen readers
|
|
296
|
+
- **Don't:** Only show a toast/banner that disappears before users can read it
|
|
297
|
+
- **Severity:** Critical
|
|
298
|
+
|
|
299
|
+
### 34. Success Feedback
|
|
300
|
+
|
|
301
|
+
- **Do:** Clear success message near the action, green check + text, auto-dismiss after 5s
|
|
302
|
+
- **Don't:** Show nothing after successful action — users need confirmation
|
|
303
|
+
- **Severity:** High
|
|
304
|
+
|
|
305
|
+
### 35. Confirmation Dialogs
|
|
306
|
+
|
|
307
|
+
- **Do:** Require confirmation for destructive actions. State what will happen. Offer undo when possible.
|
|
308
|
+
- **Don't:** Delete/remove items immediately without confirmation or undo option
|
|
309
|
+
- **Severity:** High
|
|
310
|
+
|
|
311
|
+
## Accessibility (36-45)
|
|
312
|
+
|
|
313
|
+
### 36. Color Contrast
|
|
314
|
+
|
|
315
|
+
- **Do:** 4.5:1 for normal text, 3:1 for large text (18px+ or 14px+ bold), 3:1 for UI components
|
|
316
|
+
- **Don't:** Use light gray (#999) on white or assume "it looks fine" without checking
|
|
317
|
+
- **Severity:** Critical
|
|
318
|
+
|
|
319
|
+
### 37. Color-Only Information
|
|
320
|
+
|
|
321
|
+
- **Do:** Use color + icon + text to convey status (green check "Success", red X "Error")
|
|
322
|
+
- **Don't:** Use only red/green colors to indicate pass/fail — color-blind users can't distinguish
|
|
323
|
+
- **Severity:** Critical
|
|
324
|
+
|
|
325
|
+
### 38. Alt Text
|
|
326
|
+
|
|
327
|
+
- **Do:** Descriptive alt for content images. `alt=""` for decorative images. `aria-label` for icon buttons.
|
|
328
|
+
- **Don't:** Leave alt attribute missing entirely (screen readers read the filename)
|
|
329
|
+
- **Severity:** Critical
|
|
330
|
+
|
|
331
|
+
### 39. Heading Hierarchy
|
|
332
|
+
|
|
333
|
+
- **Do:** One `<h1>` per page. Never skip levels. Use headings for structure, not styling.
|
|
334
|
+
- **Don't:** Use `<h3>` because it looks the right size — use CSS to style the correct heading level
|
|
335
|
+
- **Severity:** High
|
|
336
|
+
|
|
337
|
+
### 40. ARIA Labels
|
|
338
|
+
|
|
339
|
+
- **Do:** `aria-label` on icon-only buttons/links. `aria-labelledby` for sections. `aria-describedby` for hints.
|
|
340
|
+
- **Don't:** Add redundant ARIA to elements that already have accessible names (e.g., button with text)
|
|
341
|
+
- **Severity:** High
|
|
342
|
+
|
|
343
|
+
### 41. Keyboard Navigation
|
|
344
|
+
|
|
345
|
+
- **Do:** All interactive elements reachable via Tab. Logical tab order. Enter/Space activate.
|
|
346
|
+
- **Don't:** Use `tabindex > 0` (breaks natural order). Use div/span as buttons without role+keyboard.
|
|
347
|
+
- **Severity:** Critical
|
|
348
|
+
|
|
349
|
+
### 42. Screen Reader Testing
|
|
350
|
+
|
|
351
|
+
- **Do:** Test with NVDA (Windows) or VoiceOver (Mac) at least once per major feature
|
|
352
|
+
- **Don't:** Assume ARIA labels work correctly without testing with actual screen readers
|
|
353
|
+
- **Severity:** High
|
|
354
|
+
|
|
355
|
+
### 43. Form Labels
|
|
356
|
+
|
|
357
|
+
- **Do:** `<label for="id">` on every input. Group related inputs in `<fieldset>` with `<legend>`.
|
|
358
|
+
- **Don't:** Use placeholder text as the only label — it disappears on input
|
|
359
|
+
- **Severity:** Critical
|
|
360
|
+
|
|
361
|
+
### 44. Error Messages
|
|
362
|
+
|
|
363
|
+
- **Do:** Associate errors to inputs via `aria-describedby`. Use `role="alert"` for dynamic errors.
|
|
364
|
+
- **Don't:** Display errors far from the input or only at the top of the form
|
|
365
|
+
- **Severity:** High
|
|
366
|
+
|
|
367
|
+
### 45. Skip Links
|
|
368
|
+
|
|
369
|
+
- **Do:** First focusable element: `<a href="#main" class="sr-only focus:not-sr-only">Skip to content</a>`
|
|
370
|
+
- **Don't:** Omit skip links — keyboard users must Tab through entire nav on every page
|
|
371
|
+
- **Severity:** High
|
|
372
|
+
|
|
373
|
+
## Performance (46-53)
|
|
374
|
+
|
|
375
|
+
### 46. Image Optimization
|
|
376
|
+
|
|
377
|
+
- **Do:** WebP/AVIF with `<picture>` fallback. Explicit `width`/`height`. `srcset` for responsive.
|
|
378
|
+
- **Don't:** Serve unoptimized PNG/JPG at full resolution for all viewports
|
|
379
|
+
- **Severity:** High
|
|
380
|
+
|
|
381
|
+
### 47. Lazy Loading
|
|
382
|
+
|
|
383
|
+
- **Do:** `loading="lazy"` on below-fold images. Eager load above-fold hero/LCP image.
|
|
384
|
+
- **Don't:** Lazy load the hero image (delays LCP) or skip lazy loading entirely
|
|
385
|
+
- **Severity:** High
|
|
386
|
+
|
|
387
|
+
### 48. Code Splitting
|
|
388
|
+
|
|
389
|
+
- **Do:** Dynamic `import()` for route-level splitting. Lazy load heavy components (charts, editors).
|
|
390
|
+
- **Don't:** Ship entire app as single bundle — check with `webpack-bundle-analyzer` or equivalent
|
|
391
|
+
- **Severity:** Medium
|
|
392
|
+
|
|
393
|
+
### 49. Caching
|
|
394
|
+
|
|
395
|
+
- **Do:** Immutable assets (hashed filenames): `Cache-Control: max-age=31536000, immutable`. HTML: no-cache.
|
|
396
|
+
- **Don't:** Cache HTML pages aggressively or skip cache headers entirely
|
|
397
|
+
- **Severity:** Medium
|
|
398
|
+
|
|
399
|
+
### 50. Font Loading
|
|
400
|
+
|
|
401
|
+
- **Do:** `display=swap` on Google Fonts. Preload critical fonts. Limit to 2-3 weights.
|
|
402
|
+
- **Don't:** Load 6+ font weights or use `display=block` (causes FOIT)
|
|
403
|
+
- **Severity:** Medium
|
|
404
|
+
|
|
405
|
+
### 51. Third-Party Scripts
|
|
406
|
+
|
|
407
|
+
- **Do:** Load analytics/ads with `async` or `defer`. Use `dns-prefetch` for external domains.
|
|
408
|
+
- **Don't:** Load third-party scripts synchronously in `<head>` — blocks rendering
|
|
409
|
+
- **Severity:** High
|
|
410
|
+
|
|
411
|
+
### 52. Bundle Size
|
|
412
|
+
|
|
413
|
+
- **Do:** Tree-shake unused code. Replace heavy libs (moment.js -> date-fns, lodash -> lodash-es).
|
|
414
|
+
- **Don't:** Import entire libraries when you only need one function
|
|
415
|
+
- **Severity:** Medium
|
|
416
|
+
|
|
417
|
+
### 53. Render Blocking
|
|
418
|
+
|
|
419
|
+
- **Do:** Inline critical CSS. Defer non-critical CSS with `media="print" onload="this.media='all'"`.
|
|
420
|
+
- **Don't:** Include large CSS files in `<head>` that block first render
|
|
421
|
+
- **Severity:** High
|
|
422
|
+
|
|
423
|
+
## Forms (54-63)
|
|
424
|
+
|
|
425
|
+
### 54. Input Labels
|
|
426
|
+
|
|
427
|
+
- **Do:** Visible label above or beside every input, using `<label for="">` association
|
|
428
|
+
- **Don't:** Use placeholder as the only label — fails WCAG and confuses users once they start typing
|
|
429
|
+
- **Severity:** Critical
|
|
430
|
+
|
|
431
|
+
### 55. Error Placement
|
|
432
|
+
|
|
433
|
+
- **Do:** Show error message directly below the invalid input, with red border + icon
|
|
434
|
+
- **Don't:** Only show errors at the top of the form or in a separate section
|
|
435
|
+
- **Severity:** High
|
|
436
|
+
|
|
437
|
+
### 56. Inline Validation
|
|
438
|
+
|
|
439
|
+
- **Do:** Validate on blur (not on every keystroke). Show success state for corrected fields.
|
|
440
|
+
- **Don't:** Validate while the user is still typing — it's distracting
|
|
441
|
+
- **Severity:** Medium
|
|
442
|
+
|
|
443
|
+
### 57. Input Types
|
|
444
|
+
|
|
445
|
+
- **Do:** `type="email"` for emails, `type="tel"` for phones, `type="url"` for URLs, `inputmode="numeric"` for numbers
|
|
446
|
+
- **Don't:** Use `type="text"` for everything — mobile users get wrong keyboard
|
|
447
|
+
- **Severity:** Medium
|
|
448
|
+
|
|
449
|
+
### 58. Autofill Support
|
|
450
|
+
|
|
451
|
+
- **Do:** Use `autocomplete` attributes: `name`, `email`, `tel`, `address-line1`, `cc-number`, etc.
|
|
452
|
+
- **Don't:** Disable autofill (`autocomplete="off"`) — it frustrates users and ignores browser hints
|
|
453
|
+
- **Severity:** Medium
|
|
454
|
+
|
|
455
|
+
### 59. Required Field Indicators
|
|
456
|
+
|
|
457
|
+
- **Do:** Mark required fields with asterisk (\*) + "(required)" text. Or mark optional fields instead.
|
|
458
|
+
- **Don't:** Rely on color alone to indicate required fields
|
|
459
|
+
- **Severity:** Medium
|
|
460
|
+
|
|
461
|
+
### 60. Password Visibility Toggle
|
|
462
|
+
|
|
463
|
+
- **Do:** Provide show/hide toggle on password inputs with `aria-label` that updates on toggle
|
|
464
|
+
- **Don't:** Force users to type passwords blind, especially on mobile
|
|
465
|
+
- **Severity:** Medium
|
|
466
|
+
|
|
467
|
+
### 61. Submit Feedback
|
|
468
|
+
|
|
469
|
+
- **Do:** Disable submit button + show spinner during async submit. Show success/error after.
|
|
470
|
+
- **Don't:** Allow multiple submits or show no feedback while waiting
|
|
471
|
+
- **Severity:** High
|
|
472
|
+
|
|
473
|
+
### 62. Input Affordance
|
|
474
|
+
|
|
475
|
+
- **Do:** Inputs should look like inputs — border, background contrast, clear boundaries
|
|
476
|
+
- **Don't:** Make inputs look like plain text or blend into the background
|
|
477
|
+
- **Severity:** Medium
|
|
478
|
+
|
|
479
|
+
### 63. Mobile Keyboards
|
|
480
|
+
|
|
481
|
+
- **Do:** Use `inputmode="numeric"` for PIN fields, `inputmode="decimal"` for prices
|
|
482
|
+
- **Don't:** Use `type="number"` for things that aren't quantities (phone, zip, credit card)
|
|
483
|
+
- **Severity:** Medium
|
|
484
|
+
|
|
485
|
+
## Responsive (64-71)
|
|
486
|
+
|
|
487
|
+
### 64. Mobile-First
|
|
488
|
+
|
|
489
|
+
- **Do:** Write base styles for mobile, then add complexity with `min-width` media queries
|
|
490
|
+
- **Don't:** Design for desktop first and try to squeeze it into mobile
|
|
491
|
+
- **Severity:** High
|
|
492
|
+
|
|
493
|
+
### 65. Breakpoint Testing
|
|
494
|
+
|
|
495
|
+
- **Do:** Test at: 375px (iPhone SE), 390px (iPhone 14), 768px (iPad), 1024px (laptop), 1440px (desktop)
|
|
496
|
+
- **Don't:** Only test at one mobile and one desktop size
|
|
497
|
+
- **Severity:** High
|
|
498
|
+
|
|
499
|
+
### 66. Touch-Friendly
|
|
500
|
+
|
|
501
|
+
- **Do:** Increase padding on interactive elements for mobile. No hover-only interactions.
|
|
502
|
+
- **Don't:** Assume mouse precision on touch devices
|
|
503
|
+
- **Severity:** High
|
|
504
|
+
|
|
505
|
+
### 67. Readable Font Size
|
|
506
|
+
|
|
507
|
+
- **Do:** Minimum 16px body text on all viewports (prevents iOS auto-zoom on input focus)
|
|
508
|
+
- **Don't:** Use 12-14px body text on mobile for "fitting more content"
|
|
509
|
+
- **Severity:** High
|
|
510
|
+
|
|
511
|
+
### 68. Viewport Meta
|
|
512
|
+
|
|
513
|
+
- **Do:** `<meta name="viewport" content="width=device-width, initial-scale=1">`
|
|
514
|
+
- **Don't:** Set `maximum-scale=1` or `user-scalable=no` (breaks accessibility zoom)
|
|
515
|
+
- **Severity:** Critical
|
|
516
|
+
|
|
517
|
+
### 69. Horizontal Scroll
|
|
518
|
+
|
|
519
|
+
- **Do:** Prevent with `max-width: 100%` on images/embeds. Use `overflow-x: auto` on tables.
|
|
520
|
+
- **Don't:** Allow horizontal scroll on the main page body
|
|
521
|
+
- **Severity:** High
|
|
522
|
+
|
|
523
|
+
### 70. Image Scaling
|
|
524
|
+
|
|
525
|
+
- **Do:** `img { max-width: 100%; height: auto; }` as baseline. Use `srcset` for responsive images.
|
|
526
|
+
- **Don't:** Serve 2000px-wide images to mobile viewports
|
|
527
|
+
- **Severity:** Medium
|
|
528
|
+
|
|
529
|
+
### 71. Table Handling
|
|
530
|
+
|
|
531
|
+
- **Do:** On mobile: horizontal scroll wrapper, card layout, or collapsible rows
|
|
532
|
+
- **Don't:** Let wide tables break the layout or become unreadable on small screens
|
|
533
|
+
- **Severity:** Medium
|
|
534
|
+
|
|
535
|
+
## Typography (72-77)
|
|
536
|
+
|
|
537
|
+
### 72. Line Height
|
|
538
|
+
|
|
539
|
+
- **Do:** 1.5-1.6 for body, 1.2-1.3 for headings, 1.7+ for long-form reading
|
|
540
|
+
- **Don't:** Use 1.0 line height or the browser default without setting it explicitly
|
|
541
|
+
- **Severity:** High
|
|
542
|
+
|
|
543
|
+
### 73. Line Length
|
|
544
|
+
|
|
545
|
+
- **Do:** 65-75 characters per line (`max-width: 65ch` or `max-w-prose` in Tailwind)
|
|
546
|
+
- **Don't:** Allow text to span the full viewport width on large screens
|
|
547
|
+
- **Severity:** Medium
|
|
548
|
+
|
|
549
|
+
### 74. Font Size Scale
|
|
550
|
+
|
|
551
|
+
- **Do:** Use a consistent scale ratio (1.25 major third recommended). Define tokens for each step.
|
|
552
|
+
- **Don't:** Use arbitrary sizes (13px, 17px, 22px) with no systematic relationship
|
|
553
|
+
- **Severity:** Medium
|
|
554
|
+
|
|
555
|
+
### 75. Font Loading Strategy
|
|
556
|
+
|
|
557
|
+
- **Do:** Preload critical fonts. Use `font-display: swap`. Subset to needed characters.
|
|
558
|
+
- **Don't:** Load all weights/styles upfront. Use `font-display: block` (causes invisible text flash).
|
|
559
|
+
- **Severity:** Medium
|
|
560
|
+
|
|
561
|
+
### 76. Contrast Readability
|
|
562
|
+
|
|
563
|
+
- **Do:** Test body text contrast at actual size and on actual backgrounds (not just hero sections)
|
|
564
|
+
- **Don't:** Assume a color combo works because it passes contrast at large heading sizes
|
|
565
|
+
- **Severity:** High
|
|
566
|
+
|
|
567
|
+
### 77. Heading Clarity
|
|
568
|
+
|
|
569
|
+
- **Do:** Clear visual distinction between heading levels (size, weight, spacing)
|
|
570
|
+
- **Don't:** Make h2 and h3 look nearly identical — users need visual hierarchy cues
|
|
571
|
+
- **Severity:** Medium
|
|
572
|
+
|
|
573
|
+
## Feedback (78-83)
|
|
574
|
+
|
|
575
|
+
### 78. Loading Indicators
|
|
576
|
+
|
|
577
|
+
- **Do:** Skeleton screens for content loading, spinners for actions, progress bars for deterministic operations
|
|
578
|
+
- **Don't:** Show blank white screens during loading or only a generic "Loading..."
|
|
579
|
+
- **Severity:** High
|
|
580
|
+
|
|
581
|
+
### 79. Empty States
|
|
582
|
+
|
|
583
|
+
- **Do:** Helpful message + illustration + action button ("No projects yet — Create your first project")
|
|
584
|
+
- **Don't:** Show a blank screen or only "No data" text
|
|
585
|
+
- **Severity:** Medium
|
|
586
|
+
|
|
587
|
+
### 80. Error Recovery
|
|
588
|
+
|
|
589
|
+
- **Do:** Clear error message + specific fix instruction + retry action ("Connection failed — Check your internet and try again [Retry]")
|
|
590
|
+
- **Don't:** Show technical error messages (500 Internal Server Error) to end users
|
|
591
|
+
- **Severity:** High
|
|
592
|
+
|
|
593
|
+
### 81. Progress Indicators
|
|
594
|
+
|
|
595
|
+
- **Do:** Show step count for multi-step flows ("Step 2 of 4"). Progress bar for uploads/processing.
|
|
596
|
+
- **Don't:** Leave users guessing how many steps remain or how long an operation takes
|
|
597
|
+
- **Severity:** Medium
|
|
598
|
+
|
|
599
|
+
### 82. Toast Notifications
|
|
600
|
+
|
|
601
|
+
- **Do:** Auto-dismiss success toasts after 5s. Persist error toasts until dismissed. Stack multiple.
|
|
602
|
+
- **Don't:** Show toasts that cover important UI, overlap each other, or disappear too quickly (< 3s)
|
|
603
|
+
- **Severity:** Medium
|
|
604
|
+
|
|
605
|
+
### 83. Confirmation Messages
|
|
606
|
+
|
|
607
|
+
- **Do:** Confirm success inline near the action when possible, not just in toast
|
|
608
|
+
- **Don't:** Only confirm via toast that the user might miss
|
|
609
|
+
- **Severity:** Medium
|
|
610
|
+
|
|
611
|
+
## Content (84-87)
|
|
612
|
+
|
|
613
|
+
### 84. Text Truncation
|
|
614
|
+
|
|
615
|
+
- **Do:** Use ellipsis (`text-overflow: ellipsis`) + tooltip/expand for long text. Show full text on interaction.
|
|
616
|
+
- **Don't:** Hard-truncate text without indicating there's more content
|
|
617
|
+
- **Severity:** Low
|
|
618
|
+
|
|
619
|
+
### 85. Date Formatting
|
|
620
|
+
|
|
621
|
+
- **Do:** Relative for recent ("2 hours ago"), absolute for old ("Jan 15, 2026"). Use user's locale.
|
|
622
|
+
- **Don't:** Show raw ISO timestamps or use ambiguous formats (01/02/03)
|
|
623
|
+
- **Severity:** Low
|
|
624
|
+
|
|
625
|
+
### 86. Number Formatting
|
|
626
|
+
|
|
627
|
+
- **Do:** Locale-aware formatting: commas, decimals, currency symbols. Abbreviate large numbers (1.2M).
|
|
628
|
+
- **Don't:** Show raw numbers without formatting (1000000 instead of 1,000,000)
|
|
629
|
+
- **Severity:** Low
|
|
630
|
+
|
|
631
|
+
### 87. Placeholder Content
|
|
632
|
+
|
|
633
|
+
- **Do:** Use realistic placeholder content during development that matches expected data shape
|
|
634
|
+
- **Don't:** Use "Lorem ipsum" in production or test with only short strings
|
|
635
|
+
- **Severity:** Low
|
|
636
|
+
|
|
637
|
+
## Specialized Patterns (88-99)
|
|
638
|
+
|
|
639
|
+
### 88. Onboarding - User Freedom
|
|
640
|
+
|
|
641
|
+
- **Do:** Always provide skip + back buttons in onboarding flows
|
|
642
|
+
- **Don't:** Trap users in mandatory onboarding without escape
|
|
643
|
+
- **Severity:** Medium
|
|
644
|
+
|
|
645
|
+
### 89. Search - Autocomplete
|
|
646
|
+
|
|
647
|
+
- **Do:** Show suggestions after 2+ characters, debounce at 300ms, highlight matching text
|
|
648
|
+
- **Don't:** Wait for Enter to search, show results without relevance ranking
|
|
649
|
+
- **Severity:** Medium
|
|
650
|
+
|
|
651
|
+
### 90. Search - No Results
|
|
652
|
+
|
|
653
|
+
- **Do:** Helpful "no results" with suggestions: check spelling, try broader terms, browse categories
|
|
654
|
+
- **Don't:** Show blank or only "No results found" without guidance
|
|
655
|
+
- **Severity:** Medium
|
|
656
|
+
|
|
657
|
+
### 91. Data Entry - Bulk Actions
|
|
658
|
+
|
|
659
|
+
- **Do:** Checkbox selection + floating action bar showing count ("3 selected — Delete | Export")
|
|
660
|
+
- **Don't:** Force users to act on items one at a time
|
|
661
|
+
- **Severity:** Medium
|
|
662
|
+
|
|
663
|
+
### 92. AI - Disclaimer
|
|
664
|
+
|
|
665
|
+
- **Do:** Clearly label AI-generated content. Show confidence levels when available.
|
|
666
|
+
- **Don't:** Present AI output as authoritative fact without disclaimer
|
|
667
|
+
- **Severity:** High
|
|
668
|
+
|
|
669
|
+
### 93. AI - Streaming Response
|
|
670
|
+
|
|
671
|
+
- **Do:** Stream text token-by-token with typing indicator. Allow stop/cancel mid-generation.
|
|
672
|
+
- **Don't:** Wait for full response then dump all text at once
|
|
673
|
+
- **Severity:** Medium
|
|
674
|
+
|
|
675
|
+
### 94. Spatial UI - Gaze Hover (VisionOS)
|
|
676
|
+
|
|
677
|
+
- **Do:** Use system hover effects that respond to eye tracking. Increase target sizes for gaze.
|
|
678
|
+
- **Don't:** Use small targets or custom hover that fights the system's spatial interaction model
|
|
679
|
+
- **Severity:** Medium (platform-specific)
|
|
680
|
+
|
|
681
|
+
### 95. Spatial UI - Depth Layering
|
|
682
|
+
|
|
683
|
+
- **Do:** Use z-depth to indicate hierarchy and interactivity in spatial interfaces
|
|
684
|
+
- **Don't:** Flatten all UI to a single plane in spatial computing environments
|
|
685
|
+
- **Severity:** Medium (platform-specific)
|
|
686
|
+
|
|
687
|
+
### 96. Sustainability - Auto-Play Video
|
|
688
|
+
|
|
689
|
+
- **Do:** Never auto-play video with sound. Offer play button. Prefer static thumbnails on mobile.
|
|
690
|
+
- **Don't:** Auto-play video on page load (wastes bandwidth, startles users)
|
|
691
|
+
- **Severity:** High
|
|
692
|
+
|
|
693
|
+
### 97. Sustainability - Asset Weight
|
|
694
|
+
|
|
695
|
+
- **Do:** Target < 500KB initial page weight. Compress images aggressively. Use system fonts as fallback.
|
|
696
|
+
- **Don't:** Ship 5MB+ pages with unoptimized assets
|
|
697
|
+
- **Severity:** Medium
|
|
698
|
+
|
|
699
|
+
### 98. AI - Feedback Loop
|
|
700
|
+
|
|
701
|
+
- **Do:** Provide thumbs up/down or rate response quality for AI outputs
|
|
702
|
+
- **Don't:** Offer no way for users to signal bad AI output
|
|
703
|
+
- **Severity:** Medium
|
|
704
|
+
|
|
705
|
+
### 99. Motion Sensitivity
|
|
706
|
+
|
|
707
|
+
- **Do:** Provide UI toggle to disable animations in addition to OS-level preference
|
|
708
|
+
- **Don't:** Rely solely on OS `prefers-reduced-motion` — not all users know about it
|
|
709
|
+
- **Severity:** Medium
|
|
710
|
+
|
|
711
|
+
## Advanced Animation (100-107)
|
|
712
|
+
|
|
713
|
+
### 100. Spring Physics
|
|
714
|
+
|
|
715
|
+
- **Do:** Prefer spring/physics-based animation curves over linear or cubic-bezier for natural, organic feel
|
|
716
|
+
- **Don't:** Use linear easing for UI transitions — it feels robotic and unnatural
|
|
717
|
+
- **Severity:** Medium
|
|
718
|
+
|
|
719
|
+
### 101. Exit Faster Than Enter
|
|
720
|
+
|
|
721
|
+
- **Do:** Exit animations should be ~60-70% of enter duration to feel responsive (e.g., enter 300ms, exit 200ms)
|
|
722
|
+
- **Don't:** Use the same duration for enter and exit — exits should feel snappier
|
|
723
|
+
- **Severity:** Medium
|
|
724
|
+
|
|
725
|
+
### 102. Stagger Sequence
|
|
726
|
+
|
|
727
|
+
- **Do:** Stagger list/grid item entrance by 30-50ms per item for a polished reveal effect
|
|
728
|
+
- **Don't:** Show all items at once (flat) or stagger too slowly (>100ms) — both feel wrong
|
|
729
|
+
- **Severity:** Low
|
|
730
|
+
|
|
731
|
+
### 103. Shared Element Transition
|
|
732
|
+
|
|
733
|
+
- **Do:** Use shared element / hero transitions for visual continuity between screens (card → detail page)
|
|
734
|
+
- **Don't:** Use unrelated transitions between screens that share visible elements — breaks spatial continuity
|
|
735
|
+
- **Severity:** Medium
|
|
736
|
+
|
|
737
|
+
### 104. Interruptible Animations
|
|
738
|
+
|
|
739
|
+
- **Do:** All animations must be interruptible — user tap or gesture immediately cancels in-progress animation
|
|
740
|
+
- **Don't:** Block user input during animations or force users to wait for animation completion
|
|
741
|
+
- **Severity:** High
|
|
742
|
+
|
|
743
|
+
### 105. No Blocking Animation
|
|
744
|
+
|
|
745
|
+
- **Do:** UI must stay interactive during all animations — never disable input while animating
|
|
746
|
+
- **Don't:** Use animations that prevent the user from taking their next action
|
|
747
|
+
- **Severity:** High
|
|
748
|
+
|
|
749
|
+
### 106. Motion Consistency
|
|
750
|
+
|
|
751
|
+
- **Do:** Unify duration and easing tokens globally — all animations share the same rhythm and timing feel
|
|
752
|
+
- **Don't:** Mix fast (100ms) and slow (500ms) transitions randomly across the same interface
|
|
753
|
+
- **Severity:** Medium
|
|
754
|
+
|
|
755
|
+
### 107. Hierarchy Motion
|
|
756
|
+
|
|
757
|
+
- **Do:** Use translate/scale direction to express hierarchy: enter from below = deeper level, exit upward = going back
|
|
758
|
+
- **Don't:** Use random animation directions — movement should communicate navigation direction
|
|
759
|
+
- **Severity:** Low
|
|
760
|
+
|
|
761
|
+
## Advanced Forms & Feedback (108-119)
|
|
762
|
+
|
|
763
|
+
### 108. Progressive Disclosure
|
|
764
|
+
|
|
765
|
+
- **Do:** Reveal complex options progressively — show basic fields first, advanced settings behind a toggle/expand
|
|
766
|
+
- **Don't:** Overwhelm users upfront with every possible field and option on a single screen
|
|
767
|
+
- **Severity:** Medium
|
|
768
|
+
|
|
769
|
+
### 109. Form Autosave
|
|
770
|
+
|
|
771
|
+
- **Do:** Long forms (5+ fields) should auto-save drafts to prevent data loss on accidental dismissal or navigation
|
|
772
|
+
- **Don't:** Lose all user input when they accidentally close a tab or navigate away from a long form
|
|
773
|
+
- **Severity:** Medium
|
|
774
|
+
|
|
775
|
+
### 110. Sheet Dismiss Confirm
|
|
776
|
+
|
|
777
|
+
- **Do:** Confirm before dismissing a modal/sheet/drawer that contains unsaved user changes
|
|
778
|
+
- **Don't:** Silently discard unsaved changes when a user swipes down or taps outside a modal
|
|
779
|
+
- **Severity:** High
|
|
780
|
+
|
|
781
|
+
### 111. Field Grouping
|
|
782
|
+
|
|
783
|
+
- **Do:** Group related fields logically using `<fieldset>` + `<legend>` or clear visual grouping with spacing/borders
|
|
784
|
+
- **Don't:** Present all form fields in a flat undifferentiated list — users can't scan or understand the structure
|
|
785
|
+
- **Severity:** Medium
|
|
786
|
+
|
|
787
|
+
### 112. Read-Only Distinction
|
|
788
|
+
|
|
789
|
+
- **Do:** Read-only fields should be visually distinct from both editable and disabled states (e.g., no border, plain text style)
|
|
790
|
+
- **Don't:** Make read-only look identical to disabled — they have different semantics and user expectations
|
|
791
|
+
- **Severity:** Medium
|
|
792
|
+
|
|
793
|
+
### 113. Focus Management
|
|
794
|
+
|
|
795
|
+
- **Do:** After a form submission error, auto-focus the first invalid field and scroll it into view
|
|
796
|
+
- **Don't:** Show errors without moving focus — keyboard and screen reader users can't find the problem
|
|
797
|
+
- **Severity:** High
|
|
798
|
+
- **Code:** `document.querySelector('[aria-invalid="true"]')?.focus()`
|
|
799
|
+
|
|
800
|
+
### 114. Error Summary
|
|
801
|
+
|
|
802
|
+
- **Do:** For forms with multiple errors, show a summary at the top with anchor links to each invalid field
|
|
803
|
+
- **Don't:** Only show inline errors without a summary — users with many errors can't see the full picture
|
|
804
|
+
- **Severity:** Medium
|
|
805
|
+
- **Code:** `<div role="alert"><h2>3 errors found</h2><ul><li><a href="#email">Email is required</a></li>...</ul></div>`
|
|
806
|
+
|
|
807
|
+
### 115. Undo Support
|
|
808
|
+
|
|
809
|
+
- **Do:** Allow undo for destructive or bulk actions with a time-limited toast ("Deleted 3 items — Undo")
|
|
810
|
+
- **Don't:** Immediately and permanently execute destructive actions without any recovery option
|
|
811
|
+
- **Severity:** High
|
|
812
|
+
|
|
813
|
+
### 116. Destructive Emphasis
|
|
814
|
+
|
|
815
|
+
- **Do:** Destructive actions use semantic danger color (red) and are visually separated from primary actions
|
|
816
|
+
- **Don't:** Style delete/remove buttons identically to save/submit — users will click them by mistake
|
|
817
|
+
- **Severity:** High
|
|
818
|
+
|
|
819
|
+
### 117. Toast Accessibility
|
|
820
|
+
|
|
821
|
+
- **Do:** Toasts must use `aria-live="polite"` for screen reader announcement. Must not steal focus from current task.
|
|
822
|
+
- **Don't:** Use `aria-live="assertive"` for routine notifications or let toasts capture keyboard focus
|
|
823
|
+
- **Severity:** Medium
|
|
824
|
+
- **Code:** `<div role="status" aria-live="polite">Changes saved successfully</div>`
|
|
825
|
+
|
|
826
|
+
### 118. ARIA Live Errors
|
|
827
|
+
|
|
828
|
+
- **Do:** Dynamic form errors must use `aria-live` region or `role="alert"` to notify screen readers immediately
|
|
829
|
+
- **Don't:** Add error text to the DOM without any ARIA announcement — screen reader users won't know it appeared
|
|
830
|
+
- **Severity:** High
|
|
831
|
+
- **Code:** `<span role="alert" id="email-error">Please enter a valid email</span>`
|
|
832
|
+
|
|
833
|
+
### 119. Timeout Feedback
|
|
834
|
+
|
|
835
|
+
- **Do:** Request timeouts must show clear user-friendly feedback with a retry action button
|
|
836
|
+
- **Don't:** Show a blank screen, spinner forever, or technical timeout error without recovery option
|
|
837
|
+
- **Severity:** High
|