codymaster 4.1.3 → 4.3.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/CHANGELOG.md +22 -2
- package/README.md +54 -84
- package/dist/index.js +589 -510
- package/dist/ui/box.js +49 -0
- package/install.sh +2 -2
- package/package.json +3 -9
- package/skills/AGENTS.md +61 -0
- package/skills/CLAUDE.md +158 -0
- package/skills/boxme-git-config/SKILL.md +56 -0
- package/skills/boxme-local-dev/SKILL.md +66 -0
- package/skills/build.sh +30 -0
- package/skills/cf +314 -0
- package/skills/cf 2 +313 -0
- package/skills/cm-ads-tracker/SKILL.md +364 -69
- package/skills/cm-auto-publisher/SKILL.md +81 -0
- package/skills/cm-booking-calendar/SKILL.md +521 -0
- package/skills/cm-booking-calendar/references/industry-patterns.md +527 -0
- package/skills/cm-booking-calendar/templates/booking-form.css +626 -0
- package/skills/cm-booking-calendar/templates/booking-form.html +477 -0
- package/skills/cm-booking-calendar/templates/calendar-engine.js +419 -0
- package/skills/cm-booking-calendar/templates/calendar-export.js +395 -0
- package/skills/cm-booking-calendar/templates/reminder-config.js +629 -0
- package/skills/cm-brainstorm-idea/SKILL.md +15 -24
- package/skills/cm-clean-code/SKILL.md +300 -0
- package/skills/cm-code-review/SKILL.md +0 -27
- package/skills/cm-codeintell/SKILL.md +598 -0
- package/skills/cm-content-factory/.content-factory-state.json +132 -0
- package/skills/cm-content-factory/.git 2/logs/refs/heads/main +1 -0
- package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +1 -0
- package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
- package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
- package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
- package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
- package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
- package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
- package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
- package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
- package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
- package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
- package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
- package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
- package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
- package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
- package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
- package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
- package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
- package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
- package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
- package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
- package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
- package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
- package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
- package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
- package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
- package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
- package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
- package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
- package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
- package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
- package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
- package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
- package/skills/cm-content-factory/.git 2/refs/heads/main +1 -0
- package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +1 -0
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +76 -0
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +1 -0
- package/skills/cm-content-factory/AGENTS.md +61 -0
- package/skills/cm-content-factory/CLAUDE.md +63 -0
- package/skills/cm-content-factory/CURSOR.md +43 -0
- package/skills/cm-content-factory/Content Factory.zip +0 -0
- package/skills/cm-content-factory/cf +313 -0
- package/skills/cm-content-factory/config.schema.json +397 -0
- package/skills/cm-content-factory/dashboard/app.js +556 -0
- package/skills/cm-content-factory/dashboard/index.html +397 -0
- package/skills/cm-content-factory/dashboard/style.css +1211 -0
- package/skills/cm-content-factory/examples/01-real-estate.config.json +146 -0
- package/skills/cm-content-factory/examples/02-personal-finance.config.json +146 -0
- package/skills/cm-content-factory/examples/03-health-wellness.config.json +147 -0
- package/skills/cm-content-factory/examples/04-saas-software.config.json +147 -0
- package/skills/cm-content-factory/examples/05-legal-services.config.json +147 -0
- package/skills/cm-content-factory/examples/06-insurance.config.json +146 -0
- package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +146 -0
- package/skills/cm-content-factory/examples/08-online-education.config.json +147 -0
- package/skills/cm-content-factory/examples/09-crypto-defi.config.json +147 -0
- package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +147 -0
- package/skills/cm-content-factory/examples/11-home-services.config.json +146 -0
- package/skills/cm-content-factory/examples/12-dental-clinic.config.json +147 -0
- package/skills/cm-content-factory/examples/13-pet-care.config.json +147 -0
- package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +147 -0
- package/skills/cm-content-factory/examples/15-ai-automation.config.json +147 -0
- package/skills/cm-content-factory/examples/16-wedding-events.config.json +147 -0
- package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +148 -0
- package/skills/cm-content-factory/examples/18-cybersecurity.config.json +147 -0
- package/skills/cm-content-factory/examples/19-food-restaurant.config.json +148 -0
- package/skills/cm-content-factory/examples/20-solar-energy.config.json +147 -0
- package/skills/cm-content-factory/examples/fitness-blog.config.json +116 -0
- package/skills/cm-content-factory/examples/tech-blog.config.json +107 -0
- package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +72 -0
- package/skills/cm-content-factory/extensions/hooks.py +126 -0
- package/skills/cm-content-factory/extensions/openclaw_adapter.py +132 -0
- package/skills/cm-content-factory/landing/index.html +680 -0
- package/skills/cm-content-factory/landing/script.js +101 -0
- package/skills/cm-content-factory/landing/style.css +1216 -0
- package/skills/cm-content-factory/landing/translations.js +508 -0
- package/skills/cm-content-factory/logs/events.jsonl +11 -0
- package/skills/cm-content-factory/profiles/_template.profile.json +231 -0
- package/skills/cm-content-factory/profiles/finance.profile.json +278 -0
- package/skills/cm-content-factory/profiles/legal.profile.json +263 -0
- package/skills/cm-content-factory/profiles/medical-research.profile.json +321 -0
- package/skills/cm-content-factory/profiles/technology.profile.json +275 -0
- package/skills/cm-content-factory/scripts/agent_dispatcher.py +266 -0
- package/skills/cm-content-factory/scripts/audit.py +106 -0
- package/skills/cm-content-factory/scripts/dashboard_server.py +225 -0
- package/skills/cm-content-factory/scripts/deploy.py +146 -0
- package/skills/cm-content-factory/scripts/extract.py +132 -0
- package/skills/cm-content-factory/scripts/landing_generator.py +459 -0
- package/skills/cm-content-factory/scripts/memory.py +521 -0
- package/skills/cm-content-factory/scripts/monetize.py +239 -0
- package/skills/cm-content-factory/scripts/pipeline.py +357 -0
- package/skills/cm-content-factory/scripts/plan.py +163 -0
- package/skills/cm-content-factory/scripts/publish.py +145 -0
- package/skills/cm-content-factory/scripts/research.py +337 -0
- package/skills/cm-content-factory/scripts/scaffold.py +464 -0
- package/skills/cm-content-factory/scripts/scoreboard.py +336 -0
- package/skills/cm-content-factory/scripts/seo.py +90 -0
- package/skills/cm-content-factory/scripts/state_manager.py +320 -0
- package/skills/cm-content-factory/scripts/token_manager.py +268 -0
- package/skills/cm-content-factory/scripts/validate.py +221 -0
- package/skills/cm-content-factory/scripts/wizard.py +329 -0
- package/skills/cm-content-factory/scripts/write.py +93 -0
- package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +90 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +54 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +38 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +65 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +48 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +39 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +42 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +51 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +52 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +86 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +80 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +58 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +102 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +29 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +55 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +29 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +41 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +40 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +56 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +46 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +108 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +22 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +52 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +58 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +92 -0
- package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +575 -0
- package/skills/cm-content-factory/tests/conftest.py +66 -0
- package/skills/cm-content-factory/tests/test_agent_dispatcher.py +125 -0
- package/skills/cm-content-factory/tests/test_memory.py +128 -0
- package/skills/cm-content-factory/tests/test_pipeline.py +107 -0
- package/skills/cm-content-factory/tests/test_research.py +56 -0
- package/skills/cm-content-factory/tests/test_state_manager.py +131 -0
- package/skills/cm-content-factory/tests/test_token_manager.py +110 -0
- package/skills/cm-content-factory/tests/test_wizard.py +121 -0
- package/skills/cm-continuity/SKILL.md +7 -0
- package/skills/cm-cro-methodology/SKILL.md +290 -0
- package/skills/cm-dashboard/SKILL.md +7 -525
- package/skills/cm-debugging/SKILL.md +7 -116
- package/skills/cm-deep-search/SKILL.md +5 -1
- package/skills/cm-dockit/README.md +6 -15
- package/skills/cm-dockit/SKILL.md +20 -37
- package/skills/cm-execution/SKILL.md +6 -1
- package/skills/cm-frappe-agent/SKILL.md +134 -0
- package/skills/cm-frappe-agent/agents/doctype-architect.md +596 -0
- package/skills/cm-frappe-agent/agents/erpnext-customizer.md +643 -0
- package/skills/cm-frappe-agent/agents/frappe-backend.md +814 -0
- package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +557 -0
- package/skills/cm-frappe-agent/agents/frappe-debugger.md +625 -0
- package/skills/cm-frappe-agent/agents/frappe-fixer.md +275 -0
- package/skills/cm-frappe-agent/agents/frappe-frontend.md +660 -0
- package/skills/cm-frappe-agent/agents/frappe-installer.md +158 -0
- package/skills/cm-frappe-agent/agents/frappe-performance.md +307 -0
- package/skills/cm-frappe-agent/agents/frappe-planner.md +419 -0
- package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +153 -0
- package/skills/cm-frappe-agent/agents/github-workflow.md +286 -0
- package/skills/cm-frappe-agent/commands/frappe-app.md +351 -0
- package/skills/cm-frappe-agent/commands/frappe-backend.md +162 -0
- package/skills/cm-frappe-agent/commands/frappe-bench.md +254 -0
- package/skills/cm-frappe-agent/commands/frappe-debug.md +263 -0
- package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +272 -0
- package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +310 -0
- package/skills/cm-frappe-agent/commands/frappe-erpnext.md +210 -0
- package/skills/cm-frappe-agent/commands/frappe-fix.md +59 -0
- package/skills/cm-frappe-agent/commands/frappe-frontend.md +210 -0
- package/skills/cm-frappe-agent/commands/frappe-fullstack.md +243 -0
- package/skills/cm-frappe-agent/commands/frappe-github.md +57 -0
- package/skills/cm-frappe-agent/commands/frappe-install.md +52 -0
- package/skills/cm-frappe-agent/commands/frappe-plan.md +442 -0
- package/skills/cm-frappe-agent/commands/frappe-remote.md +58 -0
- package/skills/cm-frappe-agent/commands/frappe-test.md +356 -0
- package/skills/cm-frappe-agent/docs/README.md +51 -0
- package/skills/cm-frappe-agent/docs/agents-catalog.md +113 -0
- package/skills/cm-frappe-agent/docs/architecture.md +149 -0
- package/skills/cm-frappe-agent/docs/commands-catalog.md +82 -0
- package/skills/cm-frappe-agent/docs/resources-catalog.md +66 -0
- package/skills/cm-frappe-agent/docs/sitemap-urls.txt +52 -0
- package/skills/cm-frappe-agent/docs/sitemap.md +81 -0
- package/skills/cm-frappe-agent/docs/sop/user-guide.md +178 -0
- package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +122 -0
- package/skills/cm-frappe-agent/resources/7-layer-architecture.md +985 -0
- package/skills/cm-frappe-agent/resources/bench_commands.md +73 -0
- package/skills/cm-frappe-agent/resources/code-patterns-guide.md +948 -0
- package/skills/cm-frappe-agent/resources/common_pitfalls.md +266 -0
- package/skills/cm-frappe-agent/resources/doctype-registry.md +158 -0
- package/skills/cm-frappe-agent/resources/installation-guide.md +289 -0
- package/skills/cm-frappe-agent/resources/rest-api-patterns.md +182 -0
- package/skills/cm-frappe-agent/resources/scaffold_checklist.md +82 -0
- package/skills/cm-frappe-agent/resources/upgrade_patterns.md +113 -0
- package/skills/cm-frappe-agent/resources/web-form-patterns.md +252 -0
- package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +621 -0
- package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +642 -0
- package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +576 -0
- package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +740 -0
- package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +47 -0
- package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +608 -0
- package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +46 -0
- package/skills/cm-git-worktrees/SKILL.md +0 -7
- package/skills/cm-google-form/SKILL.md +266 -0
- package/skills/cm-google-form/templates/apps-script.js +55 -0
- package/skills/cm-google-form/templates/form-markup.html +110 -0
- package/skills/cm-google-form/templates/form-submit.js +201 -0
- package/skills/cm-google-form/templates/toast.css +152 -0
- package/skills/cm-growth-hacking/SKILL.md +293 -0
- package/skills/cm-growth-hacking/bottom-sheet-engine.md +261 -0
- package/skills/cm-growth-hacking/calendar-integration.md +264 -0
- package/skills/cm-growth-hacking/references/engagement-patterns.md +346 -0
- package/skills/cm-growth-hacking/templates/bottom-sheet.css +528 -0
- package/skills/cm-growth-hacking/templates/bottom-sheet.js +269 -0
- package/skills/cm-growth-hacking/templates/calendar-cta.js +213 -0
- package/skills/cm-growth-hacking/templates/tracking-events.js +211 -0
- package/skills/cm-growth-hacking/templates/trigger-manager.js +254 -0
- package/skills/cm-growth-hacking/tracking-events.md +246 -0
- package/skills/cm-growth-hacking/trigger-system.md +342 -0
- package/skills/cm-how-it-work/SKILL.md +20 -4
- package/skills/cm-identity-guard/SKILL.md +0 -11
- package/skills/cm-jtbd/SKILL.md +1 -1
- package/skills/cm-notebooklm/SKILL.md +172 -0
- package/skills/cm-notebooklm/references/command_reference.md +94 -0
- package/skills/cm-notebooklm/references/workflows.md +60 -0
- package/skills/cm-notebooklm/resources/knowledge_sources.md +106 -0
- package/skills/cm-notebooklm/scripts/brain-sync.sh +453 -0
- package/skills/cm-notebooklm/scripts/graduate_wisdom.py +101 -0
- package/skills/cm-planning/SKILL.md +39 -52
- package/skills/cm-project-bootstrap/SKILL.md +1307 -99
- package/skills/cm-quality-gate/SKILL.md +13 -106
- package/skills/cm-reactor/SKILL.md +274 -0
- package/skills/cm-safe-deploy/SKILL.md +415 -52
- package/skills/cm-safe-i18n/SKILL.md +1 -22
- package/skills/cm-secret-shield/SKILL.md +2 -2
- package/skills/cm-security-gate/SKILL.md +114 -0
- package/skills/cm-skill-chain/SKILL.md +2 -2
- package/skills/cm-skill-index/SKILL.md +9 -6
- package/skills/cm-skill-mastery/SKILL.md +2 -15
- package/skills/cm-start/SKILL.md +9 -0
- package/skills/cm-tdd/SKILL.md +8 -41
- package/skills/cm-ui-preview/SKILL.md +35 -173
- package/skills/cm-ux-master/FEATURES-v4.md +305 -0
- package/skills/cm-ux-master/README-ru.md +135 -0
- package/skills/cm-ux-master/README-vi.md +135 -0
- package/skills/cm-ux-master/README-zh.md +135 -0
- package/skills/cm-ux-master/README.md +489 -0
- package/skills/cm-ux-master/SKILL.md +773 -62
- package/skills/cm-ux-master/cli/README.md +180 -0
- package/skills/cm-ux-master/cli/pyproject.toml +106 -0
- package/skills/cm-ux-master/cli/requirements.txt +21 -0
- package/skills/cm-ux-master/cli/templates/base/skill-core.md +262 -0
- package/skills/cm-ux-master/cli/templates/platforms/claude.yaml +21 -0
- package/skills/cm-ux-master/cli/templates/platforms/cursor.yaml +21 -0
- package/skills/cm-ux-master/cli/templates/platforms/figma.yaml +24 -0
- package/skills/cm-ux-master/cli/templates/platforms/vscode-mcp.yaml +28 -0
- package/skills/cm-ux-master/cli/templates/platforms/windsurf.yaml +21 -0
- package/skills/cm-ux-master/cli/uxmaster/__init__.py +10 -0
- package/skills/cm-ux-master/cli/uxmaster/__main__.py +19 -0
- package/skills/cm-ux-master/cli/uxmaster/cli.py +349 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/__init__.py +8 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/extract.py +18 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/init.py +58 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +194 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/search.py +23 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/validate.py +270 -0
- package/skills/cm-ux-master/cli/uxmaster/search_engine.py +532 -0
- package/skills/cm-ux-master/cli/uxmaster/template_engine.py +458 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/__init__.py +9 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/console.py +42 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/detect.py +83 -0
- package/skills/cm-ux-master/data/accessibility-advanced.csv +26 -0
- package/skills/cm-ux-master/data/animation.csv +31 -0
- package/skills/cm-ux-master/data/charts.csv +26 -0
- package/skills/cm-ux-master/data/colors.csv +97 -0
- package/skills/cm-ux-master/data/design-tests.csv +37 -0
- package/skills/cm-ux-master/data/devices.csv +21 -0
- package/skills/cm-ux-master/data/icons.csv +101 -0
- package/skills/cm-ux-master/data/landing.csv +31 -0
- package/skills/cm-ux-master/data/products.csv +97 -0
- package/skills/cm-ux-master/data/react-performance.csv +45 -0
- package/skills/cm-ux-master/data/responsive.csv +26 -0
- package/skills/cm-ux-master/data/semi-tokens.csv +52 -0
- package/skills/cm-ux-master/data/stacks/angular.csv +34 -0
- package/skills/cm-ux-master/data/stacks/astro.csv +54 -0
- package/skills/cm-ux-master/data/stacks/electron.csv +32 -0
- package/skills/cm-ux-master/data/stacks/flutter.csv +53 -0
- package/skills/cm-ux-master/data/stacks/html-tailwind.csv +56 -0
- package/skills/cm-ux-master/data/stacks/htmx.csv +28 -0
- package/skills/cm-ux-master/data/stacks/jetpack-compose.csv +53 -0
- package/skills/cm-ux-master/data/stacks/nextjs.csv +53 -0
- package/skills/cm-ux-master/data/stacks/nuxt-ui.csv +51 -0
- package/skills/cm-ux-master/data/stacks/nuxtjs.csv +59 -0
- package/skills/cm-ux-master/data/stacks/react-native.csv +52 -0
- package/skills/cm-ux-master/data/stacks/react.csv +54 -0
- package/skills/cm-ux-master/data/stacks/shadcn.csv +61 -0
- package/skills/cm-ux-master/data/stacks/svelte.csv +54 -0
- package/skills/cm-ux-master/data/stacks/swiftui.csv +51 -0
- package/skills/cm-ux-master/data/stacks/tauri.csv +29 -0
- package/skills/cm-ux-master/data/stacks/vue.csv +50 -0
- package/skills/cm-ux-master/data/styles.csv +68 -0
- package/skills/cm-ux-master/data/typography.csv +58 -0
- package/skills/cm-ux-master/data/ui-reasoning.csv +101 -0
- package/skills/cm-ux-master/data/ux-guidelines.csv +100 -0
- package/skills/cm-ux-master/data/ux-laws.csv +49 -0
- package/skills/cm-ux-master/data/web-interface.csv +31 -0
- package/skills/cm-ux-master/docs/LANDING-PAGE.html +377 -0
- package/skills/cm-ux-master/docs/README.md +108 -0
- package/skills/cm-ux-master/docs/css/styles.css +573 -0
- package/skills/cm-ux-master/docs/examples/demo-script.md +319 -0
- package/skills/cm-ux-master/docs/guides/for-designers.md +692 -0
- package/skills/cm-ux-master/docs/guides/for-developers.md +778 -0
- package/skills/cm-ux-master/docs/guides/for-product-managers.md +693 -0
- package/skills/cm-ux-master/docs/guides/react-guide-vi.md +50 -0
- package/skills/cm-ux-master/docs/index.html +1062 -0
- package/skills/cm-ux-master/docs/js/i18n.js +84 -0
- package/skills/cm-ux-master/docs/js/lang/de.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/en.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/fr.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/hi.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/id.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ja.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ko.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ru.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/vi.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/zh.js +145 -0
- package/skills/cm-ux-master/docs/js/main.js +117 -0
- package/skills/cm-ux-master/docs/plan/PHASE1-COMPLETION.md +217 -0
- package/skills/cm-ux-master/docs/plan/PHASE2-COMPLETION.md +199 -0
- package/skills/cm-ux-master/docs/plan/PHASE2-ENHANCED-COMPLETION.md +352 -0
- package/skills/cm-ux-master/docs/plan/PHASE3-VALIDATION-COMPLETION.md +499 -0
- package/skills/cm-ux-master/docs/plan/PHASE4-TESTING-POLISH-COMPLETION.md +483 -0
- package/skills/cm-ux-master/docs/plan/UXM-2.0-ROADMAP.md +681 -0
- package/skills/cm-ux-master/docs/plan/WOW-PITCH.md +410 -0
- package/skills/cm-ux-master/docs/technical/api-reference.md +824 -0
- package/skills/cm-ux-master/docs/technical/harvester-v4.md +328 -0
- package/skills/cm-ux-master/docs/technical/how-it-works.md +1128 -0
- package/skills/cm-ux-master/docs/tutorials/quickstart.md +339 -0
- package/skills/cm-ux-master/docs/tutorials/tutorials.md +939 -0
- package/skills/cm-ux-master/docs/tutorials/user-guide.md +716 -0
- package/skills/cm-ux-master/examples/README.md +63 -0
- package/skills/cm-ux-master/mcp/__init__.py +3 -0
- package/skills/cm-ux-master/mcp/integrations/__init__.py +11 -0
- package/skills/cm-ux-master/mcp/integrations/figma/__init__.py +6 -0
- package/skills/cm-ux-master/mcp/integrations/figma/client.py +293 -0
- package/skills/cm-ux-master/mcp/integrations/figma/plugin/code.js +561 -0
- package/skills/cm-ux-master/mcp/integrations/figma/plugin/ui.html +334 -0
- package/skills/cm-ux-master/mcp/integrations/stitch/__init__.py +5 -0
- package/skills/cm-ux-master/mcp/integrations/stitch/client.py +410 -0
- package/skills/cm-ux-master/mcp/integrations/vscode/package.json +167 -0
- package/skills/cm-ux-master/mcp/integrations/vscode/src/extension.ts +81 -0
- package/skills/cm-ux-master/mcp/mcp-config.json +274 -0
- package/skills/cm-ux-master/mcp/server.py +771 -0
- package/skills/cm-ux-master/mcp/tools/__init__.py +13 -0
- package/skills/cm-ux-master/mcp-server/server.py +595 -0
- package/skills/cm-ux-master/output/fila/FilaDashboard.tsx +47 -0
- package/skills/cm-ux-master/output/fila/components/badge/component.tsx +35 -0
- package/skills/cm-ux-master/output/fila/components/badge/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/button/component.tsx +53 -0
- package/skills/cm-ux-master/output/fila/components/button/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/card/component.tsx +35 -0
- package/skills/cm-ux-master/output/fila/components/card/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/input/component.tsx +41 -0
- package/skills/cm-ux-master/output/fila/components/input/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/design-system.css +151 -0
- package/skills/cm-ux-master/output/fila/design-system.html +1596 -0
- package/skills/cm-ux-master/output/fila/design-system.json +168 -0
- package/skills/cm-ux-master/output/fila/figma-tokens.json +523 -0
- package/skills/cm-ux-master/output/fila/harvest-v4-raw.json +406 -0
- package/skills/cm-ux-master/output/fila/semi-theme-override.css +95 -0
- package/skills/cm-ux-master/output/haravan/HaravanDashboard.tsx +103 -0
- package/skills/cm-ux-master/output/haravan/design-system-v3-live.html +2716 -0
- package/skills/cm-ux-master/output/haravan/design-system-v3.html +1770 -0
- package/skills/cm-ux-master/output/haravan/design-system.html +914 -0
- package/skills/cm-ux-master/output/haravan/figma-tokens.json +84 -0
- package/skills/cm-ux-master/output/haravan/haravan-harvest.json +33 -0
- package/skills/cm-ux-master/output/haravan/harvest-v3-raw.json +167 -0
- package/skills/cm-ux-master/output/haravan/semi-theme-override.css +39 -0
- package/skills/cm-ux-master/references/audit-template.md +257 -0
- package/skills/cm-ux-master/references/cultural-ux.md +346 -0
- package/skills/cm-ux-master/references/dark-patterns.md +362 -0
- package/skills/cm-ux-master/references/heuristic-conflicts.md +296 -0
- package/skills/cm-ux-master/references/krug-principles.md +289 -0
- package/skills/cm-ux-master/references/nielsen-heuristics.md +360 -0
- package/skills/cm-ux-master/references/wcag-checklist.md +306 -0
- package/skills/cm-ux-master/scripts/component_generator.py +631 -0
- package/skills/cm-ux-master/scripts/core.py +305 -0
- package/skills/cm-ux-master/scripts/demo_validation.py +452 -0
- package/skills/cm-ux-master/scripts/design_doc_generator.py +1325 -0
- package/skills/cm-ux-master/scripts/design_system.py +1141 -0
- package/skills/cm-ux-master/scripts/design_system_indexer.py +889 -0
- package/skills/cm-ux-master/scripts/extract_i18n.py +251 -0
- package/skills/cm-ux-master/scripts/extractor.py +1437 -0
- package/skills/cm-ux-master/scripts/figma_bridge.py +406 -0
- package/skills/cm-ux-master/scripts/generate.py +147 -0
- package/skills/cm-ux-master/scripts/harvest_session.py +207 -0
- package/skills/cm-ux-master/scripts/harvester.js +240 -0
- package/skills/cm-ux-master/scripts/harvester_browser.py +717 -0
- package/skills/cm-ux-master/scripts/harvester_cli.py +431 -0
- package/skills/cm-ux-master/scripts/harvester_v1.js +275 -0
- package/skills/cm-ux-master/scripts/harvester_v3.js +620 -0
- package/skills/cm-ux-master/scripts/harvester_v4.js +1003 -0
- package/skills/cm-ux-master/scripts/install.py +528 -0
- package/skills/cm-ux-master/scripts/license.py +81 -0
- package/skills/cm-ux-master/scripts/media/qrpayment.png +0 -0
- package/skills/cm-ux-master/scripts/pro_stubs.py +120 -0
- package/skills/cm-ux-master/scripts/project_registry.py +217 -0
- package/skills/cm-ux-master/scripts/search.py +114 -0
- package/skills/cm-ux-master/scripts/semi_mcp_bridge.py +425 -0
- package/skills/cm-ux-master/scripts/stitch_integration.py +583 -0
- package/skills/cm-ux-master/scripts/test_harvester_v4.py +335 -0
- package/skills/cm-ux-master/scripts/token_mapper.py +626 -0
- package/skills/cm-ux-master/scripts/validation_engine.py +1571 -0
- package/skills/cm-ux-master/scripts/wizard.py +653 -0
- package/skills/cm-ux-master/setup.py +93 -0
- package/skills/cm-ux-master/templates/base/flutter-widget.dart +69 -0
- package/skills/cm-ux-master/templates/base/html-page.html +152 -0
- package/skills/cm-ux-master/templates/base/react-component.tsx +47 -0
- package/skills/cm-ux-master/templates/base/swiftui-view.swift +62 -0
- package/skills/cm-ux-master/templates/quick-start.sh +176 -0
- package/skills/cm-ux-master/tests/automation/batch-validate.sh +250 -0
- package/skills/cm-ux-master/tests/automation/generate-test-projects.sh +561 -0
- package/skills/cm-ux-master/tests/automation/run-all-tests.sh +315 -0
- package/skills/cm-ux-master/tests/test_design_doc.py +145 -0
- package/skills/cm-ux-master/tests/test_devices.py +74 -0
- package/skills/cm-ux-master/tests/test_generator.py +116 -0
- package/skills/cm-ux-master/tests/test_harvest_session.py +131 -0
- package/skills/cm-ux-master/tests/test_harvester.py +127 -0
- package/skills/cm-ux-master/tests/test_harvester_v3.py +324 -0
- package/skills/cm-ux-master/tests/test_mcp_server.py +496 -0
- package/skills/cm-ux-master/tests/test_new_domains.py +108 -0
- package/skills/cm-ux-master/tests/test_new_stacks.py +103 -0
- package/skills/cm-ux-master/tests/test_project_registry.py +146 -0
- package/skills/cm-ux-master/tests/test_semi_mcp_bridge.py +207 -0
- package/skills/cm-ux-master/tests/test_token_mapper.py +247 -0
- package/skills/cm-ux-master/tests/test_validation_engine.py +617 -0
- package/skills/config.schema.json +397 -0
- package/skills/frappe-app-builder.zip +0 -0
- package/skills/jobs-to-be-done/SKILL.md +266 -0
- package/skills/jobs-to-be-done/references/case-studies.md +154 -0
- package/skills/jobs-to-be-done/references/competitive-strategy.md +280 -0
- package/skills/jobs-to-be-done/references/diagnostics.md +158 -0
- package/skills/jobs-to-be-done/references/innovation-process.md +392 -0
- package/skills/jobs-to-be-done/references/organizational-change.md +328 -0
- package/skills/marketplace-report-crawler/SKILL.md +176 -0
- package/skills/marketplace-report-crawler/config/accounts.json +41 -0
- package/skills/marketplace-report-crawler/config/report-types.json +422 -0
- package/skills/marketplace-report-crawler/config/sessions.json +3 -0
- package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +102 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +114 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +94 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +272 -0
- package/skills/marketplace-report-crawler/scripts/crawl-runner.js +281 -0
- package/skills/marketplace-report-crawler/scripts/session-check.sh +72 -0
- package/skills/marketplace-report-crawler/scripts/session-manager.sh +349 -0
- package/skills/marketplace-report-crawler/scripts/setup-folders.sh +83 -0
- package/skills/medical-research/SKILL.md +194 -0
- package/skills/medical-research/scripts/evidence_checker.py +288 -0
- package/skills/mom-test/SKILL.md +267 -0
- package/skills/mom-test/references/avoiding-bad-data.md +221 -0
- package/skills/mom-test/references/case-studies.md +306 -0
- package/skills/mom-test/references/commitment-advancement.md +219 -0
- package/skills/mom-test/references/finding-conversations.md +251 -0
- package/skills/mom-test/references/processing-learning.md +256 -0
- package/skills/mom-test/references/question-patterns.md +198 -0
- package/skills/pandasai-analytics/SKILL.md +251 -0
- package/skills/release-it/SKILL.md +235 -0
- package/skills/release-it/references/anti-patterns.md +279 -0
- package/skills/release-it/references/capacity-planning.md +285 -0
- package/skills/release-it/references/chaos-engineering.md +325 -0
- package/skills/release-it/references/deployment-strategies.md +331 -0
- package/skills/release-it/references/observability.md +301 -0
- package/skills/release-it/references/stability-patterns.md +355 -0
- package/skills/scripts/sync-ide-skills.sh +61 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +37 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +34 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +51 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +39 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +52 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +25 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +31 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +25 -0
- package/skills/skill-creator-ultra/README.md +1242 -0
- package/skills/skill-creator-ultra/SKILL.md +388 -0
- package/skills/skill-creator-ultra/agents/analyzer.md +274 -0
- package/skills/skill-creator-ultra/agents/comparator.md +202 -0
- package/skills/skill-creator-ultra/agents/grader.md +223 -0
- package/skills/skill-creator-ultra/assets/eval_review.html +146 -0
- package/skills/skill-creator-ultra/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator-ultra/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +109 -0
- package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +116 -0
- package/skills/skill-creator-ultra/examples/example_api_docs.md +189 -0
- package/skills/skill-creator-ultra/examples/example_db_migration.md +253 -0
- package/skills/skill-creator-ultra/examples/example_git_commit.md +111 -0
- package/skills/skill-creator-ultra/install.ps1 +289 -0
- package/skills/skill-creator-ultra/install.sh +313 -0
- package/skills/skill-creator-ultra/phases/phase1_interview.md +202 -0
- package/skills/skill-creator-ultra/phases/phase2_extract.md +55 -0
- package/skills/skill-creator-ultra/phases/phase3_detect.md +57 -0
- package/skills/skill-creator-ultra/phases/phase4_generate.md +543 -0
- package/skills/skill-creator-ultra/phases/phase5_test.md +319 -0
- package/skills/skill-creator-ultra/phases/phase6_eval.md +301 -0
- package/skills/skill-creator-ultra/phases/phase7_iterate.md +103 -0
- package/skills/skill-creator-ultra/phases/phase8_optimize.md +113 -0
- package/skills/skill-creator-ultra/resources/advanced_patterns.md +499 -0
- package/skills/skill-creator-ultra/resources/anti_patterns.md +376 -0
- package/skills/skill-creator-ultra/resources/blueprints.md +498 -0
- package/skills/skill-creator-ultra/resources/checklist.md +243 -0
- package/skills/skill-creator-ultra/resources/composition_cookbook.md +291 -0
- package/skills/skill-creator-ultra/resources/description_optimization.md +90 -0
- package/skills/skill-creator-ultra/resources/eval_guide.md +133 -0
- package/skills/skill-creator-ultra/resources/industry_questions.md +189 -0
- package/skills/skill-creator-ultra/resources/interview_questions.md +200 -0
- package/skills/skill-creator-ultra/resources/pattern_detection.md +200 -0
- package/skills/skill-creator-ultra/resources/prompt_engineering.md +531 -0
- package/skills/skill-creator-ultra/resources/schemas.md +430 -0
- package/skills/skill-creator-ultra/resources/script_integration.md +593 -0
- package/skills/skill-creator-ultra/resources/scripts_guide.md +339 -0
- package/skills/skill-creator-ultra/resources/skill_template.md +124 -0
- package/skills/skill-creator-ultra/resources/skill_writing_guide.md +634 -0
- package/skills/skill-creator-ultra/resources/versioning_guide.md +193 -0
- package/skills/skill-creator-ultra/scripts/ci_eval.py +200 -0
- package/skills/skill-creator-ultra/scripts/package_skill.py +165 -0
- package/skills/skill-creator-ultra/scripts/simulate_skill.py +398 -0
- package/skills/skill-creator-ultra/scripts/skill_audit.py +611 -0
- package/skills/skill-creator-ultra/scripts/skill_compare.py +265 -0
- package/skills/skill-creator-ultra/scripts/skill_export.py +334 -0
- package/skills/skill-creator-ultra/scripts/skill_scaffold.py +403 -0
- package/skills/skill-creator-ultra/scripts/skill_stats.py +339 -0
- package/skills/skill-creator-ultra/scripts/validate_skill.py +411 -0
- package/skills/tailwind-mastery/SKILL.md +229 -0
- package/skills/vercel-react-best-practices/AGENTS.md +3373 -0
- package/skills/vercel-react-best-practices/README.md +123 -0
- package/skills/vercel-react-best-practices/SKILL.md +143 -0
- package/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/cro-methodology/SKILL.md +0 -98
- /package/skills/{cro-methodology → cm-cro-methodology}/references/COPYWRITING.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/OBJECTIONS.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/PERSUASION.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/RESEARCH.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/funnel-analysis.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/testing-methodology.md +0 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
# Cultural UX Considerations
|
|
2
|
+
|
|
3
|
+
Designing for global audiences: RTL languages, color meanings, form conventions, and localization.
|
|
4
|
+
|
|
5
|
+
## Right-to-Left (RTL) Languages
|
|
6
|
+
|
|
7
|
+
### Languages That Use RTL
|
|
8
|
+
|
|
9
|
+
- Arabic
|
|
10
|
+
- Hebrew
|
|
11
|
+
- Persian (Farsi)
|
|
12
|
+
- Urdu
|
|
13
|
+
|
|
14
|
+
### What to Mirror
|
|
15
|
+
|
|
16
|
+
| Element | LTR | RTL |
|
|
17
|
+
|---------|-----|-----|
|
|
18
|
+
| Text alignment | Left | Right |
|
|
19
|
+
| Navigation | Left side | Right side |
|
|
20
|
+
| Progress indicators | Left to right | Right to left |
|
|
21
|
+
| Icons with direction | → | ← |
|
|
22
|
+
| Checkmarks | ✓ on right | ✓ on left |
|
|
23
|
+
| Back buttons | ← | → |
|
|
24
|
+
| Carousels/sliders | Swipe left for next | Swipe right for next |
|
|
25
|
+
|
|
26
|
+
### What NOT to Mirror
|
|
27
|
+
|
|
28
|
+
| Element | Reason |
|
|
29
|
+
|---------|--------|
|
|
30
|
+
| Numbers | Always LTR (123, not ٣٢١) |
|
|
31
|
+
| Phone numbers | Universal format |
|
|
32
|
+
| Clocks | Universal format |
|
|
33
|
+
| Video player controls | Universal convention |
|
|
34
|
+
| Brand logos | Design integrity |
|
|
35
|
+
| Math equations | Universal notation |
|
|
36
|
+
|
|
37
|
+
### CSS for RTL
|
|
38
|
+
|
|
39
|
+
```css
|
|
40
|
+
/* Modern approach using logical properties */
|
|
41
|
+
.element {
|
|
42
|
+
/* Instead of margin-left: 16px */
|
|
43
|
+
margin-inline-start: 16px;
|
|
44
|
+
|
|
45
|
+
/* Instead of padding-right: 8px */
|
|
46
|
+
padding-inline-end: 8px;
|
|
47
|
+
|
|
48
|
+
/* Instead of text-align: left */
|
|
49
|
+
text-align: start;
|
|
50
|
+
|
|
51
|
+
/* Instead of float: left */
|
|
52
|
+
float: inline-start;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Or use dir attribute */
|
|
56
|
+
[dir="rtl"] .element {
|
|
57
|
+
/* RTL-specific overrides */
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### RTL Icons
|
|
62
|
+
|
|
63
|
+
Icons with inherent direction need mirroring:
|
|
64
|
+
|
|
65
|
+
| Icon | Mirror? | Reason |
|
|
66
|
+
|------|---------|--------|
|
|
67
|
+
| Back arrow | Yes | Directional navigation |
|
|
68
|
+
| Forward arrow | Yes | Directional navigation |
|
|
69
|
+
| Reply icon | Yes | Shows direction of response |
|
|
70
|
+
| Search icon | No | Magnifying glass is universal |
|
|
71
|
+
| Home icon | No | House has no direction |
|
|
72
|
+
| Settings gear | No | Symmetric |
|
|
73
|
+
| Play button | No | Universal media convention |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Color Meanings Across Cultures
|
|
78
|
+
|
|
79
|
+
### Red
|
|
80
|
+
|
|
81
|
+
| Culture | Meaning |
|
|
82
|
+
|---------|---------|
|
|
83
|
+
| Western | Danger, stop, error, love |
|
|
84
|
+
| China | Good luck, prosperity, happiness |
|
|
85
|
+
| India | Purity, fertility |
|
|
86
|
+
| South Africa | Mourning |
|
|
87
|
+
| Japan | Life, anger |
|
|
88
|
+
|
|
89
|
+
**Design implication:** Don't use red for error states in apps targeting Chinese markets without context.
|
|
90
|
+
|
|
91
|
+
### White
|
|
92
|
+
|
|
93
|
+
| Culture | Meaning |
|
|
94
|
+
|---------|---------|
|
|
95
|
+
| Western | Purity, cleanliness, peace |
|
|
96
|
+
| China/Japan | Death, mourning |
|
|
97
|
+
| India | Unhappiness, mourning |
|
|
98
|
+
|
|
99
|
+
**Design implication:** White space may have different connotations; "clean" design may feel empty or cold.
|
|
100
|
+
|
|
101
|
+
### Green
|
|
102
|
+
|
|
103
|
+
| Culture | Meaning |
|
|
104
|
+
|---------|---------|
|
|
105
|
+
| Western | Go, success, nature, money |
|
|
106
|
+
| Islamic | Sacred, paradise |
|
|
107
|
+
| China | Infidelity (green hat = cuckold) |
|
|
108
|
+
| Ireland | National identity |
|
|
109
|
+
|
|
110
|
+
**Design implication:** Green success states work globally, but be careful with green accessories or hats in Chinese contexts.
|
|
111
|
+
|
|
112
|
+
### Yellow
|
|
113
|
+
|
|
114
|
+
| Culture | Meaning |
|
|
115
|
+
|---------|---------|
|
|
116
|
+
| Western | Caution, happiness |
|
|
117
|
+
| Japan | Courage, royalty |
|
|
118
|
+
| Egypt | Mourning |
|
|
119
|
+
| Latin America | Death, mourning |
|
|
120
|
+
|
|
121
|
+
### Blue
|
|
122
|
+
|
|
123
|
+
| Culture | Meaning |
|
|
124
|
+
|---------|---------|
|
|
125
|
+
| Most cultures | Trust, calm, professionalism |
|
|
126
|
+
| Iran | Mourning, spirituality |
|
|
127
|
+
|
|
128
|
+
**Design implication:** Blue is relatively safe globally; commonly used for links and primary actions.
|
|
129
|
+
|
|
130
|
+
### General Guidelines
|
|
131
|
+
|
|
132
|
+
1. **Test with local users** - Color perception varies
|
|
133
|
+
2. **Don't rely on color alone** - Add icons and text
|
|
134
|
+
3. **Provide customization** - Let users choose colors where possible
|
|
135
|
+
4. **Research target markets** - Specific meanings in your target regions
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Form Conventions
|
|
140
|
+
|
|
141
|
+
### Name Fields
|
|
142
|
+
|
|
143
|
+
| Culture | Name Structure |
|
|
144
|
+
|---------|----------------|
|
|
145
|
+
| Western | First + Last (given + family) |
|
|
146
|
+
| China/Japan/Korea | Family + Given |
|
|
147
|
+
| Iceland | Given + Patronymic |
|
|
148
|
+
| Spanish | Given + Father's surname + Mother's surname |
|
|
149
|
+
| Arabic | Given + Father's + Grandfather's + Family |
|
|
150
|
+
|
|
151
|
+
**Best practices:**
|
|
152
|
+
- Use single "Full Name" field when possible
|
|
153
|
+
- If splitting, use "Given Name" and "Family Name" (not First/Last)
|
|
154
|
+
- Don't assume first/last order
|
|
155
|
+
- Allow long names (>50 characters)
|
|
156
|
+
|
|
157
|
+
### Address Fields
|
|
158
|
+
|
|
159
|
+
| Region | Considerations |
|
|
160
|
+
|--------|----------------|
|
|
161
|
+
| US | State, ZIP code (5 or 9 digits) |
|
|
162
|
+
| UK | County optional, postcode format varies |
|
|
163
|
+
| Japan | Prefecture, address reads large→small |
|
|
164
|
+
| Brazil | CEP codes |
|
|
165
|
+
| Countries without postal codes | 50+ countries don't use them |
|
|
166
|
+
|
|
167
|
+
**Best practices:**
|
|
168
|
+
- Don't require postal code universally
|
|
169
|
+
- Use country-appropriate field labels
|
|
170
|
+
- Allow flexible formats
|
|
171
|
+
- Consider address autocomplete services
|
|
172
|
+
|
|
173
|
+
### Phone Numbers
|
|
174
|
+
|
|
175
|
+
| Consideration | Approach |
|
|
176
|
+
|---------------|----------|
|
|
177
|
+
| Country codes | Allow input or select separately |
|
|
178
|
+
| Length | Varies widely (7-15 digits) |
|
|
179
|
+
| Format | Don't enforce specific format |
|
|
180
|
+
| Mobile vs landline | Labels may not translate |
|
|
181
|
+
|
|
182
|
+
**Best practices:**
|
|
183
|
+
- Accept multiple formats
|
|
184
|
+
- Store in E.164 format internally (+1234567890)
|
|
185
|
+
- Display in local format
|
|
186
|
+
- Don't validate too strictly
|
|
187
|
+
|
|
188
|
+
### Dates
|
|
189
|
+
|
|
190
|
+
| Region | Format |
|
|
191
|
+
|--------|--------|
|
|
192
|
+
| US | MM/DD/YYYY |
|
|
193
|
+
| Most of world | DD/MM/YYYY |
|
|
194
|
+
| Japan, China, Korea | YYYY/MM/DD |
|
|
195
|
+
| ISO standard | YYYY-MM-DD |
|
|
196
|
+
|
|
197
|
+
**Best practices:**
|
|
198
|
+
- Use date pickers instead of text input
|
|
199
|
+
- Show month names (not numbers) to avoid confusion
|
|
200
|
+
- Store in ISO format (YYYY-MM-DD)
|
|
201
|
+
- Display in user's locale
|
|
202
|
+
|
|
203
|
+
### Currency
|
|
204
|
+
|
|
205
|
+
| Consideration | Examples |
|
|
206
|
+
|---------------|----------|
|
|
207
|
+
| Symbol position | $100 vs 100€ vs 100 kr |
|
|
208
|
+
| Decimal separator | $1,234.56 vs €1.234,56 |
|
|
209
|
+
| Thousands separator | 1,000 vs 1.000 vs 1 000 |
|
|
210
|
+
| Currency names | Dollar, Yuan, Rupee |
|
|
211
|
+
|
|
212
|
+
**Best practices:**
|
|
213
|
+
- Format according to user locale
|
|
214
|
+
- Always show currency symbol/code
|
|
215
|
+
- Be clear about which currency
|
|
216
|
+
- Handle conversion if multi-currency
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Text Considerations
|
|
221
|
+
|
|
222
|
+
### Text Expansion
|
|
223
|
+
|
|
224
|
+
Translated text is often longer than English:
|
|
225
|
+
|
|
226
|
+
| Language | Expansion Factor |
|
|
227
|
+
|----------|------------------|
|
|
228
|
+
| German | 1.3x |
|
|
229
|
+
| French | 1.2x |
|
|
230
|
+
| Russian | 1.2x |
|
|
231
|
+
| Spanish | 1.2x |
|
|
232
|
+
| Chinese | 0.8x |
|
|
233
|
+
| Japanese | 0.9x |
|
|
234
|
+
|
|
235
|
+
**Design implications:**
|
|
236
|
+
- Don't design to exact English text length
|
|
237
|
+
- Allow buttons and labels to expand
|
|
238
|
+
- Test layouts with longest expected translations
|
|
239
|
+
- Use flexible grid/flexbox layouts
|
|
240
|
+
|
|
241
|
+
### Text in Images
|
|
242
|
+
|
|
243
|
+
Avoid text in images because:
|
|
244
|
+
- Can't be translated easily
|
|
245
|
+
- Not accessible to screen readers
|
|
246
|
+
- Doesn't scale with user preferences
|
|
247
|
+
- Complicates localization workflow
|
|
248
|
+
|
|
249
|
+
**Alternative:** Use CSS text over images.
|
|
250
|
+
|
|
251
|
+
### Numbers and Units
|
|
252
|
+
|
|
253
|
+
| Element | Consideration |
|
|
254
|
+
|---------|---------------|
|
|
255
|
+
| Measurement | Metric (most world) vs Imperial (US) |
|
|
256
|
+
| Paper size | A4 (most world) vs Letter (US, Canada) |
|
|
257
|
+
| Temperature | Celsius vs Fahrenheit |
|
|
258
|
+
| Time | 24-hour vs 12-hour (AM/PM) |
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Icons and Imagery
|
|
263
|
+
|
|
264
|
+
### Potentially Problematic Icons
|
|
265
|
+
|
|
266
|
+
| Icon | Issue | Alternative |
|
|
267
|
+
|------|-------|-------------|
|
|
268
|
+
| Mailbox | US-specific design | Envelope |
|
|
269
|
+
| Check mark | Means "wrong" in some cultures | Consider context |
|
|
270
|
+
| Thumbs up | Offensive in some cultures | Hearts, stars |
|
|
271
|
+
| Hand gestures | Vary widely in meaning | Avoid gestures |
|
|
272
|
+
| Animals | Religious/cultural sensitivities | Research target market |
|
|
273
|
+
| Religious symbols | May exclude or offend | Use neutral symbols |
|
|
274
|
+
|
|
275
|
+
### Photography
|
|
276
|
+
|
|
277
|
+
| Consideration | Approach |
|
|
278
|
+
|---------------|----------|
|
|
279
|
+
| Diversity | Represent target audience |
|
|
280
|
+
| Gestures | Avoid culture-specific gestures |
|
|
281
|
+
| Clothing | Consider cultural norms |
|
|
282
|
+
| Settings | Use locally relevant contexts |
|
|
283
|
+
| Food | Be aware of dietary restrictions |
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Localization Best Practices
|
|
288
|
+
|
|
289
|
+
### Technical
|
|
290
|
+
|
|
291
|
+
```javascript
|
|
292
|
+
// Use internationalization libraries
|
|
293
|
+
const formatter = new Intl.DateTimeFormat('de-DE');
|
|
294
|
+
const date = formatter.format(new Date());
|
|
295
|
+
|
|
296
|
+
const currencyFormatter = new Intl.NumberFormat('ja-JP', {
|
|
297
|
+
style: 'currency',
|
|
298
|
+
currency: 'JPY'
|
|
299
|
+
});
|
|
300
|
+
const price = currencyFormatter.format(1000);
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Content
|
|
304
|
+
|
|
305
|
+
- Use simple, clear language (easier to translate)
|
|
306
|
+
- Avoid idioms and colloquialisms
|
|
307
|
+
- Don't hardcode strings (use translation keys)
|
|
308
|
+
- Provide context for translators
|
|
309
|
+
- Test with pseudo-localization during development
|
|
310
|
+
|
|
311
|
+
### Design
|
|
312
|
+
|
|
313
|
+
- Design for flexibility (expanding text)
|
|
314
|
+
- Use icons with text (not alone)
|
|
315
|
+
- Test layouts in RTL and longest languages
|
|
316
|
+
- Consider reading order in complex layouts
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Quick Reference Checklist
|
|
321
|
+
|
|
322
|
+
Before launching internationally:
|
|
323
|
+
|
|
324
|
+
**Layout:**
|
|
325
|
+
- [ ] Supports RTL if targeting Arabic, Hebrew, Persian
|
|
326
|
+
- [ ] Text can expand 30% without breaking
|
|
327
|
+
- [ ] No text in images
|
|
328
|
+
- [ ] Icons are culturally neutral
|
|
329
|
+
|
|
330
|
+
**Forms:**
|
|
331
|
+
- [ ] Name fields are flexible
|
|
332
|
+
- [ ] Addresses work without postal codes
|
|
333
|
+
- [ ] Phone numbers accept various formats
|
|
334
|
+
- [ ] Dates use pickers or clear formats
|
|
335
|
+
|
|
336
|
+
**Content:**
|
|
337
|
+
- [ ] Colors don't carry unintended meaning
|
|
338
|
+
- [ ] Images represent target audience
|
|
339
|
+
- [ ] No culture-specific idioms
|
|
340
|
+
- [ ] Units match target region
|
|
341
|
+
|
|
342
|
+
**Technical:**
|
|
343
|
+
- [ ] Dates, numbers, currency use locale formatting
|
|
344
|
+
- [ ] All strings externalized for translation
|
|
345
|
+
- [ ] Character encoding supports target languages
|
|
346
|
+
- [ ] Font supports required character sets
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Dark Patterns in UX Design
|
|
2
|
+
|
|
3
|
+
Understanding manipulative design practices to recognize and avoid them. Ethical alternatives that achieve business goals without deceiving users.
|
|
4
|
+
|
|
5
|
+
## What Are Dark Patterns?
|
|
6
|
+
|
|
7
|
+
Dark patterns are user interface designs that trick users into doing things they didn't intend. They exploit cognitive biases and psychological vulnerabilities for business benefit at user expense.
|
|
8
|
+
|
|
9
|
+
**Key distinction:**
|
|
10
|
+
- Persuasion = helping users make decisions aligned with their goals
|
|
11
|
+
- Dark patterns = tricking users into decisions against their interests
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Categories of Dark Patterns
|
|
16
|
+
|
|
17
|
+
### 1. Forced Continuity
|
|
18
|
+
|
|
19
|
+
**Definition:** Making it easy to sign up for a free trial but difficult to cancel.
|
|
20
|
+
|
|
21
|
+
**Examples:**
|
|
22
|
+
- Require phone call to cancel (but signup was online)
|
|
23
|
+
- Bury cancellation in settings maze
|
|
24
|
+
- Show "Are you sure?" modals repeatedly
|
|
25
|
+
- Require cancellation 30 days before renewal
|
|
26
|
+
|
|
27
|
+
**Why it's harmful:**
|
|
28
|
+
- Users pay for services they don't want
|
|
29
|
+
- Exploits inertia and forgetfulness
|
|
30
|
+
- Damages trust when discovered
|
|
31
|
+
|
|
32
|
+
**Ethical alternative:**
|
|
33
|
+
- Cancel button as easy to find as signup
|
|
34
|
+
- Clear cancellation confirmation (not guilt trips)
|
|
35
|
+
- Email reminder before renewal charge
|
|
36
|
+
- Allow pause instead of forcing cancel
|
|
37
|
+
|
|
38
|
+
### 2. Roach Motel
|
|
39
|
+
|
|
40
|
+
**Definition:** Easy to get into a situation, hard to get out.
|
|
41
|
+
|
|
42
|
+
**Examples:**
|
|
43
|
+
- Account creation takes 1 minute, deletion takes 30 days and support tickets
|
|
44
|
+
- Subscribing to emails requires one click, unsubscribing requires login + multiple confirmations
|
|
45
|
+
- Joining is free, but exported data costs money
|
|
46
|
+
|
|
47
|
+
**Why it's harmful:**
|
|
48
|
+
- Traps users against their will
|
|
49
|
+
- Violates user autonomy
|
|
50
|
+
- Often illegal under GDPR and similar regulations
|
|
51
|
+
|
|
52
|
+
**Ethical alternative:**
|
|
53
|
+
- Symmetric design: if X is easy, reversing X should be easy
|
|
54
|
+
- Account deletion should be self-service
|
|
55
|
+
- Data export should be free and complete
|
|
56
|
+
- Unsubscribe = one click
|
|
57
|
+
|
|
58
|
+
### 3. Privacy Zuckering
|
|
59
|
+
|
|
60
|
+
**Definition:** Tricking users into sharing more information than intended.
|
|
61
|
+
|
|
62
|
+
**Examples:**
|
|
63
|
+
- Default settings share everything publicly
|
|
64
|
+
- "Connect with friends" imports entire contact list
|
|
65
|
+
- Profile completion gamification encourages oversharing
|
|
66
|
+
- Confusing privacy controls that require expertise
|
|
67
|
+
|
|
68
|
+
**Why it's harmful:**
|
|
69
|
+
- Users lose control of personal information
|
|
70
|
+
- Can lead to real-world harm (stalking, discrimination)
|
|
71
|
+
- Exploits the complexity of privacy settings
|
|
72
|
+
|
|
73
|
+
**Ethical alternative:**
|
|
74
|
+
- Privacy-respecting defaults (share nothing by default)
|
|
75
|
+
- Clear, plain-language privacy explanations
|
|
76
|
+
- Granular, understandable controls
|
|
77
|
+
- Regular privacy checkups that surface settings
|
|
78
|
+
|
|
79
|
+
### 4. Bait and Switch
|
|
80
|
+
|
|
81
|
+
**Definition:** User sets out to do one thing, but something different happens.
|
|
82
|
+
|
|
83
|
+
**Examples:**
|
|
84
|
+
- "X" button that triggers action instead of closing
|
|
85
|
+
- "Download" button that's actually an ad
|
|
86
|
+
- "Free trial" that immediately charges
|
|
87
|
+
- Changing terms after user commits to purchase
|
|
88
|
+
|
|
89
|
+
**Why it's harmful:**
|
|
90
|
+
- Directly deceives users about consequences
|
|
91
|
+
- Violates fundamental expectations
|
|
92
|
+
- Often results in unwanted charges or actions
|
|
93
|
+
|
|
94
|
+
**Ethical alternative:**
|
|
95
|
+
- Buttons do exactly what they say
|
|
96
|
+
- Clear labeling distinguishes ads from content
|
|
97
|
+
- Free trials are genuinely free until stated conversion point
|
|
98
|
+
- Terms are locked at time of agreement
|
|
99
|
+
|
|
100
|
+
### 5. Confirmshaming
|
|
101
|
+
|
|
102
|
+
**Definition:** Using guilt or shame to manipulate users into opting in.
|
|
103
|
+
|
|
104
|
+
**Examples:**
|
|
105
|
+
- "No thanks, I don't want to save money"
|
|
106
|
+
- "I'll stay ignorant" (for newsletter)
|
|
107
|
+
- "I don't care about my health"
|
|
108
|
+
- Imagery showing sad faces for decline option
|
|
109
|
+
|
|
110
|
+
**Why it's harmful:**
|
|
111
|
+
- Manipulates emotions to override rational decision
|
|
112
|
+
- Disrespects user autonomy
|
|
113
|
+
- Creates negative brand association
|
|
114
|
+
|
|
115
|
+
**Ethical alternative:**
|
|
116
|
+
- Neutral decline options: "No thanks" or "Maybe later"
|
|
117
|
+
- Equal visual weight for both choices
|
|
118
|
+
- Respect the "no" without comment
|
|
119
|
+
- Focus on value proposition, not guilt
|
|
120
|
+
|
|
121
|
+
### 6. Hidden Costs
|
|
122
|
+
|
|
123
|
+
**Definition:** Prices or fees revealed only at final checkout.
|
|
124
|
+
|
|
125
|
+
**Examples:**
|
|
126
|
+
- Service fees added at last step
|
|
127
|
+
- Required "convenience fees"
|
|
128
|
+
- Shipping costs revealed after entering payment info
|
|
129
|
+
- "Processing fees" on top of advertised price
|
|
130
|
+
|
|
131
|
+
**Why it's harmful:**
|
|
132
|
+
- Users commit time/effort before learning true cost
|
|
133
|
+
- Exploits sunk cost fallacy
|
|
134
|
+
- Illegal in many jurisdictions (price must be clear)
|
|
135
|
+
|
|
136
|
+
**Ethical alternative:**
|
|
137
|
+
- Show total cost including all fees upfront
|
|
138
|
+
- If fees depend on choices, show estimates early
|
|
139
|
+
- Price transparency builds trust
|
|
140
|
+
- All-in pricing where possible
|
|
141
|
+
|
|
142
|
+
### 7. Misdirection
|
|
143
|
+
|
|
144
|
+
**Definition:** Design draws attention away from important information.
|
|
145
|
+
|
|
146
|
+
**Examples:**
|
|
147
|
+
- Terms and conditions in tiny gray text
|
|
148
|
+
- "Yes" button prominent, "No" button hidden
|
|
149
|
+
- Pre-selected add-ons that require unchecking
|
|
150
|
+
- Important disclaimers below the fold
|
|
151
|
+
|
|
152
|
+
**Why it's harmful:**
|
|
153
|
+
- Prevents informed decision-making
|
|
154
|
+
- Hides information users would want to know
|
|
155
|
+
- Exploits visual hierarchy against users
|
|
156
|
+
|
|
157
|
+
**Ethical alternative:**
|
|
158
|
+
- Important information is visually prominent
|
|
159
|
+
- Both options equally accessible
|
|
160
|
+
- Nothing pre-selected that costs money
|
|
161
|
+
- Disclaimers at point of relevance, not hidden
|
|
162
|
+
|
|
163
|
+
### 8. Trick Questions
|
|
164
|
+
|
|
165
|
+
**Definition:** Confusing wording that leads to unintended choices.
|
|
166
|
+
|
|
167
|
+
**Examples:**
|
|
168
|
+
- "Uncheck to not receive no emails" (double negative)
|
|
169
|
+
- Checkboxes that mean opposite things mixed together
|
|
170
|
+
- "Continue" meaning "I agree" without stating so
|
|
171
|
+
- Questions worded to confuse opt-in vs opt-out
|
|
172
|
+
|
|
173
|
+
**Why it's harmful:**
|
|
174
|
+
- Deliberately confuses users
|
|
175
|
+
- Results in choices user didn't mean to make
|
|
176
|
+
- Exploits cognitive load
|
|
177
|
+
|
|
178
|
+
**Ethical alternative:**
|
|
179
|
+
- Clear, simple language
|
|
180
|
+
- Consistent meaning (check = yes, uncheck = no)
|
|
181
|
+
- Explicit confirmation language
|
|
182
|
+
- User testing to catch confusing wording
|
|
183
|
+
|
|
184
|
+
### 9. Sneak into Basket
|
|
185
|
+
|
|
186
|
+
**Definition:** Items added to cart without user action.
|
|
187
|
+
|
|
188
|
+
**Examples:**
|
|
189
|
+
- Insurance pre-selected during checkout
|
|
190
|
+
- "Protection plan" added by default
|
|
191
|
+
- Donation to charity checked by default
|
|
192
|
+
- Accessories added when buying main product
|
|
193
|
+
|
|
194
|
+
**Why it's harmful:**
|
|
195
|
+
- Users pay for things they didn't choose
|
|
196
|
+
- Exploits inattention during checkout
|
|
197
|
+
- Often hidden in long checkout flows
|
|
198
|
+
|
|
199
|
+
**Ethical alternative:**
|
|
200
|
+
- Nothing added without explicit user action
|
|
201
|
+
- Optional items clearly offered (not pre-selected)
|
|
202
|
+
- Cart contents always visible and editable
|
|
203
|
+
- Confirmation of what's being purchased
|
|
204
|
+
|
|
205
|
+
### 10. Urgency & Scarcity (False)
|
|
206
|
+
|
|
207
|
+
**Definition:** Creating fake urgency or scarcity to pressure decisions.
|
|
208
|
+
|
|
209
|
+
**Examples:**
|
|
210
|
+
- "Only 2 left!" (restocked hourly)
|
|
211
|
+
- "This deal expires in 10:00" (resets on refresh)
|
|
212
|
+
- "15 people viewing this" (fabricated)
|
|
213
|
+
- "Prices increase tomorrow" (they don't)
|
|
214
|
+
|
|
215
|
+
**Why it's harmful:**
|
|
216
|
+
- Pressures users into hasty decisions
|
|
217
|
+
- Based on lies (not real scarcity)
|
|
218
|
+
- Prevents price comparison and consideration
|
|
219
|
+
- Particularly harmful for high-stakes purchases
|
|
220
|
+
|
|
221
|
+
**Ethical alternative:**
|
|
222
|
+
- Only show real inventory counts
|
|
223
|
+
- Honest sale end dates
|
|
224
|
+
- If scarcity is real, explain why
|
|
225
|
+
- Give users time to decide
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Regulatory Context
|
|
230
|
+
|
|
231
|
+
### GDPR (Europe)
|
|
232
|
+
|
|
233
|
+
Dark patterns affecting consent are illegal:
|
|
234
|
+
- Consent must be freely given
|
|
235
|
+
- Rejecting must be as easy as accepting
|
|
236
|
+
- Pre-ticked boxes invalid for consent
|
|
237
|
+
- Bundled consent (all-or-nothing) invalid
|
|
238
|
+
|
|
239
|
+
### FTC (United States)
|
|
240
|
+
|
|
241
|
+
The FTC has taken action against:
|
|
242
|
+
- Hidden subscription fees
|
|
243
|
+
- Difficult cancellation processes
|
|
244
|
+
- Misleading "free trial" offers
|
|
245
|
+
- Fake urgency and scarcity
|
|
246
|
+
|
|
247
|
+
### California Privacy Rights Act (CPRA)
|
|
248
|
+
|
|
249
|
+
Specifically prohibits:
|
|
250
|
+
- Dark patterns in opt-out processes
|
|
251
|
+
- Requires symmetry in design
|
|
252
|
+
- Consent obtained through dark patterns is invalid
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## How to Audit for Dark Patterns
|
|
257
|
+
|
|
258
|
+
### Checklist
|
|
259
|
+
|
|
260
|
+
**Signup/Subscription:**
|
|
261
|
+
- [ ] Can users cancel as easily as they signed up?
|
|
262
|
+
- [ ] Are renewal terms clear at signup?
|
|
263
|
+
- [ ] Is the "free" trial genuinely free?
|
|
264
|
+
|
|
265
|
+
**Checkout:**
|
|
266
|
+
- [ ] Is the total price clear before final step?
|
|
267
|
+
- [ ] Are all added items explicitly chosen by user?
|
|
268
|
+
- [ ] Are opt-outs as prominent as opt-ins?
|
|
269
|
+
|
|
270
|
+
**Data/Privacy:**
|
|
271
|
+
- [ ] Are privacy settings understandable?
|
|
272
|
+
- [ ] Are defaults privacy-respecting?
|
|
273
|
+
- [ ] Can users export/delete their data easily?
|
|
274
|
+
|
|
275
|
+
**General:**
|
|
276
|
+
- [ ] Does every button do what it says?
|
|
277
|
+
- [ ] Is important information visually prominent?
|
|
278
|
+
- [ ] Are decline options neutral (no shaming)?
|
|
279
|
+
- [ ] Is urgency/scarcity real?
|
|
280
|
+
|
|
281
|
+
### The Mirror Test
|
|
282
|
+
|
|
283
|
+
Ask: "Would I feel comfortable if a journalist wrote about how this works?"
|
|
284
|
+
|
|
285
|
+
If the answer is no, it's probably a dark pattern.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Ethical Alternatives That Work
|
|
290
|
+
|
|
291
|
+
### Instead of Forced Continuity
|
|
292
|
+
|
|
293
|
+
**Business goal:** Retain subscribers
|
|
294
|
+
|
|
295
|
+
**Ethical approach:**
|
|
296
|
+
- Make the product so good they don't want to cancel
|
|
297
|
+
- Offer pause option instead of cancel
|
|
298
|
+
- Win-back campaigns for churned users
|
|
299
|
+
- Ask why they're leaving and address it
|
|
300
|
+
|
|
301
|
+
### Instead of Hidden Costs
|
|
302
|
+
|
|
303
|
+
**Business goal:** Competitive-looking prices
|
|
304
|
+
|
|
305
|
+
**Ethical approach:**
|
|
306
|
+
- All-in pricing (include fees in advertised price)
|
|
307
|
+
- Compete on value, not deceptive pricing
|
|
308
|
+
- Explain what fees cover (transparency builds trust)
|
|
309
|
+
- Offer fee-free options (digital delivery, etc.)
|
|
310
|
+
|
|
311
|
+
### Instead of Confirmshaming
|
|
312
|
+
|
|
313
|
+
**Business goal:** Higher opt-in rates
|
|
314
|
+
|
|
315
|
+
**Ethical approach:**
|
|
316
|
+
- Stronger value proposition
|
|
317
|
+
- Social proof (join 100k subscribers)
|
|
318
|
+
- Clear benefit statement
|
|
319
|
+
- Respect "no" and try again later
|
|
320
|
+
|
|
321
|
+
### Instead of False Urgency
|
|
322
|
+
|
|
323
|
+
**Business goal:** Faster purchase decisions
|
|
324
|
+
|
|
325
|
+
**Ethical approach:**
|
|
326
|
+
- Genuine limited-time offers (and honor them)
|
|
327
|
+
- Waitlists for genuinely scarce items
|
|
328
|
+
- Early access for committed customers
|
|
329
|
+
- Value-based urgency (limited capacity, real deadlines)
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## The Business Case Against Dark Patterns
|
|
334
|
+
|
|
335
|
+
### Short-term vs Long-term
|
|
336
|
+
|
|
337
|
+
| Metric | Dark Pattern Impact | Ethical Design Impact |
|
|
338
|
+
|--------|---------------------|----------------------|
|
|
339
|
+
| Initial conversion | ↑ Higher | Slightly lower |
|
|
340
|
+
| Customer trust | ↓ Lower | ↑ Higher |
|
|
341
|
+
| Churn rate | ↑ Higher | ↓ Lower |
|
|
342
|
+
| Customer lifetime value | ↓ Lower | ↑ Higher |
|
|
343
|
+
| Word of mouth | Negative | Positive |
|
|
344
|
+
| Regulatory risk | High | Low |
|
|
345
|
+
|
|
346
|
+
### Real Costs of Dark Patterns
|
|
347
|
+
|
|
348
|
+
1. **Support costs** - Dealing with angry customers
|
|
349
|
+
2. **Chargeback rates** - Users disputing unwanted charges
|
|
350
|
+
3. **Reputation damage** - Social media exposure
|
|
351
|
+
4. **Legal fees** - Defending against lawsuits
|
|
352
|
+
5. **Regulatory fines** - Increasing enforcement
|
|
353
|
+
6. **Employee morale** - Good people don't want to deceive users
|
|
354
|
+
|
|
355
|
+
### Companies That Changed
|
|
356
|
+
|
|
357
|
+
Several major companies have eliminated dark patterns after backlash:
|
|
358
|
+
- LinkedIn simplified privacy controls after criticism
|
|
359
|
+
- Amazon made "Subscribe & Save" more transparent
|
|
360
|
+
- Apple added App Store subscription management
|
|
361
|
+
|
|
362
|
+
The pattern: Short-term thinking creates dark patterns; long-term thinking removes them.
|